PSA: โปรดระวังการติดตั้งสิ่งใดๆ โดยที่ SELinux ตั้งค่าเป็นอนุญาต

click fraud protection

คุณลักษณะ Android ที่ไม่มีเอกสารช่วยให้แอปใดๆ ก็ตามสามารถเข้าถึงรูทบนสภาพแวดล้อม SELinux ที่อนุญาตได้ อ่านต่อเพื่อทราบข้อมูลเพิ่มเติม!

ในโลกของการดัดแปลง Android ผู้คนมักจะถือว่าการเข้าถึงรูทเป็นรากฐานที่สำคัญของทุกสิ่ง ช่วยให้ผู้ใช้สามารถควบคุมอุปกรณ์ของตนได้อย่างสมบูรณ์ และเพิ่มคุณสมบัติที่ไม่มีอยู่ในการกำหนดค่าสต็อกเสมอไป แต่อย่างที่พวกเขาพูดกันว่า "พลังอันยิ่งใหญ่มาพร้อมกับความรับผิดชอบอันยิ่งใหญ่" มันไม่ฉลาดเลยที่จะข้ามรูปแบบความปลอดภัยของ Android เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่ สำหรับผู้ที่ชื่นชอบ Android รุ่นเก๋าในฟอรัมของเรา คุณอาจทราบถึงความเป็นไปได้ที่จะมีแบ็คดอร์บนอุปกรณ์ของคุณ และ คุณมีแนวโน้มที่จะใช้งาน mod ที่เปิดใช้งานรูทที่เชื่อถือได้ นอกเหนือจาก Android เวอร์ชันล่าสุดพร้อมความปลอดภัยล่าสุด แพทช์ ต้องบอกว่าคุณอาจรู้จักบางคนที่ไม่สนใจว่าพวกเขาจะติดตั้งการปรับแต่งรูตใดตราบใดที่พวกเขาดูเหมือนจะได้ผล นี่คือเหตุผลที่คุณยังคงพบ Mods จำนวนมากที่ใช้งานได้เฉพาะเมื่อ SELinux ถูกตั้งค่าเป็น Permissive เท่านั้น ซึ่งจะทำให้ผู้ใช้มีความเสี่ยงต่อภัยคุกคามด้านความปลอดภัยอย่างมาก

SELinux คืออะไร

SELinux หรือ Linux ที่ปรับปรุงความปลอดภัยเป็นโมดูลความปลอดภัยเคอร์เนล Linux ที่ออกแบบมาเพื่อการเข้าถึงและการจัดการนโยบายความปลอดภัยโดยเฉพาะ เปิดตัวครั้งแรกใน Android 4.3 Jelly Bean และตั้งค่าเป็นโหมดบังคับใช้เป็นค่าเริ่มต้นตั้งแต่ Android 4.4 KitKat, SELinux ช่วยบังคับใช้สิทธิ์การควบคุมการเข้าถึงและความพยายามในการป้องกันการเพิ่มระดับสิทธิ์ การโจมตี โดยสรุป SELinux ทำหน้าที่เป็นอุปสรรคในการควบคุมอุปกรณ์ของคุณโดยไม่ได้รับอนุญาต เช่น แอพหรือช่องโหว่ที่มีเป้าหมายเพื่อเข้าถึงรูทอย่างประสงค์ร้าย การตั้งค่า SELinux เป็น "บังคับใช้" ตามค่าเริ่มต้นเป็นหนึ่งในวิธีสำคัญที่ผู้ใช้ปกติจะได้รับการปกป้องจากการโจมตีดังกล่าว

เหตุใดจึงไม่แนะนำให้ใช้ SELinux ที่อนุญาต

ขอย้ำอีกครั้งว่าวิธีทั่วไปในการเข้าถึงรูทบนอุปกรณ์ Android ไม่จำเป็นต้องเปลี่ยนสถานะ SELinux การเปลี่ยนโหมด SELinux จาก "บังคับใช้" เป็น "อนุญาต" เป็นการจงใจปิดการใช้งานคุณสมบัติความปลอดภัยที่สำคัญอย่างหนึ่งบนอุปกรณ์ ซึ่งเป็นสาเหตุว่าทำไม ผู้ใช้ต้องอนุญาตให้เกิดขึ้นอย่างชัดเจนโดยการติดตั้งเคอร์เนลแบบกำหนดเองเฉพาะหรือแก้ไขพารามิเตอร์ของอิมเมจสำหรับบูตที่มีอยู่ ม็อดที่มีโค้ดไม่ดีซึ่งขาดนโยบาย SELinux ที่เหมาะสม มักจะบังคับให้ผู้ใช้ปลายทางเปลี่ยนไปใช้ SELinux ที่อนุญาต และขยายขอบเขตการโจมตีเป็นหลัก นั่นคือสิ่งที่นักพัฒนา vvb2060 แสดงให้เห็นเมื่อพวกเขา เผยแพร่หลักฐานวิธีการยกระดับสิทธิ์ของแนวคิด โดยที่ข้อกำหนดเดียวในการควบคุมคือการอนุญาต SELinux

เข้าเมจิก้า

