Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 767

ORM-инъекция

Что такое ORM-инъекция?

ORM-инъекцияИнъекция в приложениях с ORM: эксплуатация динамических запросов, массового присваивания и «лазеек» в сыром SQL для манипуляций с данными.


ORM-инъекция возникает, когда подконтрольный атакующему ввод попадает в ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) через API, динамически собирающие запросы. Уязвимые шаблоны: конкатенация HQL/JPQL, where(string) c интерполяцией в ActiveRecord, Op.literal в Sequelize, форматированный text() в SQLAlchemy, массовое присваивание непредусмотренных полей, небезопасные параметры сортировки и фильтрации из JSON-API. Последствия — от классического SQL-инъекции до обхода авторизации и эскалации привилегий, если проверки выполняются в слое ORM. Защита: параметризованные построители запросов, строгие allow-list для сортируемых/фильтруемых полей, явные strong parameters и отказ от сырого SQL для непроверенных входов.

Примеры

  1. 01

    Rails-приложение вызывает User.where("name = '#{params[:q]}'"), открывая SQL-инъекцию через ORM.

  2. 02

    Эндпоинт Sequelize принимает контролируемый атакующим параметр order, который передаётся через Op.literal.

Частые вопросы

Что такое ORM-инъекция?

Инъекция в приложениях с ORM: эксплуатация динамических запросов, массового присваивания и «лазеек» в сыром SQL для манипуляций с данными. Относится к категории Атаки и угрозы в кибербезопасности.

Что означает ORM-инъекция?

Инъекция в приложениях с ORM: эксплуатация динамических запросов, массового присваивания и «лазеек» в сыром SQL для манипуляций с данными.

Как работает ORM-инъекция?

ORM-инъекция возникает, когда подконтрольный атакующему ввод попадает в ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) через API, динамически собирающие запросы. Уязвимые шаблоны: конкатенация HQL/JPQL, where(string) c интерполяцией в ActiveRecord, Op.literal в Sequelize, форматированный text() в SQLAlchemy, массовое присваивание непредусмотренных полей, небезопасные параметры сортировки и фильтрации из JSON-API. Последствия — от классического SQL-инъекции до обхода авторизации и эскалации привилегий, если проверки выполняются в слое ORM. Защита: параметризованные построители запросов, строгие allow-list для сортируемых/фильтруемых полей, явные strong parameters и отказ от сырого SQL для непроверенных входов.

Как защититься от ORM-инъекция?

Защита от ORM-инъекция обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия ORM-инъекция?

Распространённые альтернативные названия: HQL-инъекция, JPQL-инъекция.

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