Kód Android 3.2+ (neúmyslně?) bránící zápisu do externího úložiště

click fraud protection

Zdá se, že Google má ve svém kódu AOSP chybu, která byla zavedena kolem Androidu 3.2, která ovlivňuje to, jak operační systém zachází s úložištěm USB, a může bránit v přístupu k zápisu na SD karty a USB klíčenky. XDA Elite uznávaný vývojář, hlavní moderátor a Spisovatel zprávŘetězový oheň shrnuje problém ve svém blogový příspěvek:

V minulosti aplikace požadovala „WRITE_EXTERNAL_STORAGE", které by udělilo přístup pro zápis Všechno externí úložiště (uživatel/skupina "sdcard_rw"). Toto bylo zřejmě změněno tak, aby umožňovalo pouze zápis do souboru hlavní externí úložiště. Bylo zavedeno druhé oprávnění s názvem „WRITE_MEDIA_STORAGE", což by umožnilo přístup k dalším externím úložištím (uživatel/skupina "media_rw").

Problém je v tom, že třetí straně toto oprávnění ve skutečnosti nebude uděleno, toto oprávnění obvykle dostanou pouze systémové aplikace a aplikace poskytnuté výrobcem zařízení. Existují výjimky, na některých zařízeních toto oprávnění zřejmě dostanou aplikace třetích stran, ale podle zdrojů AOSP by to rozhodně neměly být.

Když Chainfire vyšetřoval problém, narazil na kód v /system/vold/Volume.cpp který výslovně uvádí:

 if (primaryStorage) {

// Zvláštní případ primární SD karta.

// Za tímto účelem udělujeme skupině SDCARD_RW přístup pro zápis.

gid = AID_SDCARD_RW;

} jinak {

// Pro sekundární externí úložiště udržujeme věci uzamčené.

gid = AID_MEDIA_RW;

}

Na mnoha zařízeních je interní flash považován za „primární SD kartu“. The nemovitý SD karta se poté stane sekundárním externím úložištěm a je uzamčena a chráněna nedosažitelnýmWRITE_MEDIA_STORAGE"povolení.

Chainfire předložil svou otázku Úřední hodiny pro vývojáře Android týmu a nakonec to probrali ve svém živý hangout dne 11. dubna. Inženýři společnosti Google přítomní na hangoutu bohužel nebyli schopni poskytnout žádné skutečné odpovědi, protože se jedná o komplikovaný problém a otázka byla vznesena pouze hodinu před zahájením vysílání. Nicméně slíbili, že se dostanou k jádru tohoto problému a vrátí se k Chainfire (a nám) později.

Také podle Chainfire je problém ve skutečnosti přítomen i na sestavení ICS pro SGS2, ačkoli Samsung "obešel to pomocí velmi ošklivého hacku povolení":

To, co zde vidíte, je Samsung na zádech oprávnění WRITE_MEDIA_STORAGE na oprávnění WRITE_EXTERNAL_STORAGE, takže aplikace nezaznamenají popsaný problém.

Zda Google zamýšlel, aby byly připojené SD karty a USB klíče omezeny tak, aby byly pouze pro čtení pro aplikace třetích stran, se teprve uvidí. Zrodila se však znepokojivá myšlenka: Co když kód a doprovodné poznámky jsou první od Googlu etapy implementace jakési ochrany proti zápisu pro externí úložiště, a tím dalšího omezení našeho mobilu svoboda? Můžeme jen doufat, že se jedná o skutečnou chybu, protože svoboda je jedním z důvodů, proč se jí všichni vyhýbáme Temná strana.

[Velké díky Chainfire za upozornění a pomoc!]