Ostorlabがオープンソースに 🎊
Ostorlabをオープンソース化し、数多くの新機能と新たな能力を発表する大型リリースです。
これはOstorlabの創業以来最も重要な発表であり、私自身、特にお伝えできることをうれしく思っています。
Ostorlabはオープンソースになります。当社のスキャンエンジン、脆弱性検出器、アナライザーを公開します。
Ostorlabの中核には、脆弱性検出器を楽しく組み合わせられる、高度にモジュール化されたエンジンがあります。
このモジュール性を最大限に生かすため、Nmap、OpenVAS、Tsunami、Nucleiをはじめとする人気のオープンソースセキュリティツールを収録したマーケットストアを公開します。今後さらに多くのツールが追加される予定です。

今回のリリースでは、モバイルアプリケーション、Webアプリケーション、IPアドレスからコンテナまで、あらゆるもののスキャンに対応します。それにより、単純な設定の問題の発見やシークレットのクローリングから、本格的な動的解析環境の実行まで、ほぼあらゆるものの検出を目指します。
使い始めるのは簡単で、インストールに1つのコマンド、実行に1つのコマンドを入力するだけです。
pip install -U ostorlab
oxo scan run --install \
--agent agent/ostorlab/nmap --agent agent/ostorlab/openvas --agent agent/ostorlab/tsunami --agent agent/ostorlab/nuclei \
ip 8.8.8.8

ただし、新しいプラットフォームとその機能について詳しく説明する前に、プラットフォームをオープンソース化するに至った経緯からお話しします。
その背景にある物語
Ostorlabは、創業当初からコミュニティを重視したプラットフォームです。モバイルアプリケーションを無制限にスキャンできる無料のオンラインプラットフォームとして生まれました。アプリをアップロードするか、ストアから選択するだけで完了です。
この判断の背景には、セキュリティは高価なツールにお金を払える大企業だけのものであってはならない、という強い信念があります。
プラットフォームのオープンソース化はその自然な延長線上にあるものですが、他の人が簡単に使い、採用し、試し、貢献できるものを共有したいと考えていたため、これまで先送りにしてきました。
プラットフォームをオープンソース化する2つ目の理由は、セキュリティ業界が進んできた方向性に対する全般的な失望です。従来型のセキュリティスキャナーも、より新しいプラットフォームも、いずれもエンタープライズ向けであり、過度な専門分化へと向かう傾向が強まっています。
今日、脆弱性スキャンのプログラムを運用しているなら、ごく小規模であっても、十分なカバレッジを得るには数多くのツールが必要です。Webアプリ、ネットワークインフラ、Web API、クラウドプロジェクト、IAMポリシー、コンテナ、ソースコード、依存関係、シークレット向けのツールなど、その一覧は延々と続きます。
問題は、これらのツールに相互運用性がなく、それぞれ異なる概念や用語を持ち、異なるリスク評価を使っていることです。
一方で、オープンソースのセキュリティ界隈は活気にあふれ、優れたプロジェクトがいくつもあります。その深刻な欠点は、こうしたツールが短命に終わりがちなことです。多くの場合、カンファレンスでの一連の発表のために作られ、その後は放置されてしまいます。もちろん、由緒あるNmapや素晴らしいsqlmapのような注目すべき例外もありますが、それらはあくまで例外であり、通例ではありません。
何が変わるのか
では、Ostorlabはこの現実の中でどのような役割を果たし、どのように役立とうとしているのでしょうか。
まず、Ostorlabは共通の言語を一つ提供することで、ツール同士をシームレスに連携させます。どのプログラミング言語で作られていても、どのプラットフォームで動作していても、すべてのツールが一つの共通言語で会話し、脆弱性の発見という一つの目標に向けて協調します。
具体的には、Ostorlabはツールをエージェントとしてラップし、エージェント同士は分散メッセージを介して非同期に通信します。これらのメッセージは、ツール間で合意できる共通のセキュリティ分類体系を表しています。メッセージは強い型付けがされており、コンパクトなバイナリ形式で、階層構造に従います。

