2025年2月、Goプログラミングエコシステム内で重大なサプライチェーン攻撃をSocketの研究者が発見した。github.com/boltdb-go/boltという悪意のあるパッケージが正規の広く使われているBoltDBモジュールになりすましていることが発見された。このバックドア化されたパッケージはGo Module Proxyのキャッシュ機構を悪用して何年もの間検知されずに存在し続け、モジュール管理システムの脆弱性を浮き彫りにした。
Go Module Proxyは一貫性と信頼性のあるビルドを保証するために、モジュールを無期限にキャッシュするように設計されている。この不変性は再現可能なビルドやアップストリームの変更からの保護といった利点がある一方で、悪意のあるモジュールがいったんキャッシュされると、たとえソースリポジトリがクリーンアップや変更された場合でも開発者に利用可能なまま残るというリスクも伴う。今回のインシデントでは攻撃者はこの機能を利用して、その後リポジトリが変更されたにもかかわらず、バックドア化されたパッケージがエコシステム内に存在し続けるようにした。
この事件は攻撃者がtyposquattingのような手法でパッケージ管理システムを悪用する、より広範なトレンドの一部である。同様の事件はnpmやPyPIといった他のエコシステムでも確認されており、悪意のあるパッケージが人気のあるライブラリを模倣して開発者を欺いている。
サプライチェーン攻撃のリスクを減らすために、開発者はインストール前にパッケージ名とソースを注意深く確認し、信頼できるライブラリを使用していることを確実化する必要がある。依存関係の定期的な監査は改ざんや悪意のある挙動の兆候を早期に発見するのに役立つ。不審なパッケージにフラグを立てるセキュリティツールはさらなる保護層を提供する。また、既知の脆弱性やエコシステムに関するアラートについて最新の情報を入手することは、安全な開発プラクティスを維持するために不可欠である。
これらのプラクティスを採用することで、開発者はソフトウェアサプライチェーンのセキュリティを強化し、プロジェクトに悪意のあるコードが混入するリスクを低減できる。