Web セキュリティを体系的に学ぶ ~原理原則と攻撃方法と対策~|研修コースに参加してみた
今回参加したコースは Web セキュリティを体系的に学ぶ ~原理原則と攻撃方法と対策~ です。
「 SNS アカウントが乗っ取られた」「クレジットカードが不正使用された」「登録していた個人情報が漏れてしまった」、このような体験したことはありませんか? 私はすべてあります … 。なお、幸い仕事ではなく、すべてプライベートだったので会社員ができています。
そういった身近で感じることが増えた Web セキュリティですが、とにかく広大で、また幾層にも渡った知識が必要とされる、とても深い世界です。こういった世界に入門するのにガイドとなるコースで、体系的に原理原則と攻撃 / 対策を学べました。なお、このコースでは 1 つのテーマで、まず問題編で基礎を学び、解決編で対策方法を学ぶという構成になっています。
また、このレポートはいつもの講座 / リアルタイム配信のコースではなく、動画契約企業がいつでも視聴できる「いつでも動画」に収録されている、「 Web サイトにおける危険性と対策 」「 Web サイトを狙ったサイバー攻撃事例 」の 2 コースをまとめたものです。それぞれ 1 時間程度で、 1 トピック 15 分程度に分けられているため、スキマで学習できました。
では、どのような内容だったのか、レポートします!
もくじ
コース情報
想定している受講者 | 特になし |
---|---|
受講目標 |
|
講師紹介
このコースで登壇されたのは、セキュリティの専門家として登壇が多い 村上 博 さんです。
「現場の実例で受講者の脳を刺激する」
Web における脅威と対策
まずは 1 つめのコースです。はじめてセキュリティを学ぶという広い方々に向けて Web における脅威の全般を 1 時間程度で解説いただきました。
Web の脅威と認証
Web の脅威
Web の危険性には、次のような種類があります。
- マルウェア感染
- 悪意のある不正プログラム
- 改ざん
- 情報を不正に変更する
- 漏えい
- 情報を第三者へ伝える
- 破壊
- 情報を破壊、復元不能にする
- 盗聴
- 情報を読み取り、詐取すること
- なりすまし
- 正当な利用者に偽装する
- サービス停止
- システムが利用不能になる
- 不正アクセス
- 利用者になりすまして、システムやサービスにアクセスする
- 詐欺
- 他人を騙して金品や情報を奪い、損害を与える
特に重要なのが不正アクセスです。仮に不正アクセスが可能であれば、ほかのあらゆる不正が可能になってしまいます。確かに使っている EC サイトの自分のアカウントが乗っ取られたら … 、ゾッとしますね。
認証の原理原則
なりすましによる不正アクセスに対しては、認証技術が重要です。そこで必要になるのが、セキュリティ 3 要素です。
- 機密性
- 本人だけが利用できること
- 完全性
- 処理方法やデータが間違いないこと
- 可用性
- 本人だけはいつでも利用できること
- 真正性
- 利用者を正当であると確認すること
- 職責
- 職務上の責任のこと。管理者や承認者は権限だけでなく責任を持つ
セキュリティ 3 要素
3 要素に付随して、よく出てくる用語
セキュリティ認証の対象は、本人認証以外にも次のようなものがあります。
- 人間(本人認証)
- 自分が第三者に対して本人であると証明する
- メッセージ(メッセージ認証)
- メッセージが正当(真正)であると証明する
- 時刻(タイムスタンプ認証)
- 時刻が正確であると証明する
まるでミステリーで出てくるアリバイ工作のようですが、これは確かに必要ですね。
本人認証の原理原則
本人の認証には、次の 3 種類があります。
- 本人の情報(知識認証)
- 本人のみが知り得る情報
- デメリット:盗聴、辞書攻撃・総当たり攻撃の可能性
- 技術例: ID とパスワード
- 本人の所有物(所有物認証)
- 本人のみが所有している物
- デメリット:盗難や紛失による不正利用の可能性
- 技術例:鍵、トークンキー
- 本人の生体的特徴(生体認証)
- 本人の生態的特徴
- デメリット:本人拒否や他人許容の可能性
- 技術例:バイオメトリクス認証
それぞれにデメリットが存在するのがポイントです。まったく本筋と関係ありませんが、顔認証がマスクで使えなくなった今、虹彩認証が実現されて欲しいところですね。
アクセス制御の原理原則
認証によるセキュリティの仕組みを作るのが アクセス制御 です。
認証を含む 3 要素から構成され、 3 つをまとめて「 AAA 制御」ともいいます。
- 認証( Authentication )
- 利用の正当性(真正性)を確認
- 手間がかかる
- 認証における利便性を高める技術にシングルサインオンがある
- 認可( Authorization )
- 適切な利用者に許可
- 適切な認可が必要
- 職責分離
- 業務担当者と承認者の権限や職責を明確に分離すること
- 最小権限
- 付与する権限は必要最低限の権限のみにすること
- 適切な認可が必要
- アカウンティング( Accounting )
- 利用履歴の確認。誰が、何を、いつ、どのように、をログ(履歴)として残すこと
認証にはユーザの手間がかかります。サービスを使うたびに何度もログインを求められて、面倒な思いをしたことがありますよね。あとは最近は Google の reCAPTCHA がツライです … 。裏側を向いている信号機も、信号機として選ぶべき ??
続いて、それを軽減するためのシングルサインオンの仕組みも紹介いただきました。 Google アカウントでの認証や SNS のアカウントを使ったものなど様々に利用する機会が増えましたね。
パスワードに関する攻撃
2 つめのテーマとして、パスワードへの攻撃について学びます。
多くのサービスでは、 ID とパスワードによる認証が使われています。 ID とパスワードは知識認証なので、知られたら終わりというデメリットがあります。
- パスワードに関する攻撃は大きく分けて 2 種類
- パスワード解析攻撃
- パスワードリスト攻撃
パスワード解析攻撃 問題編
パスワード認証を不正に解析する攻撃手法です。これにより、他人がログインして、何でもできてしまいます。特に決済アプリなど金銭のやりとりが出来るものは危険です。
- 総当たり攻撃(ブルートフォースアタック)
- ID を固定化してパスワードを総当たりする
- 逆総当たり攻撃(リバースブルートフォースアタック)
- よくあるパスワードを固定化して ID を総当たりする
- アカウントロックを回避することができる
- 辞書攻撃(ディクショナリアタック)
パスワード解析攻撃 解決編
パスワード解析攻撃への対策は、テクノロジだけではうまくいかず、管理者・ユーザどちらも適切にルールを定めて、パスワードを管理するしかありません。
管理するときには、セキュリティ強度だけでなく、利便性とのバランスが大事です。
- パスワードを難しくなれば解析が難しくなる
- ただし利用者が大変(例:パスワード 100 文字)
- セキュリティの強度だけでなく利用者の利便性や効率も考える
- 運用体制や物理セキュリティも含んだ総合的なセキュリティ管理が必要
- 解析や推測されないパスワード文字列を用いる
- 文字種類を増やす(総当り攻撃対策)
- アルファベットの大文字、小文字、数字を併用
- 辞書掲載の用語を使わない(辞書攻撃対策)
- 文字種類を増やす(総当り攻撃対策)
- 有効期限を設定する
- 理由:長期間の利用は漏えい、解析の危険性
- 対策:変更回数や入力回数を制限(アカウントロック)
パスワードレスが増えているのは、この危険と面倒さをスキップできるからなんですね。
パスワードリスト攻撃 問題
パスワードリスト攻撃とは、利用者 ID とパスワードの対応リストを用いた攻撃です。
- Web サイトなどから情報漏えいした ID とパスワードのリストが作られて、闇で売られている
- 自分のサイトを守っていてもほかかで漏れた ID とパスワードが使われる
- ID とパスワードを使いまわしていると、パスワードリスト攻撃の被害にあう危険性がある
反対に、正当なユーザがパスワードを忘れてしまったときは、再発行も運用管理者の負担になるので、パスワードリマインダの導入が必要です。
パスワードリスト攻撃 解決編
パスワード攻撃を防ぐためのセキュリティ対策には次のようなものがあります。
- 同じ ID とパスワードの使い回しをしない
- 二要素認証の導入
- 二要素認証に似た言葉に、 二段階認証 もある
- 二要素認証は、知識、所有物、生体の 3 つの認証要素のうち 2 つを組み合わせた認証
- 多要素認証ともいう
- 二段階認証は同じ認証方式を 2 つ用いる
- たとえばパスワードを 2 回にしてもリスト攻撃への対策は薄い
二要素認証の例として、日本の入出国管理は、生体(顔や指紋) + パスポートの二要素認証になっています。
また、多要素認証を使ったパスワードレス認証の技術に FIDO ( Fast IDentity Online ) があります。たとえば、スマートフォンからサービスを顔で認証するといった使い方をします。
ネットワーク盗聴の脅威
ネットワーク盗聴と SSL 解析攻撃 問題編
続いて、ネットワーク盗聴と、それを防ぐための SSL/TLS とその解析攻撃について学びます。
SSL/TLS とは
SSL/TLS は、 PKI ( Public Key Infrastructure 公開鍵基盤) によるサーバ証明書を用いて、クライアントとサーバ間で暗号化通信を実現する通信で、 URL の https://
という表記でおなじみですね。
もともとは SSL ( Secure Socket Layer ) だけでしたが、 中間者攻撃 (通信を行う二者間の経路上に割り込み、両者間の通信情報を盗聴や改ざんする攻撃)ができるという脆弱性が発見されました。
そこで、現在では SSL をもとにした新しい TLS ( Transport Layer Security ) が主に使われています。
SSL/TLS に関する攻撃と対策
- Poodle 攻撃
- SSL の脆弱性
- 大量の通信を発生させて間に割り込んで通信内容を解析するという手口
- データを繰り返し送りながら、エラーが正しいか正しくないかを組み込んで暗号解析する
- 長い時間がかかるが、解析できてしまう
- SSL ダウングレード攻撃
- TLS の脆弱性
- TLS からダウングレードして SSL を使わせる手口
- FREAK 攻撃、 Logjam 攻撃、バージョンロールバック攻撃がある
SSL/TLS 脆弱性への対策は、単純な話ですが SSL を使わないことです。
インターネット詐欺とソーシャルエンジニアリングの脅威
ソーシャルエンジニアリングとフィッシング 問題編
最後のテーマは、インターネット詐欺やソーシャルエンジニアリングについてです。
- 人間の心理的な弱さを利用した不正行為のこと
- ソーシャルエンジニアリングの特徴
- 緊急性
- 例:緊急、非常事態などを装い相手に混乱を発生させる
- 誘導性
- 例:相手の利益や興味を引く誘導行為
- なりすまし
- 例:相手の取引先や肉親、友人などに偽る
- 緊急性
- ソーシャルエンジニアリングの例
- Microsoft の名を騙ったサイトで「不審なアクティビティのため Windows がブロックされました」のメッセージ
- そこから偽のセキュリティサポートセンターに誘導する
- または偽のセキュリティ修復プログラムのダウンロードに誘導する
- マルウェアの危険性の高いプログラム
ソーシャルエンジニアリング
インターネット詐欺には フィッシング もあります。実在する組織や企業を装い、個人情報の詐取や詐欺などを実行する犯罪行為です。
- フィッシング詐欺の手口
- 攻撃者は偽サイトを作る
- メール等で偽サイトに誘導する
- 偽サイトでアカウント情報を入手する
メールは注意しているのですが、最近 SMS でも送られるようになってきて、もともと注意していなかっただけに、何度か間違えそうになりました。
先日 Google が “なりすまし” 防止のためにメールに企業のロゴを載せられるようになったというニュースがあり、認証が得られれば掲載できるとのことでした。
Gmail、なりすまし対策で送信元アイコンに企業ロゴ表示を可能に – ITmedia NEWS
一方で、 Web アプリケーションなどでメールを一斉送信・通知するときには、認証が強くなると大変になるので、まさに利便性とセキュリティはトレードオフの関係ですね。
ソーシャルエンジニアリングとフィッシング 解決編
その対策としてフィルタリングが挙げられました。
- フイルタリングの方式は 2 つ
- ホワイトリスト型:閲覧許可した対象をリスト化することでアクセスを制限
- ブラックリスト型:閲覧禁止した対象をリスト化することでアクセスを制限
フィッシング詐欺リストにはブラックリスト型のフィルタリングが有効です。なお、ブラックリストのパターンファイルはセキュリティのソフトやサービス企業が提供します。
このフィルタリングの解説をもって、 1 つめのコース「 Web における脅威と対策」は修了しました。
Web サイトを狙ったサイバー攻撃事例
続いて、 2 つめは具体的な攻撃手法と対策を学びます。
ここでは、これまでの参加してみたレポートでは触れなかった攻撃を紹介します ( このコースでは他に SQL インジェクション、 XSS 、 CSRF を解説しています) 。
label関連する参加レポート
OWASP ZAP で Web アプリケーション セキュリティ対策|研修コースに参加してみた
ネットワークセキュリティの基礎~攻撃パターンとその対策~ 研修コースに参加してみた
OS コマンドインジェクション 問題編
次に扱う攻撃は OS コマンドインジェクション です。
- SQL インジェクションと同様、不正な命令を差し込む攻撃
- SQL コマンドインジェクションはログインフォームの ID に
OR 'a'='a
のような SQL を入力。データベースに意図しない SQL を実行させる - OS コマンドインジェクションは SQL の代わりに OS のコマンドを注入
- SQL コマンドインジェクションはログインフォームの ID に
- 具体的な被害内容
- サイトの改ざん、削除
- Web サーバのマルウェア感染
- Web サーバの踏み台利用
OS コマンドインジェクションとは
OS コマンドインジェクション 解決編
OS コマンドインジェクションは OS のシェルを勝手に動かされる脆弱性です。
シェルとは次のようなものです。
- シェルの例として bash や cmd.exe などの実行プログラムがある
- cmd.exe を実行するとコマンドプロンプト画面が表示されてコマンド実行が可能になる
そのため、シェルでの対策が必要です。
- シェルを起動できる言語機能は用いない
- シェルを用いる際には、処理を制限する
- シェルに対するチェック機能を実装することが重要
- 引数を構成するすべての変数がチェック対象
- チェックにはホワイトリスト(許可リスト)を用い、正しい処理に用いるコマンドしか実行させない
ディレクトリトラバーサル 問題編
トラバーサル( traversal )とは横断の意味です。ディレクトリトラバーサルとは、ファイル構造を不正に横断してアクセスする攻撃です。
ディレクトリトラバーサルは、外部からの不正アクセス (ex. URL のパラメータ) により攻撃者が Web サーバ内のファイル名を直接指定できてしまうと発生します。原因は、 Web サーバのパラメータ指定に関する脆弱性です。
- パス名パラメータが未チェックのまま
- 相対パス指定によりファイルの指定や参照が可能
- 具体的な被害内容
- Web サーバ内のファイルの開示( Web サイト内情報の漏洩)
- Web サーバ内のファイルの改ざん、消去( Web サイトの改ざん、消去、破壊)
ディレクトリトラバーサルとは
そのため、しっかりファイルアクセス操作へのセキュリティが必要です。
ディレクトリトラバーサル攻撃 解決編
ディレクトリトラバーサルへの対策には、ファイルアクセスに関するセキュリティ対応が必要です。
- 外部からのパラメータによるファイルの直接指定をしない
- ファイル名にはディレクトリを含めない
ディレクトリ名を含まないファイル名を設定するためには、たとえば basename()
などの API を使ってパス名からファイル名のみを取り出すといった方法があります。
セッションハイジャック攻撃 問題編
Web アプリケーションでは、利用者を識別するための情報( セッション ID )を Web サーバが発行することでユーザの認証を管理します。セッション ID には Cookie や URL パラメータ値などを用います。
このセッションの管理に不備があった場合、セッション ID が不正利用される可能性があり、次のような危険性があります。
- なりすましができる
- 認証後に利用可能な Web ページにアクセスできる可能性がある
- 登録情報などの改ざん、漏洩など、さまざまな不正が可能になる
このセッション ID を悪用した攻撃がセッションハイジャックです。
- セッションハイジャックの主な 3 つの分類
- セッション ID 推測
- セッション ID を推測することで攻撃する
- セッション ID の値を大量に生成して利用可能な ID を算出
- セッション ID 盗聴
- 利用可能なセッション ID を盗聴、取得することで攻撃する
- ネットワーク盗聴やクロススサイトスクリプティングなどで取得する
- セッション ID 強制利用
- 攻撃者が正常なセッション ID を事前に用意して被害者に強制利用させることで攻撃する
- 攻撃者が事前に用意した不正サイトへ誘導することで不正な Cookie を被害者側のブラウザに設定することが可能
- セッション ID 固定攻撃とも呼ばれる
- セッション ID 推測
セッションハイジャック攻撃 解決編
セッション ID を狙った攻撃への対策には、次のようなものがあります。
- セッション ID を推測困難にする
- たとえば昇順や降順は危ない
- 対策例:疑似乱数を用いてランダムな値にする
- URL パラメータ内にセッション ID を組み込まない
- 対策例:Cookie や POST メソッドの Hidden パラメータに組み込む
- Cookie の適切な管理
- Cookie のセキュリティ
- 対策例 1: Cookie の secure 属性を用い、 HTTPS 通信の時だけ送信する設定にする
- 対策例 2: Cookie の状態管理をする
- ユーザ認証後は新しいセッション ID で通信する
Web アプリケーション開発では、セッションなど認証に関連する機能は一度作り込んでから変更しようとすると、すべての機能に影響しがちなため、設計段階からセッション ID 管理に対するセキュリティ実装が重要です。これを セキュア・バイ・デザイン ともいいます。
このレポートでは 3 つの攻撃を取り上げましたが、このコースでは合計 6 つの主要な攻撃を解説しています。このすべての攻撃と対策を学んだところで、コースは修了しました。
まとめ
初めてセキュリティを学ぶ方が体系的に学べるよう、全体概要から攻撃と対策を少し深堀りしながら学べました。
受講していると、冒頭にあげた自分に起こったセキュリティ事故や事件が思い出されました。でも、実は被害はゼロだったのです。それはすべて Web アプリケーションが不正使用や乗っ取りを検知して、私に知らせてくれたからでした。
そういった体験があるだけに、そもそも認証は何をもって行うのか、なぜ Web アプリケーションで普段とは異なる端末からログインすると通知が来るのか、そういったセキュリティの原理原則と実装の仕組みが上手く機能していることに気付けました。
はじめてセキュリティに触れるという方が入門するのに、セキュリティの世界を俯瞰しながら、体系的に掘り下げられるので、とてもオススメのコースでした!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 コースをほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。