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.
{
"cna_assigner": "VulnCheck",
"cwe_ids": [
"CWE-22"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/58xxx/CVE-2026-58170.json"
}{
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "0.1.10"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"original_tag": "v0.1.10",
"range": [
{
"fixed": "54f944743efee7b9cbaaeafb5966c583d0d4ac66"
}
],
"source": "REFERENCES_TAG"
},
{
"range": [
{
"fixed": "0ab701302f90e701c9dc558a898a217a376610c3"
}
],
"source": "REFERENCES_COMMIT"
}
]
}