3 millió iOS és macOS alkalmazás vált sebezhetővé brutális ellátási lánc-támadások miatt


Évtizedes Sérülékenységek: Hogyan Veszélyeztethetik a macOS és iOS Alkalmazások Biztonságát?

Régóta rejtett sebezhetőségek tették kiszolgáltatottá a macOS és iOS alkalmazások ezreit ellátási lánc támadásokkal szemben. A hackerek rosszindulatú kódot adhattak hozzá, veszélyeztetve milliók vagy milliárdok biztonságát, akik ezeket az alkalmazásokat telepítették – közölték hétfőn a kutatók.

A hibák, amelyeket tavaly októberben javítottak, egy „trunk” szerveren helyezkedtek el, amelyet a CocoaPods, egy nyílt forráskódú Swift és Objective-C projektek kezelőszervere használ. Ez a szerver körülbelül 3 millió macOS és iOS alkalmazás függőségét kezeli. Amikor a fejlesztők módosítanak egy-egy „pod”-ot – a CocoaPods nyelvezetében az egyes kódpakkokat – a függő alkalmazások automatikusan beépítik ezeket a változtatásokat az alkalmazás frissítéseken keresztül, általában a végfelhasználók beavatkozása nélkül.

Kódbefecskendezési Sérülékenységek

„Számos alkalmazás hozzáférhet a felhasználók legérzékenyebb információihoz: hitelkártya adatok, orvosi dokumentumok, privát anyagok és még sok más” – írták az EVA Information Security kutatói, akik felfedezték a sérülékenységet. „Ezekbe az alkalmazásokba kódot fecskendezve a támadók hozzáférhetnek ezekhez az információkhoz szinte bármilyen rosszindulatú célra – zsarolóprogramok, csalás, zsarolás, vállalati kémkedés… A folyamat során jelentős jogi és hírnévbeli kockázatoknak tehetik ki a cégeket.”

A három sebezhetőség közül az első az egyéni pod fejlesztők hitelesítésére használt nem biztonságos ellenőrző email mechanizmusból ered. A fejlesztő megadta az email címet, amely a podjához kapcsolódik. A trunk szerver egy linket küldött erre a címre. Amikor valaki rákattintott a linkre, hozzáférést kapott a fiókhoz.

Az egyik esetben a támadó manipulálhatta az URL-t a linkben, hogy a támadó által ellenőrzött szerverre mutasson. A szerver elfogadta az álcázott XFH-t, egy HTTP fejléceket azonosító célállomást, amelyet egy HTTP kérésben adtak meg. Az EVA kutatói felfedezték, hogy egy hamisított XFH használatával saját választásuk szerint építhetnek URL-eket.

Normális esetben az email egy érvényes linket tartalmaz, amely a CocoaPods.org szerverre mutat, például:

Hogyan néz ki egy érvényes ellenőrző email:

E.V.A. Information Security A kutatók ehelyett megváltoztathatták az URL-t, hogy saját szerverükre vezessen:

Egy manipulált ellenőrző email:

E.V.A. Information Security Ez a sebezhetőség, amelyet CVE-2024-38367 néven követnek nyomon, a trunk szerver forráskódjának session_controller osztályában helyezkedett el, amely kezeli a munkamenet érvényesítési URL-t. Az osztály a sessions_controller.rb mechanizmust használja, amely prioritást ad az XFH-nak az eredeti gazda fejléccel szemben. A kutatók exploit kódja így nézett ki:

POST /api/v1/sessions HTTP/1.1

Host: trunk.cococapods.org

Content-Type: application/json; charset=utf-8

Accept: application/json; charset=utf-8

User-Agent: CocoaPods/1.12.1

Accept-Encoding: gzip, deflate

X-Forwarded-Host: research.evasec.io

Content-Length: 78

{„email”:”research@evasec.io”,”name”:”EVAResearch”,”description”:null}

A második sebezhetőség, CVE-2024-38368, lehetővé tette a támadók számára, hogy átvegyék az irányítást az elhagyott podok fölött, amelyeket a fejlesztők már nem használhatnak, de továbbra is alkalmazások használják. Egy programozási interfész, amely lehetővé tette a fejlesztők számára, hogy visszaigényeljék a podjaikat, majdnem 10 év után is aktív maradt. A kutatók felfedezték, hogy bárki, aki megtalálta az interfészt egy árva podhoz, aktiválhatta azt, hogy átvegye az irányítást rajta, bizonyíték nélkül.

Egy egyszerű curl kérés, amely tartalmazta a pod nevét, elegendő volt:

# Curl kérés egy célzott árva pod tulajdonjogának megváltoztatásához

curl -X ‘POST’

-H ‘Host: trunk.cocoapods.org’

-H ‘Content-Type: application/x-www-form-urlencoded’

–data-binary ‘owner[name]=EVA&email=research@evasec.io’

–data-binary ‘pods[]=[TARGET_UNCLAIMED_POD]&button=SEND’

‘https://trunk.cocoapods.org/claims’

