概要
ProxySQL(MySQL および PostgreSQL 向けプロキシ)のバージョン 2.0.0〜3.0.8 において、HAProxy PROXY プロトコル v1 の UNKNOWN トークン付きフレームのアドレスフィールドが仕様に反して解析・適用されます。
HAProxy PROXY プロトコル v1 の仕様では、PROXY UNKNOWN が宣言された場合、受信側はクライアント ID を判定できないものとして後続のアドレスフィールドを無視しなければなりません。しかし ProxySQL は sscanf でこれらを解析し、セッションの送信元アドレス(addr.addr フィールド)に書き込みます。
その結果、TCP レベルでフロントエンドポートに到達できる攻撃者は、PROXY UNKNOWN フレームで任意の送信元 IP を主張でき、client_addr 条件を使ったすべてのルーティングルールと ACL をバイパスできます。実環境では読み書き分割(内部アプリ → プライマリ DB、公開トラフィック → レプリカ)や、DDL 実行を特定 CIDR にのみ許可するようなフィルタリングルールが無効化されます。
CVSSベクトル
| 指標 | 値 |
|---|---|
| 攻撃ベクトル(AV) | ネットワーク (N) |
| 攻撃複雑度(AC) | 低 (L) |
| 必要権限(PR) | 不要 (N) |
| ユーザー操作(UI) | 不要 (N) |
| スコープ(S) | 変更あり (C) |
| 機密性(C) | 高 (H) |
| 完全性(I) | 高 (H) |
| 可用性(A) | 高 (H) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| ProxySQL | sysown | 2.0.0 〜 3.0.8 |
修正バージョンと回避策
修正バージョン: ProxySQL 3.0.9
回避策:
mysql-proxy_protocol_networksを空にするか、信頼できるロードバランサーの IP のみに制限する- ファイアウォールでフロントエンドポートへのアクセスを信頼済みホストのみに制限する
関連リンク
データソース: NVD (NIST), GitHub Advisory Database
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
