Функция CHANNEL_SetLabel() (src/cmnds/cmd_channels.c) OpenBK7231T сохраняет метки каналов, полученные с помощью команды MQTT SetChannelLabel, с помощью strdup() без очистки HTML. CHANNEL_GetLabel() возвращает эти метки в необработанном виде, и они отображаются с помощью hprintf255() в более чем 15 местах в src/httpserver/http_fns.c без кодирования HTML. Злоумышленник с доступом к брокеру MQTT (обычно не прошедший аутентификацию в реальных развертываниях) может установить метку канала, содержащую полезную нагрузку <script>, которая выполняется, когда любой пользователь просматривает веб-панель устройства.
Показать оригинальное описание (EN)
OpenBK7231T's CHANNEL_SetLabel() (src/cmnds/cmd_channels.c) stores channel labels received via the MQTT SetChannelLabel command using strdup() with no HTML sanitization. CHANNEL_GetLabel() returns these labels unsanitized, and they are rendered via hprintf255() at 15+ locations in src/httpserver/http_fns.c with no HTML encoding. An attacker with MQTT broker access (commonly unauthenticated in real deployments) can set a channel label containing a <script> payload that executes when any user views the device's web panel.
Характеристики атаки
Последствия
Строка CVSS v3.1