Feltörték az Apple In-App Purchase rendszerét – mit tesz Cupertino?

Ez a cikk legalább 1 éve frissült utoljára. A benne szereplő információk a megjelenés idején pontosak voltak, de mára elavultak lehetnek.

Mindez az elmúlt napokban történt, és közben az Apple már aktívan dolgozik a megoldáson, így mi inkább utánanéztünk a dolgoknak, és nem ugrottunk azonnal bele, hiszen egy ismeretlen, külső szerver bármi olyat is megtehet, amiről egyébként szót sem ejt a készítője. Lássuk tehát, miről is van szó pontosan, és mennyiben reális még a kérdés.

Régóta létezik ugye Cydiában az iAP Cracker nevű tweak, ami MobileSubstrate segítségével magukat az alkalmazásokat patcheli meg – ez természetesen csak jailbreakelt eszközökön fut. A most bemutatott módszerrel viszont egy orosz hacker, Alexey V. Borodin (@ZonD80) a hálózati oldalon kerüli meg a pénz levonását, ehhez egy saját proxy szervert, valamint két, a felhasználó készülékére telepítendő tanúsítványt használ. A módszer sajátossága, hogy hivatalos, nem jailbreakelt készülékeken is fut, valamint egy nagyon nehezen javítható biztonsági rést használ ki, aminek a befoltozásához az egész In-App Purchase rendszer architektúráját kell megváltoztatni. Röviden arról van szó, hogy az Apple nem ellenőrzi azt, hogy az egyes alkalmazáson belüli vásárlásokhoz pontosan melyik “digitális számla” tartozik, csupán az, hogy az azt lekérő/küldő szerver Apple által aláírt SSL-tanúsítvánnyal rendelkezzen – hackerünk szervere is rendelkezik ilyennel, valamint ehhez szükséges a felhasználó készülékére telepített tanúsítvány is (a támadás innentől kezdve egy egyszerű úgynevezett man-in-the-middle attack):

A telepítés menetéről egy videó is készült, ám azt idő közben az Apple eltávolíttatta a YouTube-ról, bár ennek nem sok értelme volt, hiszen azóta csak még több újabb készült, ahogy mások is kipróbálták, és bemutatták, elég csak az “in-appstore” kifejezésre rákeresni. A kaliforniai cég más lépéseket is tett a kalózkodás megakadályozására: Borodin szerverének IP címét blokkolták, hogy ne férhessen hozzá az App Store-hoz (erre ő áthelyezte a szervert Oroszországon kívülre), illetve PayPal-kontóját is felfüggeszttették (az úriember erre is talált megoldást: immár BitBucket-adományokat is elfogad).

De hogyan is történik pontosan mindez? Ennek a megértéséhez először is ismernünk kell az alkalmazáson belüli vásárlások működését.

Amikor egy In-App vásárlást kezdeményezünk, az alkalmazás a fejlesztõ szerveréhez csatlakozik, hogy lekérje a vásárolható dolgok listáját (ez gyakorlatilag egy azonosítószámokból álló lista). Ezt a listát felhasználva csatlakozik az App Store-hoz, hogy bővebb információt kérjen le az egyes termékekről; ezeket az információkat feldolgozva jelenít meg egy listát a felhasználónak. A felhasználó ezek után kiválasztja, amit vásárolni (illetve lopni) szeretne, ekkor az alkalmazás egy fizetési kérést küld az App Store-nak – már ha nincsen beállítva egy hackelt DNS-szerver, amely ehelyett a hacker proxyjának IP-címére oldja fel az App Store-hoz tartozó URL-t. Az App Store-os eredeti, illetve a hackelt szerver is ekkor feldologozza a kérést és egy érvényes fizetési azonosítót ad vissza az alkalmazásnak – a nemhivatalos proxy ezt korábbi, legális vásárlások fizetési információinak duplikálásával biztosítja. Az alkalmazás most ezt a “digitális számlát” küldi el a fejlesztői szerver számára, amely a közvetlenül az App Store-ral való sikeres ellenőrzés után át is adja az alkalmazásnak a vásárolt cikkeket.

Több, a metódust tesztelő felhasználó részéről is érkezett visszajelzés, miszerint a módszer az esetek 99 százalékában működik – a maradék egy százalékot azok a kevésbé lusta fejlesztők teszik ki, akik az Apple által javasolt módon saját szerverükkel is ellenőriztetik a vásárlások eredetiségét. Ebből is csak az látszik, hogy aki nem volt lusta, és nem hagyatkozott teljes mértékben az Apple-re, azt most nem is érte kár.

Fontos megjegyezni, hogy ez a dolog a Mac App Store-ban lévő alkalmazásokkal is működik, mivel Borodin azt időközben kiterjesztette rájuk is. Az OS X rendszereken futó programok töréséhez szintén kétféle digitális tanúsítvány telepítése, a DNS-beállításaink módosítása, valamint a hacker által kiadott új program, a Grim Receiper futtatása szükséges – ez utóbbi a már meglévő, érvényes vásárlások újrafelhasználásában segít.

Az Apple közben azt ígérte, az iOS 6-ban már javításra kerül ez a sebezhetőség; addig is egy átmeneti megoldásra hívta fel a fejlesztők figyelmét e-mailben. Érdekes, hogy az amúgy rettentően szigorú API-irányelvekkel rendelkező cég megnyitott egy privát API-t, amelynek segítségével a fejlesztők ellenőrizhetik, hogy minden vásárláshoz tartozó számlát csak egyszer használtak-e fel. Korábban ha csak sejthette az Apple, hogy egy fejlesztő egy privát API-t használ, akkor visszadobták az alkalmazását, most pedig ők maguk hívják fel az adott API használatára a figyelmet. Változnak az idők, és egy ilyen jellegű biztonsági hiba megoldása sokkal fontosabb, mint egy API.

