1 of 47

Webに関するセキュリティ

2024年11月21日(木)

鳥取湖陵高校情報科学科3年

情報実習:総合演習

2 of 47

講師紹介

  • 守山 凜 (もりやま りん)
    • 専攻科生産システム工学専攻2年(大学4年相当)�→ 4月より,静岡大学大学院総合科学技術研究科情報学専攻

    • 鳥取県警察サイバー防犯ボランティア
    • デジタル庁・デジタル推進委員

    • Webサイトで研究内容・実績等を公開

情報実習/Webに関するセキュリティ

1

2024年11月21日

3 of 47

本日の内容

  • 情報セキュリティの基本
    • 情報のCIA

  • Webセキュリティ
    • Webに関する脅威
    • クロスサイトスクリプティング
    • SQLインジェクション
    • エスケープ処理
    • ハッシュ化

情報実習/Webに関するセキュリティ

2

2024年11月21日

4 of 47

情報セキュリティとは?

  • 総合実習との関連
    • 実習では仮想のショッピングサイトを制作
      • UI(画面)
      • データベース
    • 実際の開発では「セキュリティ」を意識する必要がある

  • セキュリティとは?
    • 安全を守る対策全般を指す
    • 情報セキュリティ=「情報」に対するセキュリティ
      • 「情報」=コンピュータ,ソフトウェア,顧客情報,技術情報 など

情報実習/Webに関するセキュリティ

3

2024年11月21日

5 of 47

情報セキュリティの定義(情報のCIA)

  • 日本産業規格Japanese Industrial Standards)
    • 情報の機密性完全性可用性を維持すること(JIS Q 27000)

  • 7要素
    • 機密性,完全性,可用性,真正性,責任追跡性,信頼性,否認防止

情報実習/Webに関するセキュリティ

4

2024年11月21日

用語の意味

対策

機密性

許可された人だけ,情報を使うことができる

アクセス制御

完全性

情報が正確で完全である

ハッシュ化

可用性

使いたいときに,情報を使うことができる

冗長化

6 of 47

情報セキュリティに関する用語

  • 脅威
    • システムに損害を与える可能性のあるインシデントの原因
      • 不正アクセス
      • コンピュータウイルス
      • 人間のミス など

  • 脆弱性
    • 1つ以上の脅威がつけ込むことのできる弱点
      • システムに潜む欠陥(セキュリティホール) など

情報実習/Webに関するセキュリティ

5

2024年11月21日

7 of 47

2. Webセキュリティ

情報実習/Webに関するセキュリティ

6

2024年11月21日

8 of 47

Webシステム

  • Webシステムとは?
    • インターネットに接続しWebブラウザを通して利用できるシステムやサービス
      • SNS
      • ECサイト
      • ネットバンキング

情報実習/Webに関するセキュリティ

7

2024年11月21日

9 of 47

Webシステムの構成

  • プログラム
    • UI(画面)や処理の手続きはプログラムで記述される
    • Webに関する言語
      • HTML
      • CSS
      • JavaScript
      • PHP
      • Ruby など

情報実習/Webに関するセキュリティ

8

2024年11月21日

https://skillhub.jp/blogs/259

10 of 47

Webシステムの構成

  • データベース
    • 検索や蓄積が容易にできるように整理された情報の集まり
      • 住所録
      • 電子カルテ
      • 商品リスト
      • ユーザリスト
    • SQLで操作

情報実習/Webに関するセキュリティ

9

2024年11月21日

https://codezine.jp/article/detail/12216

11 of 47

Webシステムの構成

  • Webサーバ
    • ネットワークを通じて情報や機能を提供するコンピュータ
    • サーバの中にプログラムやデータベースが保存される
    • 最近は,サーバも仮想化される
      • さくらのVPS
      • AWS(クラウドサーバ) など

情報実習/Webに関するセキュリティ

10

2024年11月21日

https://cloud-ace.jp/column/detail161/

12 of 47

