バッファオーバーフローやシェルコードという言葉は知っていても、それが実際にどうやってプログラムの制御を奪うところまでつながるのかを、自分の言葉で説明できるかというと怪しい。対策側の知識だけを積み重ねていると、脆弱性がなぜ危険なのかという核心部分がいつまでもぼやけたままになる。『Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際』は、その核心をプログラミング・ネットワーク・暗号という三本柱から徹底的に掘り下げてくれる本だった。
プログラミングの章でメモリの中身まで追いかける
本書はまずプログラミングの章で、Cで書かれたコードがメモリ上でどう展開され、バッファオーバーフローがどうやって制御フローを奪うのかを、アセンブリレベルまで踏み込んで説明する。抽象的な脆弱性の説明ではなく、実際にレジスタやスタックの状態を追いながら攻撃が成立する過程を見せられるので、これまで「なんとなく危険」としか理解していなかった部分が具体的な仕組みとして頭に入ってきた。
ネットワークと暗号の章で攻撃の全体像がつながる
後半のネットワークの章ではパケットの盗聴やハイジャック、サービス拒否といった攻撃手法が扱われ、暗号学の章では対称鍵・非対称鍵の仕組みから暗号技術への攻撃手法までが解説されている。プログラミング・ネットワーク・暗号という別々に学んできた知識が、この本の中で一本の線としてつながる感覚があった。
読んでよかったポイント
- シェルコードがどうやって作られ、どうやって実行されるのかをアセンブリレベルで追ったことで、脆弱性診断ツールが出す警告の重みが変わった
- パケットハイジャックの仕組みを学んでから、社内のネットワーク構成図を見るときにどこが弱点になり得るかを考える癖がついた
- 暗号アルゴリズムの章を読んで、なぜ古い暗号方式が非推奨になっているのか理由まで説明できるようになった
- 翻訳が丁寧で、原著の技術的な厳密さを保ったまま読み進められた
- 一つ一つの攻撃手法を理論から積み上げて理解できたので、新しい脆弱性のニュースを見たときに自分で仕組みを推測できるようになった
さらに広げて読むなら
攻撃者の手順をbashで実際に追体験したいなら、攻撃者の視点でセキュリティを理解したいエンジニアへ。bashで学ぶ侵入技術の実践書も合わせて読むと、理論と実践の両面から攻撃者の視点が身につく。
まとめ
表面的な脆弱性対策だけでは、本当の意味でシステムを守れるようにはならない。まずはプログラミングの章から読み進めて、自分が書いているコードのどこに危険が潜んでいるのかを見直してみてほしい。