L-app Expo tfalli fl-HTTP fuq Android 9: hi cleartext, mhux il-VPN
Build tal-Expo li jsejjaħ API HTTP sempliċi jfalli fuq Android 9 u wara. It-tunnel huwa innoċenti: il-flag cleartext jappartjeni għall-konfigurazzjoni tal-build.
Ħriġt build ġdid, mort fuq il-VPN, u l-istess skrin waqaf jillowdja. Fuq Android 9 u wara l-ispjegazzjoni l-aktar komuni hija aktar tedjanti: il-pjattaforma tirrifjuta HTTP sempliċi għall-apps li jimmiraw għal API 28 jew ogħla, u l-VPN biddel biss biżżejjed kuntest biex jikxef dan. L-iżball li tara jiddependi mill-klijent HTTP, u għalhekk tant rari jgħid cleartext.
X’inhu dan il-falliment fil-verità
Minn Android 9 il-pjattaforma timblokka cleartext bħala default malli app timmira għal livell API 28 jew ogħla. It-talba lejn indirizz HTTP sempliċi hija miċħuda mill-pjattaforma qabel ma joħroġ saħansitra pakkett wieħed mill-apparat. Liema żball tara jiddependi mil-librerija HTTP: xi drabi falliment ġenerali tan-netwerk, xi drabi timeout, xi drabi messaġġ li jsemmi cleartext direttament. Dak li qatt ma tagħmel huwa li tasal għas-server tiegħek. Android jiddokumenta d-default u l-alternattiva limitata għad-dominju fil-gwida tal-konfigurazzjoni tas-sigurtà tiegħu.
Browser fuq l-istess apparat xorta jista’ jillowdja l-paġna, u dik hija l-ħjiel li ħafna nies jaqilgħu. Il-browsers mhumiex suġġetti għall-politika tas-sigurtà tan-netwerk tal-app tiegħek.
Għaliex jingħata t-tort lill-VPN
Normalment tliet affarijiet jinbidlu f’daqqa. L-app tista’ ssolvi hostname differenti wara li jikkonnettja l-VPN, l-apparat jista’ jkun ġdid b’build aktar ġdid, jew il-build innifsu jista’ jkun mar għal livell API fil-mira li jqajjem id-default. Il-VPN jidher u s-SDK fil-mira ma jidhirx, għalhekk il-VPN jieħu l-biljett.
Qabbel il-livelli fil-mira tal-build qadim u l-ġdid qabel ma tmiss il-konfigurazzjoni tan-netwerk. App li timmira għal 27 jew inqas hija eżentata, u dan jispjega kull rapport tat-tip «jaħdem fuq il-mowbajl il-qadim tiegħi».
Fejn tasal il-flag tal-Expo fil-verità
Fi proġett Expo maniġġjat, iż-żieda ta’ setting ma’ app.json ma teditja manifest tal-Android, għax il-manifest jinħoloq mill-prebuild u mill-builds tal-iżvilupp. Huwa l-plugin tal-konfigurazzjoni li jikteb is-setting f’dak l-istadju. Il-passaġġ appoġġjat huwa expo-build-properties, ikkonfigurat fil-konfigurazzjoni tal-app bl-għażla cleartext taħt android.
{
"plugins": [
["expo-build-properties", {
"android": { "usesCleartextTraffic": true }
}]
]
}Is-snippet jistabbilixxi biss l-għażla tal-plugin; il-manifest jinħoloq aktar tard. Mexxi prebuild jew build ġdid tal-klijent tal-iżvilupp, imbagħad qabel ma terġa’ tittestja spezzjona l-AndroidManifest.xml iġġenerat għal android:usesCleartextTraffic, għax rikarikament bl-JS biss iżżomm il-manifest il-qadim. Qabbil il-verżjoni tal-plugin mal-Expo SDK li fuqha jaħdem il-proġett. L-għażliet tal-plugin jiċċaqilqu bejn rilaxxi, u snippet ikkopjat minn SDK ieħor huwa sors affidabbli ta’ no-ops siekta.
Il-fluss bare u l-għażla eqreb
Għal bare React Native l-ekwivalenti huwa android:usesCleartextTraffic fuq l-element application, jew konfigurazzjoni tas-sigurtà tan-netwerk li tippermetti cleartext biss għal dominji msemmija. Il-forma limitata għad-dominju hija dik li għandha tiġi preferuta, għax tippermetti l-API interna u tħalli kollox ieħor fuq HTTPS. Hija wkoll tiddokumenta l-lista tal-eċċezzjonijiet tagħha, u dik hija l-parti li se jistaqsi dwarha reviżur.
L-ebda waħda miż-żewġ approċċi ma tbiddel id-default tal-pjattaforma għal xi ħaġa li ma semmejtx.
L-ewwel ipprova dan mil-log tal-apparat
Qabel ma teditja l-konfigurazzjoni, ġib il-falliment eżatt. adb logcat fuq apparat imqabbad juri ċ-ċaħda tal-cleartext mill-pjattaforma u jsemmi l-komponent li qajjemha. Socket miċħud, isem li ma jiġix solvut jew handshake TLS fallut jindikaw post kompletament ieħor, u li tattiva cleartext ikun biss iddgħajjef l-app għal xejn.
Imbagħad żomm il-produzzjoni onesta. Cleartext huwa aċċettabbli għal endpoint tal-laboratorju li ma jistax joffri TLS, u biss għall-iqsar żmien li tista’ tippjana. Jekk l-API tista’ ttemm TLS ġewwa n-netwerk privat, poġġi ċ-ċertifikat fl-store tal-fiduċja tal-apparat u ħalli cleartext mitfi, għax it-tunnel jikkripta l-passaġġ sal-ħruġ tiegħu u xejn lil hinn.
Malli l-endpoint iwieġeb fuq HTTPS, neħħi l-permess, erġa’ ibni u ttestja fuq il-VPN u fuq Wi-Fi ordinarju fl-istess sessjoni. Is-soluzzjoni tal-ismijiet tista’ tvarja bejn dawn iż-żewġ passaġġi, u l-par biss jgħidlek liema qed tgħid il-verità.