
CVE-2024-24576 Доказательство концепции
API-методы Command::arg и Command::args в своей документации утверждают, что аргументы будут переданы запускаемому процессу как есть, независимо от их содержимого, и не будут интерпретироваться оболочкой. Это означает, что передача непроверенных данных в качестве аргумента должна быть безопасной.
На Windows реализация этого сложнее, чем на других платформах, поскольку Windows API предоставляет только одну строку, содержащую все аргументы для запускаемого процесса, и разбивать их должен сам процесс. Большинство программ используют стандартный argv из C runtime, что на практике приводит к более-менее единообразному способу разделения аргументов.
Однако есть одно исключение — cmd.exe (используется, в частности, для выполнения пакетных файлов), у которого своя логика разделения аргументов. Это вынуждает стандартную библиотеку реализовывать собственное экранирование для аргументов, передаваемых пакетным файлам. К сожалению, было сообщено, что наша логика экранирования оказалась недостаточно тщательной, и была возможность передать вредоносные аргументы, приводящие к произвольному выполнению в командной оболочке.

Ссылка: https://blog.rust-lang.org/2024/04/09/cve-2024-24576.html