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 və 2.14.6 üçün korreksiya buraxılışları, hücumçunun fayl sistemində istənilən yolları yenidən yazmasına, uzaqdan kod icra etməsinə və «.git/» kataloqundakı faylları yenidən yazmasına imkan verən zəifliklər aradan qaldırılıb. Ən çox problemlər Microsoft Security Response Center əməkdaşları tərəfindən aşkar edilmişdir.
Windows platforması üçün spesifik olan səkkiz zəiflikdən beşi aşkar edilib.
- — «feature export-marks=path» axın komandası metka yazmaq üçün istənilən kataloqlara, «git fast-import» əməliyyatı zamanı təsdiqlənməmiş girişlərdən istifadə edərək, fayl sistemində istənilən yolları yenidən yazmaq üçün istifadə oluna bilər.
- — əmrlərin düzgün qeydə alınmaması hücumçunun uzaqdan kod icra etməsinə səbəb olanda SSH URL-ləri vasitəsilə rekursiv klonlama zamanı. Xüsusilə, arxa plan işarələrinin sonu tək reversqaç qadın cümləsi "test \" ilə işləməmişdir. Bu halda, dilindən ikiqat dırnaqlar arasında çeviriləndə, son dırnaq işarəsi çiçəkli halda olur ki, bu da əmrlərə öz seçimlərini yerləşdirməyə imkan verir.
- — Windows mühitində submoduqları rekursiv klonlama zamanı "clone --recurse-submodules" müddətində müəyyən şərtlərlə NTFS sistemində .git, git~1, git~2 və git~N eyni kataloq kimi tanınsa da, bu vəziyyət yalnız git~1 üçün yoxlanılıb. Hücumçunun öz kodunu icra etməsi üçün, məsələn, .git/config faylındakı post-checkout işçiləri vasitəsiylə öz skriptini daxil etməyə imkan var.
- — Windows yollarında disk adlandırma işçisinin işləməsi zamanı "C:\" kimi yolların mübadiləsi tək hərfli latın identifikatorlarını əvəz etməyə, lakin "subst hərf:path" yolu ilə virtual disklərin yaradılmasını nəzərə almır. Belə yollar mütləq yollar kimi deyil, nisbət yolları kimi işlənmişdir, bu da zərərli depozitlərin klonlanması zamanı iş sahələrindən kənarda istənilən kataloquna yazmağa imkan verir (məsələn, disk adlarında rəqəm və ya unicode simvolları istifadə edilməklə - "1:\what\the\hex.txt" və ya "ä:\tschibät.sch").
- — Windows platformasında NTFS-də alternativ məlumat axınlarının istifadəsi, fayl adlarına "stream-name:stream-type" atributunu əlavə etməklə əldə edilmişdir, zərərli depozitin klonlanması zamanı "git/" kataloqundakı faylları yenidən yazmağı imkan verir. Məsələn, NTFS-də adı "git::$INDEX_ALLOCATION" olan bir şəkildə "git" kataloquna düzgün bağlantı kimi idarə olunur.
- — WSL (Windows Subsystem for Linux) mühitində Git istifadəsi zamanı iş kataloquna müraciət edərkən NTFS-də ad manipulyasiyalarının qarşısının alınması (FAT adları vasitəsilə hücumlar mümkündü, məsələn, «.git» faylına «git~1» kataloqundan daxil olmaq mümkündü).
- —
Windows platformasında zərərli repositoriyaları klonlayarkən «.git/» kataloquna yazmaq, geri xətt simvolu (məsələn, «a\b») olan fayllarla mümkündür, bu isə Unix/Linux-da icazə verilən, lakin Windows-da yolun bir hissəsi kimi qəbul edilən bir isimdir. - — submodul adlarının kifayət qədər yoxlanılmaması hədəfli hücumların təşkil edilməsində istifadə oluna bilər, bu da rekursiv klonlama zamanı potensial olaraq hücum edən şəxsin kodunun icrasına. Git, bir submodul kataloqunun digər submodul kataloqunda yaradılmasına icazə vermirdi ki, bu da əksər hallarda yalnız çaşqınlığa səbəb ola bilər, ancaq rekursiv klonlama prosesi zamanı digər modulu əvəz etməyi istisna etmir (məsələn, «hippo» və «hippo/hooks» submodul kataloqları «.git/modules/hippo/» və «.git/modules/hippo/hooks/» kimi yerləşir, «hippo» içərisindəki hooks kataloqu ayrıca icra olunan işləyiciləri yerləşdirmək üçün istifadə oluna bilər).
Windows istifadəçilərinə Git versiyasını dərhal yeniləmələri tövsiyə olunur, yeniləmə olmadan yoxlanılmamış repositoriyalarla klonlamadan çəkinmələri lazımdır. Əgər Git versiyasını dərhal yeniləmək mümkün deyilsə, hücum riskini azaltmaq üçün yoxlanılmamış repositoriyalarla «git clone —recurse-submodules» və «git submodule update» işə salmaqdan, yoxlanılmamış giriş mənbələri ilə «git fast-import» istifadə etməkdən və NTFS əsaslı bölmələrə repositoriyalar klonlamaqdan qaçınmaq məsləhətdir.
Yeni buraxılışlarda əlavə təhlükəsizlik üçün müvafiq olaraq .gitmodules-da «submodule.{name}.update=!command» kimi strukturların istifadəsi qadağan edilib. Paketlərin yeniliklərinin buraxılışlarını izləmək üçün paylamalarda səhifələrdə yoxlanmalıdır. ,, , , , , , .
Mənbə: opennet.ru
