Fortnite Installer-ის ბოროტად გამოყენება შესაძლებელია აპების ჩუმად დაყენების მიზნით Galaxy ტელეფონებზე

Fortnite Mobile Android-ის საინსტალაციო აპზე იყო ექსპლუატაცია მის პირველ გამოშვებაში. შესაძლოა ბოროტად იქნას გამოყენებული ნებისმიერი აპლიკაციის ჩუმად დაყენება Samsung Galaxy ტელეფონებზე.

Fortnite Mobile-ის გაშვება Android-ზე არც თუ ისე დიდი იყო, განსაკუთრებით მას შემდეგ ბევრი მხარდაჭერილი მოწყობილობა ნამდვილად იბრძვიან თამაშისთვის მისაღები კადრების სიხშირით. თამაში დაიწყო როგორც ა Samsung Galaxy ექსკლუზიური მხოლოდ 3 დღით. Fortnite Installer პირველად იყო ხელმისაწვდომი Samsung Galaxy Apps სანამ Epic Games საშუალებას მისცემდა არა Samsung-ის მოთამაშეებს ჩამოტვირთონ და დააინსტალირონ სრული თამაში Fortnite Installer-იდან, რომელიც მოპოვებულია Epic-ის ვებსაიტზე. მალევე მას შემდეგ, რაც Fortnite Installer გახდა ხელმისაწვდომი, Epic Games ჩუმად უბიძგა ინსტალერის განახლებას. ახლა ჩვენ ვიცით, რატომაც: მათ დააყენეს ა კაცი-დისკზე ექსპლუატაცია, რამაც შესაძლებელი გახადა მავნე აპისთვის ჩუმად დააინსტალირეთ ნებისმიერი აპლიკაცია, რომელიც მათ სურდათ Samsung Galaxy სმარტფონებზე. იმის გამო, რომ იყო გარკვეული გაუგებრობა იმის შესახებ, თუ როგორ მუშაობს ეს ხარვეზი, ჩვენ შევეცდებით გარკვევას. პირველ რიგში, ჩვენ უნდა აგიხსნათ აპლიკაციის ინსტალაციის საფუძვლები Android-ზე.


აპლიკაციის ინსტალაციის პროცესი Android სმარტფონებზე

ჩუმი ინსტალაციები პირველი მხარის წყაროებიდან

იმისთვის, რომ ჩუმად დააინსტალიროთ APK Android-ზე მომხმარებლის ნებართვის მოთხოვნის გარეშე, თქვენ უნდა გქონდეთ სისტემის დონის აპლიკაცია INSTALL_PACKAGES ნებართვა აღებულია. ამ ნებართვის მქონე აპლიკაციების მაგალითები მოიცავს Google Play Store-ს უმეტეს Android მოწყობილობებზე. პირველი მხარის აპლიკაციების მაღაზიებს Samsung-ის, Huawei-ის და სხვა მოწყობილობების მწარმოებლების მოწყობილობებზე შეიძლება ასევე ჰქონდეს INSTALL_PACKAGES ნებართვა. თუ გსურთ დააინსტალიროთ რომელიმე აპლიკაცია Google Play Store-დან, ის გაუმკლავდება ჩამოტვირთვას და ავტომატურად დააინსტალირებს აპლიკაცია თქვენთვის შემდგომი ჩარევის გარეშე მას შემდეგ რაც დააჭერთ "ინსტალაციას". (Google Play Store კი ავტომატურად ანიჭებს მუშაობის დროის გარკვეულ ნებართვებს როგორიცაა ერთი ამისთვის გადაფარვები, მაშინ როცა Play Store-ის გარეთ დაყენებულმა აპებმა უნდა სთხოვონ მომხმარებელს ამ ნებართვების მინიჭება.)

თუ გაინტერესებთ აქვს თუ არა თქვენს მოწყობილობაზე არსებულ აპს INSTALL_PACKAGES ნებართვა, შეგიძლიათ გაიგოთ ADB ბრძანების მეშვეობით.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

მაგალითად, Google Play Store-ის პაკეტის სახელია "com.android.vending". კიდევ ერთი აპლიკაცია ამ ნებართვით არის Shell პაკეტის სახელით com.android.shell. მათთვის, ვინც იყენებთ rootless სუბსტრატი ანდრომედას დანამატის მეშვეობით Android Oreo-ზე, თქვენი კომპიუტერიდან გაშვებული Andromeda სკრიპტი ინარჩუნებს გარსის პროცესს, რათა Substratum-მა გამოიყენოს იგი პაკეტების დასაყენებლად (თემის გადაფარვა) და შემდეგ გამოიყენოს OverlayManager ბრძანებები გადაფარვების გასააქტიურებლად.

გვერდითი ჩატვირთვა აპები მესამე მხარის წყაროებიდან

თუ თქვენ ცდილობთ ჩამოტვირთოთ და დააინსტალიროთ აპი პირველი მხარის აპების მაღაზიის გარედან, ჯერ უნდა ჩართოთ უცნობი ინსტალაციის წყაროები. ეს საშუალებას აძლევს პაკეტის მენეჯერის სერვისი Android ჩარჩოში (რომელსაც აქვს INSTALL_PACKAGES ნებართვა) იცოდეთ, რომ აცნობიერებთ მესამე მხარის წყაროებიდან აპების გვერდითი ჩატვირთვის რისკებს. Android Oreo-მდე მოწყობილობებზე არის ერთი გადართვა უსაფრთხოების პარამეტრებში, რათა დაინსტალირდეს უცნობი წყაროებიდან. Android Oreo-ზე და შემდეგ ვერსიებზე, აპმა, რომელიც ითხოვს APK-ის დაყენებას, უნდა გამოაცხადოს REQUEST_INSTALL_PACKAGES ნებართვა და მომხმარებელმა უნდა დააფიქსიროს ეს აპი, რათა მოითხოვოს აპის ინსტალაცია პაკეტის მენეჯერის სერვისის მეშვეობით. ვინაიდან REQUEST_INSTALL_PACKAGES არის "აპლიკაციის" ნებართვა, რაც მას ერთ-ერთ ნებართვად აქცევს, რომლის კონტროლიც შესაძლებელია პარამეტრების ნებართვების მენეჯერიდან ან cmd appops shell ბრძანება.

მას შემდეგ, რაც უცნობი წყაროებიდან ინსტალაცია ჩართულია გლობალურად ან სპეციალურად მოთხოვნილი აპლიკაციისთვის, მაშინ მომხმარებელს შეუძლია გვერდიდან ჩატვირთოს აპლიკაცია. თუმცა, პაკეტის მენეჯერი არ იძლევა აპის ჩუმად ინსტალაციის საშუალებას. პირიქით, ის შეატყობინებს მომხმარებელს, სურს თუ არა აპის დაყენება და ჩამოთვლის ნებისმიერ მგრძნობიარე ნებართვას, რომლის მინიჭებას ის ითხოვს ინსტალაციისას. თუ მომხმარებელი დათანხმდება, მაშინ აპლიკაცია დაინსტალირებულია მოთხოვნილი არაგაშვების ნებართვებით. OEM-ებს ასევე შეუძლიათ Package Manager-ის მორგება: მაგალითად, Package Manager ჩინურ ვერსიაში Huawei-ს EMUI 5-ს აქვს APK-ის სკანირების ფუნქცია, რათა გადაწყვიტოს არის თუ არა ის უსაფრთხო და აკონტროლოს რა ნებართვები აქვს. მინიჭებული ადრე ინსტალაცია. მე დავინახე ეს Honor Note 8-ზე, რომელიც მუშაობს ჩინეთიდან იმპორტირებულ EMUI 5-ზე, თუმცა დარწმუნებული ვარ, რომ სხვა ჩინურ Huawei და Honor მოწყობილობებსაც აქვთ ეს ფუნქცია თავიანთ პაკეტების მენეჯერებში.

ნებისმიერ შემთხვევაში, ეს აჯამებს განსხვავებას აპლიკაციის დაყენებას დამტკიცებული, პირველი მხარის წყაროდან და მესამე მხარის წყაროდან. თუ ცდილობთ დააინსტალიროთ აპი Play Store-დან ან ექვივალენტური აპების მაღაზიიდან INSTALL_PACKAGES-ით ნებართვით, ის ჩუმად გაუმკლავდება ინსტალაციას დამოუკიდებლად მომხმარებლის შემდგომი ჩარევის გარეშე დაწყების შემდეგ ჩამოტვირთვა. მაგრამ თუ ჩამოტვირთავთ APK-ს XDA Labs-დან, APKMirror-დან ან მესამე მხარის სხვა წყაროებიდან, სტანდარტული პაკეტის ინსტალერი გაუმკლავდება ინსტალაციას და მოუწოდებს მომხმარებელს დააინსტალიროს ეს პაკეტი. მაშ, სად შემოდის Fortnite Installer და რატომ არის ეს ყველაფერი აქტუალური?

ხარვეზი Fortnite-ის ინსტალაციის პროცესში

დღეს ადრე Google გამოავლინა დაუცველობა მათ აღმოაჩინეს Fortnite Installer-ის პირველი ვერსიით. დაუცველობა გამოვლინდა Exynos Samsung Galaxy S8+-ზე (dream2lte), მაგრამ ასევე შეეხო ყველა სხვა Samsung Experience მოწყობილობას, მათ შორის Samsung Galaxy Note 9 და Samsung Galaxy Tab S4. დაუცველობა საშუალებას აძლევს ა უკვე დაინსტალირებული მავნე აპლიკაცია ისარგებლოს იმით, თუ როგორ ცდილობს Fortnite ინსტალერი დააინსტალიროს Fortnite პირველად Samsung Galaxy მოწყობილობებზე. Samsung Galaxy Apps-ში პირადი API-ის გამოყენებით, Fortnite ინსტალერი გვერდს უვლის მომხმარებლისთვის სტანდარტული პაკეტის ინსტალერის მეშვეობით მოთხოვნის აუცილებლობას, დააინსტალიროს Fortnite. ეს იმიტომ, რომ Galaxy Apps-ს აქვს ნებართვა, რომელიც მას სჭირდება ინსტალაციის ჩუმად გასატარებლად. არაფერი იქნება ცუდი ამ ჩუმად ინსტალაციის პროცესში, თუ აპლიკაცია, რომელიც ჩუმად არის დაინსტალირებული, არის ნამდვილი Fortnite. მაგრამ იმის გამო, თუ სად ინახავდა Fortnite Installer-მა ჩამოტვირთული APK ფაილი Fortnite თამაშისთვის, ის ადვილად გამოსაყენებელი იყო.

Samsung Galaxy Apps-ის AndroidManifest აჩვენებს, რომ Galaxy Apps-ს აქვს უფლება დააინსტალიროს სხვა აპლიკაციები დამოუკიდებლად, სტანდარტული პაკეტის ინსტალერის გვერდის ავლით.

Issue Tracker-ის მოხსენების თანახმად, Fortnite Installer ჩამოტვირთავს Fortnite Mobile APK-ს /sdcard/Android/data/com.epicgames.portal/files/downloads/. ეს განიხილება "გარე საცავი" Android-ზე, რადგან /sdcard არის სიმბოლური ბმული /data/media/CURRENT_USER და /sdcard იყო სახელი, რომელიც გამოიყენებოდა Android-ის პირველ დღეებში, როდესაც აპის მონაცემები იყო ინახება ფიზიკურ SD ბარათებზე. დღესდღეობით, აპლიკაციის მონაცემები ჩვეულებრივ ინახება აპლიკაციის სპეციფიკურ დირექტორიაში /data/data/-ში და თითოეულ აპს აქვს წვდომა მხოლოდ საკუთარ /data/data დირექტორიაში არსებულ ფაილებზე. ამრიგად, თუ Fortnite Installer-ი შეინახავდა ჩამოტვირთულ Fortnite APK-ს საკუთარ /data/data/ დირექტორიაში, ნებისმიერი აპისთვის შეუძლებელი იქნებოდა წაკითხვის ნებართვების გარეშე (მაგ. root წვდომის გარეშე) რომ იცოდეთ რა ხდება ამ დირექტორიაში.

თუმცა, Fortnite Installer-ის შემდეგ შეინახა გადმოწერილი APK გარე მეხსიერებაში, მისი მონიტორინგი და გადაწერა შესაძლებელია ნებისმიერი აპი გარე მეხსიერების წაკითხვის ნებართვით. ჩვეულებრივ, აპები წერენ /data/media-ზე, „ვირტუალურ SD ბარათზე“, როდესაც ინახავენ ფაილებს, რომლებზეც წვდომა მომხმარებელს სჭირდება MTP-ის ან სხვა აპების საშუალებით. იმისათვის, რომ აპმა წაიკითხოს ან ჩაწეროს /data/media-ში, მას უნდა ჰქონდეს READ_EXTERNAL_STORAGE და WRITE_EXTERNAL_STORAGE ნებართვები შესაბამისად (ორივე ერთსა და იმავე ნებართვის ჯგუფშია და შესაბამისად მინიჭებული ერთად). Android 4.4 KitKat-მდე, აპების უმეტესობა ითხოვდა ამ ნებართვებს ინსტალაციისას, რადგან წინააღმდეგ შემთხვევაში, ისინი არ იქნებოდნენ შეუძლია წაიკითხოს ან ჩაწეროს ფაილები მათი პაკეტის დანიშნულ გარე შენახვის დირექტორიაში /data/media/.../Android/. დანერგვით FUSE FAT-on-sdcard სტილის დირექტორიაში ნებართვების ემულაცია Android 4.4 KitKat-ში, აპებს აღარ სჭირდებათ რაიმე ნებართვა გარე მეხსიერების დანიშნულ დირექტორიაში არსებულ ფაილებზე წვდომისთვის. ნებისმიერი სხვა დირექტორიაში ფაილებზე წვდომას მაინც დასჭირდება გარე მეხსიერების ნებართვები, რაც შეიძლება გააკეთოს მავნე აპმა Fortnite-ის ინსტალაციის პროცესის გასატაცებლად.

როგორც ქვემოთ მოცემულია ვიდეოში, მავნე აპი READ_EXTERNAL_STORAGE ნებართვით აკონტროლებს Fortnite Installer-ის ჩამოტვირთვის დირექტორიას გარე მეხსიერებაში. როდესაც ის აღმოაჩენს, რომ ჩამოტვირთვა დასრულებულია და თითის ანაბეჭდი დადასტურებულია, ის ცვლის ჩამოტვირთა Fortnite პაკეტი თავისი მავნე პაკეტით WRITE_EXTERNAL_STORAGE-ის წყალობით ნებართვა. თუმცა, იმის გამო, რომ Samsung Galaxy Apps ამოწმებს Fortnite APK-ს ინსტალაციამდე (...ის უბრალოდ ამოწმებს, არის თუ არა პაკეტის სახელი "com.epicgames.fortnite"), შესაძლებელია გქონდეთ Galaxy აპები ჩუმად დააინსტალირეთ მავნე პაკეტი ფონზე მომხმარებლის ჩარევის ან შეტყობინების გარეშე— სანამ მავნე პაკეტის სახელი იყო „com.epicgames.fortnite“. კიდევ უფრო უარესი, თუ ეს მავნე პაკეტი მიზნად ისახავს SDK 22 ან უფრო დაბალ დონეს (Android 5.1 Lollipop და უფრო ადრე), ის იქნებოდა ავტომატურად მიენიჭება მის მანიფესტში განსაზღვრული ყველა ნებართვა, რადგან გაშვების დროის ნებართვები სავალდებულოა მხოლოდ იმ აპებისთვის, რომლებიც მიზნად ისახავს SDK დონეს 23 და ზემოთ (Android 6.0 Marshmallow და მოგვიანებით).

მაგრამ რა მოხდებოდა არასამსუნგის მოწყობილობებზე? კარგი, რადგან Samsung Galaxy Apps არ არის დაინსტალირებული არასამსუნგის მოწყობილობებზე, მავნე APK არ იქნება ჩუმად დაინსტალირებული ფონზე. Fortnite Installer არის მესამე მხარის აპლიკაცია და, შესაბამისად, პირველ რიგში უნდა სთხოვოს მომხმარებელს ჩართოს დააინსტალირეთ უცნობი წყაროებიდან და შემდეგ გაუგზავნეთ მოთხოვნა პაკეტის ინსტალერს, რომ დააინსტალიროთ ყალბი Fortnite APK. შემდეგ დამოკიდებული იქნება მომხმარებელზე დააწკაპუნოს „ინსტალაციაზე“, როდესაც ჰკითხავენ, სურთ თუ არა აპის დაყენება. ეს პრობლემურია, მიუხედავად იმისა, რომ Samsung-ის ტელეფონებს არ ემუქრებათ მავნე აპლიკაციის ჩუმად დაყენება ფონზე. საშუალო მომხმარებელი არ იქნება უფრო ბრძენი, თუ მავნე APK შემუშავებული "Fortnite" სახელით და Fortnite აპლიკაციის ხატულა წარედგინება მათ ინსტალაციისთვის.

მიუხედავად ამისა, არსებობს მკაფიო განსხვავება Samsung Galaxy სმარტფონებსა და არა Samsung-ის სმარტფონებზე ამ ხარვეზის გამოყენებას შორის. პირველი არის Man-in-the-Disk თავდასხმა, რომელიც ასევე იყენებს ფარული სისტემის API-ს, რათა ჩუმად დააინსტალიროს ნებისმიერი აპლიკაცია. ფონი, ნებისმიერი ნებართვით და მომხმარებლის მოტყუების საჭიროების გარეშე, რომ იფიქროს, რომ ისინი აყენებენ ყალბ Fortnite-ს APK. ეს უკანასკნელი არის ა სტანდარტული შეტევა Man-in-the-Disk, რომელიც ასევე შეიძლება მოხდეს სხვა აპებზე, რომლებიც ინახავს APK-ებს ან სხვა მნიშვნელოვან მონაცემებს გარე შენახვის საქაღალდეებში, როგორც ამას ბოლოდროინდელი აჩვენა CheckPoint პოსტი. ისე ხდება, რომ ფარული Galaxy Apps API-ის წყალობით, ეს Man-in-the-Disk შეტევა უფრო საშიშია Samsung Galaxy მოწყობილობებზე.

ხარვეზის გამოსწორება

Epic Games-ის დამსახურებად, მათ ძალიან სწრაფად უპასუხეს Google Issue Tracker-ის ანგარიშს და განაახლეს 2.1.0 ვერსიის განახლება რაც შეიძლება სწრაფად. გამოსწორება მარტივი იყო - უბრალოდ შეინახეთ ჩამოტვირთული Fortnite APK Fortnite Installer-ის შიდა მეხსიერების დირექტორიაში /data/data და არა მისი გარე შენახვის დირექტორიაში /data/media. Epic Games-ის ინჟინერმა მოითხოვა ხარვეზის გამჟღავნება 90 დღის შემდეგ, თუმცა Google-მა უარყო და გამოაქვეყნა საკითხი გამოსწორების გამოქვეყნებიდან 7 დღის შემდეგ. Epic Games-ის აღმასრულებელი დირექტორი ტიმ სუინი იყო არა კმაყოფილი ვარ უსაფრთხოების თავდაპირველი მოხსენებიდან მის გამჟღავნებამდე სწრაფი შემობრუნების დროით. მან შესთავაზა შემდეგი განცხადება Android Central.

Epic გულწრფელად აფასებს Google-ის ძალისხმევას, ჩაატაროს Fortnite-ის უსაფრთხოების სიღრმისეული აუდიტი, ჩვენი გამოუშვით Android-ზე და გაუზიარეთ შედეგები Epic-ს, რათა ჩვენ სწრაფად გამოვუშვათ განახლება მათ ხარვეზის გამოსასწორებლად აღმოაჩინა.

თუმცა, Google-ის მხრიდან უპასუხისმგებლო იყო ხარვეზის ტექნიკური დეტალების საჯაროდ გამხელა ასე სწრაფად, მაშინ როცა ბევრი ინსტალაცია ჯერ კიდევ არ იყო განახლებული და ჯერ კიდევ დაუცველი იყო.

Epic-ის უსაფრთხოების ინჟინერმა, ჩემი მოწოდებით, მოითხოვა Google-ის საჯარო გამჟღავნების დაგვიანება ტიპიური 90 დღის განმავლობაში, რათა დრო დაეთმო განახლების უფრო ფართოდ დაინსტალირებას. Google-მა უარი თქვა. თქვენ შეგიძლიათ წაიკითხოთ ეს ყველაფერი https://issuetracker.google.com/issues/112630336

Google-ის უსაფრთხოების ანალიზის მცდელობები დაფასებულია და სარგებელს მოუტანს Android პლატფორმას, თუმცა Google-ის მსგავსი მძლავრი კომპანია უფრო მეტად უნდა ივარჯიშოს ამაზე პასუხისმგებელი გამჟღავნების დრო და არ შეუქმნას საფრთხე მომხმარებლებს მისი კონტრ-PR ძალისხმევის დროს Epic-ის მიერ Fortnite-ის გავრცელების წინააღმდეგ. Google Play.

ვერ ვისაუბრებ იმაზე, თუ რამდენ Samsung Galaxy მოწყობილობას აქვს ჯერ კიდევ ძველი Fortnite ინსტალერი. შესაძლოა Epic Games-მა ამ მომხმარებლებს უთხრას განაახლონ ინსტალაცია Fortnite Mobile-ში შეტყობინების გაგზავნით. Firebase-ის მომხიბლავი ახალი აპს შეტყობინებების ფუნქცია შეეძლო ხრიკის გაკეთება. თუმცა, ეს ალბათ არც ისე დიდი საქმეა, რადგან, თუ მომხმარებელმა ძველი ინსტალერით უკვე ჩამოტვირთა ლეგიტიმური Fortnite, მაშინ ნებისმიერი MITD შეტევა არ იმუშავებს, რადგან მავნე APK ვერ დაინსტალირდება არსებული Fortnite-ის თავზე ინსტალაცია. ნებისმიერ შემთხვევაში, ამ ხარვეზის აღმოჩენა ასე ადრე Fortnite-ის Android-ზე გამოშვების შემდეგ — როცა ჯერ კიდევ ბევრი კამათია Epic Games-ის შესახებ. Google Play-ზე უარის თქმის გადაწყვეტილება- რა თქმა უნდა, ეხმარება არგუმენტს, რომ Epic Games-ის გადაწყვეტილება იყო დაუფიქრებელი. ეს იყო თუ არა Google-ის განზრახვა ამ საკითხის ასე სწრაფად გავრცელების უკან, ჩვენ ვერასოდეს გავიგებთ.