StrandHogg 2.0 არის საშიში ახალი Android დაუცველობა. აი, როგორ შეიძლება გავლენა მოახდინოს მას მომხმარებლებზე და როგორ შეუძლიათ დეველოპერებს დაიცვან თავიანთი აპები მისგან.
საღამოს 10:00 საათია. იცით სად არის თქვენი აქტივობები? არის ახალი დაუცველობა, რომლის გამოყენება შესაძლებელია მილიონობით Android მოწყობილობაზე და ის ასევე საკმაოდ საზიზღარია. მოკლედ, დიზაინის ეს ხარვეზი საშუალებას აძლევს თავდამსხმელს წარმოადგინოს საკუთარი აქტივობა (გვერდი) სხვა აპლიკაციის თავზე, რაც პოტენციურად აბნევს მომხმარებელს პირადი მონაცემების გაცემაში. დაუცველობას უწოდეს StrandHogg 2.0 და ახლახანს გამოაქვეყნა პრომონინორვეგიული უსაფრთხოების ფირმა.
StrandHogg 2.0 დაუცველობა თეორიულად გავლენას ახდენს ყველა Android მოწყობილობაზე, რომელიც მუშაობს Android ვერსიებზე, როგორც ძველი Honeycomb (3.0) და მდე Android 9 Pie (9.0). Დაფუძნებულია Android-ის უახლესი ვერსიის განაწილების სტატისტიკა, ეს იმას ნიშნავს ყველა Android მოწყობილობის დაახლოებით 91.8% დაუცველია StrandHogg 2.0-ის მიმართ. დაუცველობა მიენიჭა CVE-2020-0096 და მიეცა ა
სიმძიმის დონე "კრიტიკული". ის არ საჭიროებს რაიმე სპეციალურ ნებართვას მუშაობისთვის და შეუძლია თითქმის მთლიანად ფუნქციონირდეს მომხმარებლის ურთიერთქმედების გარეშე. მომხმარებელმა მხოლოდ უნდა გახსნას აპი მასში დამალული მავნე კოდით და შემდეგ ის დაუცველი იქნება ექსპლუატაციის მიმართ.პრომონი საკმარისად კეთილი იყო და გამოგვიგზავნა მათი კონცეფციის აპლიკაციის დამადასტურებელი საბუთი და მისი წყაროს კოდი, რათა უკეთ შეგვეძლოს აუხსენით, როგორ მუშაობს ექსპლოიტი, რატომ არის ის მნიშვნელოვანი მომხმარებლებისთვის და როგორ შეუძლიათ დეველოპერებს თავიანთი აპების დაცვა მის წინააღმდეგ.
Როგორ მუშაობს
თქვით, რომ იყენებთ Gmail-ს და დააწკაპუნეთ ვებ ბმულზე. თუ გადახვალთ თქვენი ბოლო აპების ეკრანზე, შეიძლება შეამჩნიოთ, რომ ვებ გვერდი, როგორც ჩანს, არის Gmail-ის „შიგნით“. გადახედვა აჩვენებს ვებსაიტს, მაგრამ აპლიკაციის ხატულა და სახელი მაინც Gmail-იდანაა. ეს არის ის, რაც ხდება, როდესაც აპი/აქტივობა იწყებს სხვა აპს/აქტივობას იმავე ამოცანაში. ახლა წარმოიდგინეთ, რომ თქვენ განზრახ არ გახსენით ეს ბმული. თქვენ, როგორც ჩანს, ეს მხოლოდ Gmail აპის ნაწილია. ეს არის ქცევა, რომელსაც StrandHogg 2.0 იყენებს.
ჩვენ უნდა გამოვტოვოთ ზოგიერთი დეტალი აქ, მაგრამ დაახლოებით როგორ მუშაობს ეს ექსპლოიტი. შემდეგი, დავუშვათ, რომ თავდამსხმელს სურს მომხმარებლის Gmail-ის შესვლა.
- მომხმარებელი ჩამოტვირთავს მავნე აპლიკაციას (რა თქმა უნდა, არ იცის, რომ ის მავნეა) და ხსნის მას.
- ფონზე, აპი ხსნის Gmail-ს, ათავსებს მის ზემოდან მსგავსი შესვლის აქტივობას და შემდეგ იწყებს სხვა აქტივობას.
- მომხმარებელი ხსნის Gmail-ს და ხედავს როგორ გამოიყურება Gmail-ის შესვლის ეკრანი, მაგრამ სინამდვილეში არის თავდამსხმელის ფიშინგ აქტივობა.
მე-2 საფეხურზე დაწყებული საბოლოო აქტივობა შეიძლება იყოს ყველაფერი, რაც თავიდან აიცილებს ეჭვს. აპს შეუძლია გააყალბოს ავარია და დაბრუნდეს მთავარ ეკრანზე, ან უბრალოდ გაიხსნას თავის მთავარ აქტივობაზე, თითქოს არაფერი მომხდარა. ერთადერთი საეჭვო რამ, რაც შეიძლება მომხმარებელმა დაინახოს, არის გახსნილი ანიმაციების სიმრავლე, როდესაც ყველა აქტივობა იწყება. ყველაზე უარესი: ის არც კი გამოიყურება, თითქოს Gmail გაიხსნა.
რა თქმა უნდა, თავდამსხმელს შეუძლია გააკეთოს მეტი, ვიდრე უბრალოდ ყალბი შესვლის ეკრანის ჩვენება. მავნე აპს შეუძლია წარმოადგინოს ნებართვების მოთხოვნა, რომელიც მოატყუებს მომხმარებელს არასასურველი ნებართვების მინიჭებაში. ნებისმიერი სპეციალური ნებართვის მოთხოვნისას, როგორიცაა ხელმისაწვდომობა, შესაძლოა მომხმარებელი საეჭვო გახადოს, შესაძლებელია დიდი ზიანი მიაყენოს რაღაც Storage Access-ს.
ტექნიკური ბიტები
ეს შემდეგი განყოფილება არის მაღალი დონის მიმოხილვა, თუ როგორ მუშაობს StrandHogg 2.0. Promon არ გამოაქვეყნებს სრულ დეტალებს კიდევ რამდენიმე თვის განმავლობაში, ასე რომ, ჩვენ ვერ გაგიზიარებთ ზუსტად როგორ განხორციელდება ეს ექსპლოიტი. თუმცა არის ტექნიკური დეტალები, რომლებზეც შეგვიძლია ვისაუბროთ.
მოკლედ, StrandHogg 2.0 იტაცებს Android-ს Context.startActivities()
API მეთოდი, სამი ინტენტის გამოყენებით.
- პირველი Intent არის ის, რომელიც უშვებს, ჩვენს მაგალითში, Gmail-ს. დროშით არის მონიშნული
Intent.FLAG_ACTIVITY_NEW_TASK
. - მეორე განზრახვა არის მავნე. ჩვენს მაგალითში, ეს არის მსგავსი შესვლის აქტივობა. ამ განზრახვას დროშები არ აქვს.
- მესამე განზრახვა არის ყურადღების გაფანტვა. ის დარწმუნდება, რომ მომხმარებელი არ ეჭვობს Gmail-ს, უბრალოდ შემთხვევით ხსნის იმ აპლიკაციის ნაცვლად, რომელსაც შეეხეთ (ანუ ის, ვინც თავდასხმას იწყებს). დროშით არის მონიშნული
Intent.FLAG_ACTIVITY_NEW_TASK
.
ყველა ეს Intents შემდეგ გადაეცემა მასივში startActivities()
მეთოდი.
მეორე განზრახვის დროშების ნაკლებობა აქ მთავარია. ამით, ჩვენ ძირითადად უბრალოდ გავიმეორეთ Gmail-ის მაგალითი ზემოდან. ამოცანა ტექნიკურად არის Gmail-ის, მაგრამ ყველაზე მაღალი აქტივობა არის თავდამსხმელის. როდესაც მომხმარებელი დააჭერს Gmail-ის საწყისი ეკრანის ხატულას, თავდამსხმელის აქტივობა გამოჩნდება Gmail-ის ნაცვლად.
კონცეფციის დადასტურება
იმ ინფორმაციით, რომელიც პრომონმა გამოგვიგზავნა, ჩვენ შევძელით მათი კონცეფციის მტკიცებულების გამეორება. აქ არის ეკრანის ჩანაწერი Samsung Galaxy Note8-დან, რომელიც მუშაობს Android 9 Pie-ზე, რომელიც აჩვენებს მას მოქმედებაში.
შერბილების ტექნიკა და საკითხები
ახლა, უბრალოდ ზემოაღნიშნულის კოდში გამეორება რეალურად არ იმუშავებს. ეს არ არის სრული მაგალითი და არის რამდენიმე სხვა რამ, რაც თავდამსხმელმა უნდა გააკეთოს, რომ ის იმუშაოს, რასაც ჩვენ ვერ ვიზიარებთ. მაგრამ მათი დამოუკიდებლად გამოცნობა განსაკუთრებით რთული არ არის და ეს არის ნაწილი იმისა, რაც ამ შეტევას ასე საშიშს ხდის. StrandHogg 2.0 არის შედარებით მარტივი ექსპლუატაციის განხორციელება და ძნელი შესარბილებელი.
შერბილება არ შეიძლება მოიცავდეს მხოლოდ ყველა აპის შავ სიაში შეყვანას, რომელიც იყენებს startActivities()
, ვინაიდან მას უამრავი ლეგიტიმური გამოყენება აქვს. ასევე ძალიან რთულია მისთვის გამოვლენის ალგორითმის ავტომატიზაცია. მავნე დეველოპერებს შეუძლიათ გამოიყენონ ყველა სახის ხრიკი, რათა StrandHogg 2.0-ის მათი განხორციელება ეფექტურად შეუმჩნეველი გახადონ ისეთი სერვისებისთვის, როგორიცაა Google Play Protect. StrandHogg 1.0 მოითხოვდა თავდამსხმელს დაემატებინა ატრიბუტი მავნე აპლიკაციის AndroidManifest.xml-ში, რომლის აღმოჩენა შედარებით ადვილი იყო. StrandHogg 2.0, მეორეს მხრივ, მთლიანად Java/Kotlin-ში ფუნქციონირებს.
ბუნდოვანების, ასახვის და მხოლოდ კოდირების სხვადასხვა სტილის გათვალისწინებით, არაპრაქტიკული ჩანს აპლიკაციის ავტომატურად გამოვლენა, რომელიც იყენებს ამ ექსპლოიტს. უფრო მეტიც, თუ მომხმარებელი StrandHogg 2.0 თავდასხმის საგანია, მათ შეიძლება არც იცოდნენ. თუ გახსნით Gmail-ს და დაინახავთ მის შესვლის ეკრანს, შეიძლება უბრალოდ იფიქროთ, რომ თქვენი სესიის ვადა ამოიწურა და დაუფიქრებლად შეიყვანეთ თქვენი შესვლის დეტალები.
როდესაც ჩვენ დავუკავშირდით Google-ს პასუხისთვის, სპიკერმა შემოგვთავაზა შემდეგი განცხადება:
”ჩვენ ვაფასებთ მკვლევართა მუშაობას და გამოვაქვეყნეთ გამოსავალი მათ მიერ გამოვლენილი პრობლემის შესახებ. გარდა ამისა, Google Play Protect აღმოაჩენს და ბლოკავს მავნე აპებს, მათ შორის ამ ტექნიკის გამოყენებით.
ეს კარგად ჟღერს და ვიმედოვნებთ, რომ მას აქვს გარკვეული ეფექტი StrandHogg 2.0 შეტევების წინააღმდეგ. თუმცა, აღსანიშნავია, რომ Google Play Protect არ გააკეთა აღმოაჩინოს ჩვენი მტკიცებულების კონცეფციის აპლიკაცია, როგორც მავნე, ხელით სკანირების შემდეგაც კი.
პრომონი ამბობს, რომ ისინი "არ შემიმჩნევია რაიმე რეალური მავნე პროგრამა, რომელიც იყენებს StrandHogg 2.0 დაუცველობას", მაგრამ არ არსებობს გარანტია, რომ ეს არის პირველი შემთხვევა, როდესაც აღმოაჩინეს ექსპლოიტი. ამ მიზეზით, Promon რეკომენდაციას უწევს დეველოპერებს, განაგრძონ და დაიცვან თავიანთი აპები მათი გამშვების აქტივობის დაყენებით launchMode
დროშა რომელიმეს singleTask
ან singleInstance
. ამ დროშებიდან რომელიმე ხელს შეუშლის ამოცანის ინექციას, რასაც StrandHogg 2.0 ეყრდნობა. თუმცა, თქვენი აქტივობის ერთ-ერთი ამ დროშის გამოყენებამ შეიძლება გამოიწვიოს გარკვეული აპების ნაკადებთან დაკავშირებული პრობლემები, ამიტომ ეს ყოველთვის არ არის სასურველი.
პრომონი ასევე ავრცელებს საკუთარ პროდუქტს "App-შიდა დაცვა Promon SHIELD-ის მიერ", რომელიც ბიბლიოთეკას ჰგავს. აპლიკაციის შემქმნელებს შეუძლიათ განახორციელონ ამოცანების მონიტორინგი თქვენი აპლიკაციის პროცესში, რათა შეამოწმონ არარეგულარული ჩანართები. იმის გამო, რომ არ არსებობს ჭეშმარიტად ეფექტური დეველოპერის ან მომხმარებლის შერბილების სტრატეგია, საკმაოდ მნიშვნელოვანია, რომ მწარმოებლებმა განახორციელონ პატჩი ამ პრობლემის სწრაფად გამოსასწორებლად.
საბედნიეროდ, პრომონმა მიჰყვა პასუხისმგებელი გამჟღავნების სახელმძღვანელო მითითებებს ამ ექსპლოიტის გასაჯაროებამდე (და ის ჯერ კიდევ არ არის სრულად საჯარო - პრომონი ელოდება 90 დღით, სანამ სრულად გაამჟღავნებს როგორ StrandHogg 2.0 მუშაობს). მას შემდეგ, Google-მა ამ ექსპლოიტის პატჩები დაურთო Android 8.0 Oreo-ზე, Android 8.1 Oreo-ზე და Android 9 Pie-ზე. 2020 წლის მაისი Android უსაფრთხოების პაჩის დონე (SPL). Android 10 და ზემოთ მომხმარებლები არ არიან დაუცველები, თუმცა ჩვენ ბოლომდე არ ვართ დარწმუნებული, რატომ არის ეს ასე. მას, სავარაუდოდ, აქვს რაიმე საერთო Android 10-ის ახალ შეზღუდვებთან აქტივობების გაშვებასთან დაკავშირებით და როგორ მოახდინა Google-ის ინტეგრირება ამოცანების დასტაში. პრომონი ამბობს, რომ „Android 10-ზე თავდასხმა სრულიად არაეფექტურია და აქტივობები იყოფა სხვადასხვა ამოცანებად და ცალკეულ დავალების დასტაებად, შესაბამისად. adb shell dumpsys activity activities
."
თუ თქვენი მოწყობილობის მწარმოებელი კვლავ უზრუნველყოფს უსაფრთხოების განახლებებს (შეგიძლიათ წაიკითხოთ მეტი როგორ მუშაობს უსაფრთხოების პაჩის პროცესი აქ), თქვენ უნდა შეაწუხოთ ისინი განახლებისთვის რაც შეიძლება მალე. წინააღმდეგ შემთხვევაში, თქვენ უბრალოდ უნდა იყოთ ფრთხილად, თუ რომელ აპებს ჩამოტვირთავთ და გაუშვით (თუმცა ამას მაინც უნდა აკეთებდეთ).
StrandHogg 2.0-ის დამატებითი დეტალებისა და გამოყენების შემთხვევებისთვის, იხილეთ ოფიციალური განცხადება Promon-ის ვებსაიტზე. Custom ROM დეველოპერებისთვის შეგიძლიათ იპოვოთ შესაბამისი AOSP ვალდებულებები StrandHogg 2.0 შეტევების თავიდან ასაცილებლად აქ და აქ.
გამჟღავნების ვადები
აქ არის გამჟღავნების ვადები, რომელიც პრომონმა გააზიარა თავის StandHogg 2.0 დოკუმენტში:
- 2019 წლის 4 დეკემბერი – შეატყობინეთ პრობლემას Google-ს
- 2019 წლის 4 დეკემბერი – გააზიარა PoC «მავნე აპი» და ვიდეო Google-თან
- 2019 წლის 4 დეკემბერი – Google-მა დაადასტურა ანგარიშის მიღება
- 2019 წლის 9 დეკემბერი - Google-მა დაადგინა დასკვნის სიმძიმე, როგორც "კრიტიკული"
- 2019 წლის 9 დეკემბერი – Google ადასტურებს, რომ მათ შეუძლიათ პრობლემის რეპროდუცირება
- 2020 წლის 14 თებერვალი – ჩვენ Google-ს ვაცნობებთ, რომ 90-დღიანი გამჟღავნება ახლოვდება მარტის დასაწყისში და ვითხოვთ სტატუსს მათი მხრიდან
- 2020 წლის 14 თებერვალი – Google პასუხობს, რომ აპრილი არის ყველაზე მალე, რაც მათ შეუძლიათ გამოასწორონ
- 2020 წლის 14 თებერვალი – ვაცნობებთ Google-ს, რომ ვმუშაობთ შემარბილებებზე
- 2020 წლის 14 თებერვალი – პასუხობს Google. ისინი მუშაობენ გამოსასწორებლებზე და გვეკითხებიან, შეგვიძლია თუ არა გაგიზიაროთ რა შემარბილებლები გირჩევთ
- 2020 წლის 17 თებერვალი – ვაცნობებთ Google-ს, რომ ჩვენ შეგვიძლია შევაჩეროთ გამჟღავნება აპრილამდე. ჩვენ ვითხოვთ CVE ნომერს
- 2020 წლის 17 თებერვალი – ჩვენ ვიზიარებთ ჩვენს შერბილების სტრატეგიებს, ასევე იმას, თუ როგორ ვგეგმავთ პლატფორმის შერბილებას
- 2020 წლის 23 მარტი – Google პასუხობს CVE ID-ით (CVE-2020-0096)
- 2020 წლის 23 მარტი – Google პასუხობს, რომ ანდროიდის შესწორების ზოგადი ხელმისაწვდომობა მაისში იქნება ხელმისაწვდომი
- 2020 წლის 23 მარტი – Google სთხოვს, განვიხილავთ თუ არა გამჟღავნების გადადებას მაისისთვის
- 2020 წლის 27 მარტი – ჩვენ ვპასუხობთ, რომ მაისამდე გადავადებთ გამჟღავნებას
- 2020 წლის 22 აპრილი – Google გვამცნობს, რომ მაისის უსაფრთხოების ბიულეტენი დაგეგმილია შეიცავდეს პატჩს დაუცველობისთვის