Vibe-Trading before 0.1.10 builds the proposal file path by joining a caller-supplied proposal identifier onto the broker proposals directory without sanitization (agent/src/live/mandate/commit.py). A proposal identifier containing path traversal sequences causes the application to load an attacker-controlled JSON file as an authoritative live trading mandate. Combined with the file upload endpoint, an admitted caller can write a JSON file to a known location and traverse to it, and because the ceilings validation is skipped when ceilings are absent, the attacker fully controls the committed mandate.
https://github.com/HKUDS/Vibe-Trading/releases/tag/v0.1.10
https://github.com/HKUDS/Vibe-Trading/pull/256
https://github.com/HKUDS/Vibe-Trading/commit/0ab701302f90e701c9dc558a898a217a376610c3
Published: 2026-06-30
Updated: 2026-06-30
Base Score: 8.7
Vector: CVSS2#AV:N/AC:L/Au:S/C:P/I:C/A:C
Severity: High
Base Score: 8.3
Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:H
Severity: High
Base Score: 7.2
Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
Severity: High