CVE-2026-70558: Dinky Unauthenticated Arbitrary File Write via /download/uploadFromRsByLocal Gated Only by Hardcoded Default Token
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.
Security readout for executives and security teams
Plain-English summary
A remote attacker who can reach Dinky’s web service and knows its shipped default token can overwrite files owned by the service account. This can alter administrator-facing content immediately or execute attacker-controlled code after Dinky restarts. It is not root access, but it can compromise the application, its data, and operations.
Executive priority
Treat this as an immediate containment and investigation priority for reachable Dinky deployments. Restrict access now, determine token and version exposure, check application-file integrity, and follow the vendor advisory for remediation.
Technical view
In Dinky v1.2.5 and the byte-identical development branch, POST /download/uploadFromRsByLocal accepts a caller-controlled path and writes uploaded content without validation. Authentication is bypassed through @SaIgnore and the /download/** interceptor exclusion; only the default hardcoded dinkyToken remains. Writable application files enable stored browser script injection and classpath shadowing after JVM restart under uid 9999.
Likely exposure
Exposure is highest where Dinky’s HTTP port, 8888 by default, is reachable from untrusted networks and the shipped token remains unchanged. The default Docker image reportedly lacks proxy authentication and makes /opt/dinky broadly writable. Network isolation and replacing the default token reduce reachability, but the affected file-write behavior remains.
Exploitation context
The supplied sources document successful demonstrations against static content and application class files. They do not establish exploitation in the wild, and the CVE is not marked KEV. Impact is constrained to files writable by the Dinky service account; protected root-owned locations were reportedly inaccessible.
Researcher notes
Evidence supports an unauthenticated-in-practice arbitrary file write because a universal default token is the route’s only guard. The affected-version metadata is inconsistent: structured data lists version “0,” while the description identifies v1.2.5 and the development branch. No fixed version or confirmed widespread exploitation is provided.
Mitigation direction
Restrict Dinky port 8888 to trusted management networks and block untrusted ingress immediately.
Replace the shipped default dinkyToken wherever configuration permits, and protect the replacement as a secret.
Check the vendor advisory for a fixed release; the provided sources do not identify one.
Rebuild from a trusted image if integrity checks find unauthorized writes or classpath changes.
Validation and detection
Inventory Dinky deployments and identify any running v1.2.5 or matching development builds.
Verify whether port 8888 or another Dinky HTTP endpoint is reachable from untrusted networks.
Confirm deployments are not using the shipped default dinkyToken.
Review /opt/dinky integrity, especially static content, launch scripts, configuration, and classpath files.
Review service-account file changes, JVM restarts, and suspicious content delivered to administrator browsers.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · medium confidence lookup
CWE-434: File access and web shell behavior lookup
File traversal and upload weaknesses can lead teams to review file, web shell, execution, and collection telemetry. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references authentication or credential exposure, so valid-account and credential-access review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
The CVE wording references file access or upload behavior, so file telemetry and web shell review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
The affected technology mentions containers, so container-specific ATT&CK technique review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
2CVSS vectors
3Timeline events
1ADP providers
4Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: yesTechnical Impact: total
CVSS vector scores
2 official scores
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-434 · source CWE mapping
Unrestricted Upload of File with Dangerous Type
Unrestricted Upload of File with Dangerous Type represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.