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

Загрязнение прототипа

ПроверилCybersecurity entrepreneur & security researcher

Что такое Загрязнение прототипа?

Загрязнение прототипаJavaScript-уязвимость, при которой недоверенный ввод изменяет Object.prototype, добавляя свойства всем объектам и меняя поведение приложения вплоть до RCE.


Загрязнение прототипа эксплуатирует цепочку прототипов JavaScript: при установке ключей proto, constructor.prototype или prototype в операциях merge/clone/assign атакующий мутирует Object.prototype, и все обычные объекты наследуют эти свойства. Чаще всего проблема встречается в рекурсивных утилитах слияния, deep clone, парсерах query string и шаблонизаторах, принимающих пользовательский JSON. Последствия — от DoS и обхода аутентификации до RCE, если «отравленные» свойства влияют на проверки безопасности (isAdmin, sandbox, опции рендеринга). Значимые CVE: lodash CVE-2019-10744 и многие пакеты Node.js. Защита: отклонять ключи proto/constructor, использовать Map или Object.create(null) для недоверенных данных, замораживать прототип, выбирать безопасные библиотеки.

Примеры

  1. 01

    POST {"__proto__":{"isAdmin":true}} на эндпоинт JSON-merge — и пользователь становится админом везде.

  2. 02

    Загрязнение прототипа меняет опции рендеринга шаблонов и приводит к RCE.

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

Что такое Загрязнение прототипа?

JavaScript-уязвимость, при которой недоверенный ввод изменяет Object.prototype, добавляя свойства всем объектам и меняя поведение приложения вплоть до RCE. Относится к категории Уязвимости в кибербезопасности.

Что означает Загрязнение прототипа?

JavaScript-уязвимость, при которой недоверенный ввод изменяет Object.prototype, добавляя свойства всем объектам и меняя поведение приложения вплоть до RCE.

Как защититься от Загрязнение прототипа?

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

Какие есть другие названия Загрязнение прототипа?

Распространённые альтернативные названия: Загрязнение Object.prototype, Инъекция __proto__.

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

См. также