[論文レビュー] Supporting the Detection of Software Supply Chain Attacks through Unsupervised Signature Generation
本稿では、抽象構文木(AST)とマーキov連鎖クラスタリングアルゴリズム(MCL)を用いた非教師あり手法ACMEを提案する。この手法は、構文的なコード類似度に基づいて悪意あるnpmパッケージをクラスタリングし、ソフトウェアサプライチェーン上の攻撃を検出する。手動で作成されたクラスタを再現する際のF₁スコアは0.99を達成し、自動署名ベースのスキャンによりnpmレジストリに事前に報告のなかった6つの悪意あるパッケージを同定した。
Trojanized software packages used in software supply chain attacks constitute an emerging threat. Unfortunately, there is still a lack of scalable approaches that allow automated and timely detection of malicious software packages and thus most detections are based on manual labor and expertise. However, it has been observed that most attack campaigns comprise multiple packages that share the same or similar malicious code. We leverage that fact to automatically reproduce manually identified clusters of known malicious packages that have been used in real world attacks, thus, reducing the need for expert knowledge and manual inspection. Our approach, AST Clustering using MCL to mimic Expertise (ACME), yields promising results with a $F_{1}$ score of 0.99. Signatures are automatically generated based on characteristic code fragments from clusters and are subsequently used to scan the whole npm registry for unreported malicious packages. We are able to identify and report six malicious packages that have been removed from npm consequentially. Therefore, our approach can support analysts by reducing manual labor and hence may be employed to timely detect possible software supply chain attacks.
研究の動機と目的
- ソフトウェアサプライチェーンにおける悪意あるソフトウェアパッケージを効率的かつ自動的に検出する手法の不足に対処する。
- トロイの木馬パッケージを同定する際の手作業分析や専門知識への依存を低減する。
- コード類似度に基づいて既知の悪意あるパッケージを自動的にクラスタリングし、早期検出を支援する。
- クラスタ内の代表的コード断片から非教師ありで再利用可能な署名を生成し、npmのような大規模リポジトリで未確認の悪意あるパッケージをスキャン可能にする。
- 悪意あるパッケージの平均除去までの200日という時間短縮を実現し、プロアクティブなスキャンを可能にする。
提案手法
- 既知の悪意あるnpmパッケージのソースコードから抽象構文木(AST)を抽出し、構文的構造を表現する。
- 構造的比較手法を用いてAST間の類似度スコアをペアワイズに計算し、類似度の高いコード断片を同定する。
- マーキov連鎖クラスタリングアルゴリズム(MCL)を適用して類似したASTをクラスタにグループ化し、専門家によるマルウェアファミリー分類を模倣する。
- 各クラスタ内の代表的コード断片から検出署名を生成し、新規パッケージのスキャンを可能にする。
- 誤検出を低減するため、108個の依存数の最も高いnpmパッケージへの一致を除外する。
- 生成された署名を用いてnpmレジストリ全体をスキャンし、報告のなかった悪意あるパッケージを同定する。
実験結果
リサーチクエスチョン
- RQ1ASTの非教師ありクラスタリングは、専門家が特定した悪意あるnpmパッケージのクラスタを効果的に再現できるか?
- RQ2ASTベースの類似度検出は、最小限の手作業で既知の悪意あるパッケージをどれほど正確に同定できるか?
- RQ3自動生成された署名は、大規模リポジトリにおいて未確認の悪意あるパッケージをどの程度効果的に検出できるか?
- RQ4署名のフィルタリングプロセスは、誤検出を最小限に抑えつつ検出カバレッジを維持するのにどの程度有効か?
- RQ5このアプローチは、大規模なソフトウェアエコシステム全体で既知のマルウェアファミリーの新バージョンを検出できるか?
主な発見
- ACMEは、114個の既知の悪意あるnpmパッケージについて、手作業で作成されたクラスタを再現する際のF₁スコアが0.99を達成した。
- この手法により、署名ベースのスキャンによりnpmレジストリに事前に報告のなかった7つの悪意あるパッケージが同定された。
- 同定された7つのパッケージのうち4つは悪意あるものとして確認され、npmに報告され削除された。
- 残りの3つのうち2つはプロトタイプの変種であり、1つは既知の悪意ある依存関係の直接コピーを含んでいた。
- 各クラスタあたり50個の最も一致する誤検出の可能性の高いフィンガープrintを除外することで、合計の一致数が約50%削減された。これは誤検出のクリーニングが実現可能であることを示している。
- このアプローチは、変数名の変更(タイプ1およびタイプ2のクローン)や、わずかな構造的変更(タイプ3のクローン)といった一般的なコードオブスカレーション技術に対しても耐性がある。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。