【情報セキュリティ】サーバーを操り人形にする!「OSコマンドインジェクション」|情報処理問題1000本ノック
Webアプリの入力欄からOSへの直接命令を送り込む攻撃。サーバーが「踏み台」にされるリスクもある、最恐クラスの脆弱性を攻略しましょう。
1. 【 問題 】:OSコマンドインジェクション
【 問題 】 Webアプリケーションにおいて、OSのシェルを呼び出す際の実装に不備がある場合、攻撃者によって不正なOSのコマンドが実行されることがあります。その結果、Webサーバー内部の情報の漏えいや、別のサーバーへの攻撃の踏み台を招く攻撃手法はどれでしょうか?
① SQLインジェクション
② OSコマンドインジェクション
③ クロスサイトスクリプティング(XSS)
④ ディレクトリトラバーサル
2. 正解:Webセキュリティに関する正解
正解: ② OSコマンドインジェクション
3. 解説:コマンドの「継ぎ足し」による乗っ取り
プログラムが想定している「正しい入力」の後に、特殊な記号(; や |)を使って「悪意のある命令」を継ぎ足す手法です。
【図解:被害が全方位に及ぶ理由】
■ 深刻な被害例
1. 機密性の破壊:サーバー内の設定ファイルやパスワードファイルを閲覧・奪取される。
2. 攻撃の踏み台:乗っ取ったサーバーから他の組織へ攻撃を仕掛け、犯人に仕立て上げられる。
3. 制御の奪取:ファイルの削除、マルウェアの設置、OS自体のシャットダウンなど。
★ OSの制御権を直接狙われるため、Webアプリ内だけでなく、サーバー全体が危険にさらされます。
■ 深刻な被害例
1. 機密性の破壊:サーバー内の設定ファイルやパスワードファイルを閲覧・奪取される。
2. 攻撃の踏み台:乗っ取ったサーバーから他の組織へ攻撃を仕掛け、犯人に仕立て上げられる。
3. 制御の奪取:ファイルの削除、マルウェアの設置、OS自体のシャットダウンなど。
★ OSの制御権を直接狙われるため、Webアプリ内だけでなく、サーバー全体が危険にさらされます。
[ 対策のポイント ]
★ 根本的解決:OSのシェルを呼び出す関数(system, exec等)を使わない実装にする。
★ 保険的対策:シェルにとって特別な意味を持つ文字(`;` `&` `|` `>`等)を無害化(サニタイジング)する。
★ 根本的解決:OSのシェルを呼び出す関数(system, exec等)を使わない実装にする。
★ 保険的対策:シェルにとって特別な意味を持つ文字(`;` `&` `|` `>`等)を無害化(サニタイジング)する。
1. 理解のコツ: 役所に「住所変更届」を出したとき、住所の欄に「あと、金庫の鍵も開けておいて」という命令を書き込まれ、職員(OS)がそれをそのまま実行してしまうような事態です。
2. 試験対策の視点: 「シェルの呼び出し」「不正なOSコマンド」「踏み台」というキーワードが出たら、この用語が正解です。SQLインジェクションが「DBの操作」であるのに対し、こちらは「OSそのものの操作」である点に注目しましょう。
4. まとめ
「プログラムの隙間からOSへの命令を流し込む」。これがOSコマンドインジェクションです。一度許してしまうとシステムが完全に支配される恐れがあるため、開発段階での徹底的な対策が求められます。
PR