SiYuan — это система управления персональными знаниями. Начиная с версии 3.6.0 и до версии 3.6.2, функцию SanitizeSVG, представленную в версии 3.6.0 для исправления XSS в неаутентифицированной конечной точке /api/icon/getDynamicIcon, можно обойти, используя имена элементов с префиксом пространства имен, такие как <x:script xmlns:x="http://www.w3.org/2000/svg">. Парсер Go HTML5 записывает тег элемента как «x:script», а не «script», поэтому проверка тега пропускает его.
SVG обслуживается с типом контента: image/svg+xml и без политики безопасности контента; когда браузер открывает ответ напрямую, его анализатор XML преобразует префикс в пространство имен SVG и выполняет встроенный скрипт. Эта проблема исправлена в версии 3.6.2.
Показать оригинальное описание (EN)
SiYuan is a personal knowledge management system. From version 3.6.0 to before version 3.6.2, the SanitizeSVG function introduced in version 3.6.0 to fix XSS in the unauthenticated /api/icon/getDynamicIcon endpoint can be bypassed by using namespace-prefixed element names such as <x:script xmlns:x="http://www.w3.org/2000/svg">. The Go HTML5 parser records the element's tag as "x:script" rather than "script", so the tag check passes it through. The SVG is served with Content-Type: image/svg+xml and no Content Security Policy; when a browser opens the response directly, its XML parser resolves the prefix to the SVG namespace and executes the embedded script. This issue has been patched in version 3.6.2.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
B3log Siyuan
cpe:2.3:a:b3log:siyuan:*:*:*:*:*:*:*:*
|
3.6.0
|
3.6.2
|