GitLabは、新しいオープンソースツールPackage Hunterをリリースした。このツールの目的は、サンドボックス内でプロジェクトの依存関係を実行することで悪意のあるコードを検出することである。Package Hunterは、Falcoを利用して、実行時に予期しないアプリケーションの動作を検出する。
Package Hunterは、悪意のあるコードや他の予期しない動作のために、プログラムの依存関係を分析するツールです。サンドボックス環境に依存関係をインストールし、インストール中に実行されるシステムコールを監視することにより分析されます。疑わしいシステムコールは、さらなる調査のためにユーザに報告されます。
たとえば、Package Hunterを実行すると、パッケージがインストール時にネットワーク接続をオープンしようとしたことを発見できる。これにより、パッケージが接続しようとしているIPアドレスが正当かどうかを確認する機会が得られる。そのチェックで手がかりが得られなかった場合には、使用しているバージョンを別バージョンのパッケージに置き換えてみることができる。例えば、別バージョンは、別のソースからダウンロードすることで得る。これにより、たとえば、特定の正規のバージョンに害がある場合に保護することができる。最後のステップとして、コードを検査し、報告された動作の分析を行うことができる。そして、場合によっては悪意のあるパッケージを報告することができる。
GitLabは2020年11月からPackage Hunterを社内でテストしており、特定のテンプレートのおかげで継続的インテグレーションパイプラインに簡単に統合できた。このツールは、Falco 0.23.0、Docker v20.10+、Node v12.21+をサポートするどの環境でも使用できる。Vagrantfileも利用でき、マシンへのインストールと実行がより簡単になる。
Package Hunterは、デフォルトでポート番号3000で実行されるサービスを提供する。そのポートで、Package Hunter CLIを使って制御できる。プロジェクトを分析するには、プロジェクトのtarアーカイブを作成し、サーバに送信する。Dockerを使っている場合は、次のコマンドを実行して実施できる。
docker run --rm \
-v "${PWD}:/usr/src/app" \
--env "DEBUG=pkgs*" \
--env "HTR_user=someuser" --env "HTR_pass=somepass" \
registry.gitlab.com/gitlab-com/gl-security/security-research/package-hunter-cli analyze my_project.tgz
GitLabのPackage Hunterは、開発者が依存関係にある悪意のあるコードから保護するために活用できる唯一のツールというわけではない。GitLabとGitHubはどちらも、依存関係の分析とコードスキャンを実際のところサポートしている。ただし、Package Hunterは、実行時に悪意のある動作を検出しようとしており、わずかに違う方向を向いている。