アウトオブバンド型の脆弱性は、攻撃の過程でアプリケーションが外部システムに静かに通信を送ることで表面化します。こうした通信を捕捉するには専用のインフラが必要となり、これまで多くの研究者は自前でその環境を構築してきました。Microsoftが新たに公開したオープンソースプロジェクトは、プライベート環境で稼働させることを前提に、そのインフラを一式パッケージとして提供します。

Dusseldorfは、アウトオブバンド型のアプリケーションセキュリティテスト(OAST)プラットフォームです。複数のプロトコルにまたがる受信ネットワークトラフィックを捕捉し、運用担当者が検証ワークフロー用の自動応答を作成できるようにします。名称は、プロジェクトに地名を用いるというMicrosoftの慣習に由来しています。ドイツの都市デュッセルドルフ(Düsseldorf)の綴りにはSSRFの文字が含まれており、日常的な表記に合わせてウムラウトを外し、普通のuに置き換えられています。
このツールは、アプリケーション内にほとんど痕跡を残さない一群の欠陥を対象としています。具体的には、サーバーサイドリクエストフォージェリ(SSRF)、クロスサイトスクリプティング(XSS)、サーバーサイドテンプレートインジェクション、XML外部エンティティ(XXE)の欠陥、および関連する分類が含まれます。これらの検出は、アプリケーションがネットワークの境界でどのような挙動を示すかを観察することに依存しており、Dusseldorfはまさにその境界に位置しています。
展開が完了すると、このプラットフォームは*.yourdomain.netのようなドメインに紐づいたDNS、HTTP、HTTPSのリスナーを稼働させます。そのドメインおよびあらゆるサブドメインへのリクエストは、すべてキャプチャログに記録されます。プロジェクトではこれらのサブドメインを「ゾーン」と呼んでおり、foo.yourdomain.netとfoo.bar.yourdomain.netはそれぞれ別個のエントリとして登録されます。保護されたグラフィカルインターフェースと対応するREST APIにより、運用担当者は捕捉したリクエストとその応答を確認できるほか、カスタム応答やフィルタの設定も行えます。
プライベート環境での展開が設計上の前提となっています。運用担当者は、IDとの連携、インフラの規模、使用するドメイン、そしてリクエスト処理を統制するランタイムポリシーをすべて自ら管理します。ルールやサービスレベルの変更により、受信トラフィックに対するプラットフォームの応答方法を調整できます。
Dusseldorfを稼働させるには、1つ以上のパブリックIPv4アドレスを持つインターネット接続マシンと、そのアドレスを指すネームサーバーレコードを設定したドメインが必要です。コードベースはAzure向けに構築されており、2種類の展開方法に分かれています。1つはラボ環境や開発者による反復作業向けのローカル展開で、認証情報の生成、証明書の設定、Docker Composeによるワークフローが含まれます。もう1つはAzure展開で、クラウド上のプロビジョニングとHelmを通じたデータベースの初期化を担います。
前提条件のリストにも、この2系統のアプローチが反映されています。導入する側は、Docker、Docker Compose、Azure CLI、TLS証明書用のOpenSSL、pip付きのPython 3、jqユーティリティ、そしてHelmを用意する必要があります。展開後は、インターフェースとAPIを通じて操作を行い、コマンドラインでの手順もあわせて文書化されています。
DusseldorfはGitHubで無償公開されています。