{"id":"GO-2026-5194","revision":null,"records":[{"revision":"664e09bd604645ceb8151863ba77e8a4","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-47268","aliases":[],"title":"Nezha Monitoring: Authenticated DDNS webhook configuration allows blind SSRF from the dashboard host","description":"Nezha Monitoring is a self-hostable, lightweight, servers and websites monitoring and O&M tool. From version 0.20.0 to before version 2.0.10, an authenticated Nezha dashboard user can create or update a DDNS profile with provider webhook and configure an arbitrary webhook_url, HTTP method, request body, and headers. When DDNS is triggered for a server that uses that profile, the dashboard process sends the configured request with utils.HttpClient without the SSRF protections used by notification webhooks. This allows a low-privileged authenticated user who controls an owned server/DDNS profile to make the dashboard host issue HTTP requests to loopback or internal network services. The response body is not returned to the attacker in the confirmed path, so this is a blind SSRF / internal state-changing request primitive. This issue has been patched in version 2.0.10.","state":0,"publishedAt":"2026-06-12T20:56:45.935+00:00","modifiedAt":"2026-06-15T12:58:14.279+00:00","affected":[{"ecosystem":"Vendor product","name":"nezha","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"nezhahq\",\n                    \"product\": \"nezha\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 0.20.0, < 2.0.10\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","score":6.4,"severity":"MEDIUM"}],"references":["https://github.com/nezhahq/nezha/security/advisories/GHSA-6x26-5727-rrm9"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-47268","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-47268","identifiers":["CVE-2026-47268"]},"retained":false,"historicalAffected":[]},{"revision":"522589de259441769e593eaa173e1d8d","observedAt":"2026-11-07T10:40:29.743+00:00","statement":{"source":"euvd","id":"EUVD-2026-36588","aliases":["CVE-2026-47268","GHSA-6x26-5727-rrm9"],"title":"Nezha Monitoring is a self-hostable, lightweight, servers and websites monitoring and O&M tool. From version 0.20.0 to before version 2.0.10, an authenticated Nezha dashboard user can create or update a DDNS profile with provider webhook an…","description":"Nezha Monitoring is a self-hostable, lightweight, servers and websites monitoring and O&M tool. From version 0.20.0 to before version 2.0.10, an authenticated Nezha dashboard user can create or update a DDNS profile with provider webhook and configure an arbitrary webhook_url, HTTP method, request body, and headers. When DDNS is triggered for a server that uses that profile, the dashboard process sends the configured request with utils.HttpClient without the SSRF protections used by notification webhooks. This allows a low-privileged authenticated user who controls an owned server/DDNS profile to make the dashboard host issue HTTP requests to loopback or internal network services. The response body is not returned to the attacker in the confirmed path, so this is a blind SSRF / internal state-changing request primitive. This issue has been patched in version 2.0.10.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","score":6.4,"severity":null}],"references":["https://github.com/nezhahq/nezha/security/advisories/GHSA-6x26-5727-rrm9"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-36588","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Jun 12, 2026, 8:56:45 PM","dateUpdated":"Jun 15, 2026, 12:58:14 PM"},"relatedAdvisories":[],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2026-36588","identifiers":["EUVD-2026-36588","CVE-2026-47268","GHSA-6x26-5727-rrm9"]},"retained":false,"historicalAffected":[]},{"revision":"6de7f307c68045bb9f6b89794bbfa021","observedAt":"2026-10-27T13:11:48.565+00:00","statement":{"source":"nvd","id":"CVE-2026-47268","aliases":[],"title":"Nezha Monitoring is a self-hostable, lightweight, servers and websites monitoring and O&M tool. From version 0.20.0 to before version 2.0.10, an authenticated Nezha dashboard user can create or update a DDNS profile with provider webhook an…","description":"Nezha Monitoring is a self-hostable, lightweight, servers and websites monitoring and O&M tool. From version 0.20.0 to before version 2.0.10, an authenticated Nezha dashboard user can create or update a DDNS profile with provider webhook and configure an arbitrary webhook_url, HTTP method, request body, and headers. When DDNS is triggered for a server that uses that profile, the dashboard process sends the configured request with utils.HttpClient without the SSRF protections used by notification webhooks. This allows a low-privileged authenticated user who controls an owned server/DDNS profile to make the dashboard host issue HTTP requests to loopback or internal network services. The response body is not returned to the attacker in the confirmed path, so this is a blind SSRF / internal state-changing request primitive. This issue has been patched in version 2.0.10.","state":0,"publishedAt":"2026-06-12T22:16:51.39+00:00","modifiedAt":"2026-10-25T23:10:00.167+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","score":6.4,"severity":"MEDIUM"}],"references":["https://github.com/nezhahq/nezha/security/advisories/GHSA-6x26-5727-rrm9"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-47268","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Deferred","weaknesses":["CWE-918"],"productCriteria":[],"sourceDates":{"published":"2026-06-12T22:16:51.390","lastModified":"2026-10-25T23:10:00.167"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2026-47268","identifiers":["CVE-2026-47268"]},"retained":false,"historicalAffected":[]},{"revision":"f6e05b52a050457883aeac3c8cc7418b","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-6x26-5727-rrm9","aliases":["CVE-2026-47268","GO-2026-5194"],"title":"Nezha's authenticated DDNS webhook configuration allows blind SSRF from the dashboard host","description":"#### Summary\n\nAn authenticated Nezha dashboard user can create or update a DDNS profile with provider `webhook` and configure an arbitrary `webhook_url`, HTTP method, request body, and headers. When DDNS is triggered for a server that uses that profile, the dashboard process sends the configured request with `utils.HttpClient` without the SSRF protections used by notification webhooks.\n\nThis allows a low-privileged authenticated user who controls an owned server/DDNS profile to make the dashboard host issue HTTP requests to loopback or internal network services. The response body is not returned to the attacker in the confirmed path, so this is a blind SSRF / internal state-changing request primitive.\n\n#### Details\n\nThe DDNS API is available to authenticated users, not only administrators:\n\n- `cmd/dashboard/controller/controller.go:137` registers `GET /api/v1/ddns`.\n- `cmd/dashboard/controller/controller.go:139` registers `POST /api/v1/ddns`.\n- `cmd/dashboard/controller/controller.go:140` registers `PATCH /api/v1/ddns/:id`.\n\nThe create and update handlers copy attacker-controlled webhook fields directly from JSON request bodies into `model.DDNSProfile`:\n\n- `cmd/dashboard/controller/ddns.go:47-74` accepts `model.DDNSForm` and stores `WebhookURL`, `WebhookMethod`, `WebhookRequestType`, `WebhookRequestBody`, and `WebhookHeaders`.\n- `cmd/dashboard/controller/ddns.go:112-145` updates the same fields after profile ownership is checked.\n- `model/ddns_api.go:11-15` exposes these fields as JSON input.\n- `model/ddns.go:28-33` stores these fields on the persisted profile.\n\nUsers can attach owned DDNS profiles to owned servers, and DDNS updates are triggered in common server update and agent IP-reporting paths:\n\n- `cmd/dashboard/controller/server.go:63-83` checks DDNS profile ownership, then stores `EnableDDNS`, `DDNSProfiles`, and `OverrideDDNSDomains` on an owned server.\n- `service/singleton/server.go:44-58` calls `UpdateDDNS` when a server with DDNS enabled is updated.\n- `service/rpc/nezha.go:247-279` calls `UpdateDDNS` when an authenticated agent reports a changed IP.\n\nThe DDNS provider dispatcher instantiates the webhook provider when `Provider == \"webhook\"`:\n\n- `service/singleton/ddns.go:58-95`, especially `service/singleton/ddns.go:79-81`.\n\nThe sink is the DDNS webhook provider:\n\n- `pkg/ddns/webhook/webhook.go:49-65` prepares and sends the HTTP request with `utils.HttpClient.Do(req)`.\n- `pkg/ddns/webhook/webhook.go:85-100` formats and applies attacker-controlled headers.\n- `pkg/ddns/webhook/webhook.go:91-92` creates the request with the configured method and URL.\n- `pkg/ddns/webhook/webhook.go:117-134` parses the configured URL and only formats query parameters; it does not restrict scheme, host, IP range, or redirects.\n- `pkg/ddns/webhook/webhook.go:137-158` builds attacker-controlled request bodies for POST/PATCH/PUT.\n\nThe project already contains SSRF defenses for notification webhooks, showing the expected mitigation pattern is absent from the DDNS webhook path:\n\n- `model/notification.go:34-58` defines blocked private/reserved CIDRs.\n- `model/notification.go:193-221` creates a notification HTTP client that resolves and pins a validated IP and disables redirects.\n- `model/notification.go:229-263` only allows `http`/`https`, requires a hostname, resolves all addresses, and rejects disallowed IPs.\n- `model/notification.go:265-276` rejects blocked ranges and non-global-unicast targets.\n\nEquivalent validation was not found in `pkg/ddns/webhook/webhook.go`.\n\n#### Safe local PoC\n\nEnvironment:\n\n- Repository: `https://github.com/nezhahq/nezha.git`\n- Commit tested: `05e5da2535197fc223b79601d50eeea362dcf853`\n- Tag at commit: `v2.0.9`\n- Module: `github.com/nezhahq/nezha`\n- Go version: `go1.26.3 linux/amd64`\n- Testing scope: local-only; loopback HTTP listener and fake local UDP DNS SOA server only.\n\nA temporary same-package test was created and removed automatically after execution. It used a local `httptest` listener as the internal service and a local UDP DNS server that returned an SOA for `example.com.`. The test then executed the normal DDNS update pipeline with a webhook DDNS profile pointing at the loopback HTTP listener.\n\nCommand run:\n\n```bash\ntmp=\"pkg/ddns/ddns_ssrf_local_poc_test.go\"; trap 'rm -f \"$tmp\"' EXIT; cat > \"$tmp\" <<'EOF'\npackage ddns\n\nimport (\n    \"context\"\n    \"io\"\n    \"net\"\n    \"net/http\"\n    \"net/http/httptest\"\n    \"testing\"\n\n    \"github.com/miekg/dns\"\n    \"github.com/nezhahq/nezha/model\"\n    \"github.com/nezhahq/nezha/pkg/ddns/webhook\"\n)\n\nfunc TestLocalPoCDDNSUpdatePipelineReachesLoopback(t *testing.T) {\n    hit := make(chan string, 1)\n    httpSrv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n        body, _ := io.ReadAll(r.Body)\n        hit <- r.Method + \" \" + r.URL.Path + \" \" + r.Header.Get(\"X-Proof\") + \" \" + string(body)\n        w.WriteHeader(http.StatusNoContent)\n    }))\n    defer httpSrv.Close()\n\n    dnsPacketConn, err := net.ListenPacket(\"udp\", \"127.0.0.1:0\")\n    if err != nil {\n        t.Fatal(err)\n    }\n    dnsSrv := &dns.Server{PacketConn: dnsPacketConn, Handler: dns.HandlerFunc(func(w dns.ResponseWriter, r *dns.Msg) {\n        msg := new(dns.Msg)\n        msg.SetReply(r)\n        if len(r.Question) > 0 && r.Question[0].Qtype == dns.TypeSOA {\n            msg.Answer = append(msg.Answer, &dns.SOA{\n                Hdr:     dns.RR_Header{Name: \"example.com.\", Rrtype: dns.TypeSOA, Class: dns.ClassINET, Ttl: 60},\n                Ns:      \"ns.example.com.\",\n                Mbox:    \"hostmaster.example.com.\",\n                Serial:  1,\n                Refresh: 60,\n                Retry:   60,\n                Expire:  60,\n                Minttl:  60,\n            })\n        }\n        _ = w.WriteMsg(msg)\n    })}\n    go func() { _ = dnsSrv.ActivateAndServe() }()\n    defer dnsSrv.Shutdown()\n\n    enableIPv4 := true\n    enableIPv6 := false\n    profile := &model.DDNSProfile{\n        EnableIPv4:         &enableIPv4,\n        EnableIPv6:         &enableIPv6,\n        MaxRetries:         1,\n        Domains:            []string{\"host.example.com\"},\n        Provider:           model.ProviderWebHook,\n        WebhookURL:         httpSrv.URL + \"/internal\",\n        WebhookMethod:      2,\n        WebhookRequestType: 1,\n        WebhookRequestBody: `{\"ip\":\"#ip#\",\"domain\":\"#domain#\",\"type\":\"#type#\"}`,\n        WebhookHeaders:     `{\"X-Proof\":\"nezha-ddns-pipeline-ssrf\"}`,\n    }\n    provider := &Provider{\n        DDNSProfile: profile,\n        IPAddrs:     &model.IP{IPv4Addr: \"203.0.113.10\"},\n        Setter:      &webhook.Provider{DDNSProfile: profile},\n    }\n\n    ctx := context.WithValue(context.Background(), DNSServerKey{}, []string{dnsPacketConn.LocalAddr().String()})\n    if err := provider.updateDomain(ctx, \"host.example.com\"); err != nil {\n        t.Fatalf(\"updateDomain returned error: %v\", err)\n    }\n\n    select {\n    case got := <-hit:\n        t.Logf(\"observed loopback request through DDNS update pipeline: %s\", got)\n    default:\n        t.Fatalf(\"expected loopback listener to receive DDNS webhook request\")\n    }\n}\nEOF\ngo test ./pkg/ddns -run TestLocalPoCDDNSUpdatePipelineReachesLoopback -v\n```\n\nObserved output:\n\n```text\n=== RUN   TestLocalPoCDDNSUpdatePipelineReachesLoopback\n    ddns_ssrf_local_poc_test.go:76: observed loopback request through DDNS update pipeline: POST /internal nezha-ddns-pipeline-ssrf {\"ip\":\"203.0.113.10\",\"domain\":\"host.example.com\",\"type\":\"ipv4\"}\n--- PASS: TestLocalPoCDDNSUpdatePipelineReachesLoopback (0.00s)\nPASS\nok  \tgithub.com/nezhahq/nezha/pkg/ddns\t0.009s\n```\n\nA lower-level provider-only confirmation was also run with `go test ./pkg/ddns/webhook -run TestLocalPoCDDNSWebhookReachesLoopback -v` and observed:\n\n```text\nobserved loopback request: POST /internal nezha-ddns-ssrf {\"ip\":\"203.0.113.10\",\"domain\":\"host.example.com\",\"type\":\"ipv4\"}\n```\n\nCleanup:\n\n- Both temporary PoC test files were removed by shell `trap`.\n- `find . -path './.git' -prune -o \\( -name 'ssrf_local_poc_test.go' -o -name 'ddns_ssrf_local_poc_test.go' \\) -print` returned no files.\n\n#### Impact\n\nAn authenticated dashboard user can cause the Nezha dashboard process to send arbitrary HTTP requests to services reachable from the dashboard host, including loopback and private network targets. The confirmed path allows attacker-controlled method, URL path/query, headers, and request body.\n\nPotential impacts depend on deployment and reachable internal services, but include:\n\n- Blind probing of internal HTTP services from the dashboard network location.\n- Triggering state-changing internal endpoints that trust localhost or private network origins.\n- Reaching services not exposed to the attacker directly.\n- Interaction with cloud metadata or control-plane endpoints if reachable and not otherwise protected.\n\nThe response body is not returned to the attacker in the confirmed code path, so this should not be described as direct arbitrary internal file/secret read without an additional response-disclosure primitive.","state":0,"publishedAt":"2026-05-29T22:10:12+00:00","modifiedAt":"2026-06-26T21:45:24.2982217+00:00","affected":[{"ecosystem":"Go","name":"github.com/nezhahq/nezha","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.20.0"},{"kind":"fixed","version":"2.0.10"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"github.com/naiba/nezha","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.20.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/nezhahq/nezha/security/advisories/GHSA-6x26-5727-rrm9","https://nvd.nist.gov/vuln/detail/CVE-2026-47268","https://github.com/nezhahq/nezha"],"sourceUrl":"https://github.com/advisories/GHSA-6x26-5727-rrm9","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-6x26-5727-rrm9","identifiers":["GHSA-6x26-5727-rrm9","CVE-2026-47268","GO-2026-5194"]},"retained":false,"historicalAffected":[]},{"revision":"117ede954c11491fb168f61b3b5616e6","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GO-2026-5194","aliases":["CVE-2026-47268","GHSA-6x26-5727-rrm9"],"title":"Nezha's authenticated DDNS webhook configuration allows blind SSRF from the dashboard host in github.com/nezhahq/nezha in github.com/naiba/nezha","description":"Nezha's authenticated DDNS webhook configuration allows blind SSRF from the dashboard host in github.com/nezhahq/nezha in github.com/naiba/nezha.\n\nNOTE: The source advisory for this report contains additional versions that could not be automatically mapped to standard Go module versions.\n\n(If this is causing false-positive reports from vulnerability scanners, please suggest an edit to the report.)\n\nThe additional affected modules and versions are: github.com/naiba/nezha before v2.0.10.","state":0,"publishedAt":"2026-06-25T18:43:15+00:00","modifiedAt":"2026-06-25T19:45:13.8410264+00:00","affected":[{"ecosystem":"Go","name":"github.com/naiba/nezha","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.20.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://github.com/nezhahq/nezha/security/advisories/GHSA-6x26-5727-rrm9"],"sourceUrl":"https://osv.dev/vulnerability/GO-2026-5194","license":"OSV · upstream source license applies","key":"osv:GO-2026-5194","identifiers":["GO-2026-5194","CVE-2026-47268","GHSA-6x26-5727-rrm9"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-07T20:52:46.7845564+00:00","complete":true,"records":1769,"lastAttemptAt":"2026-11-07T20:52:46.7845564+00:00","lastSuccessAt":"2026-11-07T20:52:46.9707302+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:46.9707321+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-bb5c9d5a08063ef076042e33dd72a7d0ffa4c4487efdcf3106e29ba55ec2ad57-1766179264875bb4621a23ce4c6bcebec63fb794a16e35c2f5592f4ee300ee2e","complete":true,"records":420944,"lastAttemptAt":"2026-11-07T20:52:46.1142943+00:00","lastSuccessAt":"2026-11-07T20:52:46.0341312+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:46.1142943+00:00","snapshotPublishedAt":"2026-11-07T20:26:36+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-07e02b64f18f4734ad21aa6dc017285b","complete":false,"records":13633,"lastAttemptAt":"2026-11-07T20:53:51.967473+00:00","lastSuccessAt":"2026-11-07T20:53:52.0929042+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:53:52.0929042+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-07T20:52:46.7845564+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-07T20:52:46.7845564+00:00","lastSuccessAt":"2026-11-07T20:52:47.1482288+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:47.1482303+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-b9464f9c589b4886928e7045b5ad1e11","complete":true,"records":13645,"lastAttemptAt":"2026-11-07T20:52:54.6850231+00:00","lastSuccessAt":"2026-11-07T20:52:54.68+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:54.68+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13685,"expectedIdentifiers":13685,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-0eb4d6dde62dffacd040ad992d4fd5a65cd7d0dc5f5f4cfa8b41967fc6f9ca5f","complete":true,"records":9914,"lastAttemptAt":"2026-11-07T20:52:46.6024506+00:00","lastSuccessAt":"2026-11-06T20:10:36.6450506+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:46.6024506+00:00","snapshotPublishedAt":"2026-11-06T20:02:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-fde804134ecdda0ddd5ff5c26ee1fff5a6fa659311f7ef2e51c6ad54964db0e2","complete":true,"records":1971,"lastAttemptAt":"2026-11-07T20:52:46.3552169+00:00","lastSuccessAt":"2026-11-06T19:03:17.0399903+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:46.3552169+00:00","snapshotPublishedAt":"2026-11-06T18:17:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-335633e78a15c9cde10a6025895b5617717087fb945489ae7e15d377bacf34a9","complete":true,"records":3055,"lastAttemptAt":"2026-11-07T20:52:46.7261257+00:00","lastSuccessAt":"2026-11-06T16:03:00.7615789+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:46.7261257+00:00","snapshotPublishedAt":"2026-11-06T16:02:48+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-40ad6183a951565ace1520a9b4d631e1d0bfb1d4bf7c5574c375032559f3ff53","complete":true,"records":231292,"lastAttemptAt":"2026-11-07T20:52:46.4923243+00:00","lastSuccessAt":"2026-11-07T10:29:00.4821259+00:00","error":null,"lastVerifiedAt":"2026-11-07T20:52:46.4923243+00:00","snapshotPublishedAt":"2026-11-07T09:32:47+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}