Перейти к содержимому
5 / 15

go.sum и контрольные суммы: как Go защищается от подмены зависимости

go.sum содержит криптографические контрольные суммы каждого использованного модуля — по две строки на версию: сумма архива с исходниками и сумма его go.mod. При каждой загрузке тулчейн сверяет скачанное с записанным и отказывается собирать при расхождении, поэтому подменить содержимое уже зафиксированной версии невозможно. Второй рубеж — база контрольных сумм sum.golang.org: это прозрачный журнал только для добавления, куда попадает сумма каждой публичной версии; при первой встрече с модулем тулчейн сверяется с ней, и подмена на самом прокси тоже не проходит. Для приватного кода оба механизма отключают через GOPRIVATE (или точечно GONOPROXY и GONOSUMDB), иначе внутренние пути утекут в публичный сервис. Важное свойство, которое стоит понимать: go.sum защищает от подмены, но не от вредоносного кода, честно опубликованного автором, — от этого помогают govulncheck и ревью обновлений.

go.sum и контрольные суммы: как Go защищается от подмены зависимости | JScriptiser