Механизм правил Magistrala позволяет прошедшим проверку подлинности пользователям создавать правила со встроенными скриптами Go или Lua, выполняемыми на стороне сервера при поступлении сообщений IoT. Механизм сценариев Go (re/golang.go) запускает сценарии через интерпретатор Yaegi с помощью stdlib.Symbols, предоставляя полную стандартную библиотеку Go (включая os и net/http) с проверкой, ограниченной регулярным выражением, блокирующим горутины и вызовы Panic(); опасные функции, такие как os.ReadFile, os.WriteFile, os.Remove и os.Environ, остаются полностью доступными. Механизм сценариев Lua (re/lua.go) вообще не выполняет проверку входных данных и предварительно загружает опасные библиотеки: db (произвольный доступ к базе данных), ioutil (файловый ввод-вывод), HTTP-клиент (SSRF) и filepath (обход).
Аутентифицированный пользователь с низким уровнем привилегий может выполнять чтение и запись произвольных файлов, утечку переменных среды, доступ к базе данных и SSRF для внутренних микросервисов.
Показать оригинальное описание (EN)
Magistrala's Rules Engine allows authenticated users to create rules with embedded Go or Lua scripts executed server-side when IoT messages arrive. The Lua script engine (re/lua.go) performs no input validation at all and preloads dangerous libraries: db (arbitrary database access), ioutil (file I/O), an HTTP client (SSRF), and filepath (traversal).
Характеристики атаки
Последствия
Строка CVSS v3.1