ზოგიერთი Marshmallow მოწყობილობა მგრძნობიარეა თაპჯეკის მიმართ, სადაც აპი აფარებს ტექსტს ნებართვის დიალოგის თავზე მომხმარებლის მოსატყუებლად.
მიუხედავად იმისა, რომ ბევრ ჩვენგანს ნერწყვდენა ახლად გამოშვებულ Android Nougat-ზე Nexus მოწყობილობებისთვის, მომხმარებელთა დიდი უმრავლესობა ჯერ კიდევ Android Marshmallow-ზეა. ექსპლუატაცია, რომლის არსებობაც მას შემდეგ დადასტურებულია მინიმუმ 2015 წლის შუა რიცხვებში ის კვლავ გავლენას ახდენს ბევრ თანამედროვე Android მოწყობილობაზე.
მავნე აპლიკაციებს შეუძლიათ ტაპჯეკი თქვენი ქმედებები შევიდა მათთვის ნებართვის მინიჭება, რომელიც არასოდეს გაგიციათ აშკარად. აი, როგორ მუშაობს ექსპლოიტი.
თავდასხმის დაბრუნება
წარმოიდგინეთ, რომ გახსნით ინსტაგრამს და ცდილობთ გააზიაროთ სურათი, რომელიც ახლახან გადაიღეთ შვებულებაში ყოფნისას. როდესაც ირჩევთ თქვენი გალერეის სურათების დათვალიერებას, Instagram გთხოვთ, მისცეთ ნებართვა თქვენს მეხსიერებაზე წვდომისთვის. მაგრამ როდესაც დააჭირეთ "დიახ" თქვენ შეხვდებით შეცდომის შეტყობინებას.
თქვენ არ შეგიძლიათ ინსტაგრამისთვის შენახვის ნებართვის მინიჭება, რადგან ჩართული გაქვთ ეკრანის აქტიური გადაფარვა - in ეს არის ერთ-ერთი მრავალი აპლიკაციიდან, რომელიც აფერადებს თქვენს ეკრანს და შეუძლია გამოიყენოს თქვენი ტელეფონი ღამით დაბრმავების გარეშე საკუთარ თავს. ეს არის Android ნებართვების სისტემის შემთხვევა
მუშაობს როგორც დაგეგმილი: იმისათვის, რომ აპლიკაციას მგრძნობიარე ნებართვა მისცეთ, თქვენ უნდა გამორთოთ ნებისმიერი ეკრანის გადაფარვა, რომელიც გაქვთ თქვენს მოწყობილობაზე.აპლიკაციებმა, რომლებსაც აქვთ თქვენს ეკრანზე დახატვის შესაძლებლობა, შესაძლოა მოგატყუოთ, რომ მიაწოდოთ მას მგრძნობიარე მონაცემები. მაგალითად, ეკრანის გადაფარვამ შეიძლება მოათავსოს ყალბი პაროლის შეყვანა რეალური შესვლის ეკრანის თავზე თქვენი პაროლების შეგროვების მიზნით. მსგავს ექსპლოიტს ჰქვია "ტაპჯაკი" და გაჩნდა და დაყენებული იყო Android-ის სხვადასხვა ვერსიებზე წლების განმავლობაში ერთ-ერთი ყველაზე ცუდი მაგალითი, რომელიც გრძელდება Android 4.0.3-მდე. მაგრამ ცოტა ხნის წინ, ექსპლოიტი დაბრუნდა Android Marshmallow-ის გაშვების დროის ნებართვის მოდელი.
დეველოპერი სახელად ივო ბანაშ შექმნა ა განაცხადი ექსპლუატაციის დემონსტრირება. მისი მუშაობის გზა საკმაოდ მარტივია - როდესაც აპლიკაცია აჩვენებს ნებართვის დიალოგს, მავნე აპლიკაციას თქვენ მიერ დაინსტალირებული გამოჩნდება სისტემის გადაფარვა, რათა დაფაროს ნებართვის დიალოგის ტექსტური ბლოკი ნებისმიერი ტექსტით სურს. უნებლიე მომხმარებელი, რომელიც დააწკაპუნებს "ნებას" ნებართვის დიალოგურ ფანჯარაზე, მოტყუებული იქნება ნებართვის მინიჭებაში, რომელიც მას სთხოვეს - მაგრამ რისთვისაც მოთხოვნა დამალული იყო მომხმარებლის მხედველობიდან. ასეთი ექსპლუატაცია მთლიანად ამარცხებს Android Marshmallow-ის ნებართვის სისტემის მიზანს, დანერგვის შემდეგ ახალი მოდელი უნდა უზრუნველყოფდა, რომ მომხმარებლებს მხოლოდ ის ნებართვები მიენიჭათ, რაზეც ისინი პირდაპირ თანხმობას აცხადებდნენ.
ახლა მე ვიცი რას ფიქრობ. თუ Android-მა აღმოაჩინა სისტემის გადაფარვა და ხელი შემიშალა Instagram-ის შენახვის ნებართვების მინიჭებაში, ეს არ შეუშლის ხელს ამ ექსპლოიტის განხორციელებას? პასუხი არის არა, ჩემს ტესტირებაში ჩანს, რომ გარკვეულ მოწყობილობებზე, რომლებიც აჩვენებენ ტექსტის გადაფარვას ნებართვის დიალოგის თავზე, არ იწვევს უსაფრთხოების მექანიზმს. proof-of-concept tapjacking აპლიკაციის შემქმნელი აცხადებს, რომ ექსპლოიტი ეფექტურია, რადგან ის ეყრდნობა მომხმარებელს, რომელიც დააინსტალირებს მეორად მავნე აპლიკაციას, რომელიც მიზნად ისახავს API დონეს 22 და ქვემოთ (წინა მარშმალოუ). ეს გამოწვეულია იმით, რომ Android Marshmallow-მდე ყველა აპლიკაციას ინსტალაციის დროს ენიჭება ნებართვა.
კარგი, ასე რომ, თუ Marshmallow-ზე ხართ, ყველაფერი რაც თქვენ უნდა გააკეთოთ, არის თავიდან აიცილოთ ნებისმიერი აპლიკაციის დაყენება, რომელსაც არ ენდობით, რომელიც მოითხოვს გადაფარვის დახატვის ნებართვას, არა? თუ Android-ის ნებართვის მოდელი მუშაობდა ისე, როგორც თავდაპირველად იყო გათვალისწინებული, მართალი იქნებით. მაგრამ ამ ექსპლუატაციის აღმოჩენის შემდეგ, აპებიც კი, რომლებიც მიზნად ისახავს API დონის 23-ს (Marshmallow), რომლებიც ითხოვენ გადაფარვის ნებართვას, არის პოტენციური რისკი.
ხარვეზი ნებართვის მოდელში?
თუ თქვენ იმ მილიონობით ადამიანთაგანი ხართ, ვინც Facebook Messenger-ს მეგობრებთან სასაუბროდ იყენებს, შემდეგ თქვენ წააწყდით Android-ის ერთ-ერთ საუკეთესო მახასიათებელს - აპების შესაძლებლობას, რომ დახატონ სხვაზე ეკრანები. რა მაგარია, რომ თქვენ შეგიძლიათ გქონდეთ ბუშტი თქვენი საყვარელი ფეისბუქის ჯგუფური ჩატით, თვალყური ადევნოთ მომხმარებელს ნებისმიერ აპლიკაციის თავზე, რომელსაც ისინი გახსნიან? მიუხედავად იმისა, რომ Facebook-ის მესენჯერმა „მცურავი აპლიკაციების“ იდეა შემოიტანა მეინსტრიმში, ეს კონცეფცია გარკვეული პერიოდის განმავლობაში არსებობდა Android-ში. აპლიკაციებს გარკვეული პერიოდის განმავლობაში შეეძლოთ შეექმნათ გადაფარვები თქვენს აპებზე, არსებობის წყალობით TYPE_SYSTEM_OVERLAY Android-ის WindowManager-ში.
Android Marshmallow-მდე, აპლიკაციებმა უნდა მოითხოვონ ნებართვა SYSTEM_ALERT_WINDOW ინსტალაციის დროს, სანამ მას შეეძლო ეკრანის თავზე გადაფარვების ჩვენება. მაგრამ ეს შეიცვალა 6.0-ის მარცვლოვანი გაშვების დროის ნებართვის მოდელის დანერგვით. ახლა მომხმარებლებმა უნდა მისცენ ნებართვები აპლიკაციებზე, როდესაც რეალურად აწარმოებენ აპს, რაც, იმედია, გაზრდის საშუალო მომხმარებელს შეუძლია დაიცვას საკუთარი პირადი მონაცემები აპლიკაციებისგან, რომლებიც საეჭვოდ ითხოვენ ერთი შეხედვით ფუნქციურად შეუთავსებელს ნებართვები.
თუმცა, SYSTEM_ALERT_WINDOW არ ჰგავს სხვა ნებართვებს. დეველოპერებს არ შეუძლიათ აჩვენონ დიალოგი პროგრამულად მოითხოვონ საბოლოო მომხმარებლის მიერ ნებართვის მინიჭება, ისევე როგორც სხვა ნებართვების უმეტესობა Marshmallow-ის მიმართულ ნებისმიერ აპლიკაციაზე. ამის ნაცვლად, თქვენ ხელით უნდა გადახვიდეთ პარამეტრების ეკრანზე და თავად ჩართოთ ნებართვა. რა თქმა უნდა, ზოგიერთი აპი, როგორიცაა Facebook Messenger, დაგეხმარებათ ამ პროცესში.
Google ამას მოითხოვს დეველოპერებისგან, რადგან მათ მიიჩნიეს, რომ ნებართვა იყო "განსაკუთრებით მგრძნობიარე."
სპეციალური ნებართვები
არის რამდენიმე ნებართვა, რომელიც არ იქცევა როგორც ჩვეულებრივი და საშიში ნებართვები. SYSTEM_ALERT_WINDOW და WRITE_SETTINGS განსაკუთრებით მგრძნობიარეა, ამიტომ აპების უმეტესობამ არ უნდა გამოიყენოს ისინი. თუ აპს ესაჭიროება ერთ-ერთი ასეთი ნებართვა, მან უნდა გამოაცხადოს ნებართვა manifest-ში და გაგზავნოს განზრახვა მომხმარებლის ავტორიზაციის მოთხოვნით. სისტემა პასუხობს განზრახვას მომხმარებლისთვის დეტალური მართვის ეკრანის ჩვენებით.
იმის გათვალისწინებით, რაც ზემოთ ვიცით ტაპჯეკის შესახებ, ეს აზრი აქვს. მაგრამ აქ არის საქმე. Google არც კი იცავს საკუთარ წესებს. Facebook Messenger-ის ეკრანის ანაბეჭდები, რომლებიც გიჩვენებთ SYSTEM_ALERT_WINDOW ნებართვის მინიჭების პროცესს, რომელიც მე გაჩვენეთ ზემოთ? ეს მოხდება მხოლოდ იმ შემთხვევაში, თუ თქვენ დააინსტალირებთ APK-ს Google Play Store-ის გარედან. თუ თქვენ დააინსტალირებთ აპლიკაციას Google Play Store-დან, SYSTEM_ALERT_WINDOW ნებართვა ავტომატურად გაიცემა.
Google-მა შესწირა უსაფრთხოება მოხერხებულობისთვის
Android Marshmallow-მდე დიდი ხნის განმავლობაში, SYSTEM_ALERT_WINDOW ითვლებოდა "საშიში"ნებართვა. Android Marshmallow 6.0-ით, ნებართვა შეიცვალა ხელმოწერა|სისტემა|აპლიკაცია რაც თავდაპირველად მოითხოვდა დეველოპერებს მომხმარებლის მიყვანა პარამეტრების ეკრანზე ნებართვის მისაცემად. მაგრამ Android ვერსიით 6.0.1, SYSTEM_ALERT_WINDOW შეიცვალა ისე, რომ Google Play Store შეუძლია ავტომატურად მისცეს ნებართვამომხმარებლის შეტყობინების გარეშე. რატომ გააკეთა Google-მა ეს ცვლილება, ჩვენთვის გაუგებარია. თავად Google არ გამოსულა და არ უთქვამს, რატომ შეიტანეს ეს ცვლილება, რაც განსაკუთრებით უცნაურია SYSTEM_ALERT_WINDOW ენის შესახებ, რომელიც ჯერ კიდევ არსებობს მათ ვებგვერდებზე.
შესაძლებელია, რომ საკმარისი დეველოპერები გაბრაზდნენ SYSTEM_ALERT_WINDOW-ში თავდაპირველი ცვლილებებით, რომელიც მოითხოვდა მომხმარებლებს ხელით მიეცათ ნებართვა, რომელიც Google-მა ჩუმად გააუქმა და უბრალოდ მიანიჭა იგი ნებისმიერ აპლიკაციას, რომელიც ამას ითხოვდა. მაგრამ ამით Google-ს აქვს შეეწირა უსაფრთხოება მოხერხებულობისთვის. არსებობს მიზეზი, რის გამოც თავად Google-მა ნებართვა ყველაზე დიდი ხნის განმავლობაში საშიშად მიიჩნია, რადგან ასეა. და Marshmallow ნებართვის tapjacking ექსპლოიტის არსებობა საკმარისი მტკიცებულებაა თანდაყოლილი საფრთხის შესახებ ამ ნებართვის ნებისმიერი აპისთვის ავტომატურად მინიჭებისას.
ეს თაღლითური ექსპლოიტი სულ ახლახანს მოექცა ჩვენს ყურადღებას, თუმცა ის უკვე მრავალი თვეა არსებობს. XDA Portal-ის გუნდს შორის მოწყობილობების შიდა ტესტირებისას ჩვენ ეს დავადასტურეთ ექსპლოიტი მუშაობს ბევრ თანამედროვე მოწყობილობაზე, რომელიც მუშაობს Android Marshmallow-ზე. აქ მოცემულია მოწყობილობების სწრაფი შეჯამება, რომლებიც ჩვენ გამოვცადეთ თითოეული შესაბამისი მოწყობილობის უახლეს ხელმისაწვდომ პროგრამულ ვერსიებზე და მუშაობს თუ არა tapjacking ექსპლოიტი. მოწყობილობები, რომლებიც მონიშნულია „დაუცველი“ ექვემდებარება დარტყმის ექსპლოიტს, ხოლო მოწყობილობები, რომლებიც მონიშნულია „არა დაუცველებს" შეუძლიათ ამოიცნონ აპი, რომელიც აჩვენებს გადაფარვას და მოითხოვონ, რომ ადრე გამორთოთ იგი გრძელდება.
- Nextbit Robin - Android 6.0.1 ივნისის უსაფრთხოების პატჩებით - დაუცველი
- Moto X Pure - Android 6.0 მაისის უსაფრთხოების პატჩებით - დაუცველი
- Honor 8 - Android 6.0.1 ივლისის უსაფრთხოების პატჩებით - დაუცველი
- Motorola G4 - Android 6.0.1 მაისის უსაფრთხოების პატჩებით - დაუცველი
- OnePlus 2 - Android 6.0.1 ივნისის უსაფრთხოების პატჩებით - არა დაუცველი
- Samsung Galaxy Note 7 - Android 6.0.1 ივლისის უსაფრთხოების პატჩებით - არა დაუცველი
- Google Nexus 6 - Android 6.0.1 აგვისტოს უსაფრთხოების პატჩებით - არა დაუცველი
- Google Nexus 6P - Android 7.0 აგვისტოს უსაფრთხოების პატჩებით - არა დაუცველი
ჯერჯერობით, ეს არის ყველა ის მოწყობილობა, რის გამოც შევძელი გუნდის გამოცდა. მე ვერ ვიპოვე რაიმე კორელაცია უსაფრთხოების პაჩის ვერსიასა და ექსპლოიტს შორის. როგორც ჩვენიდან გეტყვით უახლესი დისკუსია Android-ის უსაფრთხოების განახლებებთან დაკავშირებით, ბევრი ადამიანი მაინც არ მუშაობს უსაფრთხოების უახლეს პატჩებზე და, შესაბამისად, შესაძლოა დაუცველი იყოს ამ ექსპლოიტის მიმართ და სხვა, რაც ასახულია Android უსაფრთხოების ბიულეტენი.
Წინ მოძრაობა
ჩვენ მოგიწოდებთ, შეამოწმოთ ეს ექსპლოიტი თქვენს მოწყობილობაზე, რათა ნახოთ, ხართ თუ არა დაუცველი. ჩვენ შევადგინეთ APK-ები წყაროს კოდი, რომელიც დაკავშირებულია ზემოთ (თქვენც შეგიძლიათ ამის გაკეთება თავად) და ატვირთეთ ისინი AndroidFileHost-ში. ექსპლოიტის შესამოწმებლად, თქვენ უნდა დააინსტალიროთ ორივე მთავარი tapjacking აპლიკაცია ისევე როგორც მისი დამხმარე სერვისი. შემდეგ უბრალოდ გაუშვით მთავარი აპლიკაცია და დააჭირეთ ღილაკს "ტესტი". თუ ტექსტური ყუთი ცურავს ნებართვის დიალოგის თავზე და როდესაც დააწკაპუნებთ „დაშვებას“ გამოჩნდება თქვენი მოწყობილობის კონტაქტების სია, მაშინ თქვენი მოწყობილობა დაუცველია შეხების მიმართ. არ ინერვიულოთ, რომ მცურავი ტექსტური ყუთი მთლიანად არ ფარავს ნებართვის დიალოგს, ეს ცნების დამადასტურებელი აპლიკაცია არ არის მიზნად ისახავს სრულყოფილად აჩვენოს, თუ როგორ უნდა მოხდეს ნებართვების დიალოგის სწორად გატაცება, არამედ იმის დასამტკიცებლად, რომ ეს ნამდვილად არის შესაძლებელია.
ვიმედოვნებთ, რომ დაინერგება შესწორება, რომელიც ასწორებს ამ ექსპლოიტს ყველა Marshmallow მოწყობილობაზე და რომ OEM-ები განაახლებს ყველა მათ მოწყობილობას უსაფრთხოების უახლეს პატჩზე. იმის გამო, რომ რეალობა ისაა, რომ დაპირებული მოწყობილობების უმეტესობას Nougat-ის მისაღებად მრავალი თვე დასჭირდება, ასე რომ, უმეტესობისთვის ერთადერთი გზაა. მომხმარებლებმა ზიანისგან თავის დაღწევა ნიშნავს უსაფრთხოების უახლესი პატჩების დაყენებას ან მონიტორის აპის ნებართვების აღებას საკუთარ თავს. მაგრამ Google-ის გადაწყვეტილებით ავტომატურად მიანიჭოს პოტენციურად სახიფათო SYSTEM_ALERT_WINDOW ნებართვა, ბევრი მომხმარებლები გაუცნობიერებლად აწარმოებენ აპებს, რომლებსაც შეუძლიათ მათი ტელეფონების გატაცება, რათა უფრო და უფრო სახიფათო იყოს ნებართვები.