UNKNOWNCVE-2026-34605

SanitizeSVG (getDynamicIcon, बिना प्रमाणीकरण) में SVG नेमस्पेस प्रीफ़िक्स बाईपास के माध्यम से SiYuan रिफ्लेक्टेड XSS के लिए असुरक्षित

प्लेटफ़ॉर्म

go

कॉम्पोनेन्ट

github.com/siyuan-note/siyuan/kernel

ठीक किया गया

0.0.0-20260330031106-f09953afc57a

### सारांश v3.6.0 में बिना प्रमाणीकरण वाले `/api/icon/getDynamicIcon` एंडपॉइंट में XSS को ठीक करने के लिए पेश किया गया `SanitizeSVG` फ़ंक्शन, `<x:script xmlns:x="http://www.w3.org/2000/svg">` जैसे नेमस्पेस-प्रीफ़िक्स्ड एलिमेंट नामों का उपयोग करके बाईपास किया जा सकता है। Go HTML5 पार्सर एलिमेंट के टैग को `"script"` के बजाय `"x:script"` के रूप में रिकॉर्ड करता है, इसलिए टैग चेक इसे पास कर देता है। SVG को `Content-Type: image/svg+xml` और बिना कंटेंट सिक्योरिटी पॉलिसी के साथ परोसा जाता है; जब कोई ब्राउज़र सीधे प्रतिक्रिया खोलता है, तो उसका XML पार्सर प्रीफ़िक्स को SVG नेमस्पेस में हल करता है और एम्बेडेड स्क्रिप्ट को निष्पादित करता है। ### विवरण `getDynamicIcon` रूट बिना प्रमाणीकरण के पंजीकृत है: ```go // kernel/server/serve.go ginServer.Handle("GET", "/api/icon/getDynamicIcon", getDynamicIcon) ``` टाइप 8 के लिए, `content` क्वेरी पैरामीटर को बिना HTML एन्कोडिंग के `fmt.Sprintf` का उपयोग करके सीधे एक SVG `<text>` एलिमेंट में डाला जाता है: ```go // kernel/api/icon.go:579-584 return fmt.Sprintf(` <svg id="dynamic_icon_type8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"> <path d="..."/> <text x="50%%" y="55%%" ...>%s</text> </svg>`, ..., content) ``` `SanitizeSVG` फिर SVG को पार्स करता है "

कैसे ठीक करें

कोई आधिकारिक पैच उपलब्ध नहीं है। वैकल्पिक समाधान खोजें या अपडेट की निगरानी करें।

अपनी निर्भरताओं की स्वचालित निगरानी करें

जब नई कमज़ोरियाँ आपके प्रोजेक्ट को प्रभावित करें तो अलर्ट पाएं।

मुफ़्त शुरू करें