Skip to main content

Dinky EUVDEUVD-2026-54235

| CVE-2026-70558 CRITICAL
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-08-06 disclosure@vulncheck.com GHSA-7crv-rq8j-wxc3
9.3
CVSS 4.0 · Vendor: vulncheck
Share

Severity by source

Vendor (vulncheck) PRIMARY
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
9.8 CRITICAL

Network-reachable endpoint whose only guard is a hardcoded, publicly known token, so PR:N/AC:L; arbitrary file write yields code execution as the service account, giving full C/I/A.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

2
Analysis Generated
Aug 06, 2026 - 22:47 vuln.today
CVE Published
Aug 06, 2026 - 22:18 cve.org
CRITICAL 9.3

DescriptionCVE.org

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.

AnalysisAI

Unauthenticated arbitrary file write in Dinky v1.2.5 and its byte-identical development branch lets anyone who can reach the HTTP port (8888 by default) overwrite files as the Dinky service account, because the POST /download/uploadFromRsByLocal handler feeds a caller-supplied path straight into new File(path) and transferTo(dest) with no validation. The route is exempt from Sa-Token auth and guarded only by a header check against a dinkyToken whose default value is hardcoded in source and shipped to every install, so the guard is effectively no guard. The researcher (VulnCheck) demonstrated full remote code execution by shadowing Dinky.class on the writable, chmod-777 classpath and by planting attacker JavaScript in the served index.html; there is no public exploit identified at time of analysis and it is not in CISA KEV, but the disclosure describes a working demonstration.

Technical ContextAI

Dinky is an open-source real-time data-development and management platform (an IDE/console) for Apache Flink SQL jobs, distributed by DataLinkDC and commonly run as a standalone Java/Spring service. The flaw is classed as CWE-434 (unrestricted file upload) but in practice behaves as an arbitrary file write / path-injection: the /download/uploadFromRsByLocal endpoint constructs a java.io.File directly from the untrusted path parameter and writes the multipart upload there via MultipartFile.transferTo, so an attacker fully controls the destination path and contents. Two framework decisions remove the normal authentication: the handler carries the @SaIgnore annotation and the entire /download/** tree is excluded from the Sa-Token interceptor, leaving only a plaintext equality check on the dinkyToken header. The default token (efda1551-7958-4e0f-80a8-dfd107df3e38) is a compile-time constant present in the shipped source. In the official Docker image the process listens on 8888 with no reverse proxy or auth and /opt/dinky is chmod 777, so the JVM classpath, launch scripts (script/bin/auto.sh), and static web assets are all writable by the service.

RemediationAI

No vendor-released patched version is identified in the available data; the referenced material is a GitHub issue (#4566) and security advisory GHSA-2p66-w3p3-5226 rather than a tagged fixed release, so monitor those and the DataLinkDC/dinky repository for a patched build and upgrade to it once published. Until then, do not expose Dinky's port 8888 to untrusted networks - bind it to localhost or place it behind a reverse proxy that enforces real authentication and blocks the /download/** path, accepting that this may break legitimate resource-download features. Change the dinkyToken from the hardcoded default (efda1551-7958-4e0f-80a8-dfd107df3e38) to a strong secret, which raises the bar even though the endpoint remains architecturally exposed. Harden the container by removing the chmod 777 on /opt/dinky and running with a read-only classpath so that even a successful write cannot shadow Dinky.class or launch scripts; note this can interfere with features that legitimately write into that tree. Network-restrict access to the service to trusted operators only as a compensating control. Advisory URLs: https://github.com/DataLinkDC/dinky/security/advisories/GHSA-2p66-w3p3-5226 and https://github.com/DataLinkDC/dinky/issues/4566.

More in Docker

View all
CVE-2024-55964 CRITICAL POC
9.8 Mar 26

An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl

CVE-2019-5736 HIGH POC
8.6 Feb 11

runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac

CVE-2023-32077 HIGH POC
7.5 Aug 24

Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2023-5815 HIGH POC
8.1 Nov 22

The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post

CVE-2026-66384 MEDIUM POC
5.3 Aug 12

Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten

CVE-2014-9357 CRITICAL
10.0 Dec 16

Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build

CVE-2026-52806 CRITICAL POC
9.9 Jun 23

Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config

CVE-2026-56274 HIGH POC
8.7 Jun 23

Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per

CVE-2026-34156 CRITICAL POC
9.9 Mar 30

Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l

CVE-2019-15752 HIGH POC
7.8 Aug 28

Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c

CVE-2025-34221 CRITICAL POC
10.0 Sep 29

Vasion Print (formerly PrinterLogic) Virtual Appliance Host prior to version 25.2.169 and Application prior to version 2

Share

EUVD-2026-54235 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy