gitoxyd (ящики Rust gix <= 0.72.0 и gix-validate <= 0.10.0) содержит уязвимость обхода пути. Функция проверки имени подмодуля в gix-validate проверяет только первое вхождение «..» через name.find(b»..), позволяя созданным именам, таким как «a..b/../../../.git/», обойти проверку; кроме того, эта проверка никогда не вызывается в путях рабочего кода. В сочетании с недостатком наследования доверия в Submodule::open(), где git_dir_trust (Trust::Full) родительского репозитория клонируется и проверка владения пропускается, злоумышленник может создать вредоносный файл .gitmodules, чтобы инструмент-жертва, построенный на gitoxyd, считывал произвольную конфигурацию репозитория git (включая встроенные учетные данные) с полным доверием, минуя защиту безопасных каталогов.
Исправлено в gix 0.82.0 и gix-validate 0.11.1.
Показать оригинальное описание (EN)
gitoxide (Rust crates gix <= 0.72.0 and gix-validate <= 0.10.0) contains a path traversal vulnerability. The submodule name validation function in gix-validate only checks the first occurrence of '..' via name.find(b".."), allowing crafted names such as 'a..b/../../../.git/' to bypass the check; additionally this validation is never invoked in production code paths. Combined with a trust inheritance flaw in Submodule::open(), where the parent repository's git_dir_trust (Trust::Full) is cloned and the ownership verification is skipped, an attacker can craft a malicious .gitmodules file so that a victim tool built on gitoxide reads arbitrary git repository configuration (including embedded credentials) with full trust, bypassing safe-directory protections. Fixed in gix 0.82.0 and gix-validate 0.11.1.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 2
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Gitoxidelabs Gitoxide
cpe:2.3:a:gitoxidelabs:gitoxide:*:*:*:*:*:*:*:*
|
— |
0.82.0
|
|
Gitoxidelabs Gitoxide
cpe:2.3:a:gitoxidelabs:gitoxide:*:*:*:*:*:*:*:*
|
— |
0.11.1
|