18,000回以上ダウンロードされたRustクレートが侵害、ビルド時にソースコードを窃取

onering(オンリング)と呼ばれるRustクレートに対して悪意ある更新が加えられ、ビルドプロセス中に開発者のマシンからソースコードの変更内容を外部に送信していたことが判明しました。

セキュリティ研究者は2026年6月10日、このパッケージのバージョン1.4.1でこの挙動を確認しました。onering(オンリング)クレートは高スループットの同期キュー・チャネルライブラリとして設計されており、crates.io上で18,000回以上のダウンロード実績があります。オープンソース開発者に影響を及ぼす重大なソフトウェアサプライチェーン侵害事案として位置づけられています。

セキュリティコンサルティングサービス

侵害されたRustクレートがソースコードを窃取

この侵害が特に深刻なのは、依存先のRustプロジェクトがコンパイルされる際に悪意あるペイロードが自動的に実行される点です。

感染したバージョンには、build.rsファイルが新たに導入されていました。これはCargoのビルドスクリプトであり、パッケージのインストールやプロジェクトのビルド時にローカルでコンパイル・実行されるものです。

悪意ある機能を発動させるのに、開発者がライブラリのAPIを呼び出す必要は一切ありません。単に該当の依存関係を組み込み、プロジェクトをビルドするだけで、データの収集と送信が引き起こされます。

Aikidoによると、注入されたビルドスクリプトはまず、このクレートを利用しているプロジェクトのルートディレクトリを特定します。所有パッケージのディレクトリ内だけで動作するのではなく、CargoのOUT_DIR環境変数から上位階層へとたどり、プロジェクトのtargetディレクトリを見つけ出したうえで、そのtargetディレクトリの親ディレクトリをリポジトリのルートとして選択します。

これにより、ペイロードは開発者のGitリポジトリを標的にし、パッケージ自体とは無関係な情報を収集できるようになります。

続いてスクリプトは、特定したリポジトリに対してGitコマンドを実行します。1つ目のコマンドは最新コミットのメタデータ(コミットハッシュ、作成者名、メールアドレス、タイムスタンプ、件名)を取得します。

2つ目のコマンドは`git diff HEAD^ HEAD`を実行し、直近のコミットとその1つ前のコミットとの間の完全なテキスト差分を収集します。

このデータには、新規追加・変更された独自コード、実装の詳細、誤ってソース管理にコミットされたシークレット情報、セキュリティ修正、未公開の製品機能などが含まれる可能性があります。

このビルドスクリプトは、依存関係が再ビルドされるたびに実行され得るため、リスクは一度きりの情報漏洩にとどまりません。影響を受けるビルドのたびに、最新コミットの差分が外部サーバーへ送信され、ソースコードの変更履歴が継続的に記録され続ける恐れがあります。

このアプローチは、パッケージエコシステムで近年発生している侵害事案の多く――開発者の認証情報やAPIトークン、暗号資産ウォレットのデータ、クラウドアクセスキーの窃取を狙ったもの――とは一線を画しています。今回の事案では、ソースコードと開発活動そのものを直接収集することが目的とみられます。

即座に不審視されるのを避けるため、送信されるトラフィックは正規のSentryテレメトリイベントに見えるよう偽装されています。マルウェアはコミットのメタデータをイベントタグとしてパッケージ化し、extra.patchフィールドにGitのパッチを埋め込んだうえで、HTTP POSTリクエストによってSentryの取り込みエンドポイントへ送信します。

Sentryのエンドポイントはエラーレポートやアプリケーション監視に一般的に関連付けられているため、防御側にとってはこの通信が無害に見えてしまう可能性があります。

報告によれば、このペイロードにはコメントアウトされた行も含まれており、それが有効化されれば収集した内容をローカルのdata.txtファイルに書き込む仕組みになっています。これは、ネットワーク経由の情報送信を有効化する前に、悪意あるルーチンがローカル環境でテストされていた可能性を示唆しています。

辞書・事典

この脅威はcrates.ioの利用者だけにとどまりません。研究者らによると、メンテナーのGitHubリポジトリも侵害されていた形跡があるとのことです。つまり、公式レジストリではなくGitから直接onering(オンリング)を取得していた開発者も、悪意あるコードを入手していた可能性があります。

各組織は直ちに、Rustのロックファイル、依存関係マニフェスト、ビルドログ、プロキシ記録、エンドポイントのテレメトリを監査し、onering(オンリング)バージョン1.4.1の使用状況や、特定されたSentry取り込みインフラへの通信の有無を確認する必要があります。

開発者は、この依存関係の出所を検証したうえで削除するか、安全性が確認できているバージョンに固定してください。また、直近のコミットに含まれていた可能性のあるシークレット情報はすべてローテーションし、機微な変更がないかGitの履歴を確認することが求められます。

今回の事案は、ビルドスクリプトが依存関係のインストールをコード実行の手段へと変え得ることを浮き彫りにするものです。Rust開発チームには、依存関係のレビュー、ロックファイルの監視、ビルド時のネットワーク制御、そして予期しないGit操作や外部へのHTTP通信に対するアラート体制の整備が求められます。

侵害指標(IOC)

IOCの種類 指標
悪意あるRust依存関係 onering バージョン 1.4.1
パッケージレジストリ crates.io
情報送信先エンドポイント https://o4511539639222272.ingest.de.sentry.io/api/4511539669368912/envelope/
ドメイン o4511539639222272.ingest.de.sentry.io
HTTPメソッド POST
HTTPコンテンツタイプ application/x-sentry-envelope
Sentry DSN公開鍵 8197ee42c4f59c83f4cc6d48f5bae821
Sentry組織ID o4511539639222272
SentryプロジェクトID 4511539669368912
不審なビルド成果物 build.rs
Git収集コマンド git diff HEAD^ HEAD
Gitメタデータコマンド git log -n 1
ローカルに残る可能性のある成果物 data.txt

注記: IPアドレスおよびドメインは、意図せぬ名前解決やハイパーリンク化を防ぐため、意図的に無害化表記(例: [.])としています。再有効化はMISP、VirusTotal、SIEMなど管理された脅威インテリジェンス基盤内でのみ行ってください。

調査の遅れによるインシデント発生を防ぎましょう。15,000のSOCが活用する脅威インテリジェンスで、Tier 1の対応力を強化できます: TI Lookupを自社SOCに統合する

翻訳元: https://gbhackers.com/compromised-rust-crate-with-18000-downloads-steals-source-code/

本記事は gbhackers.com の記事を翻訳・要約したものです。