当社のAIエンジンNeutronが、UCバークレーのCyberGymベンチマークで96.75%のスコアを記録しました。 詳細を見る

エンジニアリング

エンジニアリング

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 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エコシステムの中で、運用効率とセキュリティ能力を効果的に高めることができます。

タグ:

opensource, security, oxo