Meghatározták biztonsági rés az APT csomagkezelőben (CVE-2019 3462-), mit lehetővé teszi a támadó számára, hogy kezdeményezze a telepített csomag meghamisítását hogy a támadó rendelkezik-e az adattár tükrének irányításával, vagy megzavarhatja-e a felhasználó és az adattár közötti tranzitforgalmat (MITM támadás).
A problémát Max Justicz biztonsági kutató azonosította, ismert az APK csomagkezelő (Alpine), valamint a Packagist, NPM és RubyGems adattárak sebezhetőségének észleléséről.
A probléma Ennek oka a HTTP átirányítási feldolgozó kód mezőinek helytelen ellenőrzése.
Mi a probléma?
Ez a sebezhetőség lehetővé teszi a támadó számára, hogy kicserélje saját tartalmát a HTTP munkameneten belül továbbított adatokba (A Debian és az Ubuntu a tárhely eléréséhez HTTP-t és nem HTTPS-t használ, feltéve, hogy a digitális aláírás elegendő a metaadatok és a csomagméret megegyezésével.)
Az azonosított biztonsági rés lehetővé teszi a támadó erejét cserélje ki az átvitt csomagot, majd az APT észleli a hivatalos tükrötől kapott üzenetet, és elindítja a telepítési folyamatot.
A telepítés során elindított szkriptek rosszindulatú csomagjába történő felvétel révén a támadó elérheti kódjának végrehajtását root rendszerű jogosultságokkal rendelkező rendszeren.
Adatok letöltéséhez a tárból az APT elindít egy gyermekfolyamatot egy adott szállítás megvalósításával, és megszervezi az interakciót ezzel a folyamattal egy egyszerű szöveges protokoll használatával, a parancsok üres sorral való felosztásával.
Hogyan fedezhetem fel a problémát?
A probléma lényege, hogy a HTTP transzportkezelő, amikor választ kapott a HTTP-szervertől a "Location:" fejléccel, megerősítést kér az átirányításról a fő folyamatból.
A fejléc tartalmának teljes átvitele. Az átadott speciális karakterek tisztaságának hiánya miatt a támadó megadhat egy sortörést a "Hely:" mezőben.
Mivel ezt az értéket dekódolják és továbbítják a kommunikációs csatornán a fő folyamattal, a támadó szimulálhat egy másik választ, mint a HTTP szállítási kezelő, és helyettesítheti a 201 próbabábu URI blokkját.
Például, ha csomag kérésekor a támadó helyettesíti a választ, akkor ez a helyettesítés a következő adatblokk átkerül a fő folyamatba.
A letöltött fájlok kivonatolásának kiszámítása megtörténik, és a fő folyamat egyszerűen ellenőrzi ezeket az adatokat kivonatokkal az aláírt csomagok adatbázisából.
A metaadatok között a támadó megadhatja az adatbázisban a tényleges aláírt csomagokkal összekapcsolt tesztkivonatok bármely értékét, de ez valójában nem felel meg az átvitt fájl kivonatainak.
A fő folyamat elfogadja a támadással helyettesített válaszkódot, megkeresi a kivonatot az adatbázisban, és úgy ítéli meg, hogy a csomag, amelyhez megfelelő a digitális aláírás, be van töltve, bár a valóságban a kivonattal rendelkező mező értéke helyettesített a kommunikációs csatorna a támadás és a kicserélt metaadatokban megadott fájlt használó fő folyamattal.
Egy rosszindulatú csomag letöltése úgy történik, hogy a csomagot a Release.gpg fájlhoz csatolja az átvitel során.
Ennek a fájlnak kiszámítható helye van a fájlrendszeren, és egy csomag csatolása az indításhoz nem befolyásolja a digitális aláírás kibontását a tárból.
Adatok megszerzésénél az apt letiltja azokat a dolgozói folyamatokat, amelyek az adatátvitelhez használt különféle protokollokra specializálódtak.
A fő folyamat azután a stdin / stdout útján kommunikál ezekkel a dolgozókkal, hogy megmondja nekik, mit töltsenek le és hova tegyék a fájlrendszerre egy olyan protokoll segítségével, amely kissé hasonlít a HTTP-re.
Ezután a fő folyamat elküldi a konfigurációját, és erőforrást kér, és a munkavállalói folyamat válaszol.
Amikor a HTTP-kiszolgáló átirányítással válaszol, a dolgozói folyamat a 103-os átirányítást adja vissza a 201-es URI kész helyett, és a fő folyamat ezt a választ használja arra, hogy kitalálja, melyik erőforrást kéri tovább.