最近、研究者がGoプログラミング環境で広く使われているデータベースツールBoltDBに、新たなソフトウェアサプライチェーンの問題を発見しました。BoltDBのGoモジュールにはバックドアが仕込まれ、隠れた悪意あるコードが含まれていました。このバージョンは、Goのモジュール管理とキャッシュの仕組みを悪用し、数年間にわたって発見を免れていました。このバックドアにより、ハッカーはコマンドを送信するサーバー、つまりコマンド&コントロールサーバーを介して、感染したコンピューターをリモートで制御できます。悪意あるバージョン(1.3.1)は、2021年11月にGitHubで公開されました。公開後、Go Module Mirrorサービスにより永久に保存されました。
タイポスクワッティング攻撃とは?
タイポスクワッティング攻撃では、悪意ある攻撃者が、人気のあるパッケージとよく似た名前を使って、有害なソフトウェアパッケージを作成し、オンラインライブラリにアップロードします。利用者が正規のソフトウェアだと思い込み、危険なバージョンを誤ってダウンロードしてインストールすることを狙っています。
詳しくはこちら — https://snyk.io/blog/typosquatting-attacks/
悪意あるGo Module Mirrorのパッケージ名はgithub.com/botdb-go/boltで、元のパッケージであるgithub.com/boltdb/boltとよく似ていました。この悪意あるパッケージは発見後、正規のバージョンに差し替えられました。しかし、Go Module Mirrorのモジュールを無期限にキャッシュする仕組みが働き、バックドアが仕込まれたモジュールがキャッシュされてしまいました。さらに、システムを最新の依存関係に更新しようとしたことで、開発者が3年間システムに残っていたバージョンに更新してしまったことも、大きな要因でした。Socketの研究者は、2025年1月30日にGo Module MirrorについてGitHubとGoogleに報告しました。このモジュールはGo Module Proxyにキャッシュされ、その後もクライアントに配信され続けていました。

2015年以降、元のリポジトリでは80件を超える未解決の問題が報告されています。
影響
対応状況
2025年2月7日付のArstechniaの記事によると、Googleの担当者は次のように述べています。
「このモジュールはGo Module ProxyとGitHubの両方から削除され、影響を受けた可能性がある方に向けてGoの脆弱性データベースに登録されました。機能分析などの修正を通じて対応を進めています。具体的には Capslock を使った分析や、 deps.devとの比較を行っています。モジュールを検出し、修正対応を進めているSocketとGoチームの貢献者に感謝します。このような一般的なオープンソースセキュリティの問題と、SLSAやOpenSSFなどの取り組みを通じて進められている対策への認識を高めるため、今後も業界全体と連携していきます。」
Go Module Mirrorの脆弱なパッケージはGitHubから削除されました。
軽減策
サプライチェーンのリスクとベストプラクティスについて確認しましょう。
https://snyk.io/blog/supply-chain-risks-and-best-practices/
ソフトウェアサプライチェーン攻撃を軽減する4つのベストプラクティスをご覧ください
https://snyk.io/articles/software-supply-chain-security/#best
Snykでソフトウェアサプライチェーンを保護しましょう https://snyk.io/solutions/software-supply-chain-security/
参考資料:
Fetch the Flag 2026に参加しよう!
2月12日〜13日、東部時間の正午から翌日正午まで開催されるCapture the Flagイベントで、セキュリティスキルを試しましょう。