Webに関するセキュリティ上の脅威

  • Webシステムにはどんな脅威があるか考えてみよう!
  • 例えば…
    • システムへの不正侵入
    • プログラムの改ざん
    • データベースの破壊
    • データベース内の情報窃取
    • フィッシングサイトへの誘導

    • 具体的な脅威(サイバー攻撃手法)について考える
      • 演習も取り入れながら勉強します!

情報実習/Webに関するセキュリティ

11

2024年11月21日

13 of 47

はじめる前に…

  • 演習用のWebサイトにログインする
    1. ブラウザを開き,以下のURLにアクセス�https://sec.wim-cc.com
    2. 青色の「ログイン」ボタンをクリック
    3. 『演習用サイト アカウント交付書』のIDとパスワードを入力し,�「ログイン」ボタンをクリック
    4. 「教材を開く」をクリック

    • ログインできたら待機

情報実習/Webに関するセキュリティ

12

2024年11月21日

14 of 47

クロスサイトスクリプティング (XSS)

  • XSSとは
    • 悪意のあるスクリプトを標的となるWebサイトに埋め込む攻撃
    • Webページを閲覧している利用者が影響を受ける

情報実習/Webに関するセキュリティ

13

2024年11月21日

15 of 47

XSSの体験(1)

  • Webページの背景色を,黄色から赤色に変更する
    • Part.1 のページ を使う

情報実習/Webに関するセキュリティ

14

2024年11月21日

16 of 47

XSSの体験(1)

  • どうやったら実現できるか?
    • CSSを上書きすればいい
    • しかし,CSSを直接は上書きできない

  • HTMLを使って間接的にCSSを上書きする
    • styleタグを使う

情報実習/Webに関するセキュリティ

15

2024年11月21日

17 of 47

XSSの体験(1)

  • テキストボックスに以下のHTML文を入力し送信
    • <style>body{background:red;}</style>

情報実習/Webに関するセキュリティ

16

2024年11月21日

背景色の指定

18 of 47

XSSの体験(2)

  • 実現したいこと
    • 利用者を偽サイトに誘導する
    • Part.2 のページを使う

  • どうしたら実現できるか
    • 文字列を表示し,ハイパーリンクを埋め込む

情報実習/Webに関するセキュリティ

17

2024年11月21日

19 of 47

XSSの体験(2)

  • 実装例
    • 表示されているハイパーリンクをクリックすると…
      • 怪しいサイトに飛んだ!!
      • 授業用のオリジナルサイトで,危険性はありません.

情報実習/Webに関するセキュリティ

18

2024年11月21日

クリック

20 of 47

XSSの体験(2)

  • テキストボックスに以下のHTML文を入力し送信
    • <a href=“http://timer.wim-cc.com/”>湖陵高校のHPはこちら</a>

  • 表示されたハイパーリンクをクリックすると…
    • 怪しいサイトに飛んでしまった!!

情報実習/Webに関するセキュリティ

19

2024年11月21日

指定サイトのURL

21 of 47

SQLインジェクション

  • SQLインジェクション(SQLi)とは?
    • データベースに送信するデータの中にSQL文を混入して�不正にデータベースを操作する

  • ユーザの認証
    • IDとPWを入力する
    • IDとPWを代入したSQL文を実行

情報実習/Webに関するセキュリティ

20

2024年11月21日

22 of 47

SQLインジェクション

  • SQLの挿入例

情報実習/Webに関するセキュリティ

21

2024年11月21日

ログインしたい

IDとパスワード

を入力

IDとパスワード

を代入したSQL文を送信

23 of 47

SQLインジェクション

  • 悪意あるユーザの場合

情報実習/Webに関するセキュリティ

22

2024年11月21日

データを破壊してやる!

削除コマンドを含む文字列を送信

削除コマンドが混入されたSQL文を生成し,実行を指示

IDとパスワードが�正しいか確かめよう!

実行

24 of 47

