サプライチェーン攻撃に学ぶmoduleの仕組みとセキュリティ対策
🙅 github.com/boltdb-go/bolt
🙆 github.com/boltdb/bolt
実際の攻撃方法
一度されたキャッシュは更新されない(配布の 不変性) 難読化されたバックドアコード(参考先にコードあり)
攻撃者が GitHub のタグをクリーンなコードに書き換え
MVS や go.sum、Module Proxy はタイポスクワッティングに関しては無意味 MVS: 予期せぬバージョンがインストールされるのを防げる
go.sum: モジュールの改ざんや整合性を検証できる
Module Proxy: 配布されたパッケージが不変であることが保証
go.sum
対策
依存パッケージは手書きしない
自動補完
gopls の matcher の設定を CaseSensitive に go mod verify や go mod tidy
悪意のあるモジュールは検出できないため、今回のケースは検出できない
既知のものをチェックするため、今回のケースは検出できない
参考