Ad

CVE-2026-70558

CRITICAL CVSS 4.0: 9,3
Обновлено 7 августа 2026
Docker
Параметр Значение
CVSS 9,3 (CRITICAL)
Тип уязвимости CWE-434 (Неограниченная загрузка файлов)
Поставщик Docker
Публичный эксплойт Нет

Обработчик POST /download/uploadFromRsByLocal Dinky передает параметр пути, предоставленный вызывающей стороной, непосредственно в новые файлы File(path) и file.transferTo(dest) без проверки пути. Маршрут помечен @SaIgnore, а /download/** исключен из перехватчика Sa-Token, поэтому единственным средством защиты является проверка на равенство заголовка со значением dinkyToken, значение которого по умолчанию (efda1551-7958-4e0f-80a8-dfd107df3e38) жестко запрограммировано в исходном коде и отправляется в каждое развертывание. Любой, кто может подключиться к HTTP-порту Dinky (по умолчанию 8888) и предоставить жестко запрограммированный токен, может записывать произвольные файлы в качестве учетной записи службы Dinky.

Образ Docker по умолчанию работает на 8888 без прокси-сервера или аутентификации и chmod 777 в /opt/dinky, поэтому собственный путь к классам приложения, сценарии запуска и статические ресурсы доступны для записи. Демонстрируемый эффект: перезапись /opt/dinky/config/static/index.html немедленно предоставила злоумышленнику JavaScript для браузеров администратора и запись /opt/dinky/org/dinky/Dinky.class выполнила код злоумышленника в качестве учетной записи службы Dinky при следующем запуске JVM через classpath-shadow, запущенный скриптом/bin/auto.sh. Запись осуществляется с идентификатором uid 9999 (flink), а не root, поэтому /etc, /root, /home и /usr отклоняются.

Затрагивает Dinky v1.2.5 (текущий выпуск) и ветку разработки, где код побайтно идентичен.

Показать оригинальное описание (EN)

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 v4.0