GitHubはDependabotのマルウェア検出機能をnpm以外にも拡大し、8つの主要パッケージエコシステム全体で悪意あるパッケージへのアラートを可能にしました。
今回のアップデートにより、対象はPyPI、Maven、RubyGems、NuGet、Go、crates.io、PHP Composerにまで広がり、OpenSSFの共有マリシャスパッケージ・リポジトリが新たな脅威インテリジェンス源として利用されています。GitHubは2026年初めに、npm依存関係向けのDependabotマルウェアアラートを導入していました。
今回の拡大は、開発チーム向けの保護対象を大幅に広げるものであり、特にJavaScript、Python、Java、Ruby、.NET、Go、Rust、PHPの各パッケージが混在する複数言語環境を運用する組織にとって恩恵が大きいといえます。
GitHubはAdvisory Database(アドバイザリデータベース)を強化し、OpenSSFのマリシャスパッケージ・リポジトリからマルウェア報告を取り込めるようにしました。2023年に開設されたこの公開リポジトリには、Open Source Vulnerability形式で記載された15,000件を超える悪意あるパッケージの報告が含まれています。
このリポジトリには、タイポスクワッティング(タイプミスを狙った偽パッケージ)、依存関係の混同攻撃、侵害されたメンテナーアカウント、認証情報を窃取するパッケージ、悪意あるビルド済みバイナリなどの脅威が含まれています。
GitHubは、対応するエコシステムごとに個別のマルウェア検出システムを構築・維持するのではなく、標準化されたOpenSSFフィードを取り込む単一のインポーターを構築しました。
このアプローチにより、GitHubは共有されたエコシステム横断の報告ソースを活用しつつ、マルウェアインテリジェンスをアドバイザリおよびDependabotのワークフローにより迅速に反映できるようになります。
今回の新しいインポーターは、RubySec、RustSec、PyPAフィードなど、GitHubが既に採用しているリポジトリベースのアドバイザリソースと同様のモデルに基づいています。
このインポーターは、アップストリームリポジトリ内の変更されたファイルをスキャンし、各OSVアドバイザリを検証したうえで、不正な形式のレコードをデータベースに登録される前に排除します。
GitHubの説明によれば、不完全または無効な報告を黙って修正するようなことは意図的に避けているといいます。マルウェアアドバイザリは影響の大きい依存関係アラートを引き起こす可能性があるため、不正確なマッピングやパッケージ名は正当なプロジェクトを混乱させ、システムへの信頼を損なう恐れがあるためです。
検証を経たレコードは、ソース、アドバイザリ識別子、利用可能な場合のCVE、アップストリームレコードのスナップショット、そしてGitHubの公開パイプラインが必要とするフィールドを含む形式に正規化されます。
この処理では、エコシステムごとの命名の違い、パッケージバージョンの表記方法の差異、アドバイザリ詳細の欠落、報告の撤回といったケースにも対応しています。
例えば、OpenSSFはPythonパッケージを「PyPI」と表記する一方、GitHubのデータベースでは「pip」という表記が使われています。また、OSVのレコードの中には範囲ではなく個々の影響バージョンを列挙しているものもあれば、そもそも使用可能なバージョン情報を含まないものもあります。
GitHubのパイプラインは、データの整合性を損なうことなくこうした差異を調整する必要があります。実装上の大きな課題の一つが、GitHub自身が報告したマルウェアアドバイザリが、Advisory Databaseに再び取り込まれてしまう事態を防ぐことでした。
GitHubはnpmのマルウェア報告をOpenSSFのリポジトリに提供しており、これが循環的な取り込みを引き起こす可能性があります。この問題に対処するため、インポーターはOSVの由来メタデータを確認し、ghsa-malwareタグが付与されたレコードはフィードエントリを作成する前に破棄する仕組みになっています。
実データによる検証の過程で、GitHubは、毎月OpenSSFリポジトリに新たに登録されるnpm関連報告の半数以上がGitHub自身のアドバイザリに由来しており、いわば「往復データ」として除外できることを確認しました。
GitHubはまた、誤検知、不正な形式のパッケージ名、報告元の侵害といった、アップストリームデータに潜む問題にも対応できるよう、取り込みパイプラインを設計しています。
このプラットフォームでは、3つの制御機構が用いられています。異常に大規模な取り込みを停止させる設定可能なバッチ上限、各アドバイザリを特定のアップストリームコミットに紐付ける来歴追跡、そしてバッチ単位のロールバック機能です。取り込みに失敗した場合、GitHubは個々のアドバイザリを手作業で削除するのではなく、バッチ全体を差し戻すことができます。
マルウェアアラートはオプトイン方式であり、リポジトリ単位、組織単位、あるいはエンタープライズ単位で有効化できます。有効化すると、Dependabotは既存のアドバイザリの遡及取り込みデータを含め、GitHubのAdvisory Database内のマルウェアアドバイザリと照合してチェックを行います。
ANY.RUNのブラウザ内データ調査機能で、検知・調査・対応をより迅速に。フィッシングの全体像を完全に把握し、SOCを強化してMTTRを削減しましょう
翻訳元: https://cyberpress.org/github-expands-dependabot-malware-alerts/