SQLインジェクションの体験

  • 演習用サイトの仕組み
    • ユーザIDとパスワードを入力し管理者としてログインすると,�従業員の個人情報を閲覧できる

  • まずは,SQLインジェクション攻撃Part.1 をつかう

情報実習/Webに関するセキュリティ

23

2024年11月21日

25 of 47

SQLインジェクションの体験

  • 正しいユーザIDとパスワードを入力する
    • 従業員ID admin
    • パスワード koryo

    • 全員分の個人情報を閲覧できた

情報実習/Webに関するセキュリティ

24

2024年11月21日

26 of 47

SQLインジェクションの体験

  • 間違ったパスワードを入力する
    • 従業員ID admin
    • パスワード admin

情報実習/Webに関するセキュリティ

25

2024年11月21日

正しいものを入力していないので,ログインできない

27 of 47

SQLインジェクションの体験

  • 攻撃を仕掛ける
    • IDは空欄,パスワードに 'OR 'A'='A と入力

    • 閲覧できてしまった! ⇒ 攻撃成功

情報実習/Webに関するセキュリティ

26

2024年11月21日

28 of 47

XSSやSQLiの対策

  • どんな対策を取ることが有効か考えてみよう

情報実習/Webに関するセキュリティ

27

2024年11月21日

29 of 47

XSSやSQLiの対策

  • 共通の対策:エスケープ処理
    • 特別な意味をもつ記号を別の文字列に置換する処理
    • 例えば,「’」→「’’」,「\」→「\\」

  • XSSの対策:HTMLタグの利用を禁止
    • 偽サイトへの誘導に使ったページ(Part.2)の場合
      • imgタグ(画像の貼り付け)
      • iframeタグ(Webページの埋め込み)

情報実習/Webに関するセキュリティ

28

2024年11月21日

30 of 47

エスケープ処理の検証

  • Part.2のページに攻撃を仕掛ける
    • IDは空欄,パスワードに 'OR 'A'='A と入力

情報実習/Webに関するセキュリティ

29

2024年11月21日

記号や空白がエスケープ化され,�ログインできなくなった!

31 of 47

パスワードに関する対策

  • パスワードが直接画面に表示されるのは危険
    • パスワードが漏洩し,不正アクセスを受ける可能性が!

    • パスワードを第三者が分からない形に変換する ⇒ ハッシュ化

情報実習/Webに関するセキュリティ

30

2024年11月21日

32 of 47

ハッシュ化

  • ハッシュ化とは?
    • 特定の計算手法に基づいて,元のデータを不規則な文字列に置換する処理
    • SHA-256 などのハッシュ関数が有名

  • 暗号化との違い
    • 暗号化は可逆
    • ハッシュ化は不可逆�⇒ もとに戻すことができない

情報実習/Webに関するセキュリティ

31

2024年11月21日

ハッシュ関数

(SHA-256 など)

D0BC381952D0827F36467818A9560EB5EB6FDA8A64A422AA21FCDA3F2263E8B4

hellow

33 of 47

ハッシュ化の確認

  • Part.2ではパスワードをハッシュ化している
  • 正しいIDとパスワードを入力し,確認してみる

情報実習/Webに関するセキュリティ

32

2024年11月21日

34 of 47

おわりに

情報実習/Webに関するセキュリティ

33

2024年11月21日

35 of 47

今日はいかがでしたか?

  • 自宅でも挑戦したい!
    • 他の攻撃もできるので,試してみてください
    • ただし,実際のシステムには攻撃しない ➡犯罪です

  • システム開発で気を付けること
    • セキュリティ対策を忘れずに
    • 企業のセキュリティ方針(情報セキュリティポリシー)を守る
    • セキュリティ対策はコスト面も気にしながら

情報実習/Webに関するセキュリティ

34

2024年11月21日

36 of 47

諸連絡

  • 『ユーザアカウント通知票』は回収します
    • その他の資料・教材は,持ち帰ってもOK
    • 置かれているものは高専側で回収

  • 事後アンケートの回答
    • 全員が必ず回答する
    • 11月中に回答してください
    • 詳細は,小谷先生より連絡していただきます

