CVE-2022-46175JSON5 — это расширение популярного формата файлов JSON, которое призвано быть более простым в написании и обслуживании вручную (например, для файлов конфигурации). Метод `parse` библиотеки JSON5 до версий 1.0.1 и 2.2.1 включительно не ограничивает синтаксический анализ ключей с именем `__proto__`, позволяя специально созданным строкам загрязнять прототип результирующего объекта. Эта уязвимость загрязняет прототип объекта, возвращаемого `JSON5.parse`, а не глобальный прототип Object, который является общепринятым определением загрязнения прототипа. Однако загрязнение прототипа одного объекта может иметь значительные последствия для безопасности приложения, если объект впоследствии используется в доверенных операциях. Эта уязвимость может позволить злоумышленнику устанавливать произвольные и неожиданные ключи для объекта, возвращаемого из `JSON5.parse`. Фактическое воздействие будет зависеть от того, как приложения используют возвращаемый объект и как они фильтруют нежелательные ключи, но может включать отказ в обслуживании, межсайтовый скриптинг, повышение привилегий и, в крайних случаях, удаленное выполнение кода. `JSON5.parse` должен ограничивать синтаксический анализ ключей `__proto__` при синтаксическом анализе строк JSON в объекты. В качестве ориентира метод `JSON.parse`, включенный в JavaScript, игнорирует ключи `__proto__`. Простое изменение `JSON5.parse` на `JSON.parse` в приведенных выше примерах смягчает эту уязвимость. Эта уязвимость исправлена в json5 версий 1.0.2, 2.2.2 и более поздних.