Scroll to top

DSSRF — OWASP掲載のSSRF防御ライブラリ

DSSRF — Defend. Validate. Protect. A JavaScript library that blocks SSRF attacks by validating URLs before outbound requests.
Secure development

プロジェクト概要

DSSRFは、私が開発・保守しているオープンソースのJavaScriptライブラリです。アプリケーションが外部へリクエストを送る前にURLを検証・サニタイズし、サーバーサイドリクエストフォージェリ(SSRF)を遮断します。きっかけは、案件のたびに同じ検証コードを書き直していたこと、そして開発チームが同じ箇所で微妙に実装を誤るのを繰り返し見てきたことでした。たいていはIPv6の表記かリダイレクトの扱いです。DSSRFはその知見をひとつのパッケージにまとめたもので、依存関係を追加せず、既存のHTTPクライアントの手前に挟むだけで機能します。現在はOWASP FoundationのFree for Open Source Application Security Toolsに防御ツールとして掲載され、npmでは30万件以上のダウンロード、GitHub経由では100万を超える利用に届いています。

300K+npm ダウンロード
1M+GitHub 経由の利用
OWASP防御ツールとして掲載
MIT無料・オープンソース

課題

  1. 文字列としてのURLではなく、実際の接続先を検証すること。ホスト名は内部アドレスに解決され得ます。
  2. IPv6のすべての表記(ループバック、ULA、リンクローカル、IPv4マップド、NAT64)を漏れなく扱うこと。
  3. リダイレクトと userinfo 接頭辞(user@host)による回避を、チェーンの各段階で塞ぐこと。
  4. チェックと接続の間にDNSの応答が変わる競合(DNSリバインディング)を防ぐこと。
  5. 防御ライブラリ自身が新たな攻撃面にならないよう、軽量かつ監査しやすい実装に保つこと。

アプローチ

  1. パース時ではなく名前解決時に検証し、返却されたすべてのアドレスを拒否リストと照合します。
  2. IPv4・IPv6双方のプライベート/特殊用途レンジを網羅した拒否リストを標準で同梱しています。
  3. リダイレクトを追跡する場合は、各ホップで同じ検証を再実行します。
  4. 自分のライブラリを継続的に攻撃し、見つけた欠陥は自ら公開・修正しています。
  5. MITライセンスで公開し、あらゆるJavaScriptプロジェクトに数行で組み込めるようにしています。

OWASP による掲載

「dssrf — 検証用の豊富なユーティリティを提供することで SSRF 攻撃を防ぎます。Web クライアントに組み込み、リクエストを送信する前に URL を検証することで SSRF 攻撃を排除します。」

— OWASP Foundation、Free for Open Source Application Security Tools(防御ツールの項)

自らのライブラリを攻撃する

防御ツールが信頼に値するのは、それが攻撃されている場合だけです。私はDSSRFに対して継続的にリサーチを行い、発見した欠陥を自ら公開してきました。

  • CVE-2026-44232 — IPv6 SSRF 許可リストバイパス(CVSS 8.7)。1.0.3 で修正。
  • CVE-2026-54722 — 1.0.3 の修正が不完全であったことによる SSRF バイパス(HIGH)。
  • CVE-2026-54729 — 1.1.1.1 を DNS リゾルバに用いた場合の localhost SSRF。1.0.5 で修正。

欠陥を隠すのではなく公開することが、このライブラリを実際に強くしてきました。最新バージョンを使い、公開されているアドバイザリを確認してください。