ஃபேக் ஐடி பாரதீ
ஆரோக்கிய சேது: ஒரு தோல்வியின் கதை
எலியட் ஆல்டர்சன்
கோவிட்19-ஐ எதிர்த்துப் போரிட, இந்திய அரசு ஆரோக்கிய சேது என்றொரு கைபேசியில் இயங்கும் தொடர்புத் தடமறி பயன்பாட்டை (contact tracing application) வெளியிட்டது. இந்தப் பயன்பாடு பிளே ஸ்டோரில் உள்ளது. 9 கோடி இந்தியர்கள் ஏற்கனவே இதை தம் கைபேசிகளில் நிறுவியிருக்கிறார்கள்.
இந்தப் பயன்பாடு தற்போது இந்தியாவில் அதிக கவனத்தை ஈர்த்து வருகிறது. நொய்டாவில், ஒருவர் தன் கைபேசியில் இந்தப் பயன்பாட்டை நிறுவவில்லை என்றால், அவர் 6 மாதங்கள் வரை சிறையில் அடைக்கப்படலாம் அல்லது ரூ .1000 வரை அபராதம் விதிக்கப்படலாம்.
***
No Aarogya Setu app? Pay Rs 1,000 fine or face 6 months jail in Noida
“If people download it instantly, we will let them go. We are doing this so that people take the order seriously and…
– indianexpress.com
***
ஏப்ரல் 3 அன்று, பயன்பாட்டை அறிமுகப்படுத்திய 2 நாட்களுக்குப் பிறகு, பயன்பாட்டின் 1.0.1 பதிப்பைப் பார்க்க முடிவு செய்தேன். அப்போது இரவு 11:54. 2 மணி நேரத்திற்கும் குறைவாகவே அதைப் பார்ப்பதில் செலவிட்டேன்.
காலை 1:27-க்கு, வெப் வியூ ஆக்டிவிட்டி (WebViewActivity) எனப்படும் ஒரு செயல்பாடு வினோதமாக நடந்து கொள்வதைக் கண்டேன். இந்தச் செயல்பாடு ஒரு வலைநோக்கு(ச்) (webview) செயல்பாடு. எனவே விதிப்படி தனியுரிமைக் கொள்கை (privacy policy) போன்ற வலைப்பக்கத்தைக் காண்பிப்பதே அதன் வேலை.
AndroidManifest.xml in Aarogya Setu v1.0.1
சிக்கல் என்னவென்றால், வெப் வியூ ஆக்டிவிட்டி அதற்கு மேலேயும் சில வேலைகளைச் செய்யக் கூடியதாக இருந்தது.
WebViewActivity in Aarogya Setu v1.0.1
onPageStarted முறை str அளவுருவின் மதிப்பைச் சரிபார்ப்பதை நீங்கள் பார்க்க முடியும். If str:
– is tel://[தொலைபேசி எண்]: இது சுழற்றியைத் திறந்து எண்ணை முன்கூட்டியே அழைக்குமாறு ஆண்டிராய்டிடம் சொல்லும்
– http அல்லது https இல்லை, எதுவும் செய்யாது
– இல்லாவிட்டால் குறிப்பிட்ட URI உடன் வலைநோக்கைத் திறக்கிறது.
இதில் எந்த வழங்கிச் சரிபார்ப்பும் (host validation) இல்லை என்பதை நீங்களே பார்க்க முடியும். எனவே, பின்வரும் கட்டளையை அனுப்பி FightCorona_prefs.xml எனப்படும் பயன்பாட்டின் உட்கோப்பைத் திறக்க முயற்சித்தேன்.
பின்வரும் காணொளியில் பார்ப்பது போல, அது சிறப்பாக வேலை செய்தது!
காணொளியைக் காண்க
இது ஏன் பிரச்சினை (தெரியுமா)? ஒரேயொரு சொடுக்கில் fight-covid-db எனப்படும் பயன்பாட்டால் பயன்படுத்தப்படும் உள்ளிடத் தரவுத்தளம் (local database) உட்பட பயன்பாட்டின் எந்தவொரு உட்கோப்பையும் தாக்குபவர் (attacker) திறக்க முடியும்.
இந்தியாவில் எங்கெங்கு எவர் நோய்வாய்ப்பட்டிருக்கிறார் என்பதை அறியும் திறன்
மே 4 அன்று, எனது ஆய்வை இன்னும் கொஞ்சம் உந்திப்பார்க்க முடிவு செய்து, தற்போதைய பதிப்பான v1.1.1 பதிப்பை ஆய்வு செய்தேன்.
நான் கவனித்த முதல் விஷயம், நான் முன்பு விவரித்திருந்த பிரச்சனையை உருவாக்குநர்கள் அமைதியாகச் சரி செய்திருந்தார்கள். உண்மையில், வெப் வியூ ஆக்ட்டிவிட்டி இனி வெளியில் இருந்து அணுக முடியாததாகி இருந்தது. AndroidManifest.xml-இலிருந்த நோக்க வடிப்பான்களை (intent filters) அகற்றியிருந்தார்கள்.
AndroidManifest.xml in Aarogya Setu v1.1.1
என் ஆய்வைத் தொடர, வேரூன்றிய கருவி (rooted device) ஒன்றிலிருந்து இந்தப் பயன்பாட்டைப் பயன்படுத்த முடிவு செய்தேன். அப்படி முயன்ற போது, நேரடியாக இந்தச் செய்தியைப் பெற்றேன்.
அந்தப் பயன்பாட்டைத் தொகுப்பிரித்து (decompile), இந்த வேர் கண்டறிதல் (root detection) செயல்படுத்தப்பட்ட இடத்தைக் கண்டுபிடித்தேன். அடுத்து அதைத் தவிர்ப்பதற்காக, எனது ஃப்ரிடா (Frida) துணுக்கில் ஒரு சிறிய செயலாற்றியை (function) எழுதினேன்.
பயன்பாட்டின் பிணையக் கோரிக்கைகளைக் (network requests) கண்காணிக்க ஏதுவாகச் செயல்படுத்தப்பட்ட சான்றிதழ் குத்திணைப்பைத் (certificate pinning) தவிர்த்து நுழைய முடிவது அடுத்த சவாலாக இருந்தது. அதைச் செய்தவுடன், பயன்பாட்டைப் பயன்படுத்தி, சுவாரசியமான ஓர் அம்சத்தைக் கண்டேன்.
இந்தப் பயன்பாட்டில், உங்கள் பகுதியில் எத்தனை பேர் சுய மதிப்பீடு செய்து கொண்டார்கள் என்பதை அறியும் திறன் உங்களுக்கு உள்ளது. நீங்கள் 500 மீ, 1 கி.மீ, 2 கி.மீ, 5 கி.மீ அல்லது 10 கி.மீ. என்று பகுதியின் ஆரத்தைத் தேர்வு செய்து கொள்ளலாம்.
பயனர் கொடுக்கப்பட்டிருக்கும் தொலைவுகளில் ஒன்றைத் தேர்வு செய்யும் போது:
– அவருடைய இருப்பிடம் அனுப்பி வைக்கப்படுகிறது: தலைப்பகுதியில் உள்ள lat (அச்சரேகை) and lon (தீர்க்கரேகை) அளவுருக்களைப் பாருங்கள்.
– ஆரம் தேர்வு செய்யப்படுகிறது: URL-இல் உள்ள dist அளவுரு மற்றும் தலைப்பகுதியில் உள்ள distance அளவுருவைப் பார்க்கவும்.
நான் கவனித்த முதல் விஷயம் என்னவென்றால், இந்த இறுதிப்புள்ளி (endpoint) நிறைய தகவல்களைத் தருகிறது:
– நோய்த்தொற்றுக்கு உள்ளானவர்களின் எண்ணிக்கை
– உடல்நிலை சரியில்லாதவர்களின் எண்ணிக்கை
– ஊடலை நேர்மறை (bluetooth positive) என அறிவிக்கப்பட்ட நபர்களின் எண்ணிக்கை
– உங்களைச் சுற்றி நடத்தப்பட்ட சுய மதிப்பீட்டின் எண்ணிக்கை
– உங்களைச் சுற்றி பயன்பாட்டைப் பயன்படுத்துபவர்களின் எண்ணிக்கை
நான் முட்டாள் என்பதால், நான் முயற்சித்த முதல் விஷயம், இந்தியாவில் எங்கிருந்தும் தகவல்களைப் பெற முடியுமா என்று இருப்பிடத்தை மாற்றியமைத்துப் பார்த்தேன். இரண்டாவதாக, பயன்பாட்டில் கிடைக்காத ஆரத்தைக் கொடுத்துத் தகவல் பெற முடியுமா என்று பார்க்க, ஆரத்தை 100 கி.மீ.க்கு மாற்றிப் பார்ப்பது. முந்தைய திரைப்பிடிப்பில் காண்பது போல, எனது இருப்பிடத்தை மும்பைக்கு அமைத்து ஆரத்தை 100 கி.மீ.க்கு அமைத்தேன். அது வேலை செய்தது!
பின்விளைவுகள் என்ன?
இந்த இறுதிப்புள்ளியின் புண்ணியத்தில், தனக்கு வேண்டிய இடத்தில், இந்தியாவில் எங்கு வேண்டுமானாலும், யார் நோய்த்தொற்றுக்கு உள்ளாகியிருக்கிறார் என்பதைத் தாக்குபவர் அறிந்து கொள்ள முடியும். எடுத்துக்காட்டாக, என் பக்கத்து வீட்டுக்காரர் உடல்நிலை சரியில்லாமல் இருக்கிறாரா என்பதை என்னால் அறிய முடியும். எனக்கு இது ஒரு தனியுரிமைப் பிரச்சினை போல் தெரிகிறது…
எனவே அதோடு சிறிது விளையாடிப் பார்க்க முடிவு செய்து, சில குறிப்பிட்ட இடங்களில், 500 மீட்டர் சுற்றளவில் யார் யார் பாதிக்கப்பட்டுள்ளார்கள் என்று பார்த்தேன்:
– பிரதமர் அலுவலகம்: {“நோய் தொற்று உடையவர்கள்”:0,”உடல்நிலை சரியில்லாதவர்கள்”:5,”ஊடலை நேர்மறை”:4,”வெற்றி”:ஆம்,”சுயமதிப்பீடு”:215,”அருகிலுள்ள பயனர்கள்”:1936}
– பாதுகாப்பு அமைச்சகம்: {“நோய்தொற்று உடையவர்கள்”:0,”உடல்நிலை சரியில்லாதவர்கள்”:5,”ஊடலை நேர்மறை”:11,”வெற்றி”:ஆம்,”சுயமதிப்பீடு”:123,”அருகிலுள்ள பயனர்கள்”:1375}
– இந்திய நாடாளுமன்றம்: {“நோய்தொற்று உடையவர்கள்”:1,”உடல்நிலை சரியில்லாதவர்கள்”:2,”ஊடலை நேர்மறை”:17,”வெற்றி”:ஆம்,”சுயமதிப்பீடு”:225,”அருகிலுள்ள பயனர்கள்”:2338}
– இந்திய இராணுவத் தலைமையகம்: {“நோய்தொற்று உடையவர்கள்”:0,”உடல்நிலை சரியில்லாதவர்கள்”:2,”ஊடலை நேர்மறை”:4,”வெற்றி”:ஆம்,”சுயமதிப்பீடு”:91,”அருகிலுள்ள பயனர்கள்”:1302}
மறைதிறவு (Disclosure)
எனது தொடக்க ட்வீட்டுக்கு 49 நிமிடங்களுக்குப் பிறகு, இந்தியத் தகவலியல் மையம் (NIC) மற்றும் இந்தியக் கணிப்பொறி நெருக்கடி மறுமொழி அணி (Indian Cert) என்னைத் தொடர்பு கொண்டன. அவர்களுக்கு ஒரு சிறிய தொழில்நுட்ப அறிக்கையை அனுப்பி வைத்தேன்.
சில மணிநேரங்களுக்குப் பின் அவர்கள் ஓர் அதிகாரப்பூர்வ அறிக்கையை வெளியிட்டனர்.
சுருக்கமாக அவர்கள் சொன்னது, “இங்கே பார்க்க எதுவும் இல்லை, தொடர்ந்து செல்லுங்கள்.”
அவர்களுக்கு என் பதில்:
– கட்டுரையில் நீங்கள் பார்த்தது போல், 5 கொடுக்கப்பட்டுள்ள (hardcoded) மதிப்புகளை விட வேறு ஆரம் பயன்படுத்துவது முற்றிலும் சாத்தியமானது, எனவே அவர்கள் தெளிவாக இந்த இடத்தில் பொய் சொல்கிறார்கள், அது அவர்களுக்குத் தெரியும். இயல்பு நிலை மதிப்பு (default value) இப்போது 1 கி.மீ. என்பதை அவர்கள் ஒப்புக் கொள்கிறார்கள், எனவே எனது அறிக்கைக்குப் பிறகு உருவாக்கத்தில் (production) மாற்றம் செய்திருக்கிறார்கள்.
– வேடிக்கையான விஷயம் என்னவென்றால், ஒரு பயனர் பல இடங்களுக்கான தரவைப் பெற முடியும் என்பதையும் அவர்கள் ஒப்புக் கொள்கிறார்கள். முக்கோணகமாக்கத்தின் (triangulation) புண்ணியத்தில், தாக்குபவர் ஒருவரின் உடல்நிலையை ஒரு மீட்டர் துல்லியத்துடன் பெற முடியும்.
– மொத்த அழைப்புகள் சாத்தியம் மனுசா.. இந்த இறுதிப் புள்ளியை அழைப்பதற்காகத்தான் என் நாளையெல்லாம் கழித்தேன், அது உங்களுக்கும் தெரியும்.
அவர்கள் என் அறிக்கைக்கு விரைவாகப் பதிலளித்து சில சிக்கல்களைச் சரிசெய்ததற்கு நான் மகிழ்ச்சியடைகிறேன், ஆனால் உண்மையிலேயே சொல்கிறேன்: பொய் சொல்வதை நிறுத்துங்கள், மறுப்பதை நிறுத்துங்கள்.
மறந்து விடாதீர் மக்களே: இந்தக் கிரகத்தை ஊடுருவுங்கள்! 🤘
And don’t forget folks: Hack the planet! 🤘
எழுதியவர்
எலியட் ஆல்டர்சன்
பிரெஞ்சு பாதுகாப்பு ஆராய்ச்சியாளர் (French security researcher). Oneplus, Wiko, UIDAI, Kimbho, Donald Daters மற்றும் பலரின் மிக மோசமான சிம்ம சொப்பனம். முற்றிலும் புத்தி பேதலித்தவர் அல்ல (Not completely schizophrenic). USANetwork-உடன் தொடர்புடையவர் அல்ல.
–
(இக்கட்டுரையை மொழிபெயர்த்த ஆசிரியர் பற்றி தகவல் தெரிந்தால் வெளியில் சொல்லிவிடவேண்டாம் என்று நான்காம் ஊரடங்கின் மீது ஆணையிட்டுக் கேட்டுக்கொள்கிறோம்)
ஹெய் ஹிந்த்!! வந்தே மாதரம்.
மூலம் : https://medium.com/@fs0c131y/aarogya-setu-the-story-of-a-failure-3a190a18e34