CVE-2026-54628
Executive Summary
CVE-2026-54628 is a server-side request forgery (SSRF)-class vulnerability in Anyquery, an SQL query engine built on SQLite, affecting versions prior to 0.4.5. The Anyquery server exposes URL-capable SQLite virtual table modules (such as json_reader and log_reader) over its unauthenticated MySQL-compatible server port without restricting outbound destinations, allowing a remote attacker to coerce the Anyquery server process into fetching arbitrary loopback, private-network, or link-local cloud metadata URLs. Successful exploitation enables internal network probing, access to internal APIs, and disclosure of cloud credentials, with high confidentiality impact (CVSS 8.6).
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Anyquery is an SQL query engine built on top of SQLite. It provides virtual table modules that extend SQLite's query surface, including modules that can fetch and expose remote content as queryable tables. Two such modules are named in the NVD description: json_reader and log_reader.
The core defect is CWE-284 (Improper Access Control). Anyquery exposes a MySQL-compatible server port that accepts connections without authentication. Through this unauthenticated interface, an attacker can invoke the URL-capable virtual table modules. These modules do not restrict the destinations they will contact — there is no allowlist, no block on loopback (127.0.0.0/8), private network ranges (RFC 1918), or link-local/cloud metadata addresses (for example 169.254.0.0/16). The server-side component responsible for fetching remote resources is go-getter, which is present in the Anyquery server process.
Because the fetch occurs server-side and with no destination restriction, the anyquery process becomes an SSRF proxy. Response content from the fetched URL is returned to the attacker as queryable table data, meaning the attacker reads the response body of internal HTTP endpoints directly through SQL query results. This transforms the query engine into a data-exfiltration primitive against any host the server can reach on its network — including cloud provider instance metadata services that commonly serve credentials.
The vulnerability requires no authentication (PR:N), is remotely reachable over the network (AV:N), requires no user interaction (UI:N), and is trivially exploitable (AC:L). Scope is changed (S:C) because the vulnerable component's behavior is leveraged to affect resources beyond the Anyquery process itself — namely internal services and cloud metadata endpoints. Confidentiality impact is High (C:H) due to credential and internal-API exposure. Integrity impact is assessed as None (I:N) and Availability as None (A:N) in the vector, though the description notes that low-integrity impact is possible when a reached internal API performs state-changing actions — an outcome dependent on the semantics of the internal target, not on the Anyquery component itself.
No public PoC, exploit code, or Nuclei template is known at the time of writing. The exploitation mechanics below are inferred from the vulnerability class and the behavior described in the NVD entry.
Exploitation Scenarios
No public PoC is available; the attack chain below is inferred from the vulnerability class and NVD description.
Reconnaissance / target identification. An attacker scans for hosts exposing the Anyquery MySQL-compatible server port. Because the interface is unauthenticated, merely reaching the port is sufficient to proceed. The attacker identifies that the server exposes URL-capable virtual table modules.
Triggering the flaw class. The attacker connects to the unauthenticated MySQL-compatible port and issues SQL that creates or queries a virtual table backed by a URL-capable module (
json_readerorlog_reader), supplying a destination URL under attacker control. Because the server does not validate or restrict outbound destinations, the request is accepted.Payload / execution method (vulnerability-class level). The attacker supplies URLs targeting resources reachable only from the Anyquery server's network position: loopback addresses, RFC 1918 private ranges, and link-local cloud metadata endpoints. The
go-gettercomponent in the Anyquery server process performs the outbound fetch. The fetched response is surfaced back to the attacker as queryable table data.Post-exploitation impact. The attacker reads responses from internal services, enumerates internal hosts and APIs, and harvests cloud instance credentials exposed by metadata services. Where an internal API reached via SSRF supports state-changing operations, low-integrity actions may be possible. No specific endpoint paths or parameter names are published in the NVD description and none are asserted here.
Impact Assessment
Any organization running an unpatched Anyquery server (prior to 0.4.5) with its MySQL-compatible port reachable from an untrusted network is at risk. The CVSS 3.1 base score is 8.6 (High). Subscore analysis:
- AV:N — exploitable over the network.
- AC:L — no special conditions required.
- PR:N — no authentication needed, materially raising likelihood.
- UI:N — no victim interaction required.
- S:C — the vulnerability in Anyquery is used to affect other components (internal services, cloud metadata endpoints), which is why scope is Changed.
- C:H — disclosure of internal API responses and cloud credentials.
- I:N / A:N — the vector records no integrity or availability impact from the Anyquery component itself, though the description flags possible low-integrity effects when a reached internal API performs state-changing actions.
Blast radius extends beyond the Anyquery host: cloud IAM credentials obtained from metadata services may permit lateral movement and privilege escalation across the tenant. Internal APIs exposed via SSRF may reveal sensitive business data. EPSS is 0.00343 (27.5th percentile), indicating low near-term exploitation probability based on current telemetry, but the lack of authentication and trivial exploitation make targeted use plausible. CISA KEV status: NO. No exploit code, PoC, or Nuclei template is publicly tracked.
Detection Guidance
Sigma Rule
title: Potential SSRF via Anyquery URL-Capable Virtual Table Modules
id: 7f3c1a92-5b6e-4d21-9c0a-anyquery54628
status: experimental
description: Detects queries against Anyquery MySQL-compatible server that reference URL-capable virtual table modules (json_reader, log_reader) targeting loopback, private, or link-local metadata addresses.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-54628
author: valtersit.com
date: 2026-01-01
logsource:
category: application
product: anyquery
detection:
selection_module:
query|contains:
- 'json_reader'
- 'log_reader'
selection_url:
query|contains:
- '127.0.0.1'
- '169.254.169.254'
- 'localhost'
- '10.'
- '192.168.'
- '172.16.'
condition: selection_module and selection_url
fields:
- client_ip
- query
- user
falsepositives:
- Legitimate administrative queries to local resources
level: high
tags:
- attack.t1190
- cve.2026.54628
YARA Rule
rule CVE_2026_54628_Anyquery_SSRF
{
meta:
description = "Detects references to Anyquery URL-capable virtual table modules used for SSRF (CVE-2026-54628)"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-54628"
date = "2026-01-01"
severity = "high"
strings:
$mod1 = "json_reader" ascii nocase
$mod2 = "log_reader" ascii nocase
$meta1 = "169.254.169.254" ascii
$meta2 = "metadata.google.internal" ascii nocase
$loop = "127.0.0.1" ascii
$priv1 = "192.168." ascii
$priv2 = "10.0." ascii
$priv3 = "172.16." ascii
condition:
(any of ($mod*)) and (any of ($meta*) or $loop or any of ($priv*))
}
Suricata IDS Rule
alert tcp any any -> any 3306 (msg:"CVE-2026-54628 Anyquery SSRF Attempt via URL-Capable Virtual Table Module"; flow:established,to_server; content:"json_reader"; nocase; content:"http"; nocase; distance:0; within:512; reference:cve,2026-54628; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-54628; classtype:attempted-recon; sid:5462801; rev:1;)
alert tcp any any -> any 3306 (msg:"CVE-2026-54628 Anyquery SSRF Cloud Metadata Target"; flow:established,to_server; content:"169.254.169.254"; nocase; reference:cve,2026-54628; classtype:attempted-recon; sid:5462802; rev:1;)
alert tcp $HOME_NET any -> 169.254.169.254 80 (msg:"CVE-2026-54628 Possible Anyquery SSRF to Cloud Metadata Endpoint"; flow:to_server; reference:cve,2026-54628; classtype:attempted-recon; sid:5462803; rev:1;)
Elastic Detection
sequence by process.entity_id with maxspan=30s
[network where destination.port == 3306 and event.action == "connection_accepted"]
[network where destination.ip in ("127.0.0.1", "169.254.169.254", "169.254.170.2")
or cidr_match(destination.ip, "10.0.0.0/8", "192.168.0.0/16", "172.16.0.0/12")]
Splunk SPL Query
index=anyquery OR index=network sourcetype=anyquery:server
| search ("json_reader" OR "log_reader")
| search ("169.254.169.254" OR "127.0.0.1" OR "localhost" OR "192.168." OR "10." OR "172.16.")
| stats count min(_time) as first_seen max(_time) as last_seen values(query) as queries by src_ip dest_ip dest_port
| where count > 0
| convert ctime(first_seen) ctime(last_seen)
Wazuh OSSEC Rule
<group name="anyquery,cve-2026-54628,">
<rule id="546280" level="12">
<decoded_as>json</decoded_as>
<field name="query">json_reader|log_reader</field>
<field name="query">169\.254\.169\.254|127\.0\.0\.1|localhost|192\.168\.|10\.|172\.16\.</field>
<description>CVE-2026-54628: Possible Anyquery SSRF via URL-capable virtual table module targeting internal or metadata address.</description>
<mitre>
<id>T1190</id>
</mitre>
<group>ssrf,anyquery,</group>
</rule>
<rule id="546281" level="10">
<if_sid>546280</if_sid>
<field name="dest_port">3306</field>
<description>CVE-2026-54628: Anyquery SSRF attempt confirmed against MySQL-compatible server port.</description>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). Vendor fix is recorded only as the version in which the issue is fixed per the NVD entry.
1) Immediate mitigations
- Upgrade Anyquery to version 0.4.5 or later, which is the release that fixes this issue per the NVD description.
- Until upgrade is possible, remove network exposure of the Anyquery MySQL-compatible server port from untrusted networks; restrict it to trusted management hosts only via host and network ACLs.
- Do not run the Anyquery server with cloud instance metadata endpoints reachable from its network segment where avoidable; enforce egress filtering that blocks the process from reaching link-local
169.254.0.0/16, loopback, and internal-only ranges it does not legitimately need. - Require authentication and TLS at the network edge in front of the Anyquery server port if the deployment permits.
- Rotate any cloud credentials that may have been exposed via metadata endpoints in the event of suspected exploitation.
2) Patch / upgrade steps
- Identify all Anyquery deployments and confirm their version.
- Upgrade to 0.4.5 or later from the vendor's release channel; verify the installed version post-upgrade.
- Because no vendor advisory source is currently tracked (Patch Sources: []), validate the fix against the NVD entry and the project release notes before relying solely on version strings.
- Re-test that URL-capable virtual table modules no longer permit unrestricted outbound destinations.
3) Long-term hardening
- Enforce egress allowlisting at the network layer for any process embedding
go-getteror similar fetchers. - Apply the principle of least privilege to the Anyquery server's cloud IAM role so leaked metadata credentials have minimal blast radius.
- Monitor and alert on unexpected outbound connections from database-adjacent processes to metadata and internal RFC 1918 ranges.
- Treat unauthenticated compatibility ports (e.g., MySQL-compatible) as untrusted by default and place them behind authentication proxies.
References
- NVD — CVE-2026-54628: https://nvd.nist.gov/vuln/detail/CVE-2026-54628
- Anyquery project (source and release information for version 0.4.5): project repository/distribution referenced by the CNA.
- CWE-284 Improper Access Control: https://cwe.mitre.org/data/definitions/284.html
- MITRE ATT&CK T1190 Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/
- CISA KEV catalog (CVE-2026-54628 NOT listed as of this report): https://www.cisa.gov/known-exploited-vulnerabilities-catalog
No threat actor campaigns or exploit-in-the-wild evidence are associated with CVE-2026-54628 at the time of writing. CISA KEV status: NO. EPSS: 0.00343 (27.5th percentile). No public PoC, exploit code, or Nuclei template is known.