コーヒータイム -Learning Optimism-

18歳のわが子に読書をすすめるために、まずわたしが多読乱読しながらおすすめを探しています。英語書や中国語書もときどき。

<英語読書チャレンジ 31-32 / 365> H. Hoffman “Ethical Hacking Bible”, Book 1-2

英語の本365冊読破にチャレンジ。原則としてページ数は最低100頁程度、ジャンルはなんでもOK、最後まできちんと読み通すのがルール。期限は2025年3月20日

本書は未邦訳(たぶん)の情報セキュリティシリーズ全7冊。著者は10数年にわたるセキュリティアナリストとネットワークエンジニアとしての経験を持ち、本書は企業のセキュリティ管理者をはじめ、情報セキュリティにかかわるすべての読者向けに書かれている。この記事は1冊目と2冊目の読書感想。

以前読んだ無線関連の本の読書感想はこちら。とてもいい復習になる。

通信技術を規格という側面から考えてみる〜日経NETWORK『無線LAN技術 最強の指南書』 - コーヒータイム -Learning Optimism-

暗号技術を規格という側面から考えてみる~日経NETWORK『暗号と認証 最強の指南書』 - コーヒータイム -Learning Optimism-

コマンド&スクリプトを規格という側面から考える〜日経NETWORK『コマンド&スクリプト 最強の指南書』 - コーヒータイム -Learning Optimism-

リアルなトラブル事例から学ぶ〜富士通認定プロフェッショナル『ネットワークトラブル完全ガイド』 - コーヒータイム -Learning Optimism-

セキュリティの基本事項を学ぶための良書〜二木真明『IT管理者のための情報セキュリティガイド』 - コーヒータイム -Learning Optimism-

[テーマ読書]ネットワーク機器構成について学ぶ - コーヒータイム -Learning Optimism-


Book 1: 25 Most Common Security Threats & How To Avoid Them

タイトルは直訳すれば『25のよく見るセキュリティ上の脅威とその回避方法』というところ。よくある25のセキュリティ上の脅威 (security threats) 及びその対策、使用できるツール (security tools) を解説。基本的に企業向けで、悪意ある攻撃者 (malicious attackers) の攻撃手法、セキュリティ管理責任者がとるべき対策が解説されている。以下、それぞれのキーワードメモ。

  1. バグとバッファーフロー (*1)
  2. 弱いパスワード
  3. ハードコード (Hardcoded) パスワード (*2)
  4. 暗号化なし
  5. ディレクトリ・トラバーサル (*3)
  6. SQLインジェクション (*4)
  7. クロスサイト・スクリプト (*5)
  8. クロスサイト・フォージェリ (*6)
  9. ウイルスとマルウェア
  10. トロイの木馬ランサムウェア
  11. ルートキット (Rootkits) & ワーム (Worms) (*7)(*8)
  12. DoS攻撃
  13. 中間者攻撃 (Man-in-the-middle) 攻撃 (*9)
  14. ソーシャル・エンジニアリング & フィッシング攻撃 (Phishing Attacks) (*10)
  15. フィッシング攻撃対策
  16. クラウドサービスへの攻撃


Book 2: 21 Steps For Implementing The Nist Cybersecurity Framework

タイトルは直訳すれば『NISTサイバーセキュリティフレームワークに準拠するための21ステップ』というところ。米国国立標準研究所 (NIST) が公表するサイバーセキュリティフレームワーク (Cyber Security Framework, NIST CSF) に準拠するために、セキュリティ管理責任者が行うべき実務を説明したもの。

NIST CSFは2013年に米大統領令により整備され、米国国防総省が契約業者に対してNIST CSFの下位概念であるNIST SP 800-171への準拠を求めているのをはじめ、各国政府機関とビジネスをしたければ避けて通れない。

本書では情報セキュリティの原理原則を冒頭でまとめてから、経営陣を巻き込んだセキュリティポリシー策定、手順書作成、教育訓練実施、サーバールームを関係者以外立入不可とする、万が一攻撃を受けたときのためのデータ復元など、豊富な実例を紹介している。以下、情報セキュリティの原理原則をメモ代わりに。

  • CIAの3原則: 機密性 (confidentiality) 、完全性 (integrity) 、可用性 (availability) (*11)
  • トリプルA:  認証 (authentication) 、認可 (authorization) 、説明責任(accountability) (*12)
  • 多層防御 (Multiple layers) (*13) 
  • 最小権限の原則 (principle of least privilege) (*14)
  • OSIモデル (*15)

 

