SiYuan до версии 3.7.2 содержит недостающую уязвимость авторизации в конечной точке ядра POST /mcp, которая контролируется только общей проверкой аутентификации (model.CheckAuth) без роли администратора или принудительного использования только для чтения. Это предоставляет 31 инструмент MCP, включая файловый инструмент с действиями списка/чтения/записи/удаления/переименования/копирования во всей рабочей области. Когда сервер публикации включен в анонимном режиме (Conf.Publish.Enable=true и Conf.Publish.Auth.Enable=false), обратный прокси-сервер публикации присоединяет анонимный JWT RoleReader к прокси-запросам, позволяя удаленному злоумышленнику, не прошедшему проверку подлинности, получить доступ к /mcp.
Злоумышленник может прочитать conf/conf.json, чтобы извлечь accessAuthCode, api.token и cookieKey в виде открытого текста, записать произвольные файлы в рабочую область и внедрить плагин в data/plugins/, который запускается с nodeIntegration:true и без contextIsolation при следующем запуске рабочего стола, что приводит к захвату администратора.
Показать оригинальное описание (EN)
SiYuan before v3.7.2 contains a missing authorization vulnerability in the POST /mcp kernel endpoint, which is gated only by a general auth check (model.CheckAuth) with no admin-role or read-only enforcement. This exposes 31 MCP tools, including a file tool with list/read/write/delete/rename/copy actions across the entire workspace. When the Publish server is enabled in anonymous mode (Conf.Publish.Enable=true and Conf.Publish.Auth.Enable=false), the Publish reverse proxy attaches an anonymous RoleReader JWT to proxied requests, allowing a remote unauthenticated attacker to reach /mcp. The attacker can read conf/conf.json to extract accessAuthCode, api.token, and cookieKey in plaintext, write arbitrary files in the workspace, and plant a plugin into data/plugins/ that executes with nodeIntegration:true and no contextIsolation on the next desktop launch, leading to administrator takeover.
Характеристики атаки
Последствия
Строка CVSS v4.0