CVE-2026-70558: CWE-434 Unrestricted upload of file with dangerous type in DataLinkDC Dinky
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.
AI Analysis
Technical Summary
The vulnerability exists in Dinky v1.2.5's POST /download/uploadFromRsByLocal handler, which directly uses a caller-supplied path parameter to create and write files without validating the path. The endpoint bypasses the Sa-Token interceptor and relies solely on a hardcoded dinkyToken header value for access control. Since the default Docker image runs on port 8888 without proxy or authentication and grants write permissions (chmod 777) on /opt/dinky, an attacker who knows the hardcoded token can overwrite critical files such as static assets and class files. This allows immediate injection of malicious JavaScript into admin browsers and remote code execution as the Dinky service account upon JVM restart. The service runs as uid 9999 (flink), restricting writes to certain system directories but still enabling significant compromise.
Potential Impact
An attacker with network access to the Dinky HTTP port and knowledge of the hardcoded token can upload arbitrary files as the Dinky service account. This enables immediate compromise of the web interface by injecting malicious scripts and persistent remote code execution by overwriting class files loaded on JVM startup. The vulnerability leads to full confidentiality, integrity, and availability impact on the affected system. The service account's limited permissions restrict some system-wide damage but do not prevent significant application-level compromise.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, restrict network access to the Dinky HTTP port (default 8888) to trusted users only. Change the hardcoded dinkyToken value if possible and monitor for unauthorized file changes in the /opt/dinky directory. Avoid deploying the default Docker image in untrusted environments without additional access controls.
CVE-2026-70558: CWE-434 Unrestricted upload of file with dangerous type in DataLinkDC Dinky
Description
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.
CVSS v3.1
Score 9.8critical
Affected software
DataLinkDC
Dinky
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability exists in Dinky v1.2.5's POST /download/uploadFromRsByLocal handler, which directly uses a caller-supplied path parameter to create and write files without validating the path. The endpoint bypasses the Sa-Token interceptor and relies solely on a hardcoded dinkyToken header value for access control. Since the default Docker image runs on port 8888 without proxy or authentication and grants write permissions (chmod 777) on /opt/dinky, an attacker who knows the hardcoded token can overwrite critical files such as static assets and class files. This allows immediate injection of malicious JavaScript into admin browsers and remote code execution as the Dinky service account upon JVM restart. The service runs as uid 9999 (flink), restricting writes to certain system directories but still enabling significant compromise.
Potential Impact
An attacker with network access to the Dinky HTTP port and knowledge of the hardcoded token can upload arbitrary files as the Dinky service account. This enables immediate compromise of the web interface by injecting malicious scripts and persistent remote code execution by overwriting class files loaded on JVM startup. The vulnerability leads to full confidentiality, integrity, and availability impact on the affected system. The service account's limited permissions restrict some system-wide damage but do not prevent significant application-level compromise.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, restrict network access to the Dinky HTTP port (default 8888) to trusted users only. Change the hardcoded dinkyToken value if possible and monitor for unauthorized file changes in the /opt/dinky directory. Avoid deploying the default Docker image in untrusted environments without additional access controls.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- VulnCheck
- Date Reserved
- 2026-08-04T19:19:05.906Z
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 6a75070bbf8831d5395f5c49
Added to database: 08/06/2026, 22:13:31 UTC
Last enriched: 08/14/2026, 15:51:44 UTC
Last updated: 09/18/2026, 22:01:37 UTC
Views: 62
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.