Ответ вслух Senior Инъекции: SQL, NoSQL, команды обновлено

Кейс: инъекции в большом легаси

Вопрос

В легаси-монолите на 500 тысяч строк нашли две SQL-инъекции. Как вы организуете поиск остальных и исправление?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Найденные две исправляю сразу и смотрю логи БД и веба за доступный период: странные запросы, ошибки синтаксиса, аномальные выгрузки. Дальше системный поиск: SAST с анализом потоков данных и ручной поиск по паттернам конкатенации рядом с вызовами запросов.

Что должно прозвучать в ответе

  • Сначала исправить и проверить найденные, оценить, не было ли эксплуатации по логам

  • Систематический поиск: SAST по потокам данных, grep по паттернам конкатенации

  • Приоритизация по доступности снаружи и чувствительности данных

  • Общий безопасный слой доступа к данным и запрет сырых запросов линтером

  • Временные меры: WAF-правила, минимальные права БД

  • Регресс: правило в SAST в CI, чтобы новые не появлялись

Что могут спросить следом

  • Как убедиться, что инъекции не эксплуатировали раньше?
  • Что делать, если команда говорит, что исправить всё нет времени?

Разбор

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

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.