CWE-287
Weakness ID:287(Weakness Class)
Status: Draft
不適切な認証
解説
解説要約
ユーザが与えられた識別を所持していることを主張した際に、ソフトウェアにおいてその主張が正しいことを適切に証明しないという問題です。
別名
authentification
別名として、非英語圏では一般的に「認証(authentification)」が使用されます。
AuthC
"AuthC" は web アプリケーションのセキュリティにおいて、「認証 (authentication)」 の省略形として使用されています。 「認可 (authorization)」 の略語である "AuthZ" とは区別して使用されます。"Auth" のみでは「認証 (authentication)」と「認可 (authorization)」のどちらか区別がつかないため、"Auth" のみでの使用は推奨されません。
脆弱性の発生時期
アーキテクチャおよび設計
実装
該当するプラットフォーム
言語
言語に依存
一般的な影響
影響を受ける範囲 | 影響 |
---|---|
完全性 アクセス制御 |
本脆弱性はリソースや機能に関する情報を、意図しないユーザに対して漏洩してしまう可能性があります。場合によっては、攻撃者が機密情報を取得、ないし任意のコードを実行する恐れがあります。 |
攻撃を受ける可能性
中〜高
検出手段
自動静的分析
自動静的分析ツールにより、よくある Apache HTTP Server の .htaccess のような設定ファイルや、一般に利用されている認証ライブラリといったタイプの認証を検出可能です。
一般的に、自動静的分析用のツールでカスタマイズされた認証スキームを検出するのは困難です。
さらに、大抵のソフトウェア設計では任意のユーザが確認なしでアクセス可能な機能を含んでいます。
有効性:限定的
手動静的分析
本脆弱性は、手動による解析、ペネトレーションテスト、脅威モデリング、アクティブなセッションを記録し変更できる対話的なテストツール等を組み合わせることで、検出可能です。
手動静的分析はカスタマイズされた認証メカニズムの正確性を評価することにおいて有効です。
有効性:高
手動分析は完全に自動化された手段よりも効果的です。脆弱性が設計及びビジネスルールに関係する場合に特に有効です。
脆弱なコード例
例 1:
以下のコードは、ユーザがすでにログインしているかを確認するものです。もしログインしていない場合、このコードはユーザから入力されたユーザ名とパスワードで認証します。ログインに成功すると cookie に "loggedin" という内容を保存し、このユーザがすでにログイン済みであることを 「記憶」させます。最後に、このコードではユーザの cookie に記録されたログインユーザ名が "Administrator" である場合、管理者用のタスクを実行します。
サンプルコード:Perl (悪い例)
my $q = new CGI; if ($q->cookie('loggedin') ne "true") { if (! AuthenticateUser($q->param('username'), $q->param('password'))) { ExitError("Error: you need to log in first"); } else { # Set loggedin and user cookies. $q->cookie( -name => 'loggedin', -value => 'true' ); $q->cookie( -name => 'user', -value => $q->param('username') ); } } if ($q->cookie('user') eq "Administrator") { DoAdministratorTasks(); }
残念ながら、このコードは回避可能です。攻撃者はコードがユーザ名とパスワードをチェックしないように、 cookie のみをセットすることが可能です。攻撃者は以下のようなヘッダを含む HTTP リクエストによりこの回避を実現します。
(攻撃者)
GET /cgi-bin/vulnerable.cgi HTTP/1.1 Cookie: user=Administrator Cookie: loggedin=true [body of request]
攻撃者は cookie の loggedin の値を "true"(真)とセットすることにより、認証チェックを全て回避します。cookie 上のユーザ名を "Administrator" に設定し、ソフトウェアの管理者権限を入手します。
例 2:
</p>2009年1月、ある攻撃者が Twitter サーバに管理者としてアクセスに成功するという事件が発生しました。 Twitter サーバがログイン試行の回数を制限していなかったことが原因です。攻撃者は Twitter のサポートチームのメンバーを狙い、膨大な数の一般的なパスワードを試すブルートフォース攻撃によりパスワードを推測することに成功しました。サポートメンバーとしてアクセスに成功すると、管理者画面によって資産家や政治家 33 名のアカウントを入手し、入手したユーザになりすました偽の Twitter メッセージを送信しました。
参照情報:
Kim Zetter. "Weak Password Brings ‘Happiness’ to Twitter Hacker". 2009-01-09.
<http://www.wired.com/threatlevel/2009/01/professed-twitt/>.
発見された事例
参照 | 詳細 |
---|---|
CVE-2009-3421 | login script for guestbook allows bypassing authentication by setting a "login_ok" parameter to 1. |
CVE-2009-2382 | admin script allows authentication bypass by setting a cookie value to "LOGGEDIN". |
CVE-2009-1048 | VOIP product allows authentication bypass using 127.0.0.1 in the Host header. |
CVE-2009-2213 | product uses default "Allow" action, instead of default deny, leading to authentication bypass. |
CVE-2009-2168 | chain: redirect without exit (CWE-698) leads to resultant authentication bypass. |
CVE-2009-3107 | product does not restrict access to a listening port for a critical service, allowing authentication to be bypassed. |
CVE-2009-1596 | product does not properly implement a security-related configuration setting, allowing authentication bypass. |
CVE-2009-2422 | authentication routine returns "nil" instead of "false" in some situations, allowing authentication bypass using an invalid username. |
CVE-2009-3232 | authentication update script does not properly handle when admin does not select any authentication modules, allowing authentication bypass. |
CVE-2009-3231 | use of LDAP authentication with anonymous binds causes empty password to result in successful authentication |
CVE-2005-3435 | product authentication succeeds if user-provided MD5 hash matches the hash in its database; this can be subjected to replay attacks. |
CVE-2005-0408 | chain: product generates predictable MD5 hashes using a constant value combined with username, allowing authentication bypass. |
被害の緩和策
フェーズ:アーキテクチャおよび設計
戦略:ライブラリ、フレームワーク
OWASP ESAPI Authentication 機能等、認証フレームワークやライブラリを使用してください。
関係性
Nature | Type | ID | Name | View(s) this relationship pertains to |
---|---|---|---|---|
ChildOf | Category | 254 | Security Features | Development Concepts (primary)699 |
ChildOf | Weakness Class | 693 | Protection Mechanism Failure | Research Concepts (primary)1000 |
ChildOf | Category | 718 | OWASP Top Ten 2007 Category A7 - Broken Authentication and Session Management | Weaknesses in OWASP Top Ten (2007) (primary)629 |
ChildOf | Category | 724 | OWASP Top Ten 2004 Category A3 - Broken Authentication and Session Management | Weaknesses in OWASP Top Ten (2004) (primary)711 |
ChildOf | Category | 812 | OWASP Top Ten 2010 Category A3 - Broken Authentication and Session Management | Weaknesses in OWASP Top Ten (2010) (primary)809 |
ParentOf | Weakness Class | 300 | Channel Accessible by Non-Endpoint ('Man-in-the-Middle') | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Variant | 301 | Reflection Attack in an Authentication Protocol | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 303 | Incorrect Implementation of Authentication Algorithm | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 304 | Missing Critical Step in Authentication | Development Concepts (primary)699 |
ParentOf | Weakness Variant | 306 | Missing Authentication for Critical Function | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 307 | Improper Restriction of Excessive Authentication Attempts | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 308 | Use of Single-factor Authentication | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 309 | Use of Password System for Primary Authentication | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 322 | Key Exchange without Entity Authentication | Research Concepts (primary)1000 |
ParentOf | Compound Element: Composite | 384 | Session Fixation | Development Concepts699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Class | 592 | Authentication Bypass Issues | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 603 | Use of Client-Side Authentication | Development Concepts (primary)699 |
Research Concepts1000 | ||||
ParentOf | Weakness Base | 645 | Overly Restrictive Account Lockout Mechanism | Development Concepts (primary)699 |
Research Concepts (primary)1000 | ||||
ParentOf | Weakness Base | 798 | Use of Hard-coded Credentials | Research Concepts (primary)1000 |
ParentOf | Weakness Base | 804 | Guessable CAPTCHA | Development Concepts699 |
Research Concepts1000 | ||||
MemberOf | 635 | Weaknesses Used by NVD | Weaknesses Used by NVD (primary)635 | |
CanFollow | Weakness Base | 304 | Missing Critical Step in Authentication | Research Concepts1000 |
CanFollow | Weakness Base | 613 | Insufficient Session Expiration | Development Concepts699 |
Research Concepts1000 |
関係性の補足
SQL インジェクションや、その他の脆弱性の結果として発生する可能性があります。
他組織での分類
組織名または組織での分類 | ノード ID | CWEの分類との適合度 | 分類名 |
---|---|---|---|
PLOVER | Authentication Error | ||
OWASP Top Ten 2007 | A7 | CWE の方が詳細 | Broken Authentication and Session Management |
OWASP Top Ten 2004 | A3 | CWE の方が詳細 | Broken Authentication and Session Management |
WASC | 1 | Insufficient Authentication |
関連する攻撃パターン
CAPEC-ID | 攻撃パターン名 (CAPEC Version 1.5) |
---|---|
22 | Exploiting Trust in Client (aka Make the Client Invisible) |
94 | Man in the Middle Attack |
57 | Utilizing REST's Trust in the System Resource to Register Man in the Middle |
114 | Authentication Abuse |
参照
OWASP. "Top 10 2007-Broken Authentication and Session Management". <http://www.owasp.org/index.php/Top_10_2007-A7>.
OWASP. "Guide to Authentication". <http://www.owasp.org/index.php/Guide_to_Authentication>.
Microsoft. "Authentication". <http://msdn.microsoft.com/en-us/library/aa374735(VS.85).aspx>.
[REF-11] M. Howard and D. LeBlanc. "Writing Secure Code". Chapter 4, "Authentication" Page 109. 2nd Edition. Microsoft. 2002.
更新履歴
[2011年04月21日]
2010年10月12日時点のデータを元に更新
[2009年06月29日]
2009年02月02日時点の下記 URL を元に作成
http://cwe.mitre.org/data/definitions/287.html
登録日 2011/04/21
最終更新日 2023/04/04