情報セキュリティブログ ホーム > セキュリティ用語解説 > フォーマットストリング攻撃とは
C言語の標準出力関数であるprintf(プリントエフ)などにおける書式指定文字列「フォーマットストリング」(%d、%s、%xなどのこと)の引数に不正なデータを送り込むことで、任意のコマンドを実行する攻撃のこと。
通常、フォーマットストリングは固定されたフォーマット文を引数にとるが、単に文字列を渡すこともできるようになっている。しかし、この文字列が入力に依存している場合、攻撃者が意図した任意のコマンドを送り込めてしまう。
フォーマットストリング攻撃は、バッファオーバーフローなどとともに悪用される。いずれも管理者権限を得て遠隔地から任意のコマンドを実行できるという点でやっかいなものだ。これにより、サーバーが提供しているサービスを不能状態にさせることもできてしまう。
フォーマットストリングの脆弱性は、CおよびC++言語で書かれたCGIや動的に呼び出されるプログラムに存在しており、プログラム上でフォーマットストリングを指定していない場合に発生する。プログラム開発の際は、フォーマットストリングをプログラム上できちんと指定することや、入力データとして不適切な文字種を受け付けないなどの対策が必要となる。