たとえばWebアプリケーションをスキャンする場合、共通の分類体系には次のものが含まれます。
URL:URLのクローリングとブルートフォース用Request/Response:フィンガープリントの抽出や、ハードコードされたシークレットなどのパターンをレスポンス内で検索するためFingerprint:ライブラリ、サービス、技術スタックを一覧化し、既知の脆弱性と照合するためInjection Endpoint:XSS、SQLインジェクション、XXEなどの脆弱性をファジングするため
このアプローチにより、次のことが実現します。
- ツールの連結が自動化される
- ツールの入れ替えや、複数ツールの併用も手間がかからない
- ツールの拡張方法が標準化される

このアプローチには、スキャンをスケーラブルにできるという利点もあります。ツールに一切変更を加えずに、複数のマシンで実行できます。

ツール同士を連携させるプラットフォームを提供するだけでなく、Ostorlabには、互いにシームレスに連携するようパッケージ化されたセキュリティツールに簡単にアクセスできる、新しいストアも付属しています。

舞台裏では、ツールは単なるコンテナにすぎません。そのため、業界標準に沿いながら、複雑な構成にも対応できます。
ストアには、エージェントを組み合わせて、ドメインのブルートフォースからページのスクリーンショットの取得やシークレットの抽出まで、複雑な分析タスクを実行するための可視化ツールも用意されています。この可視化ツールからYAML定義ファイルを生成でき、そのファイルを使って、1つのコマンドで対象のアセットに対して実行できます。

CLIを使ってスキャンを実行できるだけでなく、Ostorlabには独自のエージェントを構築するためのSDKも付属しています。このSDKは、標準的なユースケースを少ないコードで実現できるうえ、QPSの制限、分散ロック、共有状態の永続化、分散トレーシングとメトリクスなど、複数のマシンにまたがるスケーリングに対応できる複雑なエージェントを構築するための強力なAPIも提供します。

新しいツールの追加や公開を容易にする重要な要素が、自動ビルドとGitリポジトリとの連携です。更新や変更はエージェントのリポジトリから自動的に取り込まれます。新しいバージョンタグが追加されると即座に新しいバージョンがビルドされて共有され、新しいバージョンのビルドと配布にまつわる手間はすべてストアが引き受けます。

何ができるのか
ぜひ試してみて、フィードバックをお寄せください。バグの報告、提案、コメントをお待ちしています。ツールをより良くするための方法について、皆さんの声をぜひお聞かせください。
このプラットフォームの真の力は、より多くのエージェントが構築され共有されるほど発揮されます。お気に入りのツールを公開してストアで共有するか、追加してほしいツールについて機能リクエストを送ってください。
次のステップ
今回のリリースは始まりにすぎず、すでに多くの新機能やアップデートが準備されています。
予定されている注目すべきアップデートとしては、マネージド環境であらゆるアセットに対してスキャンを実行できる、マネージド版の追加があります。このマネージド環境では、データの永続化、スキャン履歴、自動スケーリング、チケット管理システムとの連携、マルチデバイス対応(iOS、macOSなど)、解析環境へのアクセスといった、Ostorlabの既存のプラットフォーム機能を利用します。
今後のリリースでは、より専門的な対象アセットやツールの追加にも注力します。これらのリリースでは、当社の由緒あるクローラー、XSSスキャナー、Ostorlabのテイントエンジン、シークレット検出器、ブラックボックスWebファザーなど、大切にしてきた社内の検出器をさらにオープンソース化していきます。
最後に、Ostorlabの収益の相当部分を還元することで、オープンソースのメンテナーを支援する取り組みを進めています。
この還元にあたっては、より質の高いツールを後押しするために重要な要素を考慮します。具体的には次のとおりです。
- ツールの人気
- 脆弱性検出へのツールの貢献度(真陽性)
- 誤検知(フォールスポジティブ)の割合
- リソース消費量(CPU、メモリ、ディスクサイズ)
これにより、ツールのメンテナーがこれらのツールのサポートと改善を続けていくための、意味のある手段を提供できることを願っています。