(*1) バッファオーバーフロー…攻撃者が攻撃標的の処理能力を超える大量のデータや悪意のあるコードを送り、バッファ許容量を超えて溢れさせてしまう(オーバーフロー)脆弱性。実行中のプログラムの強制停止、管理者権限の乗っ取りなどの被害を受ける可能性があり、極めて危険。DoS攻撃との違いは、バッファオーバーフロー攻撃は悪意のあるコードの実行を主目的とすること。
(*2) Hardcodedとは変数を外部入力させずにソースコードに直接書きこむやり方のことであるが、ここでは1つのパスワードで複数アプリケーションにアクセス可能となるシングル・サインオンのこと。対策としては、パスワードを外部保存し、暗号化などで厳重に保護することなど。

(*3) ディレクトリトラバーサル脆弱性: Webサーバーの非公開ファイルにアクセスを行う攻撃手法。攻撃者は閲覧可能な公開ファイルが存在するディレクトリから、非公開ファイルのあるディレクトリに「横断する(トラバーサル)」かのように移動して不正利用する。相対パスによる親ディレクトリと子階層のファイルの不正な読み出しが典型的。正規入力者の不手際、暗号化/無害化不十分、などの理由で、親ディレクトリへの横断 (traverse) を示すような文字がすり抜けて渡されてしまうと、攻撃者はディレクトリ構造を予測し、アクセス可能にすることを意図していないファイルへのアクセスをアプリケーションに命令できるようになる可能性がある。いわばセキュリティの欠如 (ソフトウェアがまさにそう振る舞うことになっている動作) を攻撃する手法。対策としては攻撃者が親ディレクトリを呼び出すために使用する特殊文字を入力不可にする、ディレクトリ構造を推測されにくくするよう英単語ではなく番号で命名するなど。

(*4) コマンドインジェクション脆弱性: データベースを利用したWebアプリケーションにおけるSQLインジェクション脆弱性が代表的。攻撃者はSQLと呼ばれるデータベース操作コマンドを含む内容をWebアプリケーションに入力し、これがエラー処理されずにデータベースサーバに受け付けられることで、不正にSQLを実行してデータベース内の重要情報の窃取、コンテンツの改ざんなどを行う。重大な情報漏洩につながる可能性がある危険な脆弱性。対策としてはsecurity encoding libraryなど。

