Blociwch destun clir mewn apiau Android heb ddibynnu ar VPN
Mae testun clir yn y llwyth a thestun clir ar y llwybr yn broblemau gwahanol. Trwsiwch yr un cyntaf yn yr ap, a'r ail gyda thwnnel neu bolisi dyfais.
Gelwir dau beth hollol wahanol yn flocio testun clir ar Android. Y naill yw polisi y tu mewn i ap sy'n dweud wrth ei stac rhwydwaith ei hun i wrthod HTTP plaen. Y llall yw trefniant ar lefel dyfais sy'n ceisio amddiffyn popeth ar y ffôn ar unwaith, yn aml trwy gyfeirio traffig drwy VPN. Maent yn datrys problemau gwahanol, ac ni all yr ail drwsio'r un cyntaf: mae twnnel yn amddiffyn y darn rhwng y ffôn a'r allanfa, tra bo ap sy'n siarad HTTP yn dal i siarad HTTP â phopeth sydd y tu hwnt i'r allanfa honno.
Dwy broblem dan un enw
Y broblem gyntaf yw'r llwyth: mae'r ap yn ysgrifennu manylion mewngofnodi neu docynnau mewn cais nad yw'n cael ei amgryptio o'r dechrau i'r diwedd, felly gall pob naid sy'n gallu ei weld ei ddarllen. Yr ail yw'r llwybr: gall yr ap fod yn hollol ddi-fai, ac rydych yn dal i fod eisiau i weithredwr Wi-Fi lleol beidio â dysgu dim am ble mae'n cysylltu. Mae VPN yn rhoi sylw i'r ail a dim ond i'r ail.
Mae'r gwahaniaeth hwnnw'n penderfynu pwy sy'n berchen ar y trwsio. Mae'r llwyth yn perthyn i bwy bynnag sy'n cludo'r ap, oherwydd dim ond y cod hwnnw sy'n penderfynu pa URL a elwir ac a yw'n dilysu tystysgrif. Mae'r llwybr yn perthyn i'r ddyfais neu'r rhwydwaith, oherwydd mater o ble mae pecynnau'n teithio yw hyn, nid beth maent yn ei gynnwys.
Llwybr un: yr ap rydych yn ei reoli
Os chi sy'n cludo'r ap, y trwsio yw penderfyniad cludiant ynghyd â pholisi sy'n ei orfodi. Cyfeiriwch bob pen i HTTPS, cadwch ddilysu enw gwesteiwr a thystysgrif ymlaen, a dilëwch y cwymp yn ôl i HTTP plaen yn hytrach na'i adael un fflag cyfluniad i ffwrdd. Nid yw ailgyfeirio'n helpu yma: mae cais HTTP sy'n derbyn 301 eisoes wedi anfon ei benawdau a'i gorff yn agored, felly rhaid i fanylion mewngofnodi byth deithio ar y dybiaeth y bydd yr ailgyfeiriad yn eu hamddiffyn.
Ar Android 7.0 a hwyrach, mae Network Security Configuration yn mynegi'r polisi. Y ffeil isod yw'r fersiwn ddefnyddiol leiaf: mae'n gwrthod testun clir ym mhobman oni bai bod eithriad penodol i barth yn dweud yn wahanol.
<network-security-config>
<base-config cleartextTrafficPermitted="false" />
</network-security-config>Cyfeiriwch at yr adnodd hwnnw o'r maniffest, yna darllenwch yr eithriadau sy'n bodoli eisoes cyn cludo. Gall hen barth dadfygio neu gofnod SDK darparwr taliadau ganiatáu testun clir yn dawel eto ar gyfer y gwesteiwr roeddech yn ceisio ei amddiffyn.
Mae dau fanylyn fersiwn yn werth eu gwybod. Mae apiau sy'n targedu API 28 neu ddiweddarach yn gwrthod testun clir yn barod fel rhagosodiad, felly mae ap sy'n dal i siarad HTTP plaen naill ai'n targedu lefel API hŷn neu mae ganddo eithriad yn rhywle. A phan fo cyfluniad diogelwch rhwydwaith yn bresennol, nid yw'r priodwedd maniffest hŷn android:usesCleartextTraffic yn penderfynu'r cwestiwn mwyach, a dyna pam mae newid y fflag hwnnw weithiau'n ymddangos fel pe na bai'n gwneud dim.
Llwybr dau: yr ap nad ydych yn ei reoli
Ar gyfer ap trydydd parti sydd wedi'i osod, ni allwch ailysgrifennu ei gyfluniad diogelwch trwy osodiad defnyddiwr. Y dewisiadau realistig yw rheolyddion cysylltiad diogel y cynnyrch ei hun, dewis arall a gynhelir sy'n defnyddio TLS yn barod, neu bolisi dyfais a reolir sy'n cyfyngu ar yr hyn y caiff y ddyfais ei redeg. Ymrwymiadau gwahanol yw'r rhain, a dim ond y trydydd sy'n graddio i fflyd.
Mae rheolau rhwydwaith yn ddirprwyon gwannach nag y maent yn ymddangos. Nid yw caniatáu porth 443 yn unig yn gorfodi TLS dilysedig, gan y gellir symud llawer o brotocolau testun clir i'r porth hwnnw, ac nid yw blocio porth 80 yn cynnwys testun clir ar borthau eraill. Mae modd dim-ond-HTTPS porwr hefyd wedi'i gwmpasu i'r porwr hwnnw, nid i ap post neu sgwrs ar wahân ar yr un ffôn.
Mae gosod tystysgrif rhyng-gipio i wneud i draffig edrych yn amgryptiedig yn newid ymddiriedaeth, nid yn drwsio. Mae'n disodli dilysu gweinydd yr ap gyda'ch un chi, ac nid yw ap nad oedd yn dilysu tystysgrifau o'r dechrau yn cael ei drwsio gan hynny; dim ond symud pwy sy'n gallu darllen y ffrwd a wnaethoch.
Ble mae VPN yn helpu a ble nad yw
Twnnel yw'r offeryn cywir pan fo'r gofyniad na ddylai'r rhwydwaith lleol ddysgu dim am y cysylltiad, neu fod yr ap yn cyrraedd gwasanaeth preifat na all gyrraedd fel arall. Yr offeryn anghywir ydyw ar gyfer gwneud cleient HTTP i siarad HTTPS, oherwydd mae'r cais yn gadael y twnnel yn union fel yr aeth i mewn.
Mae Android yn ychwanegu cyfyngiad ymarferol: mae'r platfform yn rhedeg un gwasanaeth VPN ar y tro. Mae ap hidlo lleol sy'n cymryd y slot hwnnw yn cystadlu â'r twnnel o bell rydych ei angen mewn gwirionedd, ac mae symud rhyngddynt yn weithred ar lefel dyfais yn hytrach nag ar lefel ap. Mae'r un slot hwnnw'n rheswm da dros roi polisi'r llwyth yn yr ap a chadw'r twnnel ar gyfer y llwybr.
Yr un achos lle mae'r ddau'n gorgyffwrdd yw gweinydd preifat rydych hefyd yn ei weithredu. Yno gall twnnel wneud y llwybr yn breifat er bod y protocol yn dal yn destun clir, sy'n lleihau esboniad ond nid yn newid beth yw'r llwyth. Triniwch hynny fel lleihau risg, nid fel amgryptio'r data.
Beth i'w brofi cyn ei alw'n floc
Dechreuwch gyda'r rhagosodiad sy'n synnu pobl: dylai ap sy'n targedu API 28 neu ddiweddarach wrthod testun clir yn barod, felly gwiriwch y lefel darged cyn ychwanegu cyfluniad sy'n dyblygu rhagosodiad. Yna profwch yr achos methiant yn fwriadol: rhaid i gais i westeiwr HTTP plaen fethu yn hytrach na llwyddo'n dawel trwy gwymp yn ôl.
adb shell dumpsys package com.example.app | grep -E 'targetSdk|versionName'
adb logcat | grep -i cleartextAr gyfer yr achos llwyddiant, cadarnhewch fod y galwad HTTPS yn dilysu cadwyn tystysgrif go iawn a bod dirprwy â thystysgrif anymddiried yn cael ei wrthod yn hytrach na'i oddef. Nid yw ysgwyd llaw sy'n llwyddo yn erbyn unrhyw dystysgrif wedi profi dim am ddiogelwch cludiant.
Ar gyfer ap trydydd parti, nodwch y ffin y gallwch ei gorfodi mewn gwirionedd, boed yn bolisi dyfais a reolir, yn rheol rhwydwaith neu'n ddim, a dywedwch hynny yn y meini prawf derbyn. Mae'r canllaw cyfluniad diogelwch Android yn rhestru rhagosodiadau'r platfform a pha gydrannau sy'n anrhydeddu'r polisi, sef y darn sy'n penderfynu a yw eich cyfluniad yn gwneud unrhyw beth o gwbl.