Két biztonsági hiba miatt érdemes a git-et frissíteni

kami911 képe

A Git projekt új karbantartási kiadásokat jelentetett meg, amelyek célja a két biztonsági hiba, a CVE-2022-41903 és a CVE-2022-23521 javítása. A felhasználóknak javasolt, hogy frissítsenek a legújabb kiadásra és ellenőrizzék a kódtárolójaikat a lehetséges biztonsági problémák kiszűrése miatt.

A v2.39.1-es fő kiadás mellett a régebbi fenntartási verziók (v2.38.3, v2.37.5, v2.36.4, v2.35.6, v2.34.6, v2.33.6, v2.32.5, v2.31.6 és v2.30.7) is elérhetők a megszokott helyeken. Az új verziók hamarosan elérhetőek lesznek az operációs rendszer csomagtárolóiban és a forráskód letölthető a a projekt weboldaláról és kódtárolójából címeken érhetők el.

A Git projekt javasolja, hogy a felhasználók a lehető leghamarabb frissítsenek a legújabb fenntartási kiadásokra, hogy elkerüljék ezeknek a biztonsági hibáknak a kihasználását. Érdemes megemlíteni, hogy ezek a biztonsági hibák csak akkor veszélyesek ha szándékosan ártó módon használják ki őket, és csak akkor veszélyeztetik a rendszert, ha a felhasználók engedélyezik a rosszindulatú formátumot engedélyező beállításokat. Emiatt az általános veszélyeztetettség alacsonyabb, de a biztonsági hibák javítása mindenképpen javasolt. Azt is érdemes észben tartani, hogy ezek a biztonsági hibák nem csak a Git projektet érinthetik, hanem más, a Git-re épülő projekteket is, így érdemes más projektek esetében (például: saját környezetben futtatott Gitlab) is ellenőrizni a hasonló biztonsági problémák jelenlétét.

A biztonsági hibák leírása

A CVE-2022-41903 jelű hiba: a git log és a git archive parancsokban található, amelyek lehetővé teszik a commitok megjelenítését egyaránt egyedi formátumban. Amikor a padding operátorokat dolgozzák fel (pl. %<(, %<|(, %>(, %>>(, vagy %><(), egy int túlcsordulás történhet a  pretty.c::format_and_pad_commit() függvényben, amikor egy size_t érték hibásan int-ként van tárolva, és ezután egy következő memcpy() hívásnál eltolásként használva. Ez a túlcsordulás közvetlenül egy felhasználó által indított parancs által is előidézhető (pl. git log --format=...), de indirekt módon is, a git archive segítségével, amely a repository fájljainak formátumjeleit bővíti ki git archive alatt. Ez a túlcsordulás véletlenszerű heap írásokat eredményezhet, ami távoli kód végrehajtásához használható ki.

A CVE-2022-23521 jelű hiba a gitattributes mechanizmusban található, amely lehetővé teszi a fájlok útvonalaihoz rendelt attribútumok meghatározását. Az attribútumokat egy .gitattributes fájl hozzáadásával lehet meghatározni a repository-ban, amely tartalmazza a fájl minták és az attribútumok halmazát, amelyek a mintáknak megfelelő útvonalakra vonatkoznak. Amikor a gitattributes-eket dolgozza fel a git parancs, több int túlcsordulás történhet, amikor nagyszámú útvonal mintája, nagyszámú attribútuma van egyetlen mintának, vagy amikor a deklarált attribútum nevek nagyon nagyon hosszúak. Ez a túlcsordulás egy ártó szándékú .gitattributes fájl által is előidézhető, amely a commit előzmények része lehet. A Git csendben levágja a 2KB-nál hosszabb sorokat, amikor a gitattributes-eket egy fájlból dolgozza fel, de nem így tesz, amikor az indexből dolgozza fel őket. Ennek következtében a hibakezelés attól függ, hogy a fájl a munkakönyvtárban, az indexben, vagy mindkét helyen található. Ez a túlcsordulás véletlenszerű heap olvasásokat és írásokat eredményezhet, ami távoli kód végrehajtásához használható ki.

A biztonsági hibákat a GitLab és az X41 D-Sec munkatársai fedezték fel, az OSTIF támogatta a javítási munkálatokat.