サイバーセキュリティ

GitHub、npmから8つのパッケージエコシステムへ悪意あるソフトウェアのアラートを拡大

GitHub Advisory Databaseは現在、OpenSSFのリポジトリから悪意あるパッケージのデータをインポートしており、Dependabotはnpmだけでなく8つのパッケージエコシステムにわたってアラートを発行できるようになりました。新しい仕組みは、自動検証、出所の追跡、インポート上限、ロールバック機能に依存し、誤ったデータや侵害されたデータからデータベースを保護します。

2026-08-06
1 分で読めます
224 閲覧数
certi.news Editorial Team
GitHub、npmから8つのパッケージエコシステムへ悪意あるソフトウェアのアラートを拡大

GitHubは、GitHub Advisory Databaseを悪意あるパッケージ専用のOpenSSFリポジトリのデータに接続したことで、悪意あるパッケージに関するDependabotのアラート範囲をnpmから8つのエコシステムへ拡大しました。新たに対象となるのはnpm、PyPI、Maven、RubyGems、NuGet、Go、crates.io、PHP Composerであり、JavaScript以外の言語やツールを使用するプロジェクトでも有害な依存関係を検出できます。

Dependabotは今年初め、npmの依存関係に含まれる悪意あるソフトウェアの検出を開始しました。今回の拡大では、エコシステムごとに個別の検出システムを構築するのではなく、OSV形式のOpenSSFレコードをインポートします。記事によると、OpenSSFのリポジトリには2023年の開始以来、15,000件を超える報告が登録されており、コミュニティからの報告や自動検出ソースによって増加を続けています。これには、名前が類似するパッケージ、依存関係の混同、アカウントの乗っ取り、悪意ある事前ビルド済みバイナリのパッケージが含まれます。

悪意あるパッケージデータの統合インポーター

GitHubのサプライチェーンセキュリティエンジニアリングチームは、公開アドバイザリリポジトリで使用されているインポーターのパターンに従う単一のインポーターを開発しました。インポーターは前回の実行以降に変更されたファイルを読み取り、レコードをデータベースに追加する前に、OSVスキーマに基づいて必須フィールド、型、形式を検証します。検証に失敗したレコードは、自動的に修正して通過させるのではなく、拒否してレビュー用に記録します。

検証に合格すると、レコードはソース、識別子、利用可能な場合はCVE識別子を含むフィード項目に変換され、同時に元のレコード全体が参照用コピーとして保存されます。また、インポーターはソース間のデータ差異にも対応します。たとえば、OpenSSFがPyPIという名称を使用する一方でGitHubのデータベースはpipという名称を使用すること、影響を受けるバージョンが範囲ではなく個別の値として表現されること、一部の報告では利用可能なバージョンが存在しないこと、後に誤りと判明した報告が取り下げられることなどです。

重複の防止と公開経路の保護

GitHub自身もOpenSSFリポジトリにデータを提供しており、GitHubのnpm悪意あるソフトウェアアラートがリポジトリへ流入しているため、別の問題が生じます。同じデータの再インポートを防ぐため、インポーターはOSV内のレコードのソースデータを利用し、ghsa-malwareタグを持つ項目を除外します。これはもともとGitHubから始まったものだからです。記事によると、毎月リポジトリに届く新しいnpm報告の半数以上はGitHubのアラートに由来していたため、再インポートの循環として除外されます。

悪意あるソフトウェアのアラートは、公開前に各報告を人間が個別に読むことなく自動的に公開されます。パッケージが認証情報を窃取している場合、アラートの遅延が数日生じるだけでも攻撃者に追加の時間を与える可能性があるためです。これは脆弱性アラートとは異なります。脆弱性アラートでは通常、パッケージの一致、バージョン範囲、問題の深刻度について人間による確認が必要です。

誤ったデータに対処する3つの層

  • バッチ上限:各実行では、作成できるアラート数に設定可能な上限を定めます。データが上限を超えた場合、実行全体を停止して何も公開せず、アラートの正確な件数を送信します。
  • 出所の追跡:各アラートはmalicious-packagesリポジトリ内の特定のコミットに関連付けられるため、インシデント発生時に報告の出所を特定できます。
  • ロールバック:汚染されたデータが混入した場合、各バッチを1つの単位として定義し、ロールバックできます。これにより、データベースからアラートを手動で削除する必要がありません。

ユーザー向けの有効化

Dependabotの悪意ある依存関係アラートはオプションで利用でき、リポジトリ、組織、またはエンタープライズのセキュリティ設定から有効化できます。有効化すると、Dependabotは依存関係をGitHub Advisory Databaseの悪意あるソフトウェアアラートと照合します。これには、既存のアラートに対する遡及的な照合も含まれます。

ニュースの出典
GitHub Blog
原文を開く ↗
c
著者

certi.news Editorial Team

知っておくべきこと

GitHubは、OpenSSFのOSV形式のデータをGitHub Advisory Databaseにインポートすることで、npmから8つのエコシステムへ悪意のあるパッケージに関するDependabotアラートの対象範囲を拡大しました。この機能はオプションであり、リポジトリ、組織、またはエンタープライズのセキュリティ設定から有効にできます。

  • 対象範囲には、npm、PyPI、Maven、RubyGems、NuGet、Go、crates.io、PHP Composerが含まれます。
  • この拡張では、レコードを取り込む前にフィールド、型、形式を自動検証する統一インポーターを使用します。
  • 保護機能には、アラート数の上限、各レコードの出所の追跡、汚染されたバッチをロールバックする機能が含まれます。
  • GitHubを起点として作成されたデータの再インポートを防ぐため、ghsa-malwareタグが付いたレコードは除外されます。
  • 警告の遅延を減らすため、悪意のあるパッケージに関するアラートは、すべての報告について人手による個別レビューを行わずに自動公開されます。
  • 有効化すると、Dependabotは依存関係をGitHub Advisory Databaseに登録された悪意のあるソフトウェアのアラート(過去のアラートを含む)と照合します。

よくある質問

新しい悪意のあるパッケージのアラートは、どのエコシステムを対象としていますか?

npm、PyPI、Maven、RubyGems、NuGet、Go、crates.io、PHP Composerが対象です。

この機能はどのように有効化できますか?

リポジトリ、組織、またはエンタープライズのセキュリティ設定からオプションで有効化できます。

悪意のあるパッケージのデータの出所はどこですか?

GitHubは、OpenSSFの悪意のあるパッケージ専用リポジトリから、OSV形式を使用してデータをインポートします。

インポーターは、誤ったデータからデータベースをどのように保護しますか?

スキーマ検証、バッチサイズの上限、出所の追跡、バッチをロールバックする機能を使用します。

同じカテゴリー

おすすめ記事

すべてのニュースを見る