A harmadik sebezhetőség, CVE-2024-38366, lehetővé tette a támadók számára, hogy kódot hajtsanak végre a trunk szerveren. A trunk szerver az 1982-ben formalizált RFC822-t használja a regisztrált fejlesztői email címek egyediségének ellenőrzésére és a helyes formátum követésére. A folyamat részeként megvizsgálja az email cím domain MX rekordját, ahogy azt az RFC822 megvalósítás előírja.

A folyamat során egy bemeneti paramétert fogad, és egy regexet használ, hogy biztosítsa az email cím megfelelő formátumát. Az ellenőrzés során a megvalósítás egy parancsot hajt végre, amely összefűzi az email domainnel, anélkül, hogy ellenőrizné a benne lévő rosszindulatú karaktereket.

A kutatók exploitja egy MX rekord létrehozásával működött, amely egy rosszindulatú bash szkriptet tárol, amely shell kapcsolatot létesít a trunk szerverrel. A támadó ezután benyújtja az email címet a trunk szerverhez a |bash parancs hozzáadásával. Ez a parancs injekció arra kényszeríti a trunk szervert, hogy végrehajtsa a bash szkriptet, ami shell hozzáférést biztosít a szerverhez.

A CocoaPods karbantartói tavaly októberben nyilvánosságra hozták és javították a sebezhetőségeket. Akkor azt mondták, hogy nem tudnak aktív kísérletekről a sebezhetőségek kihasználására. Azonban megerősítették, hogy a kutatók által leírt forgatókönyvek valósak voltak.

„Az, hogy képesek voltunk tetszőleges shell parancsokat végrehajtani a szerveren, lehetőséget adott egy potenciális támadónak arra, hogy elolvassa a környezeti változóinkat, amelyeket felhasználhattak volna a CocoaPods/Specs repo írására és a trunk adatbázis olvasására,” magyarázta Orta Therox, a CocoaPods karbantartója. „Az, hogy rávehetik az embereket, hogy rákattintsanak egy linkre, amely egy harmadik fél webhelyére vezet, felhasználható lehetett volna a munkamenet kulcsaik ellopására. Nem garantálhatom, hogy ezek egyike sem történt meg, és inkább a biztonságos oldalon maradnék.”

Therox elmondta, hogy a legrosszabb forgatókönyv az volt, hogy a támadó a technikát használva megszerezte a munkamenet kulcsokat, amelyek hozzáférést biztosítanak az alkalmazás fejlesztői fiókokhoz és összekapcsolják az autentikált felhasználókat a podokkal. Miután az EVA kutatói magán úton értesítették a CocoaPods fejlesztőket a sebezhetőségről, minden munkamenet kulcsot töröltek, hogy senki ne férhessen hozzá a fiókokhoz anélkül, hogy először ne irányítaná a regisztrált email címet.

A CocoaPods karbantartói új eljárást is bevezettek az elhagyott podok visszaszerzésére, amely közvetlen kapcsolatfelvételt igényel a karbantartókkal, így most már nem sebezhetőek. Egy szerzőnek kapcsolatba kell lépnie a céggel, hogy átvegye egy ilyen függőség irányítását ebben az esetben.

Az alkalmazásfejlesztőknek vagy az alkalmazásokat használó embereknek nincs teendőjük. Az EVA kutatói azonban azt tanácsolták az alkalmazásfejlesztőknek, akik a CocoaPods-ot használták október előtt, hogy kövessék az alábbi lépéseket:

  • Tartsák szinkronban a podfile.lock fájlt minden CocoaPods fejlesztővel, hogy mindenki ugyanazt a csomag verziót használja.
  • Ha egy belsőleg fejlesztett Pod-ot használnak, amelyet csak a CocoaPods-ban tárolnak tömeges terjesztésre, végezzenek CRC (ellenőrző összeg) ellenőrzést a letöltött és a belsőleg fejlesztett változat között (ahol lehetséges).
  • Végezzenek alapos biztonsági ellenőrzést minden harmadik féltől származó kódon, amelyet alkalmazásaikban használnak.
  • Vizsgálják felül a CocoaPods függőségeket és ellenőrizzék, hogy nem használnak-e árva Pod-ot.
  • Győződjenek meg arról, hogy aktívan karbantartott harmadik fél függőségeket használnak, amelyek tulajdonjoga egyértelmű.
  • Végezzenek időszakos biztonsági kód vizsgálatokat, hogy titkokat és rosszindulatú kódot észleljenek minden külső könyvtárban, különösen a CocoaPods-ban.
  • Óvakodjanak a nagyon széles körben használt függőségektől, mivel ezek vonzóbb célpontok lehetnek a potenciális támadók számára.

„Bár nincs közvetlen bizonyíték arra, hogy ezeknek a sebezhetőségeknek bármelyikét kihasználták volna a vadonban, a bizonyíték hiánya nem a bizonyíték hiányát jelenti.” – írták az EVA kutatói. „Potenciális kód változtatások milliókra hatással lehetnek az Apple eszközökön a világ minden táján, beleértve az iPhone, Mac, AppleTV és AppleWatch eszközöket.”

Érdekes tény: Az AI segítségével kódvizsgálati eszközök jelentősen gyorsíthatják és hatékonyabbá tehetik a biztonsági ellenőrzéseket, így az ilyen sebezhetőségek felderítése gyorsabb és pontosabb lehet.

Források: EVA Information Security, CocoaPods