安全が確認されない不安な設計(Insecure Design)とは何か | OWASP 2021

2021年に改訂されたOWASP Top 10:2021の中で、4番目の脅威として挙げられたのが、「Insecure Design」です。
日本語では、「安全が確認されない不安な設計」「インセキュアデザイン」「安全でない設計」など呼ばれています。

前回の改定時の2017年度版では、TOP10には含まれておらず2021年から新たに指摘されたカテゴリーです。

安全が確認されない不安な設計とは

その他のコード面のカテゴリーとは異なり、「Insecure Design」はより全体的な構造に焦点が当てられています。様々なケースを含む幅広いカテゴリーです。

デザイン面の安全でない設計の例として、詳細なエラーメッセージが表示される仕組みなどがあります。
開発時には詳細なエラーメッセージはトラブルシューティングに役立ちますが、悪意のあるユーザーが攻撃に利用する可能背もあります。

また、パスワードがテキストで保存されているケースなども「安全性が確認されない不安な設計」にあたります。この種の脆弱性は、暗号化実装のミスではなく、パスワードを暗号化しないという意図的な設計上の決定が問題です。

 

対策

セキュリティは、プログラムの手法だけではなく、データをどのように扱うかの設計段階から重要です。安全な設計をするため、Webアプリケーション開発の早い段階で、セキュリティの専門家に相談し、安全な開発ライフサイクルを確立することが対策となります。

 

例:

  • 本番環境へリリースする際は、エラーメッセージの不要な情報・詳細な情報は取り除く
  • パスワードを忘れた際の「秘密の質問と答え」による回復フローを廃止し、MFAなどを使用したより安全な設計に置き換える