OWASP トップ 10 API セキュリティリスク:壊れた認証
2023年4月28日、Paul Dughi
Open Worldwide Application Security Project® (OWASP) トップ 10 API セキュリティリスクのドラフトリストの第2位は、壊れた認証です。
壊れた認証さえあれば攻撃者は、認証またはセッション管理ツールの脆弱性を悪用して認証方法をバイパスできます。
攻撃ベクトル
認証方法は、サーバーに接続する誰もが利用できるため、攻撃者の格好のターゲットとなります。弱いパスワードおよび推測されやすいパスワードとブルートフォース攻撃によって侵害の糸口をつかみます。ほかにもセッション固定化攻撃、不十分なセッション・トークン/クッキー、ユーザーのログアウト後のセッション無効化の失敗も、攻撃者の侵入を許します。
OWASPが指摘するように、APIにおける認証は複雑です。そのためソフトウェアエンジニアは、認証ツールや境界を実装する際に、しばしば間違いを犯します。
OWASPは、壊れた認証に悪用可能性スコア3(ハッカーによって多少悪用可能であることを意味する)を割り当てました。
セキュリティの弱点
API セキュリティの認証が壊される際、2つの重要な問題があります。1つめは、API エンドポイントによる認証の保護が不十分であることです。API エンドポイントは、通常のエンドポイントとは異なり、追加の保護レイヤーを必要としているのです。第2に、様々な攻撃ベクトルがあるがゆえに間違ったメカニズムが適用されがちです。たとえば、Web アプリケーション用に設計された認証メカニズムは、モノのインターネット(IoT)クライアントには適さないかもしれません。
OWASP は、「壊れた認証」を普及率と検出率で2と評価しています。これはつまり、この脆弱性が一般的であり、中程度の努力で検出できることを示しています。
ビジネスへの影響
技術的な観点からは最も深刻な脆弱性ではないかもしれませんが、不正なユーザーがアクセスすることは、企業にとって大きなリスクとなります。
侵害は、以下のような深刻な被害をもたらす可能性があります
- 機密データへの不正アクセス
- アカウントの乗っ取り
- データ操作
- 個人情報窃盗
攻撃者がユーザーアカウントにアクセスできるようになると、他の潜在的な脆弱性も悪用できます。たとえば権限昇格や、ネットワーク内での水平展開などです。このような攻撃は、GDPR、CCPA、HIPAA、PCI-DSSといったデータ保護規制を順守するうえでも問題を引き起こす可能性があります。
認証破り攻撃の仕組み
攻撃者は、システムの脆弱性を探り、さまざまな手口でアクセス権を獲得します。最も一般的な手法の1つに、ブルートフォースがあります。コンピュータで大量のパスワードを生成してユーザーの認証情報を推測するのです。何年も前から警告されている手法ですが、多くのユーザーはいまだに弱いパスワードを使用していたり、システムがハッシュ化されていないパスワードを保持したりしているのが現状です。
その他にも、以下のような攻撃があります。
- セッションハイジャック:攻撃者がユーザーのセッショントークン/クッキーを傍受します。
- セッションの固定化:攻撃者はユーザーのセッショントークンやクッキーを既知の値に設定し、そのトークンやクッキーを使ってユーザーにログインさせてセッションを乗っ取ります。
- パスワードスプレー:攻撃者は、脅威のベクトルを見つけるために、ユーザーアカウントに共通のパスワードを「スプレー」します。
- クレデンシャル・スタッフィング:あるアプリケーションから盗んだパスワードを使い、ユーザーが認証情報を再利用しているシステムへ不正にアクセスします。
- URLの改ざん:攻撃者は、URLの一般的な書式を悪用して、認証を回避するためにURLを操作します。
実例の紹介
このような認証破りの攻撃は、一連のインシデントで注目を集めました。マリオットホテルチェーンを狙った攻撃もその1つです。このインシデントでは、2人の従業員の盗まれたログイン情報が、520万人以上の宿泊客の情報へのアクセスに使われました。
2023年には同様の攻撃がヤム・ブランズ(タコベル、KFC)、チック・フィレイ(Chick-fil-A)、ノートン・ライフロック、T-モバイル、メールチンプ(Mailchimp)に対して行われています。
壊された認証の脆弱性を検出する
破られた認証の脆弱性を検出するには、ユーザー認証、パスワード管理、セッション管理、アクセス制御など、認証機構を包括的にセキュリティ監査する必要があります。
自動化された脆弱性スキャナーは、一般的な API セキュリティの脅威を特定するのに役立ちます。また、手動テストを導入することで、認証が破られた脆弱性を特定することができます。
認証破りの脆弱性を防ぐ
ソフトウェアエンジニアとセキュリティチームは、いくつかの簡単な戦略を導入することで、認証破りの脆弱性を防ぐことができます。各ステップだけでは API パスウェイ攻撃を防ぐことはできませんが、重層的なアプローチでリスクを軽減することができます。
多要素認証の採用
ユーザーにメールやテキストで送信されるワンタイムパスワード(OTP)、多要素認証(MFA)パスコード、その他の追加の検証手段は、ブルートフォース攻撃やクレデンシャルスタッフィングを防ぐのに役立ちます。
強固なパスワードの義務化
大文字、小文字、英数字、特殊文字を組み合わせた、より複雑なパスワードを使用するようユーザーに強制しましょう。管理者は、NIST 800-63B で定められた認証情報のガイドラインにも従うべきです。
レート制限の実施
システム管理者は、ブルートフォース攻撃やクレデンシャルスタッフィングを防ぐために、ログイン試行失敗回数を制限する必要があります。試行回数の制限は、サービス拒否攻撃の抑止力にもなります。また、ログインに何度も失敗した場合には、自動警告システムを導入し、潜在的な脅威を表面化させ、さらに評価する必要があります。
ログインフォームは一貫した応答を確実に送信する
アカウント列挙攻撃は、攻撃者が異なるユーザー名とパスワードを使用して複数のリクエストを送信した場合に発生します。有効な組み合わせと無効な組み合わせで異なるエラーメッセージが表示される場合、攻撃者はシステムに登録されているユーザーを特定し、ブルートフォース攻撃やフィッシング攻撃を促すことができます。
ランダムなセッションIDを生成する
ユーザーがログインした時点でランダムなセッションIDを生成することで、攻撃者は予測しづらくなります。ランダムなIDは、各セッションがユニークなIDを持ち、限られた時間しか有効でないことを保証します。すべてのセッションIDは、ログアウト時に失効するようにします。これは、弱いトークンや予測可能なトークンを排除することで、セッション固定化攻撃を軽減するのに役立ちます。
APIゲートウェイやリバースプロキシーを利用する
追加の認証なしにAPIへのアクセスを許可するマイクロサービスは、攻撃対象領域を大幅に拡大する可能性があります。APIゲートウェイやリバースプロキシーの使用は、すべての受信リクエストに対して単一のエントリーポイントを作成し、すべてのAPIリクエストに対して認証と認可のポリシーを義務付けます。
包括的なAPIセキュリティ計画
包括的なセキュリティ計画の一環として、ITチームは、転送中のすべてのデータに対するエンドツーエンドの暗号化、APIエンドポイント保護、パスワードのハッシュ化、脆弱性の定期的なテストも導入する必要があります。
Webアプリケーションと API を包括的プラットフォームで保護しましょう
原文はこちら
OWASP Top 10 API security risks: Broken authentication
Apr. 28, 2023 Paul Dughi
https://blog.barracuda.com/2023/04/28/owasp-top-10-api-security-risks-broken-authentication/