OXO Titan UI:誰もが使えるセキュリティスキャンへ
OXO Titan UIは、OXOの機能を使いやすいインターフェースに集約し、高度なセキュリティスキャン技術を誰もが利用できるようにします。本記事では、OXO Titanが構想から実現に至るまでの道のりをたどり、主な機能を紹介するとともに、実践的なユーザーワークフローの例を示します。
はじめに
OXOは、そのシンプルさで知られるオープンソースのセキュリティスキャンフレームワークです。しかし、OXOのコマンドラインインターフェース(CLI)の強力さと汎用性は、複雑なコマンドライン操作に慣れていないユーザーにとって、しばしばハードルとなっています。
この課題に対処するため、OXOとのユーザーのやり取りを一変させる直感的なユーザーインターフェース(UI)として、OXO Titanが開発されました。このオンプレミスUIは、OXOの機能を使いやすいインターフェースに集約し、高度なセキュリティスキャン技術を誰もが利用できるようにします。数多くの複雑なツールとシンプルなUIとの間のギャップを埋めることで、OXO Titanは作業を効率化し、ユーザー体験を向上させます。
本記事では、OXO Titanが構想から実現に至るまでの道のりをたどり、主な機能を紹介するとともに、実践的なユーザーワークフローの例を示します。このUIによって脆弱性スキャンの設定と実行がどのように簡素化され、初心者から経験豊富なセキュリティ専門家までにとって欠かせないツールとなっているのかを見ていきます。
主な機能
OXO Titan UI
OXO Titan UIは、OXO APIの機能をグラフィカルなインターフェースで利用できるようにし、より幅広いユーザーが使えるようにします。UIには、oxo serveコマンドを実行することでアクセスできます。下の図では、OXOが次のアドレスでUIを提供しています:http://http://0.0.0.0:3420.
サーバーを起動する前に、pip install ostorlab[serve]で必要なパッケージをインストールしてください。

スキャナーとスキャンの管理:
OXO Titanにおいて、スキャナーはスキャンが実行される中心的なコンポーネントです。OXOサーバーが稼働するローカルまたは外部のマシンであり、独立して動作するため、多様なセキュリティ要件に合わせてカスタマイズできます。
スキャナーを設定するには、スキャナーボタンをクリックし、oxo serveコマンドの実行で取得できるScanner EndpointやAPI Keyなどの詳細を入力します。

スキャンの実行:
スキャナーを設定したら、さまざまな種類のアセットを使ってスキャンを実行できます。スキャンを実行するには、次の情報を指定します。
- Scanner:スキャンを実行するスキャナーを選択します。
- Title:(任意)スキャンにタイトルまたは名前を付けます。
- Asset:(必須)スキャン対象のアセット(Android/iOSアプリケーション、Webアプリケーション、API、ネットワークなど)を指定します。
- Asset Definition YAML File:任意で、このファイルを使って複数の種類のアセットに対してスキャンを実行できます。
- Agent Group:(必須)スキャンを実行するエージェントグループを選択します。エージェントグループとは何か、その作成方法については、エージェントグループのドキュメントを参照してください。

スキャンを実行した後は、ユーザーが設定したすべてのスキャナーにわたるスキャンアクティビティを一元的に表示する、直感的なダッシュボードからスキャンにアクセスできます。

スキャンをクリックすると、その詳細と報告された脆弱性を確認できます。

さらに、スキャン詳細ページのエクスポートボタンをクリックすれば、スキャン結果の全体をローカルにキャッシュしてエクスポートできます。

