注目★★★★★GitHub Advisory
ip-address ライブラリの 8 進数解析バグ、SSRF フィルタ突破の危険性
30秒で把握
- 1ip-address Address4 が先頭ゼロオクテットを 10 進で解析・URL パーサとの 8 進/10 進解析不一致で内部 IP を外部誤判定
- 2isPrivate() など全メソッドで継承・SSRF フィルタが内部ネットワークへのリクエストを許可し信頼境界が破綻
- 3パッケージ使用チームはアップデート版での isPrivate() 動作確認・先頭ゼロ IP を含むテストケース作成推奨
要約
npm パッケージ ip-address の Address4 が、先頭ゼロの付いたオクテット (例: 012) を 10 進数で解析するのに対し、ブラウザの URL パーサや getaddrinfo は 8 進数として解析する。この不一致により、内部ネットワーク (10.0.0.1 など) の判定を isPrivate() で外部と誤判定され、SSRF フィルタが突破される。Address4 を使う全てのメソッド (isPrivate / isLoopback / isLinkLocal など) が継承する欠陥で、信頼境界検証に基づく制御が破綻する。
あなたへの影響
内部向けファイアウォール/SSRF フィルタに ip-address ライブラリを使っている場合。
推奨:アップデート前に先頭ゼロ付き IP アドレスの入力テストと修正版の適用確認が必要。