Az Apple május 14-én adta ki az iOS legújabb, 17.5-ös verzióját, és mint minden ilyen nagyobb frissítésnél becsúszhatnak kisebb-nagyobb hibák. A legutóbbi frissítéssel azonban egy elég érdekes hibajelenség ütötte fel a fejét.
Sokan jelezték ugyanis, hogy évekkel ezelőtt törölt fotók jelentek meg a “Recent” vagyis a frissen készített fotók albumában. Olyan is akadt aki még az előző tulaj képeit is viszontlátta. Sokan arra kezdtek el gyanakodni, hogy az iCloud-ból szinkronizálódtak vissza a fotók a telefonokra.
Ami azért lett volna aggasztó, mert az Apple vállalása szerint, a törölt képeket 30 napig őrzik meg a szemetesben, ezután törlődnek. Így lényegében saját vállalásukkal mentek volna szembe, és adatvédelmi aggályokat is felvetett volna ez a probléma.
Mi történik a törölt fotóinkkal/fájljainkkal?
A digitális adattárolás során egy fájl (legyen az fotó, videó, szöveges dokumentum) törlése ritkán jelent valódi, fizikai törlést. Sokkal egyszerűbb a fájlt egy törölt flaggel ellátni, és a különböző applikációkban lekezelni, hogy csak azokkal a fájlokkal foglalkozzanak, amelyeken ez a flag nincs rajta.
Miért nem fizikai törlésről van szó?
Egy időben valóban gyakori volt, hogy a törlés valódi törlést jelentett, de már jó ideje csak “elrejtik” a felhasználó szeme elől az adatokat. Hamar rájön minden programozó, hogy miért nem jó a fizikai törlés. Egy fájl vagy adat fizikai törlésével teljesen megsemmisül az. Ha azonban csak egy flag-et állítunk rajta, még visszanyerhető. Így a véletlenül törölt fájl visszaállítható.
Adatbázisnál is hasonló elven szoktuk felépíteni a törlés működését: általában jelöljük egy status mezőben vagy Laravel esetén a deleted_at mezőbe írt időponttal, hogy törölve lett az adat. Ha kell, akkor anonimizáljuk a benne lévő személyes adatokat, de semmiképp sem töröljük fizikailag az adatbázistáblából.
A másik, hogy borzasztóan erőforrás igényes ez a művelet. Hadd éljek egy fura hasonlattal. Képzeljük el az adattárolónkat egy hatalmas társasháznak, amiben az egyes szektorok a bérlemények. Ha egy új lakó érkezik kiadunk neki egy ilyen albérletet. Ez felel meg az új fájlnak. Ha kiköltözik egyszerűbb eldobni a kulcsot, majd újat csináltatni amikor szükséges, mint ledózerolni, és kiüríteni a lakást. Nagyjából ezt jelenti egy fájl vagy adat megflagelése.
Hol tárolja az Apple a törölt fotókat?
A fentiek azonban még nem adnak magyarázatot arra, hogy akkor hol is tárolja az Apple a törölt fotókat. Tényleg az iCloud-ban vannak fent, és onnan szinkronizálódtak vissza? A kérdésre a választ a 17.5.1-es frissítés változásait összehasonlító elemzés adhatja meg. A Synacktiv kiberbiztonsággal foglalkozó csapat bejegyzésében részletesen leírja, hogyan fedte fel és hasonlította össze a két frissítés tartalmát és talált rá egy lehetséges hibára.
A folyamat során a csapat beazonosította a módosított fájlt és annak egy metódusát. Egy elég komoly módosítást találtak ugyanis a PhotoLibraryServices-ben, a PLModelMigrationActionRegistration_17000 függvényen belül.
Az Apple eltávolított egy rutint a fotók beolvasásáért és a fájlrendszerből való újraimportálásáért felelős funkcióból, ami miatt a régi fájlokat újraindexelte a lokális fájlrendszeren, és így azok újra megjelentek a felhasználók galériáiban.
Valószínűleg tehát az történt, hogy a törölt fotók továbbra is ott voltak a fájlrendszerben, és nem kerültek felülírásra sem, csak meg voltak flagelve. Azonban a 17.5-ös frissítéssel ezt a flaget figyelmenkívül hagyta ez a rutin és újra beolvasta a fájlokat.
Ez megmagyarázza a bevezetőben leírt esetet is, amikor az előző tulaj fotói jelentek meg újra a telefon fotógalériájában. Valószínűleg átadás előtt nem hajtott végre az előző tulajdonos teljes factory resetet, és a fájlokat tartalmazó szegmensek nem kerültek újraírásra azóta.
Egy reddit user további magyarázatot adhat arra, hogy miért lehet az, hogy egyesek tapasztalták ezt a hibát, míg mások nem. Az történhet ugyanis, hogy az elkészült fotókból (pl screenshotok, letöltött képek) bizonyos eszközökön másolat készül a telefonon, és mind a Fotók, mind a Fájlok alkalmazásban megjelennek. Ezután hiába töröljük a Fotók alkalmazásból a képet, a Fájlokban még mindig ott lehet. A 17.5-ös frissítéssel valószínűleg így kerülhettek vissza képek.
Hogyan lehetséges, hogy nem kerültek felülírásra a törölt fájlok?
Jogosan merülhet fel a kérdés, hogy hogyan lehetséges az, hogy évekkel korábbi fényképek is visszajöttek a törlésből? Hogy, hogy nem kerültek felülírásra a megflagelt fotót tartalmazó szektorok? A válasz erre az, hogy ma már a telefonok óriási belső tárhellyel rendelkeznek. Az én iPhone 12 Pro-m 512GB belső tárhellyel rendelkezik, és úgyis, hogy jó minőségű fotókat és videókat készítek van jelenleg 444GB szabad tárhelyem. Ez még barátok között is azt jelenti, hogy 80%-a szabad a tárhelyemnek, és a telefon már több, mint 2 éve a tulajdonomban van. Néhány videótól eltekintve azonban nem nagyon töröltem eddig fájlokat.
Az alkalmazások is szeretnek terpeszkedni: a Facebook jelenleg kb 3GB helyet foglal, a Tiktok is 2,5GB-ot eszik meg. Míg korábban a telefonok szinte értelmezhetetlenül alacsony tárhellyel érkeztek, ma már épp az ellenkezője történik: értelmezhetetlenül hatalmas tárhely áll rendelkezésre, amit a felhasználók nagy többsége valószínűleg évek kőkemény munkájával se tudná betölteni.
Így hát nem csoda, ha egy factory reset nélkül átadott iPhone-ból még kinyerhetők lennének az előző tulajdonos fotói.