識別と認証の失敗(Identification and Authentication Failures)とは何か | OWASP 2021

2021年に改訂されたOWASP Top 10:2021の、7位は「Identification and Authentication Failures」です。
日本語では、「識別と認証の失敗」「識別と認証の不備」と訳されています。

前回の改定時の2017年度版では、2位の「認証の不備」としてランクインしていましたが、2021年度版では順位を下げつつもTop10に含まれています。

 

識別と認証の失敗とは

Webアプリケーションはユーザーを識別し、適切に認証する必要があります。つまり、アクセスの際にユーザー自身が提示している通りの人物であることを確認必要があります。
デフォルトや弱いパスワードを利用していたり、暗号化がされていないなどが原因で、本人以外のユーザーがパスワードを簡単に入手出来てしまうという問題は、本項目にあたります。

 

例えば、パスワードを忘れたとき、「パスワードを忘れた」をクリックし、ユーザー本人であることを証明するために、事前に登録したSMSやメールアドレスで受け取った確認用コードを入力するというフローが広く使われています。この際に、確認用コードの入力手順を省略された場合や不正確に行われた場合、任意のIDすべてのパスワードが誰でも変更できることになります。これが「識別と認証の失敗」の一例です。

また、ソフトウェアが証明書を提供するホストと通信する際に、そのホストの証明書が実際にそのホストと関連付けられているかの確認を適切に行わないことも「識別と認証の失敗」の例として挙げられます。つまり、識別・認証の手順は存在するが、提示された情報が正しいものかの検証に不備があるケースです。

さらに、Webアプリが古いセッションを閉じない場合も例として挙げられます。セッションが無期限にアクティブであると、別のユーザーが利用しようとした際に、前のユーザーの認証情報で操作ができるという状況が発生してしまいます。

 

対策

ユーザー本人だけが適切にアクセスできる状態を保つために、パスワードの長さ・複雑さ・変更頻度についてポリシーを設定します。

可能な限り多要素認証を実装することも、自動化による攻撃への対策になります。

 

セッション管理についても、タイムアウト設定を正しく行うことや、ログインごとにランダムなセッションIDの発行を行うこと、そのセッションIDをURLに含まず、安全に保管することなども重要です。