สำหรับผู้ใช้ที่สามารถเข้าถึงรูทได้อย่างสมบูรณ์บนอุปกรณ์ของตนเองที่ใช้ Android 10 (หรือสูงกว่า) โดยที่ SELinux ตั้งค่าให้อนุญาตนั้นเป็นเรื่องง่ายอย่างน่าตกใจ ทำ: สิ่งที่คุณต้องทำคือกดติดตั้ง จากนั้น "Magica" จะได้รับสิทธิ์การเข้าถึงรูทในบริการโดยอัตโนมัติ และติดตั้ง Magisk ลงในการบู๊ต ภาพ. นี่เป็นสิ่งที่มีขอบเขตกว้างกว่าการปรับแต่งอุปกรณ์ของคุณมาก ตามที่ XDA Senior Recognized Developer และ Magisk ผู้ดูแล ท็อปจอห์นวู, แอปใดๆ ก็ตาม รวมถึงมัลแวร์ สามารถรูทอุปกรณ์ของคุณอย่างถาวรโดยไม่ได้รับความยินยอมและอนุญาตจากคุณ โดยใช้ PoC

หากคุณสงสัยในระดับทางเทคนิคว่า Magica ใช้ประโยชน์จากอะไร topjohnwu อธิบายสิ่งต่อไปนี้ โพสต์ Reddit:

“เมื่ออนุญาต SELinux ระหว่างการบู๊ต ไซโกเทตจะรู้สิ่งนี้และปิดการใช้งานตัวกรอง seccomp syscall โดยพื้นฐานแล้วจะไม่จำกัดว่าการเรียกของระบบใดที่ได้รับอนุญาตในกระบวนการของบุคคลที่สาม

บน Android 10+ มีฟีเจอร์ "ไม่มีเอกสาร" ใหม่ที่เรียกว่า "App Zygote" ซึ่งแอปของบุคคลที่สามได้รับอนุญาตให้วางไข่ Zygote ของตัวเองสำหรับ "บริการที่แยกออกมา" (และเกือบจะไม่มีเอกสารด้วย) ทั้ง "App Zygote" และ "Isolated Services" เป็นคุณสมบัติพิเศษที่ออกแบบมาสำหรับ Chrome/Webview* กระบวนการของแอป Zygote ทำงานด้วยการอนุญาตพิเศษ และเมื่อปิดใช้งาน seccomp ก็สามารถเรียก setuid 0 และเพิ่มระดับสิทธิ์และเข้าถึงรูทได้

ยังคงมีข้อจำกัดบางประการเมื่อเทียบกับโซลูชันรูทปกติที่มีให้ (เช่น Magisk) อย่างไรก็ตาม มาตรการรักษาความปลอดภัยมากมายใน Android จะพ่ายแพ้อย่างสิ้นเชิงเมื่อ UID=0 ตัวอย่างเช่น การใช้แพตช์อิมเมจสำหรับบูตก็เพียงพอแล้ว ซึ่งหมายความว่าสามารถใช้เพื่อแทรกมัลแวร์ เช่น Magisk ที่ได้รับการดัดแปลง เพื่อช่วยให้ได้รับสิทธิ์รูท "ของจริง"

อัปเดต: UID=0 สามารถทำอะไรได้บ้าง ภายในเฟรมเวิร์กของ Android บริการเกือบทั้งหมดจะมีไฟเขียวเมื่อ UID ของกระบวนการร้องขอเป็น 0 ซึ่งหมายความว่ากระบวนการรูทนี้สามารถจัดการสิ่งต่าง ๆ มากมายโดยใช้ API เฉพาะของ Android (เช่น ActivityManager)

* ตามที่นักพัฒนา อะวิแร็กซ์คุณสมบัติทั้งสองนี้ได้รับการออกแบบโดยทั่วไปมากกว่า "สำหรับการแชร์ทรัพยากรและหน่วยความจำระหว่างกระบวนการแยกหลายกระบวนการ"

บทสรุป

เมื่อพิจารณาถึงอันตรายที่ไม่อาจแก้ไขได้ซึ่งอาจเกิดขึ้นกับผู้ใช้ที่เป็นเป้าหมายของมัลแวร์ในสภาพแวดล้อม SELinux ที่ได้รับอนุญาต เราขอแนะนำอย่างยิ่งให้ทุกคนบังคับใช้ต่อไป เว้นแต่จะจำเป็นจริงๆ แม้ว่าเราจะโชคดีที่มีการพิสูจน์แนวคิดการหาประโยชน์ แต่เราไม่ทราบว่ามีผู้สร้างมัลแวร์กี่คนที่รู้เกี่ยวกับเส้นทางการโจมตีนี้แล้ว ท้ายที่สุดแล้ว เหยื่อจะยังคงเพิกเฉยต่อสถานะที่ถูกบุกรุกของอุปกรณ์ของตนต่อไป หากพวกเขาไม่ทำเช่นนั้น เป็นสักขีพยานในการใช้งานช่องโหว่ซึ่งทำได้ไม่ยากสำหรับแอปโกงที่มีรูทแบบถาวร เข้าถึง.