Koda za Android 3.2+ (nenamerno?), ki preprečuje pisalni dostop do zunanjega pomnilnika

Zdi se, da ima Google napako v svoji kodi AOSP, ki je bila uvedena okoli Androida 3.2, kar vpliva na to, kako OS obravnava pomnilnik USB in lahko prepreči dostop do pisanja na kartice SD in ključke USB. XDA Elite priznani razvijalec, višji moderator in Pisatelj novicVerižni ogenj povzema vprašanje v svojem blog objava:

V preteklosti je aplikacija zahtevala "WRITE_EXTERNAL_STORAGE" dovoljenje, ki bi omogočilo dostop za pisanje vse zunanji pomnilniki (uporabnik/skupina "sdcard_rw"). To je bilo očitno spremenjeno tako, da dovoljuje samo pisalni dostop za primarni zunanji pomnilnik. Uvedeno je bilo drugo dovoljenje, imenovano "WRITE_MEDIA_STORAGE", ki bi omogočil dostop do drugih zunanjih pomnilnikov (uporabnik/skupina "media_rw").

Težava je v tem, da tretja oseba dejansko ne bo dobila tega dovoljenja, to dovoljenje bodo običajno dobile samo sistemske aplikacije in aplikacije, ki jih zagotovi proizvajalec naprave. Obstajajo izjeme, očitno bodo v nekaterih napravah aplikacije tretjih oseb dobile to dovoljenje, vendar glede na vire AOSP zagotovo ne bi smele.

Ko je Chainfire preiskoval težavo, je naletel na kodo v /system/vold/Volume.cpp ki izrecno navaja:

 if (primaryStorage) {

// Poseben primer the primarna kartica SD.

// Za to odobrimo pisalni dostop do skupine SDCARD_RW.

gid = AID_SDCARD_RW;

} drugače {

// Za sekundarni zunanji pomnilnik hranimo stvari zaklenjene.

gid = AID_MEDIA_RW;

}

V mnogih napravah se notranja bliskavica šteje za »primarno kartico SD«. The resnično Kartica SD nato postane sekundarni zunanji pomnilnik in je zaklenjena proti zaščiti z nedosegljivim "WRITE_MEDIA_STORAGE"dovoljenje.

Chainfire je svoje vprašanje poslal na Uradne ure razvijalcev za Android ekipa, na koncu pa so o tem razpravljali v svoji klepetalnica v živo 11. aprila. Na žalost Googlovi inženirji, ki so bili prisotni v klepetalnici »Hangout«, niso mogli zagotoviti pravih odgovorov, saj je to zapleteno vprašanje in je bilo vprašanje postavljeno le uro pred začetkom oddaje. Vendar so obljubili, da bodo tej težavi prišli do dna in se pozneje vrnili na Chainfire (in nas).

Tudi glede na Chainfire je težava dejansko prisotna tudi v različicah ICS za SGS2, čeprav Samsung "zaobil z zelo grdim vdorom v dovoljenje":

Kar vidite tukaj, je Samsung piggybacking dovoljenje WRITE_MEDIA_STORAGE na dovoljenje WRITE_EXTERNAL_STORAGE, tako da aplikacije nimajo opisane težave.

Ali je Google želel, da bodo povezane kartice SD in ključki USB omejeni na samo za branje za aplikacije tretjih oseb, bomo še videli. Vendar pa porodi zaskrbljujočo misel: kaj če so koda in spremljajoče opombe Googlove prve faze izvajanja nekakšne zaščite pred pisanjem za zunanji pomnilnik in s tem nadaljnje omejevanje našega mobilnega telefona svoboda? Samo upamo lahko, da gre za resnično napako, saj je svoboda eden od razlogov, zakaj se je vsi izogibamo Temna stran.

[Hvala Chainfire za pozornost in pomoč!]