(*5) クロスサイト・スクリプティング (XSS脆弱性: 標的となるWebサイトの入力フォームに特定サイトへ誘導するスクリプトを仕掛ける攻撃手法。攻撃者は入力フォーム罠となるリンクを設置し、ユーザーがリンクをクリックして攻撃者が仕掛けた悪質なサイトに誘導されると、ユーザーのブラウザ上で不正なスクリプトが実行され、情報漏洩やマルウェア感染、なりすましなどの被害が発生する。 

(*6) クロスサイト・リクエスト・フォージェリ (CSRF脆弱性: XSSと似ているが、入力フォームではなくセッション管理における脆弱性を狙う攻撃。攻撃者はセッション管理に脆弱性があるWebサイトにログインした状態のユーザーを罠を仕掛けたWebサイトに誘導して、攻撃用のリクエストURLをクリックさせる。これによりセッションIDを不正利用し、情報改ざんや強制書き込み、不正操作などを行う。対策としては、XSSが対策されていれば、CSRFはsecure random tokensなどを利用して対策できる。

(*7) ルートキットはソフトウェアツールのセット。作動中の(悪意ある)プロセスやファイルやシステムデータを隠蔽する狙いがあり、ユーザに察知させることなく侵入者がシステムへのアクセスを維持できる。またOSと同レベルで作動するため、OS自体の書換えすら可能。

(*8) ワームはウイルスに似たプログラムであるが、増殖にほかのプログラムを利用する必要がない点で異なる。

(*9) いわゆる盗聴や傍聴のようなもの。攻撃対象のサーバ間のやりとりを入手することや。書換えることが可能。クラウド上の仮想サーバもこの攻撃の対象となりうる。最もよく使用される手法はARP poisoning と呼ばれる。ARPはAddress Resolution Protocolの略で、Unix開発者向けにアドレス解決プロトコル。本来の機能はLAN上で使用するMACアドレスを自動的に新規コンピュータのIPアドレスに割りふることだが、攻撃者は企業のARPテーブルを改ざんし、攻撃者のMACとLANをリンクする。

(*10) ソーシャル・エンジニアリングはいわゆるなりすまし。攻撃者はユーザーになりすましてプロバイダから個人情報を得たり、入手したユーザー情報を利用し、信用できる機関を装いユーザーに近づいてさらなる情報を得たりする。SNS上でよくある。フィッシング詐欺はソーシャル・エンジニアリングの一種。フィッシング攻撃対策は企業研修でも広く普及している。メール本文のリンクドメインを確認する、クリックせずに電話などメール返信以外の手段で発信元に問い合わせる、怪しいメールを自動解析するソフトウェアを導入する、など。

(*11) 情報セキュリティの三大要素。CIAトライアドとも呼ばれる、情報セキュリティの基本的概念。機密性は正規ユーザー以外によるデータアクセスや修正の禁止、完全性はデータの正確性の維持、可用性は正規ユーザーがいつでもアクセス可能であることを意味する。ちなみにCIAはこれら3単語の頭文字をとったもので、米国中央情報局とは無関係。このほかに4つの性質が定義される。真正性 (Authenticity) 、責任追跡性 (Accountability) 、否認防止性 (Non-repudiation) 、信頼性 (Reliability)がそれである。

なお、完全性維持のためにしばしばハッシュ関数が利用される。ハッシュ関数を使用することで、どのような長いメッセージからでもあらかじめ決められた長さのハッシュ値を算出できる。ハッシュ長ごとに規格化されている。ハッシュ値から復号することはできず、元のメッセージが1文字異なるだけでもハッシュ値が大きく変わるという特徴がある。強度をあげるためにハッシュ長を上げるという手法がとられるため、ハッシュ長が上がればその分処理負荷が大きくなる。32ビット演算系CPUにはSHA-224とSHA-256、64ビット演算系CPUにはSHA-384とSHA-512の使用が想定されている。なおSHAはSecure Hash Algorithmの略で、アメリカ国立標準技術研究所 (NIST) によって標準のハッシュ関数Secure Hash Standardに指定された一群のハッシュ関数。数字はハッシュ値のビット数。認証のためにある特定文書のハッシュ値を暗号化したものが電子署名である。

(*12) 認証とは通信の相手が「誰であるのか」を確認・特定することで、英語ではAuthenticationまたはAuthNと表記される。大きく分けて①知識情報(対象のみが知るパスワードなど)、②生体情報(対象の顔認証など)、③所持情報(対象が所有するスマホにSMSを送るなど)の3種類がある。2段階認証はこれらのいずれかを組み合わせる(たとえばパスワード+SMS)。ちなみに認可という似た言葉があるが、特定条件下において対象物(リソース)を利用可能にする(アクセス)権限を与えることであり、認証とは別物。認可は英語ではAuthorizationまたはAuthZと表記される。証明書を発行する認証局は、アメリカ国立標準技術研究所 (NIST)の指定に準じて証明書仕様を定めている。ちなみにNISTはセキュリティについてNIST SP800-171というガイドラインを発行しており、アメリカ政府が情報機器を調達する際にはガイドライン準拠が求められる(逆にいえば、これを満たさなければアメリカ政府と取引はできない)。
(*13) 複数の防御策をとり入れること。そのうち1つが突破されてもほかの防御策により情報漏洩を防止する考え方。

(*14) 正規ユーザーが業務上必要な範囲にのみアクセス権限を与え、不必要なところには与えない設計原則。

(*15) 著者いわく「基本中の基本」。通信機能(通信プロトコル)を7階層に分けて定義する。なおOSI参照モデル国際標準化機構(ISO) によって策定されており、RFC1122でまとめられるTCP/IPの階層モデルとは合致しないため注意。

 第7層 - アプリケーション層: 具体的サービス。HTTPやFTPなど。
 第6層 - プレゼンテーション層: データの表現方法(例えばあるコードのテキストファイルをほかのコードのファイルに変換する)。
 第5層 - セッション層: 通信プログラム間の通信開始から終了までの手順(例えば接続が途切れた場合、回復を試みる)。
 第4層 - トランスポート層: 通信管理(エラー訂正など)。
 第3層 - ネットワーク層: 通信経路選択、データ中継。
 第2層 - データリンク層: 直接的(隣接的)に接続されている通信機器間の信号の受け渡し。
 第1層 - 物理層: 物理的な接続。銅線-光ファイバ間の電気信号の変換など。