Programu ya Expo inashindwa kwa HTTP kwenye Android 9: ni cleartext, si VPN
Build ya Expo inayopiga API ya HTTP ya kawaida inashindwa kwenye Android 9 na baadaye. Handaki haina hatia: bendera ya cleartext iko kwenye usanidi wa build.
Umetoa build mpya, umehamia VPN, na skrini hiyo hiyo imeacha kupakia. Kwenye Android 9 na baadaye maelezo ya kawaida zaidi ni ya kuchosha: jukwaa linakataa HTTP ya kawaida kwa programu zinazolenga API 28 au juu zaidi, na VPN ilibadilisha mazingira ya kutosha tu kuifichua. Hitilafu unayoona inategemea mteja wa HTTP, ndiyo sababu mara chache husema cleartext.
Kushindwa huku ni nini hasa
Kuanzia Android 9 jukwaa huzuia cleartext kwa msingi mara tu programu inapolenga kiwango cha API 28 au juu zaidi. Ombi kwa anwani ya HTTP ya kawaida hukataliwa na jukwaa kabla ya pakiti moja kuondoka kwenye kifaa. Hitilafu gani utaona inategemea maktaba ya HTTP: wakati mwingine kushindwa kwa mtandao kwa jumla, wakati mwingine muda kuisha, wakati mwingine ujumbe unaotaja cleartext moja kwa moja. Kinachokataa kufanya ni kufika kwenye seva yako. Android huandika msingi na mbadala uliowekewa kikomo cha kikoa katika mwongozo wa usanidi wa usalama.
Kivinjari kwenye kifaa hicho hicho bado kinaweza kupakia ukurasa, na hiyo ndiyo dalili ambayo watu wengi wanaikosa. Vivinjari haviko chini ya sera ya usalama wa mtandao ya programu yako.
Kwa nini VPN inalaumiwa
Kwa kawaida mambo matatu hubadilika kwa wakati mmoja. Programu inaweza kutatua jina lingine la mwenyeji baada ya VPN kuunganishwa, kifaa kinaweza kuwa kipya chenye build mpya zaidi, au build yenyewe inaweza kuwa imehamia kiwango cha API lengwa kinachowasha msingi. VPN inaonekana na SDK lengwa haionekani, kwa hiyo VPN inapata tiketi.
Linganisha viwango lengwa vya build ya zamani na mpya kabla ya kugusa usanidi wa mtandao. Programu inayolenga 27 au chini yake haijumuishwi, na hiyo inaelezea kila ripoti ya aina «kwenye simu yangu ya zamani inafanya kazi».
Bendera ya Expo inatua wapi hasa
Katika mradi wa Expo unaosimamiwa, kuongeza mpangilio kwenye app.json hakuhariri manifest ya Android, kwa sababu prebuild na build za maendeleo ndizo zinazozalisha manifest. Programu-jalizi ya usanidi ndiyo inayoandika mpangilio katika hatua hiyo. Njia inayoungwa mkono ni expo-build-properties, iliyosanidiwa katika usanidi wa programu pamoja na chaguo la cleartext chini ya android.
{
"plugins": [
["expo-build-properties", {
"android": { "usesCleartextTraffic": true }
}]
]
}Kipande kinaweka tu chaguo la programu-jalizi; manifest huundwa baadaye. Endesha prebuild au build mpya ya mteja wa maendeleo, kisha kabla ya kujaribu tena angalia AndroidManifest.xml iliyoundwa kwa android:usesCleartextTraffic, kwa sababu upakiaji upya wa JS pekee huhifadhi manifest ya zamani. Linganisha toleo la programu-jalizi na Expo SDK ambayo mradi unaendeshwa nayo. Chaguo za programu-jalizi huhamahama kati ya matoleo, na kipande kilichonakiliwa kutoka SDK nyingine ni chanzo cha kuaminika cha kutofanya kitu kwa kimya.
Mtiririko wa bare na chaguo jembamba
Kwa bare React Native kifanani ni android:usesCleartextTraffic kwenye kipengele cha application, au usanidi wa usalama wa mtandao unaoruhusu cleartext kwa vikoa vilivyotajwa pekee. Umbo lililowekewa kikomo cha kikoa ndilo linalopaswa kupendelewa, kwa sababu linaruhusu API ya ndani na kuacha kila kitu kingine kwenye HTTPS. Pia huandika orodha yake ya vighairi, na hicho ndicho sehemu ambayo mkaguzi atauliza.
Hakuna hata mmoja wa njia hizo mbili unaobadilisha msingi wa jukwaa kwa kitu chochote usichokitaja.
Kwanza thibitisha kutokana na logi ya kifaa
Kabla ya kuhariri usanidi, pata kushindwa kamili. adb logcat kwenye kifaa kilichounganishwa inaonyesha kukataa kwa cleartext kwa jukwaa na kutaja sehemu iliyoianzisha. Soketi iliyokataliwa, jina lisiloweza kutatuliwa au mkono wa TLS ulioshindwa vinaelekeza mahali pengine kabisa, na kuwasha cleartext kungeidhoofisha programu bure.
Kisha weka uzalishaji kwa uaminifu. Cleartext inakubalika kwa kituo cha maabara kisichoweza kutoa TLS, na kwa muda mfupi tu unaoweza kupanga. Ikiwa API inaweza kumaliza TLS ndani ya mtandao wa kibinafsi, weka cheti kwenye hifadhi ya uaminifu ya kifaa na uache cleartext imezimwa, kwa sababu handaki husimba njia hadi kwenye kitokeo chake na hakuna zaidi.
Mara kituo kinapojibu kwa HTTPS, ondoa ruhusa, jenga upya na ujaribu kwenye VPN na kwenye Wi-Fi ya kawaida katika kikao kimoja. Utatuzi wa majina unaweza kutofautiana kati ya njia hizo mbili, na jozi pekee ndiyo inayokuambia ipi inasema ukweli.