情報実習/Webに関するセキュリティ

35

2024年11月21日

37 of 47

【おまけ】

ここから先は,興味のある方は取り組んでみてください.

情報実習/Webに関するセキュリティ

36

2024年11月21日

38 of 47

XSS:偽サイトに誘導する

  • XSSの演習ページ(Part.1/2) の問題点
    • HTMLタグが一部使えるようになっていた!
      • Part.1:styleタグ
      • Part.2:aタグ

  • 対策は十分か?
    • Part.3のページを使って実験
      • Part.1や2で行った攻撃に対する対策が行われている

情報実習/Webに関するセキュリティ

37

2024年11月21日

39 of 47

実験1

  • 背景色の変更,偽サイトへの誘導を試す
    • 授業で使ったHTML文を,Part.3のページで送信する

    • 正しく実行されない

情報実習/Webに関するセキュリティ

38

2024年11月21日

40 of 47

別の方法を試す

  • 他に実装できる手段はあるか?
    • JavaScriptを使っても実現できるが,scriptタグを禁止している

    • 「イベントハンドラ」を使って実装

  • 「イベントハンドラ」とは?
    • 特定の出来事(イベント)が発生した時に実行する処理
    • クリックしたときに特定のページにジャンプする など

情報実習/Webに関するセキュリティ

39

2024年11月21日

41 of 47

実験2

  • イベントハンドラを使って実装
    • 誘導先:https://fake.wim-cc.com/

  • 以下のHTML文を送信する
    • <b onclick="window.open('https://fake.wim-cc.com/','_blank');">�こちらをタップ</b>

情報実習/Webに関するセキュリティ

40

2024年11月21日

改行しない

イベントハンドラ

42 of 47

実験2

  • 表示された文字列をタップすると…
    • 「Yahoo!」のログイン画面に飛んだ!?
      • オリジナルの偽サイト

情報実習/Webに関するセキュリティ

41

2024年11月21日

タップ

左上のロゴも�よく見るとおかしい

43 of 47

完璧(?)な対策とは

  • Part.0を見てみると
    • 実行できないようになっている

  • 高い安全性を確保するには?
    • 複数の対策を実装する
    • ただし,100%の安全は存在しない

情報実習/Webに関するセキュリティ

42

2024年11月21日

44 of 47

ハッシュ化の課題

  • レインボーテーブル攻撃
    • 不可逆変換とはいえ,入力値に対して出力されるハッシュ値は決まっている
    • 平文とハッシュ値の組み合わせ(レインボーテーブル)が分かれば,ハッシュ値を検索して対応する平文を特定できる

情報実習/Webに関するセキュリティ

43

2024年11月21日

https://x.gd/F0ZeT

45 of 47

ハッシュ化の実際

  • ソルト
    • 元データ(文字列)にランダム生成の文字列を加えてハッシュ化する手法
    • 不特定の文字列を追加されてハッシュ化されるので,ハッシュ値は原文と全く異なるものが生成される

情報実習/Webに関するセキュリティ

44

2024年11月21日

https://x.gd/ahAGF

46 of 47

ハッシュ化の仕組みを体験してみよう

  • 「SQLインジェクション攻撃 おまけ」のページを開く
    • 画面の指示に従って進めていく
    • ソルトによるハッシュ化を可視化して解説しています

情報実習/Webに関するセキュリティ

45

2024年11月21日

47 of 47

更にセキュリティを高める

  • ストレッチング
    • ハッシュ化したものをさらにハッシュ化し,何重にもハッシュ化する方法
    • 繰り返せば繰り返すほど解析に時間がかかり,万が一流出したとしても,�解析に膨大な時間が必要になる
      • 認証にかかる時間もその分増える
    • ソルト+ストレッチングで強度をかなり高めることができる

情報実習/Webに関するセキュリティ

46

2024年11月21日

12345

4b8f353889

5683o3829

ハッシュ化

ハッシュ化

繰り返す…

ハッシュ化