CVE-2026-3023
Executive Summary
CVE-2026-3023 is a critical NoSQL injection vulnerability discovered in the Wakyma web application, specifically within the endpoint vets.wakyma.com/pets/print-tags. This flaw allows an authenticated attacker to manipulate a POST request to inject arbitrary NoSQL commands, leading to unauthorized disclosure of sensitive data, including pet names and owner names. The vulnerability is currently unpatched, and no public proof-of-concept (PoC) or exploit code has been released. The attack vector is network-based, requires low complexity, and only requires authentication, making it a significant threat to the confidentiality of the Wakyma platform.
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
CVSS Breakdown & Threat Level
While a CVSS score of 0.0 is listed in the NVD data, this is likely a placeholder or error. Based on the technical description, a realistic CVSS v3.1 vector would be:
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): Low (L) – requires authentication
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality (C): High (H) – sensitive data exposed
- Integrity (I): None (N)
- Availability (A): None (N)
Estimated CVSS Score: 6.5 (Medium)
Threat Level: High – due to the ease of exploitation and the sensitivity of the data exposed (pet and owner names).
Deep Dive & Mechanics
The vulnerability resides in the vets.wakyma.com/pets/print-tags endpoint, which processes POST requests to generate printable tags for pets. The application uses a NoSQL database (likely MongoDB) and fails to properly sanitize or parameterize user-supplied input within the POST body. An authenticated attacker can inject NoSQL operators (e.g., $ne, $regex, $gt) into the request parameters to manipulate the database query logic.
For example, a normal request might look like:
{"petId": "12345"}
An attacker could inject:
{"petId": {"$ne": ""}}
This would cause the query to return all pets where petId is not empty, effectively bypassing the intended filter and listing all records. By chaining operators, the attacker can enumerate the entire database, extracting pet names and owner names.
The vulnerability is classified under CWE-943: Improper Neutralization of Special Elements in Data Query Logic, which is the standard for NoSQL injection.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code pattern is described below. A patched version would use parameterized queries or input validation.
Vulnerable Code (Node.js / MongoDB example):
app.post('/pets/print-tags', (req, res) => {
const petId = req.body.petId;
// Directly using user input in query
db.collection('pets').find({ petId: petId }).toArray((err, pets) => {
// process and return tags
});
});
Patched Code (using parameterized queries):
app.post('/pets/print-tags', (req, res) => {
const petId = req.body.petId;
// Validate input is a string
if (typeof petId !== 'string') {
return res.status(400).send('Invalid input');
}
// Use parameterized query (MongoDB driver handles this)
db.collection('pets').find({ petId: new ObjectId(petId) }).toArray((err, pets) => {
// process and return tags
});
});
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Deploy a local instance of Wakyma (if available) or use a test environment with a similar NoSQL backend.
- Authenticate as a valid user to obtain a session token.
- Use Burp Suite or
curlto craft malicious POST requests.
Exploitation Steps:
- Intercept a legitimate POST request to
/pets/print-tags. - Modify the JSON body to inject NoSQL operators:
{"petId": {"$ne": ""}} - Send the request and observe the response containing all pet records.
- To extract owner names, inject:
{"petId": {"$regex": ".*"}} - Use blind injection techniques to enumerate data character by character if needed.
Example curl command:
curl -X POST https://vets.wakyma.com/pets/print-tags \
-H "Content-Type: application/json" \
-H "Cookie: session=valid_session_token" \
-d '{"petId": {"$ne": ""}}'
Blue Team (Defensive)
Detection:
- Monitor for POST requests to
/pets/print-tagscontaining JSON objects with keys like$ne,$regex,$gt,$lt,$in, etc. - Alert on unusual response sizes (e.g., returning all records instead of a single pet).
Mitigation:
- Implement strict input validation: reject any JSON keys starting with
$. - Use parameterized queries or ORM frameworks that prevent injection.
- Apply Web Application Firewall (WAF) rules to block NoSQL injection patterns.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/pets/print-tagswith JSON body containing$ne,$regex,$gt,$lt,$in, or other MongoDB operators. - Unusually large response payloads from the endpoint.
- POST requests to
- Log IOCs:
- Database query logs showing
$neor$regexoperators in thepetIdfield. - Repeated failed authentication attempts followed by successful exploitation.
- Database query logs showing
- File IOCs:
- No specific file IOCs as this is a server-side injection.
Detection Engineering
YARA Rule
rule NoSQL_Injection_Wakyma {
meta:
description = "Detects NoSQL injection attempts targeting Wakyma print-tags endpoint"
author = "Valters IT"
date = "2026-01-01"
reference = "CVE-2026-3023"
strings:
$json_operator = /\$\w+/ // Matches $ne, $regex, etc.
$endpoint = "/pets/print-tags"
condition:
$endpoint and $json_operator
}
Sigma Rule
title: NoSQL Injection Attempt on Wakyma Print Tags Endpoint
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects POST requests to /pets/print-tags containing NoSQL operators
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/pets/print-tags'
cs-uri-query|contains:
- '$ne'
- '$regex'
- '$gt'
- '$lt'
- '$in'
condition: selection
falsepositives:
- Legitimate use of special characters in pet names (unlikely)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2026-3023 NoSQL Injection Attempt on Wakyma Print Tags";
flow:to_server,established;
content:"POST"; http_method;
content:"/pets/print-tags"; http_uri;
content:"$ne"; http_client_body;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate Action: Disable the
/pets/print-tagsendpoint if not critical, or restrict access to trusted IPs only. - Input Validation: Implement strict whitelist validation for all POST parameters. Reject any input containing
$or.characters. - Parameterized Queries: Use MongoDB's built-in parameterized query methods or an ORM to prevent injection.
- WAF Rules: Deploy a Web Application Firewall with rules to block NoSQL injection patterns.
- Monitoring: Enable detailed logging for the endpoint and set up alerts for suspicious query patterns.
- Patch: Monitor Wakyma's official channels for a security patch and apply it immediately upon release.
Valters IT