Защищаемся от утечки секретов в логи

Пока аналитики разбираются с инцидентами Binance и Polymarket, давайте исследуем неочевидные места, где могут оказаться наши секреты.

Даже если мы прячем токен в хранилище, шифруем базу и ограничиваем доступ к проду, всё равно остаётся предчувствие, что какой-нибудь SDK в проекте вдруг вернёт объект ошибки с содержимым конфига. Затем его целиком сохранит какой-нибудь логгер, и токен окажется в системе мониторинга.

Если секрет где-то превратится в обычную строку, по её типу уже не понять, что её нельзя логировать. Подход: оборачивать строку секрета так, чтобы по-умолчанию скрывать его при выводе в логи.

И несколько принципов, которых стоит придерживаться:

* проверять данные на входе в логгер и удалять чувствительные значения до записи * настроить taint-анализ в статическом анализаторе, чтобы отслеживать, откуда секрет приходит, куда передаётся и в какие вызовы логирования может попасть * ловить утечки в тестах. Если значение секрета оказалось в логах, тест должен упасть.

И не логировать всё подряд на случай «вдруг пригодится».

Защищаемся от утечки секретов в логи | Сетка — социальная сеть от hh.ru