jаvascript SonarSource уязвимость RCE хакер взлом
С помощью запроса JSON и jаvascript можно удаленно выполнить код на устройстве жертвы
jаvascript-платформа Blitz.js
выпустила исправление для критической уязвимости загрязнения прототипа, чтобы предотвратить удаленное выполнение кода (RCE) на серверах Node.js. Загрязнение прототипа — это особый вид уязвимости jаvascript, который позволяет хакеру манипулировать структурой языка и использовать его несколькими способами.
По словам исследователя безопасности Sonar Пола Герсте , это также позволяет злоумышленнику использовать код в приложении Blitz.js для разработки обратной оболочки и запуска произвольных команд на сервере. Герсте обнаружил цепочку эксплойтов, которые можно использовать с помощью RCE-уязвимости.
Злоумышленники нацеливаются на Node.js, отправляя JSON-запрос на сервер, который запускает функцию маршрутизации Blitz.js для загрузки jаvascript-файла с загрязненным прототипом. Это позволяет киберпреступнику использовать вредоносный jаvascript-объект для выполнения произвольного кода.
Злоумышленник должен запустить файл на сервере, но Blitz.js не поддерживает функцию загрузки. Однако, у платформы есть сценарий CLI, который использует функцию jаvascript spawn() для запуска нового процесса.
Злоумышленник может использовать эту функцию для запуска процесса CLI и выполнения произвольной команды на сервере. Уязвимость может быть активирована без какой-либо аутентификации, а это означает, что любой пользователь, имеющий доступ к приложению Blitz.js, сможет выполнять RCE-атаки.
«Этот метод атаки использует шаблон кода, который сам по себе не является уязвимостью. Загрязнение прототипа может отрицательно влиять на целевое приложение, и потребуется много работы для избавления от всего кода, на который может повлиять загрязнение прототипа», — объяснил Герсте.
В своем сообщении в блоге исследователь упомянул некоторые общие рекомендации по защите приложений jаvascript от загрязнения прототипов, включая замораживание
«object.prototype» или использование флага
«--disable-proto=delete»в Node.js.
«Я думаю, что загрязнение прототипов до сих пор неизвестно многим jаvascript-разработчикам», — добавил Герсте.
SECURITYLAB.RU