末尾スラッシュで API Gateway 認可が突破された — 受託で行う API 認可セキュリティ監査 2026 | GH Media
URLがコピーされました

末尾スラッシュで API Gateway 認可が突破された — 受託で行う API 認可セキュリティ監査 2026

URLがコピーされました
末尾スラッシュで API Gateway 認可が突破された — 受託で行う API 認可セキュリティ監査 2026

2026 年 6 月 1 日、InfoQ が A Trailing Slash Bypassed AWS API Gateway Authorization を報じ、エンジニアコミュニティに衝撃が走りました。セキュリティ研究者の調査によれば、AWS HTTP API のパス末尾に / を付けるだけで Lambda Authorizer による認証が完全にスキップされるという挙動が確認され、あるフィンテックでは未認証のまま送金 API が呼び出せる状態になっていたといいます。根本原因は パス正規化(path normalization)のズレ——認可レイヤーが見るパスと、ルーティングが解決するパスが一致しないことで「認可されていないが到達できる」エンドポイントが生まれたのです。

これは「珍しいバグ」ではなく、API 認可を「フレームワーク任せ」にした設計が抱える構造的な盲点です。受託で中堅企業の API 基盤やフィンテック・SaaS を支える立場では、「認証 = ログイン」だけを見て「認可 = どのパスに誰が到達できるか」を検証していない現場を数多く見てきました。これまで AWS セキュリティエージェント・ペンテスト受託(GH Media) で扱った 攻撃者視点の検証GitHub CodeQL 宣言的セキュリティ受託(GH Media) で扱った 静的解析の自動化JWT / Cookie セッション Web 認証監査受託(GH Media) で扱った 認証情報の取り扱いと接続して、本記事では 「API 認可セキュリティ監査」受託パッケージとして整理します。

なぜ「末尾スラッシュ」で認可が崩れるのか

レイヤー役割バイパスが起きる理由
クライアントリクエスト送信/transfer/transfer/ を別物として扱える
API Gateway ルーティングパスマッチング末尾スラッシュを「同一ルート」に吸収
Lambda Authorizer認可判定正規化前のパスで methodArn を評価
バックエンド業務処理認可済み前提で処理を実行

つまり問題は 「どのパス文字列を正とするか」の合意が層をまたいで取れていないことにあります。Authorizer は /transfer/ を「ポリシーに無いパス」と見なしてキャッシュや評価をすり抜け、ルーティングは /transfer に解決してバックエンドへ通す——この わずかな表記ゆれが認可の壁を無効化します。

受託案件で頻出する 3 つの認可アンチパターン

アンチパターン 1: 「認証されていれば認可済み」と混同する

ログイン(誰であるか)が通れば全 API を叩けてしまう設計は、水平権限昇格(他人のデータ参照)垂直権限昇格(管理者操作)の両方を許します。受託では リソース単位のアクセス制御(ABAC / ReBAC)を前提に、「認証」と「認可」を分離した設計レビューを行います。

アンチパターン 2: パス正規化をフレームワーク任せにする

末尾スラッシュ・大文字小文字・%2F などの エンコード差異.. を含むパスは、層ごとに解釈が異なります。受託では 正規化ルールを一元化し、Authorizer・WAF・バックエンドで同一の正規化済みパスを評価するよう統一します。

アンチパターン 3: Authorizer のキャッシュキーを過信する

API Gateway の Authorizer はパスやトークンをキャッシュキーにします。キャッシュキーが正規化前のパスだと、/x の許可結果が /x/ に誤って再利用される事故が起きます。受託では キャッシュキー設計とTTL を監査項目に含めます。

受託で提供する「API 認可セキュリティ監査」5 フェーズ

フェーズ 1: 棚卸し・脅威モデリング(1〜2 週間)

  • API インベントリ作成(REST / HTTP API / WebSocket / 内部 API)
  • 認証方式(Cognito / Lambda Authorizer / IAM / API キー)の棚卸し
  • データ機密度マッピング(送金・個人情報・決済)
  • STRIDE ベースの脅威モデリング

フェーズ 2: 認可ロジック静的解析(1〜2 週間)

  • Authorizer / ポリシーの IaC レビュー
  • パス正規化ルールの層別突合
  • methodArn 評価ロジックの検証
  • CodeQL / Semgrep による認可漏れ検出

フェーズ 3: 動的検証・疑似攻撃(2〜3 週間)

  • 末尾スラッシュ / エンコード差異 / HTTP メソッド override の総当たり
  • 水平・垂直権限昇格テスト
  • IDOR(オブジェクト参照)検証
  • レート制限・WAF バイパス検証

フェーズ 4: 修正・ガードレール実装(2〜4 週間)

  • 正規化ミドルウェアの一元化
  • Authorizer キャッシュキー再設計
  • WAF ルール(パストラバーサル / エンコード)追加
  • 拒否デフォルト(deny-by-default)への切り替え

フェーズ 5: 継続監査・回帰防止(継続)

  • CI への認可テスト組み込み
  • 新規エンドポイントの自動スキャン
  • 月次の認可ドリフトレビュー
  • インシデント発生時のランブック更新

