коригувальні випуски розподіленої системи управління вихідними текстами Git 2.24.1, 2.23.1, 2.22.2, 2.21.1, 2.20.2, 2.19.3, 2.18.2, 2.17.3, 2.16.6, 2.15.4. 2.14.62.24.1, у яких усунуті вразливості, що дозволяють атакуючому переписати довільні шляхи у файловій системі, організувати віддалений запуск коду або перезаписати файли в каталозі ".git/". Більшість проблем виявлено співробітниками
Microsoft Security Response Center, п'ять із восьми вразливостей специфічні для платформи Windows.
- — потокова команда feature export-marks=path записати мітки довільні каталоги, що може використовуватися для перезапису довільних шляхів у ФС при виконанні операції git fast-import з неперевіреними вхідними даними.
- - Некоректне екранування аргументів командного рядка до віддаленого виконання коду атакуючого під час рекурсивного клонування з використанням URL ssh://. Зокрема, некоректно оброблялося екранування аргументів, що закінчуються на зворотний сліш (наприклад, "test"). В цьому випадку при обрамленні аргументу подвійними лапками, остання лапка виявлялася екранованою, що дозволяло організувати підстановку своїх опцій у командному рядку.
- - при рекурсивному клонуванні субмодулів («clone-recurse-submodules») в оточенні Windows за певних умов ініціювати використання одного git-каталогу двічі (.git, git~1, git~2 і git~N в NTFS розпізнається як один каталог, але ця ситуація перевірялася тільки для git~1), що могло застосовуватися для організації запису в каталог. git». Для організації виконання коду атакуючий, наприклад, може підставити свій скрипт через обробник post-checkout у файлі .git/config.
- — обробник буквених імен дисків у коліях Windows під час трансляції колій типу «C:» був розрахований лише на заміну однолітерних латинських ідентифікаторів, але не враховував можливість створення віртуальних дисків, що призначаються через «subst буква:шлях». Такі шляхи оброблялися не як абсолютні, а як відносні шляхи, що дозволяло при клонуванні шкідливого репозиторію організувати запис у довільний каталог поза робочим деревом каталогів (наприклад, при використанні цифр або unicode-символів у назві диска — «1:\what\the\" hex.txt» або «ä:\tschibät.sch»).
- — під час роботи на платформі Windows застосування альтернативних потоків даних у NTFS, створюваних через додавання ознаки ":stream-name:stream-type" до імені файлу, перезаписати файли в каталозі ".git/" при клонуванні шкідливого репозиторію. Наприклад, ім'я ".git::$INDEX_ALLOCATION" в NTFS оброблялося як коректне посилання на каталог ".git".
- - при використанні Git в оточенні WSL (Windows Subsystem for Linux) при зверненні до робочого каталогу захист від маніпуляції іменами в NTFS (можливі атаки через трансляцію імен FAT, наприклад, до «.git» можна було звернутися через каталог «git~1»).
- -
записи в каталог ".git/" на платформі Windows при клонуванні шкідливих репозиторіїв, що містять файли зі зворотним слешем в імені (наприклад, "a\b"), який допустимо в Unix/Linux, але сприймається як частина шляху в Windows. - - Недостатня перевірка імен субмодулів могла використовуватися для організації цільових атак, які при рекурсивному клонуванні потенційно до виконання коду атакуючого. Git не забороняв створювати каталог субмодуля в каталозі іншого субмодуля, що в більшості випадків лише може призвести до замішання, але потенційно не виключає перезапису вмісту іншого модуля в процесі рекурсивного клонування (наприклад, каталоги субмодулів «hippo» та «hippo/hooks» розміщуються як « .git/modules/hippo/» і «.git/modules/hippo/hooks/», а каталог hooks в hippo може окремо використовуватися для розміщення обробників, що запускаються.
Користувачам Windows рекомендується терміново оновити версію Git, а до оновлення утриматися від клонування неперевірених репозиторіїв. Якщо можливості терміново оновити версію Git поки немає, то для зниження ризику атаки рекомендується не запускати git clone-recurse-submodules і git submodule update з неперевіреними репозиторіями, не використовувати git fast-import з неперевіреними вхідними потоками і не клонувати репозиторії у розділи з урахуванням NTFS.
Для додаткового захисту у нових випусках також заборонено використання у .gitmodules конструкцій у формі «submodule.{name}.update=!command». Для дистрибутивів простежити за випуском оновлень пакетів можна на сторінках ,, , , , , , .
Джерело: opennet.ru