OXO Titan UIの機能の詳細については、UIのドキュメントを確認してください。
OXO API
OXO APIは、コマンドラインインターフェース(CLI)の機能を拡張したGraphQL APIであり、さまざまなスキャンアクティビティの実行と管理を容易にします。
OXOフレームワークとのユーザーのやり取りを簡素化し、強化する多様な機能を提供しています。
たとえば、CLIコマンドでスキャンとそれに関連する脆弱性を取得するには、まずoxo scan listでスキャンを一覧表示し、次にスキャンIDをoxo vulnz list -s <scan_id>に渡す必要があります。脆弱性の詳細を確認するにはoxo vulnz describe -v <vuln_id>を使用します。
一方、OXO APIを使えば、シンプルなGraphQLクエリ一つで同じ結果が得られます。ページネーションを使ってスキャンとその脆弱性をクエリする方法は次のとおりです。
query Scans {
scans(page: 1, numberElements: 10) {
scans {
id
title
createdTime
progress
vulnerabilities(numberElements: 1, page: 2) {
vulnerabilities {
id
technicalDetail
riskRating
detail {
title
shortDescription
description
recommendation
}
}
}
}
}
}
OXO APIが提供する主なユースケースと機能は次のとおりです。
| アクション | 種類 | 引数 | 備考 |
|---|---|---|---|
RunScan |
Mutation | title: String, assetIds: [Int]!, agentGroupId: Int! |
|
StopScan |
Mutation | scanId: Int! |
|
DeleteScan |
Mutation | scanId: Int! |
|
ImportScan |
Mutation | file: Upload!, scanId: Int |
zipファイルからスキャンをインポートします。 |
ExportScan |
Mutation | scanId: Int!, exportIde: Boolean |
スキャンをzipファイルにエクスポートします。 |
CreateAssets |
Mutation | assets: [OxoAssetInputType]! |
|
PublishAgentGroup |
Mutation | agentGroup: OxoAgentGroupCreateInputType! |
|
DeleteAgentGroup |
Mutation | agentGroupId: Int! |
|
Scans |
Query | scanIds: [Int], page: Int, numberElements: Int, orderBy: OxoScanOrderByEnum, sort: SortEnum |
スキャンと報告された脆弱性をクエリします。 |
Scan |
Query | scanId: Int |
|
AgentGroups |
Query | search: String, page: Int, numberElements: Int, orderBy: AgentGroupOrderByEnum, sort: SortEnum, agentGroupIds: [Int], assetType: AssetTypeEnum |
関連するすべてのエージェントとその引数を含むエージェントグループをクエリします。 |
設計とアーキテクチャ
ユーザーが内部と外部の2つのスキャナーを管理している、次のシナリオを考えてみましょう。

アクセスと設定
ユーザーはUIにアクセスし、スキャナーのインスタンスを追加します。

スキャン操作
ユーザーは、さまざまな種類のアセットを使ってスキャンを作成するといった操作を行えます。アセットの種類には、Google Play Storeのアセット向けのAndroid Store、ApkやAabなどのAndroid Files、Apple App Storeのアセット向けのiOS Store、iOS IPA File、Webアプリケーションのスキャン向けのWeb App、Web経由でアクセスするAPIのスキャン向けのWeb API、そしてNetworkがあります。

スキャンを実行した後、ユーザーはスキャン一覧ページでスキャンを確認・レビューできます。このページには、スキャナーごとのタブと、そのスキャナーで実行されたスキャンが表示されます。

続いてユーザーは、スキャン詳細ページの「Export」ボタンをクリックしてスキャンをエクスポートできます。たとえば、ここでは外部スキャナーからRedditのWebアセットのスキャンをエクスポートし、それをローカルスキャナーにインポートします。


ユーザーは、スキャン一覧ページからスキャンがインポートされたことを確認できます。

まとめ
OXO Titanは、オープンソースのOXOフレームワークを大きく前進させるものであり、脆弱性スキャンを簡素化する、効率的で使いやすいインターフェースを提供します。直感的な設計によって使いやすさと機能性を高めることで、OXO Titanはユーザーが複数のスキャナーを管理し、さまざまな種類のアセットに対してスキャンを実行し、スキャンデータをインポート/エクスポートし、詳細なレポートに簡単にアクセスできるようにします。この進化により、組織はOXOエコシステムの中で、運用効率とセキュリティ能力を効果的に高めることができます。