Summary
CVE-2026-70558 is a critical unauthenticated arbitrary file write vulnerability (CWE-434 / CWE-22) in DataLinkDC Dinky, the open-source real-time data development platform. The POST /download/uploadFromRsByLocal endpoint writes attacker-supplied files to attacker-controlled paths, guarded only by a hardcoded token shipped in every deployment, enabling remote code execution. It carries a CVSS v3.1 base score of 9.8 (Critical).
Technical details
- Root cause: The
DownloadControllerhandler forPOST /download/uploadFromRsByLocalaccepts an unvalidatedpathparameter and passes it directly to file write operations with no path canonicalization or prefix validation. - Authentication bypass: The route is annotated
@SaIgnoreand/download/**is excluded from the Sa-Token interceptor. The only guard is a header equality check against thedinkyTokenvalue, whose default (efda1551-7958-4e0f-80a8-dfd107df3e38) is hardcoded in source and distributed with every installation, so it provides no effective protection. - Trigger conditions: An attacker with network access to the Dinky HTTP port (8888 by default) sends a multipart request supplying the hardcoded token header and a crafted
path. - Attack vector: Network; no privileges and no user interaction required.
- Impact: Arbitrary file write as the Dinky service account. Demonstrated escalation to code execution — overwriting
/opt/dinky/config/static/index.htmlserved attacker JavaScript to admin browsers, and writing a.classfile into the application classpath executed code. Default Docker deployments run withchmod 777on/opt/dinky, making the classpath, launch scripts, and static assets writable.
Affected software
- DataLinkDC Dinky versions v0 through v1.2.5 (inclusive), including the development branch.
Severity
- CVSS v3.1: 9.8 (Critical) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS v4.0: 9.3 (Critical) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: No patched release existed at the time of disclosure. Monitor the vendor for an official fixed version and upgrade as soon as it is published.
- If no patch:
- Restrict network access to the Dinky HTTP port (8888 by default); do not expose it to untrusted networks.
- Change the
dinkyTokenvalue away from the hardcoded default. - Block
/download/**(and/api/sysConfig/getAll) for unauthenticated clients at a reverse proxy. - Tighten filesystem permissions; avoid
chmod 777on/opt/dinky. - Rotate credentials stored in the Settings Center (LDAP, object-storage keys, scheduler tokens).
How IONIX identifies potentially affected assets
IONIX matches the following signals against data already collected when it crawled the asset; identifying the technology sends no request beyond that crawl.
- Page title:
Dinky - Raw response body:
/scripts/loading.js,dinky.svg - Favicon fingerprint:
-1020504139

