SandboxJS - это библиотека песочницы JavaScript. Версии до 0.8.26 имеют уязвимость выхода из песочницы из-за того, что `AsyncFunction` не б…
SandboxJS - это библиотека песочницы JavaScript. Версии до 0.8.26 имеют уязвимость выхода из песочницы из-за того, что `AsyncFunction` не была изолирована в «SandboxFunction». Библиотека пытается выполнить код песочницы, заменив глобальный конструктор «Фунция» на сейфовую версию в песочнице («SandboxFunction»). Это обрабатывается в 'utils.ts` путем отображения `Function` на "sandboxFunction`" в карте, используемой для поиска. Однако до версии 0.8.26 в библиотеку не были включены отображения для "AsyncFunction`", "GeneratorFunction`", "GeneratorFunction`", "AsyncGeneratorFunction`", "AsyncFunction". Эти конструкторы не являются глобальными свойствами, но могут быть доступны через свойство `.constructor` экземпляра (например, `(async () => {}). В "исполнитель.ts`" доступ к собственности обрабатывается. Когда код, запущенный внутри песочницы, обращается к `.constructor` на функции асинхронизации (которую создает песочница), «исполнитель» извлекает свойство свойства. Поскольку "AsyncFunction`" не было на карте безопасной замены, "исполнитель" возвращает фактического ведущего "AsyncFunction" конструктора "AsyncFunction". Конструкторы для функций в JavaScript (например, «Функция», «AsyncFunction`») создают функции, которые выполняются в глобальном масштабе. Получив конструктор хоста «AsyncFunction», злоумышленник может создать новую функцию асинхронизации, которая полностью выполняется вне контекста песочницы, минуя все ограничения и получая полный доступ к среде хоста (Remote Code Execution). Версия 0.8.26 исправляет эту уязвимость.
Продукт формирует полностью или частично сегмент кода на основе входных данных от вышестоящего компонента, однако не нейтрализует или некорректно нейтрализует специальные элементы, способные изменить синтаксис или поведение предполагаемого сегмента кода.
https://cwe.mitre.org/data/definitions/94.html →Открыть в коллекции CWE →Данная атака эксплуатирует доверие системы к файлам конфигурации и ресурсов. Когда исполняемый файл загружает ресурс (например, файл изображения или файл конфигурации), злоумышленник модифицирует файл таким образом, чтобы либо непосредственно выполнить вредоносный код, либо манипулировать целевым процессом (например, сервером приложений), заставляя его выполнять действия на основе вредоносных параметров конфигурации. По мере того как системы всё активнее интегрируют ресурсы из локальных и удалённых источников, вероятность осуществления данной атаки возрастает.
https://capec.mitre.org/data/definitions/35.html →Открыть в коллекции CAPEC →Данная атака направлена на переменные, управляемые пользователем (DEBUG=1, PHP Globals и т. д.). Злоумышленник может переопределять переменные, используя переменные запроса, предоставляемые пользователем и применяемые непосредственно на сервере приложений без какой-либо санитизации данных. В крайних случаях злоумышленник может изменять переменные, управляющие бизнес-логикой приложения. Например, в языках наподобие PHP ряд неудачно заданных конфигураций по умолчанию может позволить пользователю переопределять переменные.
https://capec.mitre.org/data/definitions/77.html →Открыть в коллекции CAPEC →Злоумышленник эксплуатирует слабость в проверке входных данных на стороне цели, чтобы внедрить новый код в выполняемый в данный момент. Этот шаблон отличается от включения кода тем, что включение кода предполагает добавление или замену ссылки на файл с кодом, который впоследствии загружается целью и используется как часть кода некоторого приложения.
https://capec.mitre.org/data/definitions/242.html →Открыть в коллекции CAPEC →