Как незаметная indirect-зависимость в Go дописала ручку в ваш HTTP-сервер

Аккуратный Go-сервис на net/http с единственной ручкой /time. Обновляем одну библиотеку через go get, не трогая свой код. После рестарта в сервисе появляется ручка /__injected, которая отдаёт строки из памяти процесса. Мы её не регистрировали — а пакет, который это сделал, формально даже не используется. Разбираю шаг за шагом, как такое возможно: модель зависимостей Go и коварство //indirect, тихий вход через init(), сканирование кучи и unsafe. Pointer для поиска ServeMux в работающем сервере. И, конечно, как от этого защищаться — от аудита зависимостей до seccomp и read-only ФС. Весь код — в репозитории, «вредонос» написан в учебных целях. Запускать только в песочнице. Разобрать «вредоноса»

https://habr.com/ru/articles/1048732/

#init #gomod #dependencies

Как незаметная indirect-зависимость в Go дописала ручку в ваш HTTP-сервер

Как незаметная indirect-зависимость в Go дописала ручку в ваш HTTP-сервер Все примеры из статьи лежат в репозитории github.com/korableg/init-injection-example . Код «вредоноса» написан в учебных целях...

Хабр
How Go Mitigates Supply Chain Attacks - The Go Programming Language

Go tooling and design help mitigate supply chain attacks at various stages.