Ошибки в коде и учётных данных
Последние четыре атаки из роадмапа: две связаны с ошибками работы с памятью, одна — с учётными данными Windows, одна — с путями к файлам.
При чём тут безопасность: многие из них возникают из-за ошибок программистов, поэтому их предотвращают ещё при разработке.
Переполнение буфера
Переполнение буфера: программа записывает в область памяти больше данных, чем та вмещает, и затирает соседние данные. В худшем случае злоумышленник так подменяет адрес возврата и выполняет свой код.
Защита: безопасные функции и языки с контролем памяти (Rust, Go, Python), механизмы ОС — ASLR и неисполняемая память, проверка размеров ввода.
Утечка памяти
Утечка памяти — программа выделяет память и не освобождает её. Со временем память заканчивается, и программа или сервер падает.
Для безопасности это прежде всего угроза доступности: злоумышленник может намеренно вызывать утечку, чтобы уронить сервис. Защита — тестирование, анализаторы кода, мониторинг потребления памяти.
Pass the Hash
В Windows аутентификация NTLM проверяет хеш пароля. Украв хеш из памяти взломанной машины, злоумышленник может войти на другие машины, не зная самого пароля.
Защита: не использовать учётные записи администраторов домена на рядовых машинах, уникальные локальные пароли (LAPS), Credential Guard, отказ от NTLM в пользу Kerberos.
Обход каталогов
Обход каталогов (directory traversal): приложение строит путь к файлу из ввода пользователя, и злоумышленник с помощью ../ выходит за пределы разрешённой папки и читает системные файлы.
Защита: не строить пути из ввода напрямую, нормализовать путь и проверять, что он внутри разрешённой папки, использовать списки допустимых файлов.
Главное за урок
- Переполнение буфера — языки с контролем памяти, ASLR, проверка размеров.
- Утечка памяти бьёт по доступности; Pass the Hash — вход по украденному хешу.
- Обход каталогов — проверка, что путь остаётся в разрешённой папке.