Scanner

Apiiroのセキュリティ研究者は、サプライチェーン攻撃を抑制するために、ソフトウェアプロジェクトに追加される前に悪意のあるコードを検出し、ブロックするように設計された2つの無料のオープンソースツールをリリースした。

この2つのツールは、SemgrepとOpengrep用の包括的なルールセットで構成され、悪意のあるコードパターンを最小限の誤検知で検出するように設計されており、GitHubに統合されたスキャナーであるPReventは、プルリクエスト(PR)に含まれる疑わしいコードを検出して警告する。

アピイロのセキュリティ研究者マタン・ギラディによると、これらのツールは誤検知率が最小であり、実世界での実践において特に価値があるという。

具体的には、PyPIパッケージのルールセットの検出精度は94.3%で、npmパッケージの検出精度は88.4%である。PReventは、調査したケースの91.5%で悪意のあるPRのフラグ付けに成功している。

Detection test results
検出テスト結果
Source:アピイロ

悪意のあるコードの検出

Apiiroの悪意のあるコード検出戦略は、「コードのアンチパターン」を特定することに基づいている。アンチパターンとは、正当なコードではまれだがマルウェアでは一般的な動作を示す、コード内の疑わしいパターンのことである。

この検出システムは静的解析を使用しており、コードを実行せずに検査するため、偶発的な感染から環境を安全に保つことができる。

これらのアンチパターンには以下が含まれる:

  • エンコーディング、ネスト化された変換、実行時の変更など、コードの機能や意図を隠すためのさまざまな難読化手法。
  • exec()、eval()、あるいは、実行時に任意のコードを実行できるようにする類似の関数の使用。
  • 外部の未知のサーバーからリモートペイロードをダウンロードして実行するコード。
  • 機密性の高いユーザデータを外部に流出させる方法。

このルールセットは、自動リポジトリスキャンのためにCI/CDパイプラインに統合したり、npmやPyPIパッケージのスキャンに使用したり、SemgrepやOpengrepを使用して他のプラットフォームに適応させたりすることができる。

同じアンチパターンを使用する PRevent は、コードがマージされる前にリアルタイムでプルリクエストイベントをスキャンし、本番環境に到達する前に脅威を阻止するように設計されている。

PRevent warns about malicious code in the PR
PRevent は、PR
に含まれる悪意のあるコードについて警告する:アピイロ

権限のあるレビュアーが承認するまでマージをブロックするように設定したり、検出された問題にコメントを追加して開発者に確実にリスクを警告したりすることができる。

Issue prompting review
Issue prompting review
出典:ApiiroApiiro

Apiiroは、npmとPyPIパッケージは直接スキャンできないため、いくつかの実用的な制限が存在することを認めているが、将来のアップデートでディープコード分析やAI支援スキャンのような機能を追加する予定である。

悪意のあるコード検出ルールセットと PReventツールの両方がGitHubで無料で入手可能で、使い方の説明もある。

はこれらのセキュリティ・ツールをテストしておらず、その有効性や安全性を保証することはできない。