CyberGlossary

Атаки и угрозы

NoSQL-инъекция

Также известно как: NoSQLi

Определение

Инъекция в документоориентированные, ключ-значение или графовые БД, при которой злоумышленник внедряет операторы или JavaScript в объекты запроса.

NoSQL-инъекция нацелена на базы вроде MongoDB, CouchDB, DynamoDB или Redis, чьи языки запросов построены на JSON, BSON или встроенном JavaScript. Вместо выхода из строк злоумышленник изменяет структуру — например, отправляя JSON с операторами {"$ne": null} или {"$where": "..."}, чтобы обойти аутентификацию, выгрузить документы или выполнить серверный JavaScript. Автоматическая десериализация объектов в динамических языках (PHP, Node.js) делает атаку тривиальной: пользовательский ввод становится частью DSL запроса. Защита: строгая типизация и схема валидации, отказ от пользовательских операторов, параметризованные клиентские API, отключение серверного JavaScript и роли БД с минимальными правами.

Примеры

  • Отправка {"username": "admin", "password": {"$ne": ""}} в MongoDB-эндпоинт логина, чтобы обойти проверку пароля.
  • Использование {"$where": "sleep(5000) || true"} для извлечения данных по разнице во времени отклика.

Связанные термины