สมาร์ทโฟนจากผู้ผลิตหลายรายเช่น LG, OnePlus, Huawei, Xiaomi ถูกพบว่าทำให้ข้อมูลกระบวนการของแอพรั่วไหล นี่คือความหมาย
ใช้ระบบปฏิบัติการมือถือ Android บน กว่า 2 พันล้านเครื่อง ในแต่ละเดือนโดยทั้งผู้บริโภคทั่วไปและผู้ที่ชื่นชอบเทคโนโลยี แม้ว่าจำนวนผู้ที่ปลดล็อค bootloader และรูทสมาร์ทโฟนจะค่อนข้างน้อยก็ตาม เมื่อเทียบกับประชากรโดยรวมของผู้ใช้ Android แล้ว ยังมีพวกเราอีกจำนวนมากในฟอรัมเช่น XDA และ เรดดิต. Magisk เป็นเครื่องมือที่ขาดไม่ได้สำหรับชุมชนคนซ่อมแซม ให้การเข้าถึงรูทแบบไร้ระบบและมีเครื่องมืออย่าง MagiskHide เพื่อให้ผู้ใช้ที่รูทสามารถใช้แอพ เกม และบริการที่พวกเขาเพลิดเพลินต่อไปได้โดยไม่มีข้อจำกัด อย่างไรก็ตาม เกมอนิเมะยอดนิยมได้ใช้ช่องโหว่ด้านความปลอดภัยของระบบอย่างชาญฉลาดเพื่อหลีกเลี่ยงการตรวจจับการต่อต้านรูทของ Magisk ต่อไปนี้คือวิธีการทำงานและอุปกรณ์ใดบ้างที่ได้รับผลกระทบจากช่องโหว่ด้านความปลอดภัยนี้
- เกมใช้จุดบกพร่องเพื่อตรวจสอบว่าอุปกรณ์ได้รับการรูทหรือไม่ หากอุปกรณ์ถูกรูท เกมจะบล็อกผู้ใช้จากการเล่น
- ข้อบกพร่องนี้ทำให้แอปสามารถอ่านสถานะของแอปอื่นๆ ในหน่วยความจำได้โดยไม่จำเป็นต้องมีการอนุญาตพิเศษใดๆ ข้อบกพร่องนี้ไม่อนุญาตให้แอปขโมยข้อมูลใดๆ จากแอปอื่นๆ แมลงไม่รุนแรงและไม่เป็นอันตราย
- Google ทราบแล้ว ของปัญหาและได้อัปเดตเครื่องมือทดสอบเพื่อให้แน่ใจว่าอุปกรณ์ทั้งหมดได้รับการปกป้อง
พื้นหลัง
เกมอนิเมะยอดนิยมชื่อ Fate/Grand Order บล็อกผู้ใช้ที่รูทไม่ให้พยายามเล่นเกม นักพัฒนา XDA ที่ได้รับการยอมรับ ท็อปจอห์นวูก่อนหน้านี้ผู้พัฒนานำของ Magisk ค้นพบวิธีการ เพื่อหลีกเลี่ยงการตรวจจับรูทของ Fate/Grand Order แต่วิธีแก้ปัญหาของเขาใช้ไม่ได้กับ OnePlus 6 แม้ว่าเขาจะพยายามอย่างเต็มที่แล้วก็ตาม ด้วยความมุ่งมั่นที่จะไม่ยอมแพ้ นักพัฒนาจึงวิเคราะห์ Fate/Grand Order เพื่อดูว่ามันยังคงตรวจจับรูทบนอุปกรณ์ OnePlus ของเขาได้อย่างไร ตามที่เขาอธิบายไว้ในของเขา โพสต์ขนาดกลางสิ่งนี้ทำให้เขาค้นพบช่องโหว่ด้านความปลอดภัยที่ดูเหมือนว่า Fate/Grand Order จะใช้ในทางที่ผิดเพื่อตรวจหาการเข้าถึงรูทบนอุปกรณ์ OnePlus ต่อไป
ราคา: ฟรี
4.
Procfs และ Android
บนระบบปฏิบัติการที่ใช้ Unix มีระบบไฟล์พิเศษที่เรียกว่า "procfs" ซึ่งมีข้อมูลอยู่ กระบวนการ (นึกถึงแอป) เช่น การใช้หน่วยความจำ (คิดว่า RAM) สถานะ (ไม่ว่ากระบวนการกำลังทำงานอยู่หรือไม่ นอนหลับ ฯลฯ) บนระบบปฏิบัติการที่ใช้ Unix ส่วนใหญ่ ผู้ใช้และแอปจะสามารถเข้าถึง procfs เพื่อดูว่าประเภทใดได้อย่างง่ายดาย แอพและบริการกำลังทำงานอยู่บนระบบ (คิดว่ามันเหมือนกับ Task Manager ของ Window) อย่างไรก็ตาม Google เริ่มที่จะ ล็อคการเข้าถึง procfs เริ่มต้นใน Android 7.0 Nougat ก่อนใช้ Android Nougat แอปอย่าง SystemPanel สามารถรวบรวมข้อมูลว่าแอปใดทำงานอยู่โดยไม่ต้องมีการอนุญาตพิเศษใดๆ หลังจาก Android Nougat แอปจำเป็นต้องใช้ API เช่น สถิติการใช้งาน หรือ บริการการเข้าถึงซึ่งทั้งสองอย่างนี้ถูกควบคุมโดยสิทธิ์ที่ผู้ใช้จะต้องได้รับ
ราคา: ฟรี
4.2.
Google ป้องกันไม่ให้แอปอ่านสถานะของแอปอื่นๆ ผ่าน procfs โดยเมานต์ /proc ด้วยแฟล็ก "hidepid=2" เมื่อติดตั้ง procfs ด้วย Hidepid=2 แอปจะเห็นเฉพาะสถานะของกระบวนการของตนเองเท่านั้น ดังนั้น แอพจะต้องใช้ API ที่ได้รับการยอมรับ เช่น UseStats หรือ AccessibilityService เพื่อรับข้อมูลเกี่ยวกับแอพและบริการใดที่ทำงานบนอุปกรณ์
ช่องโหว่
จะเกิดอะไรขึ้นถ้า procfs ไม่ได้เมานต์ด้วย Hidepid=2? ถ้าอย่างนั้น แอปจะสามารถอ่านสถานะของแอปอื่นๆ (และจุดเชื่อมต่อ) ที่ทำงานบนระบบได้อย่างอิสระโดยไม่จำเป็นต้องมีการอนุญาตเพิ่มเติม* Google ติดตั้ง procfs ด้วย Hidepid=2 บนอุปกรณ์ของตนเอง แต่ไม่ได้บังคับใช้ข้อกำหนดนี้กับอุปกรณ์จากผู้ผลิตรายอื่น อุปกรณ์หลายตัวจาก LG, OnePlus, Huawei/Honor, Xiaomi และอื่นๆ ยังไม่ได้ติดตั้ง procfs ด้วย Hidepid=2 ซึ่งเป็นสิ่งที่แอปอย่าง Fate/Grand Order ใช้เพื่อตรวจสอบว่า Magisk ปรากฏอยู่หรือไม่ อุปกรณ์.
*การเปลี่ยนแปลงด้านความปลอดภัยใน Android 9 Pie ป้องกันไม่ให้แอปอ่านข้อมูลนอก "บริบท SELinux" ของตนเอง เนื่องจากตอนนี้ทุกแอปถูกแยกออกจากกัน SELinux เป็นโมดูลเคอร์เนลที่ทำหน้าที่เป็นผู้เฝ้าประตู โดยบล็อกแอปและบริการไม่ให้เข้าถึงไฟล์ที่ไม่ควรทำ บริบทของ SELinux เปรียบเสมือนป้ายกำกับสำหรับไฟล์ซึ่งมีข้อมูลเช่นผู้ใช้และบทบาท แอปที่มีบริบท SELinux เดียวกันสามารถอ่านข้อมูลเกี่ยวกับแอปอื่นๆ ในบริบทเดียวกันได้ หากไม่ได้เปิดใช้งานแฟล็ก Hidepid=2 สำหรับ procfs บนอุปกรณ์ที่ใช้ Android 9 Pie เฉพาะแอปที่สร้างขึ้นโดยมีเป้าหมายเป็น Android Pie เท่านั้นที่จะมีการเปลี่ยนแปลง SELinux ใหม่ของ Android Pie ที่มีผลกับแอปเหล่านั้น แอปที่กำหนดเป้าหมายเป็น Android 8.1 Oreo หรือต่ำกว่าจะใช้กฎ SELinux เก่าเพื่อให้สามารถเข้าถึงได้ ข้อมูลเกี่ยวกับกระบวนการในบริบท SELinux เดียวกันตราบใดที่ procfs ถูกเมาท์โดยไม่มี ซ่อน=2. แอปส่วนใหญ่ที่ทำงานบนอุปกรณ์ของคุณควรกำหนดเป้าหมายเป็น Android 8.0 Oreo เป็นอย่างน้อย ข้อกำหนดใหม่ของ Google Playแต่ส่วนมากจะยังไม่ได้รับการอัปเดตเพื่อกำหนดเป้าหมายเป็น Android Pie
ภาพหน้าจอต่อไปนี้แสดงผลที่ตามมาของการไม่ติดตั้ง procfs ด้วย Hidepid=2
นี่มันแย่ขนาดไหน?
หากเราจะเปรียบเทียบช่องโหว่ของระบบนี้กับช่องโหว่เช่น ฟูเซ่ เกเล่, บลูบอร์น, แคร็ก, และ การล่มสลาย/ปีศาจจากนั้นจุดบกพร่องนี้ก็จางลงเมื่อเปรียบเทียบกัน แอปไม่สามารถใช้สิ่งนี้เพื่อเข้าถึงรูทหรือขโมยรหัสผ่านของคุณได้ บัญชีธนาคารของคุณปลอดภัย และบัตรเครดิตของคุณก็ปลอดภัยเช่นกัน สิ่งที่แย่ที่สุดที่แอปสามารถทำได้คือบอกได้ว่ามีแอปอื่นทำงานบนอุปกรณ์ของคุณหรือไม่ ซึ่งมีการใช้งานที่จำกัดมาก โปรดจำไว้ว่านี่เป็นพฤติกรรมมาตรฐานในการกระจาย GNU/Linux หลายรุ่น และ Google เพิ่งเริ่มบล็อกการเข้าถึง procfs ด้วย Android Nougat เมื่อเร็วๆ นี้ ข้อบกพร่องนี้ทำให้แอปสามารถเลี่ยงการอนุญาตบางอย่างเพื่อตรวจสอบกระบวนการอื่นๆ ได้ แต่ก็ยังไม่สามารถทำลายแซนด์บ็อกซ์ของ Android และขโมยข้อมูลจากแอปอื่นๆ ได้ ไม่ว่านี่จะเป็นพฤติกรรมที่ไม่ได้ตั้งใจและทำให้ฟีเจอร์ความเป็นส่วนตัวของ Android เสียหาย ดังนั้นจึงต้องได้รับการแก้ไข
อุปกรณ์ของฉันได้รับผลกระทบหรือไม่?
นี่คือรายการอุปกรณ์ที่เราพบว่าไม่ได้ติดตั้ง procfs ด้วย Hidepid=2:
OEM |
อุปกรณ์ |
เวอร์ชัน Android |
procfs การรั่วไหล |
---|---|---|---|
อัสซุส |
เซนโฟน 5Z |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
ใช่ |
แบล็กเบอร์รี่ |
คีย์2 |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
เลขที่ |
จำเป็น |
พีเอช-1 |
ระบบปฏิบัติการ Android 9 Pie |
เลขที่ |
พิกเซล 2 |
ระบบปฏิบัติการ Android 9 Pie |
เลขที่ |
|
พิกเซล 3 |
ระบบปฏิบัติการ Android 9 Pie |
เลขที่ |
|
พิกเซล 3 XL |
ระบบปฏิบัติการ Android 9 Pie |
เลขที่ |
|
ให้เกียรติ |
เมจิก 2 |
ระบบปฏิบัติการ Android 9 Pie |
ใช่ |
เอชทีซี |
U12+ |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
ใช่ |
หัวเว่ย |
เมท 20 เอ็กซ์ |
ระบบปฏิบัติการ Android 9 Pie |
ใช่ |
แอลจี |
G7 ThinQ |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
ใช่ |
แอลจี |
V40 ThinQ |
ระบบปฏิบัติการ Android 8.1 โอรีโอ |
ใช่ |
โมโตโรล่า |
โมโต G4 |
ระบบปฏิบัติการ Android 8.1 โอรีโอ |
เลขที่ |
โนเกีย |
7.1 |
ระบบปฏิบัติการ Android 8.1 โอรีโอ |
เลขที่ |
OnePlus |
6 |
ระบบปฏิบัติการ Android 8.1 Oreo/Android 9 Pie |
ใช่ |
OnePlus |
6ต |
ระบบปฏิบัติการ Android 9 Pie |
ใช่ |
เรเซอร์ |
โทรศัพท์ 2 |
ระบบปฏิบัติการ Android 8.1 โอรีโอ |
ใช่ |
ซัมซุง |
กาแล็คซี่โน้ต 8 |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
เลขที่ |
ซัมซุง |
กาแล็คซี่โน้ต 9 |
ระบบปฏิบัติการ Android 8.1 Oreo/Android 9 Pie |
เลขที่ |
ซัมซุง |
กาแล็กซี่ S7 |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
เลขที่ |
ซัมซุง |
กาแล็กซี่ S8 |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
เลขที่ |
ซัมซุง |
กาแล็กซี่ S9 |
ระบบปฏิบัติการ Android 9 Pie |
เลขที่ |
ซัมซุง |
กาแล็กซี่ S9+ (เอ็กซินอส) |
ระบบปฏิบัติการ Android 8.0 โอรีโอ |
ใช่ |
โซนี่ |
เอ็กซ์พีเรีย XZ1 |
ระบบปฏิบัติการ Android 9 Pie |
เลขที่ |
เสี่ยวมี่ |
มี มิกซ์ 2S |
ระบบปฏิบัติการ Android 9 Pie |
ใช่ |
เสี่ยวมี่ |
โพโค F1 |
ระบบปฏิบัติการ Android 8.1 โอรีโอ |
ใช่ |
วิธีตรวจสอบว่าอุปกรณ์ของคุณได้รับผลกระทบหรือไม่
ค่อนข้างง่ายที่จะตรวจสอบว่าอุปกรณ์ของคุณรั่วไหลข้อมูลกระบวนการไปยังแอปอื่นๆ หรือไม่ (กล่าวคือ procfs ไม่ได้ติดตั้งด้วย Hidepid=2) แม้ว่าคุณสามารถใช้คำสั่งเชลล์ได้เหมือนที่เราทำ แต่คุณสามารถตรวจสอบโดยใช้แอปที่ topjohnwu พัฒนาขึ้นได้ แอพของเขายังให้คุณเมานต์ procfs อีกครั้งด้วย Hidepid=2 ได้ หากโทรศัพท์ของคุณถูกรูท
ดาวน์โหลด ProcGate.dll
จะมีการแก้ไขมั้ย?
ใช่ สิ่งนี้จะได้รับการแก้ไข. ตอนนี้ Google จะกำหนดให้อุปกรณ์ทั้งหมดติดตั้ง procfs ด้วย Hidepid=2 พวกเขาจะบังคับใช้สิ่งนี้โดย กำลังอัปเดต ชุดทดสอบความเข้ากันได้ (CTS) ซึ่งเป็นชุดการทดสอบที่อุปกรณ์ทั้งหมดต้องผ่านจึงจะสามารถใช้แอปและบริการของ Google Play ได้ OEM ทั้งหมด (ที่ต้องการขายอุปกรณ์ที่ติดตั้ง Google Play Store ไว้ล่วงหน้า) จะต้องออกการอัปเดตในที่สุดเพื่อติดตั้ง procfs ใหม่ด้วย Hidepid=2 ในอนาคตอันใกล้นี้ เนื่องจากอุปกรณ์ OnePlus เป็นเครื่องแรกที่ถูกค้นพบว่ามีปัญหานี้ OnePlus ได้รับแจ้งแล้วและกำลังดำเนินการแก้ไข. เราจะอัปเดตบทความนี้หาก OEM อื่นๆ แสดงความคิดเห็นเกี่ยวกับจุดบกพร่องนี้ แต่ไม่จำเป็นต้องสงสัยว่า OEM ของอุปกรณ์ของคุณจะออกการอัปเดตหรือไม่ หากพวกเขาต้องการให้การอัปเดตผ่าน CTS พวกเขาจะต้องแก้ไขข้อบกพร่องนี้