tarnish
tarnish は、Chrome 拡張機能のセキュリティレビューを支援する静的解析ツールです。通常の定期作業の多くを自動化し、潜在的なセキュリティ脆弱性を素早く特定するのに役立ちます。このツールは、こちら にある研究ブログ記事に付随しています。この設定を自分で行う手間をかけたくない場合は、https://thehackerblog.com/tarnish/ でツールを直接使用することもできます。

未完成版に関する注意とメモ
これは未完成版のリリースであることに留意してください。これは https://thehackerblog.com/tarnish/ にデプロイされているものと同じソースです。将来的にはこれを整理して、もっと簡単に実行できるようにするかもしれませんが、現時点では時間がありません。
これをセットアップするには、以下の知識が必要です。
- S3 バケットの設定
- (オートスケーリングを使用する場合) ElasticBeanstalk のセットアップ
docker-compose の使用
- redis のセットアップ
セットアップがやや複雑なのは、以下の設計目標によるものです。
- Chrome 拡張機能に対して効果的に静的解析を実行する
- ワークロードの増加に応じて自動的にインスタンスをスケールアップ・スケールダウンする
- 最低限の予算で動作する (そのため Spot インスタンスを用いた ElasticBeanstalk を使用)
セットアップを試みる人向けの簡単な注意事項:
tarnish は拡張機能の解析に Python Celery を使用しています。
- Python Celery の設定では、ブローカーとして redis を使用します (これは作成する必要があります)。
- 拡張機能の解析ジョブを処理するワーカーは、AWS ElasticBeanstalk のスポットインスタンス上で動作します。スポットインスタンスに詳しくない方のために説明すると、これは基本的に未使用のコンピューティングリソースに入札する方式です。これにより、サービスを非常に低コストで運用できます。
- ワーカーが動作するには、少なくとも AWS
t2.medium インスタンスが必要です。
tarnish フロントエンドは、静的ファイルのセットであり、静的 Web ホスト用に設定された S3 バケットにアップロードされます。
環境変数の設定については、docker-compose.yaml.example を参照してください。理想的には、./start.sh を実行し、静的フロントエンドにアクセスして動作させることになります。静的サイトには S3 を使用するか、python -m SimpleHTTPServer のような単純な静的ウェブサーバーを使用することもできます (その場合は、JavaScript ファイルを変更してオリジンが一致するようにする必要があります)。
機能
提供された Chrome ウェブストアのリンクから任意の Chrome 拡張機能を取得します。
manifest.json ビューア: 拡張機能のマニフェストを JSON で整形して表示します。
- フィンガープリント分析:
web_accessible_resources の検出と、Chrome 拡張機能のフィンガープリンティング JavaScript の自動生成を行います。
- 潜在的なクリックジャッキング分析:
web_accessible_resources ディレクティブが設定された拡張機能の HTML ページを検出します。これらのページは、その目的によってはクリックジャッキングに対して脆弱である可能性があります。
- 権限警告ビューア: ユーザーが拡張機能をインストールしようとした際に表示される、すべての Chrome 権限プロンプト警告の一覧を表示します。
- 危険な関数: 攻撃者によって悪用される可能性のある危険な関数 (例: innerHTML, chrome.tabs.executeScript など) の場所を表示します。
- エントリポイント: 拡張機能がユーザー/外部からの入力を受け取る場所を表示します。これは、拡張機能の表面積を理解し、悪意を持って作成されたデータを拡張機能に送信する可能性のあるポイントを探すのに役立ちます。
- 危険な関数とエントリポイントの両スキャナーでは、生成されたアラートについて以下の情報が提供されます。
- アラートの原因となった関連コードスニペットと行番号。
- 問題の説明。
- コードを含む完全なソースファイルを表示するための「View File」ボタン。
- アラートが発生したファイルのパス。
- アラートが発生したファイルの完全な Chrome 拡張機能 URI。
- ファイルの種類 (Background Page スクリプト、Content Script、Browser Action など)。
- 脆弱な行が JavaScript ファイル内にある場合、そのファイルがインクルードされているすべてのページのパス、およびそれらのページの種類と
web_accessible_resource ステータス。
- コンテンツセキュリティポリシー (CSP) アナライザーとバイパスチェッカー: 拡張機能の CSP の弱点を指摘し、また、ホワイトリストに登録された CDN などによる CSP バイパスの可能性を明らかにします。
- 既知の脆弱性のあるライブラリ: Retire.js を使用して、既知の脆弱性のある JavaScript ライブラリの使用状況をチェックします。
- 拡張機能のダウンロード (整形版および元の形式)。
- 元の拡張機能のダウンロード。
- 拡張機能のビューティファイ版のダウンロード (HTML と JavaScript が自動整形されます)。
- スキャン結果の自動キャッシュ: 拡張機能のスキャンを初めて実行する際にはある程度の時間がかかりますが、2 回目以降は (拡張機能が更新されていない限り) 結果がキャッシュされるためほぼ瞬時に表示されます。
- リンク可能なレポート URL: tarnish で生成された拡張機能レポートを他の人に簡単に共有できます。