This is a loaded nail gun, but most shops keep it in the back room not on the sidewalk
CVE-2025-6919 is an unauthenticated SQL injection in Cats Information Technology Software Development Technologies Aykome License Tracking System. The CVE record says versions before the build dated 06.10.2025 are affected, with the fixed line expressed only as that date-based version marker rather than a conventional semantic version.
The vendor/CNA technical score of 9.8 is fair in a lab: no auth, network reachable, and direct database impact. But for patch prioritization across a large estate, that overstates the average enterprise risk because this is a niche line-of-business license-tracking product, there is no KEV listing, no public exploitation evidence in the sources reviewed, and the EPSS is extremely low. That combination pushes this out of 'drop everything' territory unless you know an instance is internet-facing.
4 steps from start to impact.
Find an exposed Aykome instance
- The Aykome web application is reachable from the attacker's position
- The attacker can identify the service as Aykome or has prior targeting knowledge
- Many license-tracking systems live on internal networks, VPN-only portals, or admin subnets
- No widely visible public fingerprint or common Shodan/Censys signature surfaced in this review
- Obscure regional/vendor-specific software reduces random drive-by targeting
Validate the injectable parameter with Burp or sqlmap
- A vulnerable endpoint is present in the deployed build
- The attacker can send crafted requests to application inputs
- Unknown parameter names and paths slow down opportunistic exploitation
- WAF rules, reverse proxies, and input normalization can break stock payloads
- The vulnerable path may be reachable only after app-specific navigation or workflow knowledge
Abuse database access for data theft or tampering
- The SQL injection is exploitable beyond a blind proof
- The database account used by the app has meaningful read/write rights
- Least-privileged database accounts can contain the blast radius
- Blind extraction can be noisy and slow over latent links
- App-layer authorization may still limit immediate pivot value if sensitive tables are segregated
Turn app compromise into broader business impact
- Sensitive records or reusable secrets are stored in the database
- Optional: the DB/app stack permits dangerous post-SQLi features such as file access or command execution
- The CVE itself proves SQLi, not guaranteed OS-level RCE
- Many deployments keep DB execution and filesystem privileges disabled
- Blast radius may stay confined to one business application
The supporting signals.
| In-the-wild status | No confirmed public exploitation in reviewed sources. OpenCVE reflects CISA ADP SSVC with Exploitation: none. |
|---|---|
| KEV status | Not in CISA KEV at review time. |
| Proof-of-concept availability | No public PoC located in the reviewed GitHub Advisory or Exploit-DB search paths for this CVE. That is an analyst inference from the available search results, not a vendor statement. |
| EPSS | 0.00038 from OpenCVE/FIRST-linked enrichment, which is extremely low on an absolute basis and argues against broad opportunistic exploitation pressure. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — in pure technical terms this is a classic unauthenticated remote web-app compromise with full CIA impact. |
| Affected versions | Aykome License Tracking System before Version dated 06.10.2025. |
| Fixed version | Version dated 06.10.2025 or later. No distro backport information surfaced in the CVE/NVD/OpenCVE records. |
| Exposure telemetry | No reliable public fingerprint or product-specific internet-scale telemetry surfaced in the reviewed sources. That absence matters: it lowers confidence in widespread external exposure and is a key reason this is not being kept at CRITICAL. |
| Disclosure and reporting | Public disclosure date is 2025-10-13. Credits in the CNA record name Hasan Yasin Yasar as finder and Yusuf Melih Daskiran as analyst. |
| NVD/CNA state | NVD shows the record as Awaiting Analysis / Deferred while carrying the CNA-provided 9.8 CRITICAL score from TR-CERT. |
noisgate verdict.
The decisive downgrading factor is reachable population: this appears to be a niche business application with no evidence of broad internet exposure, no KEV listing, and no observed exploitation pressure. If you know you have an internet-facing Aykome instance, ignore the downgrade and treat that specific asset like a perimeter emergency, because the technical exploit path is still straightforward unauthenticated SQLi.
Why this verdict
- Start at 9.8, then subtract for narrow population: Aykome is not a mass-market platform with obvious broad external exposure; that sharply reduces the fraction of enterprises where an unauthenticated internet attacker can even reach step one.
- Subtract again for threat evidence: KEV is negative, reviewed sources show no public exploitation evidence, and EPSS is only
0.00038, which is the opposite of a high-pressure attacker target. - Keep it at HIGH, not MEDIUM: The flaw is still unauthenticated remote SQLi with potentially full database compromise. On any exposed instance, modern controls may only slow exploitation rather than prevent it.
Why not higher?
I am not keeping this at CRITICAL because the attack chain depends first on finding and reaching a fairly obscure application, and the public telemetry reviewed does not show strong signs of wide internet exposure or active attacker interest. A 9.8 lab score is not the same thing as a 10,000-host Monday-morning emergency when the vulnerable product population appears small and the exploitation signal is weak.
Why not lower?
I am not dropping this to MEDIUM because there is no authentication requirement and no user interaction requirement once the vulnerable endpoint is reachable. If one of these systems is externally exposed, the compromise path is direct and the impact on the application's data plane can be severe.
What to do — in priority order.
- Remove external reachability — Put Aykome behind VPN, IP allowlists, or an internal reverse proxy if it is reachable from the internet. For a HIGH verdict, deploy this compensating control within 30 days, and faster if any instance is perimeter-facing.
- Enable aggressive WAF SQLi rules — Place managed SQL injection signatures and anomaly scoring in front of the application, then validate they block obvious tautology, UNION, and time-delay payloads without breaking business traffic. This is a speed bump, not a fix, but it is worth deploying within 30 days while patching is scheduled.
- Constrain database privileges — Review the application's DB account and remove file-write, administrative, and unnecessary schema privileges so a successful SQLi lands in a smaller sandbox. For a HIGH reassessment, tighten these permissions within 30 days where feasible.
- Hunt for SQLi telemetry — Query reverse-proxy, WAF, and DB logs for time-delay functions, UNION probes, quote escaping errors, schema enumeration, or bursts of 500s from Aykome paths. Start this immediately and complete initial review within 30 days.
- Prepare credential rotation — Because SQLi often exposes stored secrets and session material, line up rotation for the app DB credentials and any credentials stored inside the platform after patching. For a HIGH issue, have the rotation plan ready within 30 days.
- Relying on EDR alone doesn't solve a web-to-database exploit path that never needs to spawn suspicious child processes.
- Assuming MFA helps is a category error here; the CVSS and CNA record indicate no authentication is required.
- Blocking only known exploit strings is fragile because SQLi payloads can be transformed, time-based, or manually tuned around simple signatures.
Crowdsourced verification payload.
Run this from an auditor workstation or jump host that can reach the Aykome web UI. Invoke it exactly as python3 verify_cve_2025_6919.py https://aykome.example.com/ with no special privileges required; it tries to identify Aykome branding and extract a visible build date from common pages or asset URLs, then reports VULNERABLE, PATCHED, or UNKNOWN.
#!/usr/bin/env python3
# verify_cve_2025_6919.py
# Heuristic verifier for CVE-2025-6919 (Aykome License Tracking System SQLi)
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=usage/error
import re
import sys
import datetime
from urllib.parse import urljoin
try:
import requests
except ImportError:
print('UNKNOWN - missing dependency: requests')
sys.exit(2)
PATCH_DATE = datetime.datetime.strptime('06.10.2025', '%d.%m.%Y').date()
PATHS = ['/', '/login', '/auth/login', '/admin', '/Account/Login']
DATE_RE = re.compile(r'(?<!\d)(\d{2})[./-](\d{2})[./-](\d{4})(?!\d)')
AYKOME_RE = re.compile(r'aykome|license tracking system', re.I)
TIMEOUT = 8
HEADERS = {'User-Agent': 'noisgate-cve-2025-6919-verifier/1.0'}
def parse_date(s):
m = DATE_RE.search(s)
if not m:
return None
day, month, year = m.groups()
try:
return datetime.date(int(year), int(month), int(day))
except ValueError:
return None
def fetch(url):
try:
r = requests.get(url, headers=HEADERS, timeout=TIMEOUT, allow_redirects=True, verify=True)
return r.status_code, r.text[:400000]
except Exception:
return None, None
def main():
if len(sys.argv) != 2:
print('UNKNOWN - usage: python3 verify_cve_2025_6919.py https://host/')
sys.exit(3)
base = sys.argv[1].strip()
if not re.match(r'^https?://', base, re.I):
print('UNKNOWN - target must start with http:// or https://')
sys.exit(3)
saw_aykome = False
found_dates = []
checked = []
for path in PATHS:
url = urljoin(base.rstrip('/') + '/', path.lstrip('/'))
checked.append(url)
status, body = fetch(url)
if status is None or body is None:
continue
if AYKOME_RE.search(body):
saw_aykome = True
for match in DATE_RE.finditer(body):
d = parse_date(match.group(0))
if d:
found_dates.append((url, d, match.group(0)))
# Also look for dated asset URLs and comments
for token in re.findall(r'(?:src|href)=["\']([^"\']+)["\']', body, re.I):
d = parse_date(token)
if d:
found_dates.append((url, d, token))
if found_dates:
newest = max(found_dates, key=lambda x: x[1])
src_url, date_value, raw = newest
if date_value < PATCH_DATE:
print(f'VULNERABLE - found build/date marker {raw!r} on {src_url}; this is before 06.10.2025')
sys.exit(1)
else:
print(f'PATCHED - found build/date marker {raw!r} on {src_url}; this is on/after 06.10.2025')
sys.exit(0)
if saw_aykome:
print('UNKNOWN - Aykome branding detected, but no reliable build date marker was exposed in tested pages')
sys.exit(2)
print('UNKNOWN - could not confirm Aykome branding or extract a build date from tested pages: ' + ', '.join(checked))
sys.exit(2)
if __name__ == '__main__':
main()
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.