Skip to content

Commit cde6457

Browse files
Advisory Database Sync
1 parent 86830f2 commit cde6457

32 files changed

Lines changed: 611 additions & 106 deletions

File tree

advisories/github-reviewed/2026/04/GHSA-3crg-w4f6-42mx/GHSA-3crg-w4f6-42mx.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-3crg-w4f6-42mx",
4-
"modified": "2026-04-10T20:59:36Z",
4+
"modified": "2026-04-10T21:32:54Z",
55
"published": "2026-04-10T20:59:36Z",
6-
"aliases": [],
6+
"aliases": [
7+
"CVE-2026-40260"
8+
],
79
"summary": "pypdf: Manipulated XMP metadata entity declarations can exhaust RAM",
810
"details": "### Impact\n\nAn attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires parsing the XMP metadata.\n\n### Patches\nThis has been fixed in [pypdf==6.10.0](https://github.com/py-pdf/pypdf/releases/tag/6.10.0).\n\n### Workarounds\nIf you cannot upgrade yet, consider applying the changes from PR [#3724](https://github.com/py-pdf/pypdf/pull/3724).",
911
"severity": [

advisories/github-reviewed/2026/04/GHSA-7m5h-w69j-qggg/GHSA-7m5h-w69j-qggg.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-7m5h-w69j-qggg",
4-
"modified": "2026-04-10T19:32:07Z",
4+
"modified": "2026-04-10T21:32:45Z",
55
"published": "2026-04-10T19:32:07Z",
6-
"aliases": [],
6+
"aliases": [
7+
"CVE-2026-40259"
8+
],
79
"summary": "SiYuan: Publish Reader Can Arbitrarily Delete Attribute View Files via `/api/av/removeUnusedAttributeView`",
810
"details": "## Summary\n\nAn authenticated publish-service reader can invoke `/api/av/removeUnusedAttributeView` and cause persistent deletion of arbitrary attribute view (`AV`) definition files from the workspace.\n\nThe route is protected only by generic `CheckAuth`, which accepts publish `RoleReader` requests. The handler forwards a caller-controlled `id` directly into a model function that deletes `data/storage/av/<id>.json` without verifying either:\n\n- that the caller is allowed to perform write/destructive actions; or\n- that the target AV is actually unused.\n\nThis is a persistent integrity and availability issue reachable from the publish surface.\n\n## Root Cause\n\n### 1. Publish users are issued a `RoleReader` JWT\n\n- [kernel/model/auth.go](/root/audit/siyuan/kernel/model/auth.go#L105)\n\n```go\nClaimsKeyRole: RoleReader,\n```\n\n### 2. The publish reverse proxy forwards that token upstream\n\n- [kernel/server/proxy/publish.go](/root/audit/siyuan/kernel/server/proxy/publish.go#L131)\n- [kernel/server/proxy/publish.go](/root/audit/siyuan/kernel/server/proxy/publish.go#L186)\n\n### 3. `CheckAuth` accepts `RoleReader`\n\n- [kernel/model/session.go](/root/audit/siyuan/kernel/model/session.go#L201)\n\n```go\nif role := GetGinContextRole(c); IsValidRole(role, []Role{\n RoleAdministrator,\n RoleEditor,\n RoleReader,\n}) {\n c.Next()\n return\n}\n```\n\n### 4. The route is exposed with `CheckAuth` only\n\n- [kernel/api/router.go](/root/audit/siyuan/kernel/api/router.go#L507)\n\n```go\nginServer.Handle(\"POST\", \"/api/av/removeUnusedAttributeView\", model.CheckAuth, removeUnusedAttributeView)\n```\n\nThere is no `CheckAdminRole` and no `CheckReadonly`.\n\n### 5. The handler forwards attacker-controlled `id` directly to the delete sink\n\n- [kernel/api/av.go](/root/audit/siyuan/kernel/api/av.go#L32)\n\n```go\navID := arg[\"id\"].(string)\nmodel.RemoveUnusedAttributeView(avID)\n```\n\n### 6. The model deletes the AV file unconditionally\n\n- [kernel/model/attribute_view.go](/root/audit/siyuan/kernel/model/attribute_view.go#L49)\n\n```go\nfunc RemoveUnusedAttributeView(id string) {\n absPath := filepath.Join(util.DataDir, \"storage\", \"av\", id+\".json\")\n if !filelock.IsExist(absPath) {\n return\n }\n ...\n if err = filelock.RemoveWithoutFatal(absPath); err != nil {\n ...\n return\n }\n IncSync()\n}\n```\n\nCrucially, this function does **not** verify that the supplied AV is actually unused. The name of the function suggests a cleanup helper, but the implementation is really \"delete AV file by id if it exists\".\n\n## Attack Prerequisites\n\n- Publish service enabled\n- Attacker can access the publish service\n- If publish auth is enabled, attacker has valid publish-reader credentials\n- Attacker knows an `avID`\n\n## Obtaining `avID`\n\n`avID` is not secret. It is exposed extensively in frontend markup as `data-av-id`.\n\nExamples:\n\n- [app/src/protyle/render/av/render.ts](/root/audit/siyuan/app/src/protyle/render/av/render.ts#L117)\n- [app/src/protyle/render/av/layout.ts](/root/audit/siyuan/app/src/protyle/render/av/layout.ts#L120)\n- [app/src/protyle/render/av/groups.ts](/root/audit/siyuan/app/src/protyle/render/av/groups.ts#L52)\n\nAny publish-visible database/attribute view can therefore disclose a valid `avID` to the attacker.\n\n## Exploit Path\n\n1. Attacker browses published content containing an attribute view.\n2. Attacker extracts the `data-av-id` value from the page/DOM.\n3. Attacker sends a POST request to `/api/av/removeUnusedAttributeView` through the publish service.\n4. Publish proxy injects a valid `RoleReader` token.\n5. `CheckAuth` accepts the request.\n6. The handler passes the attacker-controlled `avID` to `model.RemoveUnusedAttributeView`.\n7. The backend deletes `data/storage/av/<avID>.json`.\n\n## Proof of Concept\n\nRequest:\n\n```http\nPOST /api/av/removeUnusedAttributeView HTTP/1.1\nHost: <publish-host>:<publish-port>\nContent-Type: application/json\nAuthorization: Basic <publish-account-creds-if-enabled>\n\n{\n \"id\": \"<exposed-data-av-id>\"\n}\n```\n\nExpected result:\n\n- HTTP 200\n- backend increments sync state\n- the target attribute view file is removed from `data/storage/av/`\n- published and local workspace behavior for that AV becomes broken until restored from history or recreated\n\n## Impact\n\nThis gives a low-privileged publish reader a destructive persistent write primitive against workspace data.\n\nPractical consequences include:\n\n- deletion of live attribute view definitions\n- corruption/breakage of published database views\n- breakage of local workspace rendering and AV-backed relationships\n- operational disruption until restore or manual repair\n\nThe bug affects integrity and availability, not merely UI state.\n\n## Recommended Fix\n\nAt minimum:\n\n1. Block publish/read-only users from this route.\n2. Require admin/write authorization.\n3. Re-validate that the target AV is actually unused before deletion.\n\nSafe router fix:\n\n```go\nginServer.Handle(\"POST\", \"/api/av/removeUnusedAttributeView\",\n model.CheckAuth,\n model.CheckAdminRole,\n model.CheckReadonly,\n removeUnusedAttributeView,\n)\n```\n\nAnd inside the model or handler, reject deletion unless the target `id` is present in `UnusedAttributeViews(...)`.",
911
"severity": [
Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-h468-7pvh-8vr8",
4+
"modified": "2026-04-10T21:32:09Z",
5+
"published": "2026-04-09T21:31:29Z",
6+
"aliases": [
7+
"CVE-2026-29146"
8+
],
9+
"summary": "Apache Tomcat: Padding Oracle vulnerability in EncryptInterceptor",
10+
"details": "Padding Oracle vulnerability in Apache Tomcat's EncryptInterceptor with default configuration.\n\nThis issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.18, from 10.0.0-M1 through 10.1.52, from 9.0.13 through 9..115, from 8.5.38 through 8.5.100, from 7.0.100 through 7.0.109.\n\nUsers are recommended to upgrade to version 11.0.19, 10.1.53 and 9.0.116, which fixes the issue.",
11+
"severity": [
12+
{
13+
"type": "CVSS_V3",
14+
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
15+
},
16+
{
17+
"type": "CVSS_V4",
18+
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"
19+
}
20+
],
21+
"affected": [
22+
{
23+
"package": {
24+
"ecosystem": "Maven",
25+
"name": "org.apache.tomcat:tomcat-catalina"
26+
},
27+
"ranges": [
28+
{
29+
"type": "ECOSYSTEM",
30+
"events": [
31+
{
32+
"introduced": "9.0.13"
33+
},
34+
{
35+
"fixed": "9.0.116"
36+
}
37+
]
38+
}
39+
]
40+
},
41+
{
42+
"package": {
43+
"ecosystem": "Maven",
44+
"name": "org.apache.tomcat:tomcat-catalina"
45+
},
46+
"ranges": [
47+
{
48+
"type": "ECOSYSTEM",
49+
"events": [
50+
{
51+
"introduced": "10.1.50"
52+
},
53+
{
54+
"fixed": "10.1.53"
55+
}
56+
]
57+
}
58+
]
59+
},
60+
{
61+
"package": {
62+
"ecosystem": "Maven",
63+
"name": "org.apache.tomcat:tomcat-catalina"
64+
},
65+
"ranges": [
66+
{
67+
"type": "ECOSYSTEM",
68+
"events": [
69+
{
70+
"introduced": "11.0.0-M1"
71+
},
72+
{
73+
"fixed": "11.0.19"
74+
}
75+
]
76+
}
77+
]
78+
},
79+
{
80+
"package": {
81+
"ecosystem": "Maven",
82+
"name": "org.apache.tomcat:tomcat"
83+
},
84+
"ranges": [
85+
{
86+
"type": "ECOSYSTEM",
87+
"events": [
88+
{
89+
"introduced": "9.0.13"
90+
},
91+
{
92+
"fixed": "9.0.116"
93+
}
94+
]
95+
}
96+
]
97+
},
98+
{
99+
"package": {
100+
"ecosystem": "Maven",
101+
"name": "org.apache.tomcat:tomcat"
102+
},
103+
"ranges": [
104+
{
105+
"type": "ECOSYSTEM",
106+
"events": [
107+
{
108+
"introduced": "10.1.50"
109+
},
110+
{
111+
"fixed": "10.1.53"
112+
}
113+
]
114+
}
115+
]
116+
},
117+
{
118+
"package": {
119+
"ecosystem": "Maven",
120+
"name": "org.apache.tomcat:tomcat"
121+
},
122+
"ranges": [
123+
{
124+
"type": "ECOSYSTEM",
125+
"events": [
126+
{
127+
"introduced": "11.0.0-M1"
128+
},
129+
{
130+
"fixed": "11.0.19"
131+
}
132+
]
133+
}
134+
]
135+
},
136+
{
137+
"package": {
138+
"ecosystem": "Maven",
139+
"name": "org.apache.tomcat.embed:tomcat-embed-core"
140+
},
141+
"ranges": [
142+
{
143+
"type": "ECOSYSTEM",
144+
"events": [
145+
{
146+
"introduced": "9.0.13"
147+
},
148+
{
149+
"fixed": "9.0.116"
150+
}
151+
]
152+
}
153+
]
154+
},
155+
{
156+
"package": {
157+
"ecosystem": "Maven",
158+
"name": "org.apache.tomcat.embed:tomcat-embed-core"
159+
},
160+
"ranges": [
161+
{
162+
"type": "ECOSYSTEM",
163+
"events": [
164+
{
165+
"introduced": "10.1.50"
166+
},
167+
{
168+
"fixed": "10.1.53"
169+
}
170+
]
171+
}
172+
]
173+
},
174+
{
175+
"package": {
176+
"ecosystem": "Maven",
177+
"name": "org.apache.tomcat.embed:tomcat-embed-core"
178+
},
179+
"ranges": [
180+
{
181+
"type": "ECOSYSTEM",
182+
"events": [
183+
{
184+
"introduced": "11.0.0-M1"
185+
},
186+
{
187+
"fixed": "11.0.19"
188+
}
189+
]
190+
}
191+
]
192+
}
193+
],
194+
"references": [
195+
{
196+
"type": "ADVISORY",
197+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-29146"
198+
},
199+
{
200+
"type": "PACKAGE",
201+
"url": "https://github.com/apache/tomcat"
202+
},
203+
{
204+
"type": "WEB",
205+
"url": "https://lists.apache.org/thread/lzt04z2pb3dc5tk85obn80xygw3z1p0w"
206+
},
207+
{
208+
"type": "WEB",
209+
"url": "http://www.openwall.com/lists/oss-security/2026/04/09/24"
210+
}
211+
],
212+
"database_specific": {
213+
"cwe_ids": [
214+
"CWE-209"
215+
],
216+
"severity": "HIGH",
217+
"github_reviewed": true,
218+
"github_reviewed_at": "2026-04-10T21:32:09Z",
219+
"nvd_published_at": "2026-04-09T20:16:24Z"
220+
}
221+
}

advisories/github-reviewed/2026/04/GHSA-m5gr-86j6-99jp/GHSA-m5gr-86j6-99jp.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-m5gr-86j6-99jp",
4-
"modified": "2026-04-10T21:00:09Z",
4+
"modified": "2026-04-10T21:32:40Z",
55
"published": "2026-04-10T21:00:09Z",
6-
"aliases": [],
6+
"aliases": [
7+
"CVE-2026-40258"
8+
],
79
"summary": "gramps-webapi: Zip Slip Path Traversal in Media Archive Import",
810
"details": "## Summary\n\nA path traversal vulnerability (Zip Slip) exists in the media archive import feature. An authenticated user with owner-level privileges can craft a malicious ZIP file with directory-traversal filenames to write arbitrary files outside the intended temporary extraction directory on the server's local filesystem.\n\n## Details\n\nWhen importing media archives as ZIP file, `MediaImporter._check_disk_space_and_extract()` in `gramps_webapi/api/media_importer.py` called `zipfile.extractall()` without validating ZIP entry names. Python's `zipfile` module does not sanitize entry names containing `../` sequences, allowing extraction to paths outside the target directory.\n\nOnly users with **owner permission** can upload media ZIP archives, so the biggest risk is for multi-tree deployments, where tree owners are distinct from server administrators.\n\nFor multi-tree deployments, the impact depends on deployment configuration. Assuming the standard docker-based deployment is used:\n\n- **SQLite family tree + local media**: An attacker can overwrite another tree's database file or media files, leading to cross-tree data corruption or replacement.\n- **Postgres family tree + S3 media**: No persistent tree data is stored on the local filesystem, so cross-tree impact is eliminated. The remaining risk is overwriting volume-mounted files such as the application config file.\n- **Postgres family tree + S3 media + environment-variable-only config**: No persistent files of value are present on the local filesystem. Impact is limited to writes to ephemeral container storage, which are lost on woker restart.\n\n## Fix\n\nZIP entry names are now validated against the resolved real path of the temporary directory before extraction. Any entry whose resolved path falls outside the temporary directory raises an error and aborts the import.",
911
"severity": [

advisories/unreviewed/2026/03/GHSA-8vvr-xvj3-cpff/GHSA-8vvr-xvj3-cpff.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-8vvr-xvj3-cpff",
4-
"modified": "2026-03-20T18:31:19Z",
4+
"modified": "2026-04-10T21:31:11Z",
55
"published": "2026-03-20T18:31:19Z",
66
"aliases": [
77
"CVE-2026-22895"
88
],
99
"details": "A cross-site scripting (XSS) vulnerability has been reported to affect QuFTP Service. If a remote attacker gains an administrator account, they can then exploit the vulnerability to bypass security mechanisms or read application data.\n\nWe have already fixed the vulnerability in the following versions:\nQuFTP Service 1.4.3 and later\nQuFTP Service 1.5.2 and later\nQuFTP Service 1.6.2 and later",
1010
"severity": [
11+
{
12+
"type": "CVSS_V3",
13+
"score": "CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N"
14+
},
1115
{
1216
"type": "CVSS_V4",
1317
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X"

advisories/unreviewed/2026/04/GHSA-2987-f6gf-82vj/GHSA-2987-f6gf-82vj.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-2987-f6gf-82vj",
4-
"modified": "2026-04-10T12:31:44Z",
4+
"modified": "2026-04-10T21:31:14Z",
55
"published": "2026-04-10T12:31:44Z",
66
"aliases": [
77
"CVE-2026-6057"
88
],
99
"details": "FalkorDB Browser 1.9.3 contains an unauthenticated path traversal vulnerability in the file upload API that allows remote attackers to write arbitrary files and achieve remote code execution.",
10-
"severity": [],
10+
"severity": [
11+
{
12+
"type": "CVSS_V3",
13+
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
14+
}
15+
],
1116
"affected": [],
1217
"references": [
1318
{
@@ -27,7 +32,7 @@
2732
"cwe_ids": [
2833
"CWE-22"
2934
],
30-
"severity": null,
35+
"severity": "CRITICAL",
3136
"github_reviewed": false,
3237
"github_reviewed_at": null,
3338
"nvd_published_at": "2026-04-10T10:16:04Z"

advisories/unreviewed/2026/04/GHSA-3gvp-p32j-pc5m/GHSA-3gvp-p32j-pc5m.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-3gvp-p32j-pc5m",
4-
"modified": "2026-04-09T00:31:59Z",
4+
"modified": "2026-04-10T21:31:13Z",
55
"published": "2026-04-09T00:31:59Z",
66
"aliases": [
77
"CVE-2026-5867"
88
],
99
"details": "Heap buffer overflow in WebML in Google Chrome prior to 147.0.7727.55 allowed a remote attacker to obtain potentially sensitive information from process memory via a crafted HTML page. (Chromium security severity: High)",
10-
"severity": [],
10+
"severity": [
11+
{
12+
"type": "CVSS_V3",
13+
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L"
14+
}
15+
],
1116
"affected": [],
1217
"references": [
1318
{
@@ -27,7 +32,7 @@
2732
"cwe_ids": [
2833
"CWE-122"
2934
],
30-
"severity": null,
35+
"severity": "MODERATE",
3136
"github_reviewed": false,
3237
"github_reviewed_at": null,
3338
"nvd_published_at": "2026-04-08T22:16:26Z"

advisories/unreviewed/2026/04/GHSA-563x-q5rq-57qp/GHSA-563x-q5rq-57qp.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
{
22
"schema_version": "1.4.0",
33
"id": "GHSA-563x-q5rq-57qp",
4-
"modified": "2026-04-10T00:30:28Z",
4+
"modified": "2026-04-10T21:31:14Z",
55
"published": "2026-04-09T21:31:29Z",
66
"aliases": [
77
"CVE-2026-24880"
88
],
99
"details": "Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') vulnerability in Apache Tomcat via invalid chunk extension.\n\nThis issue affects Apache Tomcat: from 11.0.0-M1 through 11.0.18, from 10.1.0-M1 through 10.1.52, from 9.0.0.M1 through 9.0.115, from 8.5.0 through 8.5.100, from 7.0.0 through 7.0.109.\nOther, unsupported versions may also be affected.\n\nUsers are recommended to upgrade to version 11.0.20, 10.1.52 or 9.0.116, which fix the issue.",
10-
"severity": [],
10+
"severity": [
11+
{
12+
"type": "CVSS_V3",
13+
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
14+
}
15+
],
1116
"affected": [],
1217
"references": [
1318
{
@@ -27,7 +32,7 @@
2732
"cwe_ids": [
2833
"CWE-444"
2934
],
30-
"severity": null,
35+
"severity": "HIGH",
3136
"github_reviewed": false,
3237
"github_reviewed_at": null,
3338
"nvd_published_at": "2026-04-09T20:16:24Z"

0 commit comments

Comments
 (0)