Het lijkt erop dat Google een bug heeft in hun AOSP-code die rond Android 3.2 werd geïntroduceerd en die van invloed is op de manier waarop het besturingssysteem met USB-opslag omgaat en schrijftoegang tot SD-kaarten en USB-sticks kan voorkomen. XDA Elite erkende ontwikkelaar, senior moderator en NieuwsschrijverKettingvuur vat de kwestie samen in zijn blogpost:
In het verleden vroeg een app om de "SCHRIJF_EXTERNAL_STORAGE"toestemming, die schrijftoegang zou verlenen aan alle externe opslag (gebruiker/groep "sdcard_rw"). Dit is blijkbaar gewijzigd om alleen schrijftoegang te verlenen aan de primair externe opslag. Er is een tweede toestemming geïntroduceerd genaamd "SCHRIJF_MEDIA_STORAGE", die toegang zou verlenen tot de andere externe opslagplaatsen (gebruiker/groep "media_rw").
Het probleem is dat een derde partij deze toestemming niet daadwerkelijk krijgt; normaal gesproken krijgen alleen systeemapps en apps van de fabrikant van het apparaat deze toestemming. Er zijn uitzonderingen, blijkbaar zullen op sommige apparaten apps van derden deze toestemming krijgen, maar volgens de AOSP-bronnen is dat zeker niet de bedoeling.
Terwijl Chainfire het probleem onderzocht, kwam hij code tegen in de /system/vold/Volume.cpp waarin expliciet staat:
if (primaire opslag) {
// Speciaal geval de primaire SD-kaart.
// Hiervoor verlenen we schrijftoegang tot de SDCARD_RW-groep.
gid = AID_SDCARD_RW;
} anders {
// Voor secundaire externe opslag houden we alles op slot.
gid = AID_MEDIA_RW;
}
Op veel apparaten wordt de interne flitser beschouwd als de 'primaire SD-kaart'. De echt De SD-kaart wordt dan de secundaire externe opslag en wordt vergrendeld en beschermd door het onbereikbare "SCHRIJF_MEDIA_STORAGE" toestemming.
Chainfire legde zijn vraag voor aan de Kantooruren voor Android-ontwikkelaars team, en uiteindelijk bespraken ze het in hun team live ontmoetingsplaats op 11 april. Helaas konden de Google-technici die aanwezig waren in de hangout geen echte antwoorden geven, omdat dit een ingewikkelde kwestie is en de vraag pas een uur voordat de show live ging, werd gesteld. Ze hebben echter beloofd dit probleem tot op de bodem uit te zoeken en op een later tijdstip terug te komen op Chainfire (en ons).
Volgens Chainfire is het probleem ook daadwerkelijk aanwezig bij ICS-builds voor de SGS2, hoewel Samsung "heb er omheen gewerkt met een zeer lelijke toestemmingshack":
Wat je hier ziet is Samsung meeliften de machtiging WRITE_MEDIA_STORAGE naar de machtiging WRITE_EXTERNAL_STORAGE, zodat apps het beschreven probleem niet ondervinden.
Of het wel of niet de bedoeling van Google was om aangesloten SD-kaarten en USB-sticks te beperken tot alleen-lezen voor apps van derden, valt nog te bezien. Het roept echter wel een verontrustende gedachte op: wat als de code en de bijbehorende opmerkingen de eerste van Google zijn fasen van het implementeren van een soort schrijfbeveiliging voor externe opslag, en daarmee onze mobiele telefoon verder beperken vrijheid? We kunnen alleen maar hopen dat dit een echte bug is, aangezien vrijheid een van de redenen is waarom we dit allemaal vermijden Duistere kant.
[Grote dank aan Chainfire voor de waarschuwing en hulp!]