Bár a fenti leírás nagyon csábító lehet sokak számára, szeretnénk hangsúlyozni, hogy a Szifon.com semmiféle kalózkodást és lopást nem támogat, így ennek a hacknek a használatát sem! Továbbá aggályok merülhetnek fel a személyes adatainkkal kapcsolatban is – ennek az eljárásnak a természetéből adódóan a hacker a szerverén átmenő bármilyen adat lehallgatására képes, ez pedig egy App Store-vásárlás esetén akár banki adatainkat is tartalmazhatja.

Ezek még érdekelhetnek:


  1. Csak kérdés, nem kötekedni akarok 😀

    Azt írják, hogy jelentkezzek ki a saját apple-id-ből mielőtt belekezdek, és mikor az app kérdezi random adatokat adjak meg. Akkor hogy tudnak hozzáférni az adataimhoz?

  2. @Tomi77: mivel minden iTunes felé irányuló forgalom a külső proxyn is átmegy, így mondjuk ha jön egy apphoz frissítés, és te ahhoz megadod a jelszót, hogy frissíthesse? persze egyáltalán nem biztos, hogy a DNS beállítás miatt ez megtörténik, hiszen lehet, hogy nem is tudja majd ellenőrizni a frissítéseket így. de te ennyire megbízol egy orosz hackerben, hogy elhiszed, hogy noha az ilyen kimenő kérést nem tudja kiszolgálni a proxyja, azért nem naplóz semmit a rajta átmenő forgalomból? meg ha nem is a bankkártya-adataidhoz fér hozzá, mert nem is adtál meg kártyát, az iCloud fiókodban ott a névjegyzéked, telefonszámokkal, emailcímekkel, ami a fekete piacon érték, plusz pillanatok alatt letölthetőek a megvásárolt dolgaid is.

  3. Gratulálok ennek a f*sznak.Pedig lehet,hogy ha legál irányokba fejlesztene még sokra vinné.

    És az az igazi szemétség,hogy adományokat is elfogad.Aki azon dolgozik,hogy ami fizetős azt ellophasd ezzel nem támogatva a fejlesztőket…az a minimum,hogy ne fogadjon el semmi féle pénzt.Ennyit a tehetséges fejlesztőkről.Egyszerűen hihetetlen.Ez a véleményem azokról is akik minden energiájukkal azon vannak,hogy vírust írjanak.Szomorú,hogy az egyébként tehetséges fejlesztő arra fordítja minden programozói képességét,hogy valakinek keresztbe tegyen.

  4. @hSn0wQ: Az eredeti terve az lett volna, hogy egy legújabb generációs iPhone 5-ért cserébe megosztja a hibát az Apple-lel, Alma bácsi erre viszont jól bannolta…

    Miért fogad el adományokat? Mert az eredeti certificate-ekhez tartozó vásárlások valamint a szerver fenntartása pénzbe kerül.

    Mindenkinek kersztbe tesz? Nem, nem mindenkinek — a felhasználók pl. kifejezetten jól járnak vele 😀 Az AppStore-os fejlesztők valóban megsínylik ezt, de kérdem én, 1. miért nem voltak képesek egy saját szerveres ellenőrzést végezni? 2. Miért kell a felhasználót még pluszba lehúzni, miután megvette az értékes appot?

    (U. i.: tényleg, ejnye-bejnye, ilyet nem szabad stb., DE: nem fehér és fekete minden, tehát a fenti hackernek ez az akciója sem csupa rossz – kövezzetek meg. Ennek ellenére még mindig az a véleményem összességében, amit a cikk végén lévő disclaimerben leírtam – illegális, és nem ajánlom a használatát, magam sem teszem.)

  5. @H2CO3: azért lásd be, erős elképzelés volt, hogy ezért majd kap egy készüléket. bár ki tudja, mi volt közben a háttérben. én mindenképp megkerestem volna privátban az Apple-t, bemutatva nekik, hogy mi a helyzet, persze nem árulva el sokmindent a technikai részletekről, és amint megvan a szerződés a készülékátadásról, akkor megkapják a részleteket. ha meg nem mennek bele, akkor lehet úgy kezdeni az egészet, hogy mivel nem vettek komolyan, tessék, lássátok, működik. viszont így jelentős kárt okozott, és nem csodálkoznék, ha jogilag felelősségre vonnák érte. sajnos ilyen témában nem egyszerű egyezkedni, de minden csak a diplomácián múlik.

  6. @H2CO3: Hát alma bácsi hülyén cselekedett a bannolással. 🙂

    A szerver fenntartása pénzbe kerül. -sz*r ügy,senki nem kérte,hogy foglalkozzon az appok lopásával.

    Nem írtam,hogy mindenkinek.
    Persze lehetne szórakozni buggyant hackerek távol tartásával csak közben az “ártatlan” júzer türelmetlen.
    Engem egyetlen fejlesztő sem húzott le. 😉 Szerintem 0,79€ nem a világ,ki lehet fizetni.

    Valóban,eredetileg a szándék nem rossz indulatu,de ezzel a reakciójával maga ellen haragította az Apple-t.

  7. És azt tudja valaki hogy lehet ezt visszacsinálni?mert a 2 programot letöröltem de a kamu appleID-ből sehogysem tudok átjelentkezni:S

Írd le a véleményedet! (Moderációs elveinket ide kattintva olvashatod.)

Hozzászólás írásához be kell jelentkezned!