Кейс: инъекции в большом легаси
Вопрос
В легаси-монолите на 500 тысяч строк нашли две SQL-инъекции. Как вы организуете поиск остальных и исправление?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Сначала исправить и проверить найденные, оценить, не было ли эксплуатации по логам
Систематический поиск: SAST по потокам данных, grep по паттернам конкатенации
Приоритизация по доступности снаружи и чувствительности данных
Общий безопасный слой доступа к данным и запрет сырых запросов линтером
Временные меры: WAF-правила, минимальные права БД
Регресс: правило в SAST в CI, чтобы новые не появлялись
Что могут спросить следом
- Как убедиться, что инъекции не эксплуатировали раньше?
- Что делать, если команда говорит, что исправить всё нет времени?
Разбор
Образцовый ответ: «Найденные две исправляю сразу и смотрю логи БД и веба за доступный период: странные запросы, ошибки синтаксиса, аномальные выгрузки. Дальше системный поиск: SAST с анализом потоков данных и ручной поиск по паттернам конкатенации рядом с вызовами запросов. Найденное приоритизирую: внешние эндпоинты и чувствительные таблицы первыми. Чтобы не чинить по одной, ввожу общий слой доступа к данным и правило линтера, запрещающее сырые запросы без плейсхолдеров. Пока не всё исправлено, включаю WAF-правила и урезаю права учётки БД. И добавляю правило в SAST в CI, чтобы новые инъекции не появлялись».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.