注目★★★★★GitHub Advisory
Skipper の OPA ポリシー、チャンク転送・HTTP/2 リクエストで回避可能
30秒で把握
- 1Skipper v0.26.8 以前の OPA フィルタ、Transfer-Encoding: chunked と HTTP/2 で ボディ検査を回避可能
- 2Content-Length 未指定時に raw_body が空になり Rego ポリシーが禁止フィールドを見逃し認可
- 3本番環境は修正版リリース待機・HTTP/2・チャンク転送の検証テストを優先実施
要約
Zalando の Skipper プロキシの OPA 統合に脆弱性が存在し、HTTP/1.1 の Transfer-Encoding: chunked または HTTP/2 リクエスト (Content-Length ヘッダ省略時) で リクエストボディ検査が意図せず空になり、ポリシーが回避される。opaAuthorizeRequestWithBody フィルタが有効でも、ExtractHttpBodyOptionally ヘルパーが Content-Length 未指定時に empty raw_body を生成し、Rego ポリシーが空のドキュメント相手に評価して不正なリクエストを認可する。その結果、本来ブロック対象の攻撃ペイロードが上流サービスに到達する。v0.26.8 以前が影響を受け、修正版はまだリリースされていない。
あなたへの影響
Skipper を API ゲートウェイ・認証プロキシとして運用する場合、opaAuthorizeRequestWithBody でリクエストボディを検査している環境は、HTTP/2 クライアントや意図的にチャンク転送を使う攻撃者に対してポリシーが無効になる可能性があるため。
推奨:v0.26.8 より新しいバージョンへの更新と、チャンク・HTTP/2 リクエストの具体的な検証テストを近日中に実施すべき。