受託向け技術スタック標準セット

レイヤ推奨技術代替
API ゲートウェイAWS API Gateway / ALB + LambdaKong / Apigee
認可Cedar / OPAカスタム Authorizer
正規化共通ミドルウェアWAF 正規化ルール
静的解析CodeQL / SemgrepSnyk Code
動的検証ZAP / Burp / 自作ファザーNuclei
WAFAWS WAFCloudflare WAF
監視CloudWatch + GuardDutyDatadog Security
シークレットSecrets Manager / VaultSSM Parameter Store

どの案件に必要か / 不要か

必要な案件不要な案件
送金・決済・個人情報を扱う API公開情報のみの読み取り API
Lambda Authorizer / カスタム認可を実装フルマネージド認可のみ
マイクロサービスで API 数が多い単一エンドポイントの小規模
PCI DSS / 金融庁監督対象監査対象外
認可ロジックを内製している認可を一切持たない静的サイト

受託契約に書く 6 つの条項

条項内容顧客が確認すべきこと
検証範囲対象 API / 環境(本番 or ステージング)本番疑似攻撃の可否
報告義務重大脆弱性の即時通知 SLA通知から修正までの猶予
責任分界検出 vs 修正 vs 運用の責任既存資産起因の扱い
証跡保持検査ログ / レポートの保管期間監査提出要件
再発防止CI 組み込み・回帰テスト引き渡し後の保守
守秘 / 開示脆弱性の公表ポリシー取引先への報告義務

価格モデル — API 認可セキュリティ監査パッケージ

プラン金額対象内容
スポット診断120 万円〜(4 週間)API 20 本まで棚卸し + 静的 + 動的検証 + レポート
Lite40 万円〜 / 月API 〜50 本月次回帰スキャン + 新規 API 監査
Standard90 万円〜 / 月API 50〜200 本+ WAF 運用 + 月次脅威モデル更新
Enterprise220 万円〜 / 月API 200 本超 / 金融+ 専任 + インシデント対応 SLA
初期実装350 万円〜(一括)正規化基盤 + CI 組み込み全プラン共通

顧客側 ROI 試算(API 120 本 / 決済を含む SaaS 想定)

項目既存(認可を実装任せ)監査・ガードレール導入後差分
認可起因インシデント(年)2 件0.2 件-1.8 件
1 件あたり想定損害3,000 万円
脆弱性修正リードタイム3 週間3 日-18 日
監査対応工数(年)320 時間120 時間-200 時間
年間効果想定損害回避 約 5,400 万円 + 工数削減 約 160 万円

Standard プラン(年額 1,080 万円)でも、1 件のインシデント回避で十分に回収可能です。

ハマりやすい 5 つの落とし穴

落とし穴 1: 認証テストだけで「セキュアだ」と判断する

ログインが通ることと、そのトークンで叩けてはいけない API が守られていることは別問題です。認可テストを独立した監査項目にします。

落とし穴 2: ステージングでしか検証しない

本番固有の WAF・キャッシュ・ルーティング設定がバイパスを生みます。本番疑似攻撃の合意を契約段階で取り付けます。

落とし穴 3: 正規化を WAF にだけ任せる

WAF をすり抜けた変則パスが Authorizer とバックエンドで別解釈されます。正規化はアプリ層で一元化します。

落とし穴 4: 一度きりの診断で終える

新規エンドポイント追加のたびに穴が空きます。CI へ認可テストを組み込み、回帰を防ぎます。

落とし穴 5: 「allow リスト」ではなく「deny リスト」で守る

明示拒否では漏れが出ます。deny-by-default + 明示 allow へ切り替えます。

90 日アクションプラン

アクション
Week 1〜2API 棚卸し + 脅威モデリング
Week 3〜4認可ロジック静的解析 + 正規化突合
Week 5〜7動的検証 + 疑似攻撃(末尾スラッシュ含む)
Week 8〜11正規化一元化 + Authorizer 再設計 + WAF 強化
Week 12CI 組み込み + 回帰テスト + 月次運用開始

まとめ — 「認証は通った」で止めず「認可は守られているか」まで検証する

末尾スラッシュ 1 文字で送金 API が突破された今回の事例は、「認可をフレームワーク任せにしたツケ」が最悪のタイミングで噴出した典型例です。受託で API 基盤を支える立場では、認証と認可を分離し、パス正規化を層をまたいで統一し、deny-by-default をデフォルトに据える 「API 認可セキュリティ監査」が新しい主力サービスです。

弊社では スポット診断 / Lite / Standard / Enterprise の 4 段階で本パッケージを提供しています。「自社 API の認可が本当に守られているか不安」「金融・決済 API の監査を任せたい」「新規 API のたびに穴がないか自動で検証したい」というご相談は お問い合わせフォーム からお気軽にどうぞ。

Sources

URLがコピーされました

グリームハブ株式会社は、変化の激しい時代において、アイデアを形にし、人がもっと自由に、もっと創造的に生きられる世界を目指しています。

記事を書いた人

鈴木 翔

鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

関連記事