Dinky Unauthenticated Arbitrary File Write via /download/uploadFromRsByLocal Gated Only by Hardcoded Default Token
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- Code execution
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- No fix listed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-434.
Summary
Dinky's POST /download/uploadFromRsByLocal handler passes the caller-supplied path parameter directly to new File(path) and file.transferTo(dest) with no path validation. The route is marked @SaIgnore and /download/** is excluded from the Sa-Token interceptor, so the only guard is a header equality check against a dinkyToken value whose default (efda1551-7958-4e0f-80a8-dfd107df3e38) is hardcoded in source and shipped to every deployment. Anyone who can reach Dinky's HTTP port (8888 by default) and supplies the hardcoded token can write arbitrary files as the Dinky service account. The default Docker image runs on 8888 with no proxy or authentication and chmod 777 on /opt/dinky, so the application's own classpath, launch scripts, and static assets are writable. Demonstrated impact: overwriting /opt/dinky/config/static/index.html served attacker JavaScript to admin browsers immediately, and writing /opt/dinky/org/dinky/Dinky.class executed attacker code as the Dinky service account at the next JVM start via a classpath-shadow launched by script/bin/auto.sh. Writes are uid 9999 (flink), not root, so /etc, /root, /home, and /usr are refused. Affects Dinky v1.2.5 (the current release) and the development branch, where the code is byte-identical.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| DataLinkDC | Dinky | up to 1.2.5 | — | No fix listed | CNA |
- Dinky VendorDataLinkDC Affected up to 1.2.5 Fixed in — No fix listed CNA
CPE names Threatist (inferred) · 1
Inferred from how NVD named this product before; not given by a source.
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:dinky:dinky:*:*:*:*:*:*:*:* | — | — | DataLinkDC |
- cpe:2.3:a:dinky:dinky:*:*:*:*:*:*:*:* Versions — — ·DataLinkDC
Remediation
No fixed version listed by the sources yet.
Timeline
- 2026-10-02 Threatist record created from CVE-2026-70558
- 2026-10-03 Alias added: GHSA-7crv-rq8j-wxc3
References
More DataLinkDC vulnerabilities
- TI-2026-02637 DataLinkDC dinky OpenAPI Endpoint AppConfig.java addInterceptors missing authentication CVSS 4.0MEDIUM 6.9
- TI-2026-02636 DataLinkDC dinky Flink Proxy Controller FlinkProxyController.java proxyUba server-side request forgery CVSS 4.0MEDIUM 5.3
- TI-2026-02635 DataLinkDC dinky Project Name GitRepository.java getProjectDir path traversal CVSS 4.0MEDIUM 5.3
- TI-2026-49280 Dinky Unauthenticated System Configuration and Credential Disclosure via GET /api/sysConfig/getAll CVSS 4.0HIGH 8.7
- TI-2026-86783 Path traversal in DataLinkDC Dinky catalogue upload CVSS 4.0MEDIUM 5.3
- TI-2026-85167 Server-side request forgery in DataLinkDC Dinky flink_web proxy CVSS 4.0MEDIUM 6.9
Sources
- CVE-2026-70558 · CVE Program
- CVE-2026-70558 · NVD
- FIRST EPSS
- GHSA-7crv-rq8j-wxc3 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences