PSA: ფრთხილად იყავით რაიმეს ინსტალაციისგან, როდესაც SELinux დაყენებულია ნებადართულზე

Android-ის დაუსაბუთებელი ფუნქცია საშუალებას აძლევს ნებისმიერ თვითნებურ აპს მოიპოვოს root წვდომა ნებადართული SELinux გარემოზე. წაიკითხეთ მეტი რომ იცოდეთ!

Android-ის მოდიფიკაციის სამყაროში, ადამიანები მიდრეკილნი არიან განიხილონ root წვდომა, როგორც ყველა ნივთის ქვაკუთხედი. ეს საშუალებას აძლევს მომხმარებლებს აიღონ სრული კონტროლი თავიანთ მოწყობილობებზე და დაამატონ ფუნქციები, რომლებიც ყოველთვის არ არის ხელმისაწვდომი მარაგის კონფიგურაციაში. მაგრამ, როგორც ამბობენ - "დიდი ძალა მოჰყვება დიდ პასუხისმგებლობას" - არ არის გონივრული გვერდის ავლით Android-ის უსაფრთხოების მოდელი, თუ არ იცით, რაში ხართ ჩართული. Android-ის ვეტერანი ენთუზიასტებისთვის ჩვენს ფორუმებზე, თქვენ ალბათ აცნობიერებთ თქვენს მოწყობილობაზე უკანა კარების არსებობის პოტენციალს და თქვენ უფრო სავარაუდოა, რომ გაუშვით სანდო root-ჩართული მოდიფიკაცია Android-ის უახლესი ვერსიის თავზე უახლესი უსაფრთხოებით პატჩები. ამის თქმის შემდეგ, თქვენ შეიძლება იცნობდეთ რამდენიმე ადამიანს, რომლებსაც ნამდვილად არ აინტერესებთ რა root შესწორებები დააინსტალირებენ მანამ, სანამ ისინი, როგორც ჩანს, მათთვის მუშაობენ. ამიტომაც შეგიძლიათ იპოვოთ სატვირთო მოდიფიკაციები, რომლებიც მუშაობენ მხოლოდ მაშინ, როდესაც SELinux დაყენებულია ნებადართულზე, რაც, თავის მხრივ, მათ მომხმარებლებს უკიდურესად მგრძნობიარეს ხდის უსაფრთხოების საფრთხეების მიმართ.

რა არის SELinux

SELinux, ან უსაფრთხოების გაუმჯობესებული Linux, არის Linux ბირთვის უსაფრთხოების მოდული, რომელიც სპეციალურად შექმნილია უსაფრთხოების პოლიტიკის წვდომისა და მართვისთვის. თავდაპირველად დაინერგა Android 4.3 Jelly Bean-ში და დაყენებულია მისი Enforcing რეჟიმი, როგორც ნაგულისხმევი Android-იდან 4.4 KitKat, SELinux გვეხმარება წვდომის კონტროლის უფლებების აღსრულებაში და პრივილეგიების ესკალაციის თავიდან აცილების მცდელობებში თავდასხმები. მოკლედ, SELinux მოქმედებს როგორც დაბრკოლება თქვენს მოწყობილობაზე არაავტორიზებული კონტროლისთვის, როგორიცაა აპლიკაცია ან დაუცველობა, რომელიც მიზნად ისახავს მავნე წვდომის მოპოვებას. ნაგულისხმევად SELinux-ზე „Enforcing“-ზე დაყენება არის ერთ-ერთი მთავარი გზა, რომ ნორმალური მომხმარებლები დაიცვან ასეთი თავდასხმებისგან.

რატომ არ არის რეკომენდებული Permissive SELinux

გავიმეოროთ, Android მოწყობილობაზე root წვდომის მიღწევის ტიპიური გზა სულაც არ საჭიროებს SELinux-ის სტატუსის შეცვლას. SELinux რეჟიმის "Enforcing"-დან "Permissive"-ზე გადატანა განზრახ გამორთავს მოწყობილობის უსაფრთხოების ერთ-ერთ ძირითად ფუნქციას, რის გამოც. მომხმარებელმა პირდაპირ უნდა დაუშვას ეს მოხდეს სპეციალიზებული მორგებული ბირთვის დაყენებით ან არსებული ჩატვირთვის სურათის პარამეტრების შეცვლით. ცუდად კოდირებული მოდი, რომელსაც არ გააჩნია შესაბამისი SELinux პოლიტიკა, ჩვეულებრივ აიძულებს საბოლოო მომხმარებლებს გადავიდნენ ნებადართული SELinux-ზე და არსებითად აფართოებს თავდასხმის ზედაპირს. სწორედ ეს არის დეველოპერი vvb2060 აჩვენეს, როდესაც ისინი გამოაქვეყნა კონცეფციის პრივილეგიის ესკალაციის მეთოდის დადასტურება სადაც კონტროლის მოპოვების ერთადერთი მოთხოვნა არის ნებადართული SELinux.

შედი მაგიკა

მომხმარებლისთვის სრული root წვდომა საკუთარ მოწყობილობაზე, რომელსაც აქვს Android 10 (ან უფრო მაღალი) SELinux დაყენებული ნებადართული, შოკისმომგვრელი მარტივია. do: საკმარისია დააჭიროთ ინსტალაციას და "Magica" ავტომატურად მიიღებს root წვდომას სერვისში და დააინსტალირებს Magisk ჩატვირთვისას. გამოსახულება. ეს არის რაღაც ბევრად უფრო ფართო, ვიდრე თქვენი მოწყობილობის უბრალოდ შესწორება. XDA Senior Recognized Developer-ისა და Magisk-ის შემსრულებლის მიხედვით topjohnwu, ნებისმიერი თვითნებური აპლიკაცია, მავნე პროგრამის ჩათვლით, შეუძლია თქვენი მოწყობილობის სამუდამოდ დაშლა თქვენი თანხმობისა და ნებართვის გარეშე PoC-ის გამოყენებით.

თუ ტექნიკურ დონეზე გაინტერესებთ რას იყენებს Magica, topjohnwu-მ განმარტა შემდეგი Reddit პოსტი:

როდესაც SELinux ნებადართულია ჩატვირთვისას, ზიგოტმა იცის ეს და გამორთავს seccomp syscall ფილტრებს. ეს ძირითადად არ ზღუდავს სისტემის ზარებს დაშვებული მესამე მხარის პროცესებში.

Android 10+-ზე არის ახალი "დაუდოკუმენტირებული" ფუნქცია სახელწოდებით "App Zygote", სადაც მესამე მხარის აპებს უფლება აქვთ შექმნან საკუთარი Zygote "იზოლირებული სერვისებისთვის" (ასევე თითქმის დაუსაბუთებელი). ორივე "App Zygote" და "Isolated Services" არის სპეციალური ფუნქციები, რომლებიც შექმნილია Chrome/Webview*-ისთვის. App Zygote პროცესები მუშაობს სპეციალური ნებართვებით და თუ seccomp გამორთულია, მას შეუძლია დარეკოს setuid 0 და გაზარდოს მისი პრივილეგია და მოიპოვოს root წვდომა.

ის მაინც გარკვეულწილად შემზღუდველია იმასთან შედარებით, რასაც ნორმალური root გადაწყვეტილებები გვთავაზობს (მაგ. Magisk), თუმცა Android-ში უსაფრთხოების მრავალი ზომა მთლიანად ჩაიშლება, როდესაც UID=0. მაგალითად, საკმარისია მისი გამოყენება ჩატვირთვის სურათების დასაყენებლად, რაც ნიშნავს, რომ ის შეიძლება გამოყენებულ იქნას მავნე პროგრამების ინექციისთვის, როგორიცაა შეცვლილი Magisk, რათა დაეხმაროს მას "რეალური" root ნებართვების მოპოვებაში.

განახლება: რა შეუძლია თავად UID=0-ს? Android-ის ფარგლებში, თითქმის ყველა სერვისს აქვს ბრმა მწვანე შუქი, როდესაც მოთხოვნის პროცესის UID არის 0. ეს ნიშნავს, რომ ამ ძირეულ პროცესს შეუძლია უამრავი ნივთის მანიპულირება Android-ის სპეციფიკური API-ების გამოყენებით (მაგ. ActivityManager)"

* დეველოპერის მიხედვით aviraxp, ეს ორი ფუნქცია უფრო ზოგადად შექმნილია "რესურსებისა და მეხსიერების გასაზიარებლად მრავალ იზოლირებულ პროცესს შორის."

დასკვნა

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