5)出力データが適切にエスケープ処理されているか?エスケープ処理の方法が明確になっているか?
第2回の記事で紹介したように出力データの処理漏れによっても脆弱性が発生する。自らエスケープ処理を実装しなければならない場合は、エスケープ対象となるデータが明確になっているか確認する必要がある。
6)各機能、データに対するアクセス権は必要最低限のものしかないか?
不必要なアクセス権で各機能、データにアクセスすることは被害を拡大する原因となる。たとえば、DBのアクセスユーザーに管理者権限を設定していた場合、SQLインジェクションの脆弱性があると、データベースの破壊という被害に拡大する恐れがある。
その他にも、機密情報を外部から直接アクセスできる場所に保存することで、数年前に多発した個人情報の漏えい事件のような多大な被害をこうむる危険性もある。
また、機密情報だけでなく、一時的な内部情報を外部からアクセスできる場所に保存することも同様に危険だ。攻撃者は、一時的な内部情報も攻撃の糸口として利用するためだ。
これらの設計レビューを行った後、コードを記述することで、設計段階でしか防げないような脆弱性をなくし、万が一コーディングミスがあったとしても、その被害を最小限にすることが可能となる。
次回は、引き続き各開発工程におけるレビューと適切なテストについて説明する。
■著者プロフィール
池田雅一テクマトリックス シニア・エンジニア
テクマトリックス シニア・エンジニア。2000年よりウェブアプリケーションやネットワークに関する脆弱性検査に従事。Watchfireのウェブアプリケーション脆弱性評価ツール「AppScan」を活用し、大手企業に対してウェブアプリケーションのセキュリティコンサルを実施した経験を持つ。
■関連ホワイトペーパー
・WEBアプリケーションのセキュリティ:自動スキャンと手動による侵入テストの比較
・WEB アプリケーションにおける権限拡張の自動テスト
■関連イベント
・アプリケーション開発で成功する品質向上ワークフロー 〜エキスパートからの助言〜