Операция выполнена!
Закрыть
Хабы: Go, Информационная безопасность

Аккуратный Go-сервис на net/http с единственной ручкой /time. Обновляем одну библиотеку через go get, не трогая свой код. После рестарта в сервисе появляется ручка /__injected, которая отдаёт строки из памяти процесса. Мы её не регистрировали — а пакет, который это сделал, формально даже не используется.

Разбираю шаг за шагом, как такое возможно: модель зависимостей Go и коварство //indirect, тихий вход через init(), сканирование кучи и unsafe. Pointer для поиска ServeMux в работающем сервере. И, конечно, как от этого защищаться — от аудита зависимостей до seccomp и read-only ФС.

Весь код — в репозитории, «вредонос» написан в учебных целях. Запускать только в песочнице.

Разобрать «вредоноса»
Читайте также
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro