問題
問23
ソフトウェアの脆弱性を悪用し、管理者権限で不正なコードを実行する攻撃手法として適切なものはどれか。
- フィッシング
- SQLインジェクション
- バッファオーバーフロー
- ブルートフォース攻撃
正解
正解は「ウ」です。
解説
正解の「バッファオーバーフロー」は、ソフトウェアの入力バッファに対して許容範囲を超えるデータを与えることで、隣接するメモリ領域に不正なコードを書き込む攻撃手法です。これにより、攻撃者は本来実行されるはずのない命令を強制的に実行させ、最悪の場合は管理者権限で任意のプログラムを実行できるようになります。
この脆弱性は、C言語など低レベルのメモリ管理を直接扱うプログラミング言語で書かれたソフトウェアに多く見られます。
例えば、コップに水を注ぐ際に溢れた水が周囲を濡らして影響を及ぼすように、本来格納すべき場所以外にデータが書き込まれてしまうのです。適切な入力チェックやメモリ保護機能を実装することで、こうした攻撃を未然に防ぐことができます。
ア(フィッシング):
正規の企業やサービスを装い、ユーザからIDやパスワードなどの個人情報を騙し取る詐欺的手法であり、ソフトウェアの脆弱性とは関係ありません。
イ(SQLインジェクション):
データベースに不正なSQL文を埋め込んで実行させる攻撃で、入力チェックの不備が原因ですが、OSレベルの管理者権限取得とは異なります。
エ(ブルートフォース攻撃):
可能なパスワードの組合せを総当たりで試す攻撃であり、脆弱性を突くというよりは力技で認証を突破する方法です。
難易度
この問題は、基本的なセキュリティ用語とそれぞれの攻撃手法の特徴を理解しているかを問う内容であり、初心者でも選択肢の違いを比較すれば正解にたどり着けます。初学者にはやや専門的な語が出るため中程度の難易度です。
用語補足
バッファオーバーフロー:
入力領域を超えてデータが書き込まれ、本来のプログラム動作を乗っ取るような状態。攻撃者が任意のコードを実行することも可能になります。
SQLインジェクション:
データベース操作のためのSQL文に不正なコードを埋め込むことで、情報の抜き取りや改ざんを行う攻撃です。
フィッシング:
偽メールや偽サイトを使ってユーザーを騙し、個人情報を入力させることで詐取する攻撃です。
対策
ソフトウェアを開発する際は、入力チェックの徹底、メモリ領域の制限、アドレス空間配置のランダム化(ASLR)など、バッファオーバーフローへの対策を実装することが重要です。過去の脆弱性事例も学ぶとよいでしょう。