การรับรองฮาร์ดแวร์ของ SafetyNet จะทำให้การซ่อนรูทใน Magisk เป็นเรื่องยากมาก

click fraud protection

การซ่อนการเข้าถึงรูทใน Magisk กำลังจะกลายเป็นเรื่องยากขึ้นมากด้วยการเปลี่ยนแปลงล่าสุดใน SafetyNet ที่นำการรับรองฮาร์ดแวร์

ย้อนกลับไปในเดือนมีนาคม มีผู้ใช้บางรายที่ติดตั้ง Magisk สังเกตเห็น ว่าอุปกรณ์ของพวกเขาไม่ผ่านการรับรอง SafetyNet ข่าวนี้สร้างปัญหาให้กับชุมชนที่ XDA เพราะมันหมายความว่าแอปธนาคาร/การเงินที่สำคัญๆ และเกมยอดนิยมอย่าง Pokémon Go และ Fate/Grand Order ปฏิเสธที่จะทำงานบนอุปกรณ์ที่รูทแล้ว ในบางครั้ง ดูเหมือนว่าข้อจำกัดที่เข้มงวดใน SafetyNet ถูกดึงกลับมา และจะเปิดตัวอีกครั้งสำหรับผู้ใช้เพียงไม่กี่รายในช่วงไม่กี่สัปดาห์ที่ผ่านมา อย่างไรก็ตาม Google ยืนยันอย่างเงียบๆ เมื่อต้นเดือนพฤษภาคมว่าพวกเขาทดสอบการรับรองที่ได้รับการสนับสนุนจากฮาร์ดแวร์ การตอบสนองของ SafetyNet ซึ่งเป็นสิ่งที่ทำให้ Magisk ไม่สามารถซ่อนสถานะการปลดล็อค bootloader กลับเข้าไปได้ มีนาคม. หากการเปลี่ยนแปลงนี้เกิดขึ้นอย่างกว้างขวาง ก็หมายความว่าผู้ใช้จะต้องเลือกระหว่างการเข้าถึงรูท/รอมที่กำหนดเอง/เคอร์เนล/อื่นๆ หรือแอปและเกมธนาคารที่ต้องการ หนึ่งในสิ่งดึงดูดใจที่ใหญ่ที่สุดของ Android สำหรับผู้ใช้ระดับสูงอาจจะหมดไปในไม่ช้า

เพื่อสรุปเหตุการณ์ชุดนี้ เราควรพูดถึง SafetyNet ก่อน SafetyNet คือชุดของ API ในบริการ Google Play SafetyNet Attestation API เป็นหนึ่งใน API เหล่านั้น และแอปพลิเคชันบุคคลที่สามสามารถเรียกใช้ได้เพื่อตรวจสอบว่าสภาพแวดล้อมซอฟต์แวร์ของอุปกรณ์ถูกดัดแปลงไม่ว่าด้วยวิธีใดก็ตาม API จะตรวจสอบสิ่งต่าง ๆ เช่น สัญญาณของไบนารีผู้ใช้ระดับสูง สถานะการปลดล็อคโปรแกรมโหลดบูต และอื่นๆ เมื่อคุณรูทอุปกรณ์ด้วย Magisk มันจะ "[สร้าง] 'สภาพแวดล้อมที่ปลอดภัย' ที่แยกออกมาสำหรับกระบวนการตรวจจับ [SafetyNet] และมันจะผ่าน API ของ Google เพื่อสร้าง ถูกต้องตามกฎหมาย ผลลัพธ์ของ SafetyNet ที่ไม่สะท้อนถึงสถานะที่แท้จริงของอุปกรณ์” ตาม XDA Senior Recognized Developer ท็อปจอห์นวู. วิธีนี้ทำให้ผู้ใช้สามารถรูทโทรศัพท์ของตนได้ในขณะเดียวกันก็รับประกันว่า API จะส่งคืน "false" เสมอสำหรับการตรวจสอบการปลดล็อค bootloader วิธีการเลี่ยงผ่านการตรวจจับการปลดล็อค bootloader ของ SafetyNet นี้ได้ผลกับ Magisk ในช่วงสองสามปีที่ผ่านมา ปี แต่นั่นเป็นเพียงเพราะ Google ระงับการตรวจสอบความสมบูรณ์ของอิมเมจสำหรับบูตโดยใช้ฮาร์ดแวร์ การรับรอง ในเดือนมีนาคม ดูเหมือนว่าในที่สุด Google ก็เริ่มใช้การรับรองฮาร์ดแวร์ใน SafetyNet เพื่อยืนยัน อิมเมจบูต แต่เราไม่เคยได้รับคำแถลงอย่างเป็นทางการจาก Google ที่ยืนยันการเปลี่ยนแปลงและมีผู้ใช้เพียงไม่กี่คนเท่านั้น ได้รับผลกระทบ ตามที่เห็นโดย XDA Senior Member ดิสพลักซ์อย่างไรก็ตาม Google ยืนยันเมื่อวันที่ 5 พฤษภาคม 2020 ว่าขณะนี้การตอบสนองของ SafetyNet Attestation API จากอุปกรณ์บางรุ่นมีการตรวจสอบที่สนับสนุนฮาร์ดแวร์แล้ว

ใน Google Group สำหรับ "ไคลเอ็นต์ SafetyNet API" Google ให้รายละเอียดเกี่ยวกับคุณลักษณะใหม่สำหรับ Attestation API: EmotionType การตอบสนอง JSON Web Signature (JWS) จากอุปกรณ์บางตัวจะมีฟิลด์ชื่อ "evalueType" ซึ่ง "จะให้ข้อมูลเชิงลึกแก่นักพัฒนา ลงในประเภทของสัญญาณ/การวัดผลที่ส่งผลต่อการตอบสนองของ SafetyNet Attestation API แต่ละรายการ" หนึ่งในโทเค็นที่รองรับ ในช่องนี้คือ "HARDWARE_BACKED" ซึ่งระบุว่า API "[ใช้] คุณลักษณะความปลอดภัยที่สนับสนุนฮาร์ดแวร์ที่มีอยู่ของอุปกรณ์ระยะไกล (เช่น. การรับรองคีย์ที่สนับสนุนฮาร์ดแวร์) เพื่อมีอิทธิพลต่อการประเมิน [ของมัน] Google กล่าวว่าพวกเขากำลัง "กำลังประเมินและปรับเกณฑ์คุณสมบัติสำหรับอุปกรณ์ที่เราจะพึ่งพาฮาร์ดแวร์ที่ได้รับการสนับสนุน คุณลักษณะด้านความปลอดภัย" ความหมายก็คือ ในบางอุปกรณ์ บริการ Google Play กำลังใช้การรับรองที่สนับสนุนด้วยฮาร์ดแวร์เพื่อตรวจสอบว่าซอฟต์แวร์ของอุปกรณ์นั้นไม่ได้ ยุ่งเกี่ยวกับ Google ไม่ได้บันทึกการเปลี่ยนแปลงนี้อย่างเป็นทางการนอกเหนือจากประกาศในกลุ่ม Google ดังนั้นนักพัฒนาซอฟต์แวร์บางรายที่ใช้ SafetyNet อาจใช้ ไม่ทราบถึงการเปลี่ยนแปลงนี้ (และยังไม่ได้ตรวจสอบฟิลด์ "HARDWARE_BACKED" ในการตอบกลับของ JWS) อย่างไรก็ตาม สำหรับแอปเหล่านั้นที่ กำลังตรวจสอบฟิลด์นี้ ขณะนี้ไม่มีวิธีซ่อนการเข้าถึงรูทจากพวกเขา หากอุปกรณ์ของคุณเป็นส่วนหนึ่งของการทดสอบที่ Google วิ่ง.

ตามข้อมูลของ topjohnwu การรับรองที่สนับสนุนด้วยฮาร์ดแวร์หมายความว่าขณะนี้บริการ Google Play "[ส่ง] ใบรับรองที่เก็บคีย์ที่ยังไม่ได้แก้ไขไปยังเซิร์ฟเวอร์ SafetyNet [ตรวจสอบ] ความถูกต้องตามกฎหมาย และ [ตรวจสอบ] ข้อมูลส่วนขยายใบรับรองเพื่อทราบว่าอุปกรณ์ของคุณ [มี] เปิดใช้งานการบูตที่ตรวจสอบแล้ว (สถานะ bootloader) หรือไม่” เนื่องจากไพรเวตคีย์ซึ่งเป็นที่มาของใบรับรองที่เก็บคีย์ ได้รับการสนับสนุนจากสภาพแวดล้อมที่ปลอดภัยแบบแยกส่วนของโทรศัพท์ การดึงข้อมูลเหล่านั้นจะเกี่ยวข้องกับการเอาชนะความปลอดภัยของ Trusted Execution Environment (TEE) ของโทรศัพท์หรือความปลอดภัยของฮาร์ดแวร์เฉพาะ โมดูล (HSM) หากมีใครสามารถรั่วไหลคีย์ส่วนตัวได้ กุญแจจะถูกเพิกถอนอย่างรวดเร็ว เมื่อ Google รู้แล้ว Google เสนอรางวัลหลายแสนดอลลาร์สำหรับช่องโหว่ด้านความปลอดภัยที่สำคัญซึ่งส่งผลต่อ TEE ในโทรศัพท์ Pixel ซึ่งเพิ่งแสดงให้เห็นว่ามันไม่น่าเป็นไปได้อย่างไม่น่าเชื่อที่สิ่งนี้จะเป็นหนทางที่เป็นไปได้ในการเลี่ยงผ่านการตรวจจับการปลดล็อค bootloader อย่างไรก็ตาม.

อีกวิธีหนึ่งที่เป็นไปได้ที่ Magisk สามารถปลอมสถานะการปลดล็อค bootloader ต่อไปได้คือการแก้ไขโค้ดฝั่งไคลเอ็นต์ของ SafetyNet เพื่อใช้การประเมิน BASIC เสมอ เช่น บันทึกของ topjohnwuอย่างไรก็ตาม การดำเนินการนี้จะต้องมีการแทรกโค้ดที่กำหนดเองลงในบริการ Google Play ผ่านเฟรมเวิร์ก hooking เช่น Xposed Framework นี่ไม่เพียงแต่ทำยากเท่านั้นเนื่องจากบริการ Google Play มีความสับสนอย่างมาก แต่ยังเป็นไปไม่ได้ที่จะซ่อนไว้ เนื่องจาก "การวิเคราะห์พื้นที่หน่วยความจำบางส่วนจะเปิดเผยการจัดการโค้ดอย่างมาก ได้อย่างง่ายดาย" นอกจากนี้ ยังใช้งานได้ก็ต่อเมื่อเซิร์ฟเวอร์ของ Google ยังคงยอมรับการประเมิน BASIC ต่อไป และหากไม่มีการบังคับใช้การประเมิน HARDWARE_BACKED บนอุปกรณ์ที่รองรับ พวกเขา. (การตอบสนองของ SafetyNet "[มา] จากเซิร์ฟเวอร์ของ Google และลงนามด้วยรหัสส่วนตัวของ Google" ตามข้อมูลของ topjohnwu ดังนั้นการตอบกลับจริงจึงไม่สามารถปลอมแปลงได้)

ตั้งแต่ Android 7 Nougat Google กำหนดให้อุปกรณ์ทั้งหมดมีสภาพแวดล้อมที่ปลอดภัยแบบแยกส่วน หมายถึงการเปลี่ยนแปลงวิธีที่ SafetyNet ตรวจสอบการปลดล็อค bootloader จะส่งผลต่ออุปกรณ์ส่วนใหญ่ที่ไม่ได้ใช้งาน ที่นั่น. เนื่องจากอุปกรณ์รุ่นเก่าที่ไม่มีสภาพแวดล้อมที่ปลอดภัยแบบแยกไม่สามารถทำการรับรองที่สนับสนุนด้วยฮาร์ดแวร์ได้อย่างชัดเจน Magisk จึงยังสามารถซ่อนการเข้าถึงรูทบนอุปกรณ์เหล่านั้นได้ แต่หากการเปลี่ยนแปลงนี้เกิดขึ้นอย่างกว้างขวาง คนอื่นๆ จะต้องตัดสินใจเลือกระหว่างการเข้าถึงรูทและแอปธนาคาร

น่าเสียดายที่อาจมีแอปจำนวนมากที่ใช้การตรวจสอบ SafetyNet ทั้งๆ ที่ไม่จำเป็นจริงๆ ตัวอย่างหนึ่งที่ topjohnwu อ้างถึงคือแอปอย่างเป็นทางการของ McDonald ซึ่งดูเหมือนว่าจะปฏิเสธที่จะทำงานบนอุปกรณ์ที่ปลดล็อค bootloader บน Twitter topjohnwu เรียกแอปที่ใช้ API มากเกินไปว่าเป็นการสร้างสภาพแวดล้อมที่ไม่เป็นมิตรสำหรับผู้ใช้ระดับสูง นักพัฒนา XDA ที่ได้รับการยอมรับ ควินนี่899 ร่วมเล่าเรื่องราวเล็กๆ น้อยๆ เกี่ยวกับวิธีที่ทีมของเขาพิจารณาใช้ SafetyNet เพื่อตรวจสอบสถานะความปลอดภัยของอุปกรณ์ ในที่สุดพวกเขาก็ตัดสินใจว่าจะไม่ดำเนินการใดๆ เนื่องจากแอปของทีมเข้ารหัสข้อมูลที่ละเอียดอ่อนทั้งหมดที่แอปนั้นใช้งานได้ เขาให้เหตุผลว่า SafetyNet ไม่ควรใช้แทนแนวทางปฏิบัติด้านความปลอดภัยและการจัดการข้อมูลที่เหมาะสม โดยเฉพาะอย่างยิ่งเมื่อพิจารณาถึง ความเป็นไปได้ของการหาประโยชน์จากผู้ใช้ขั้นสูง.

หากต้องการข้อมูลเพิ่มเติมว่าการเปลี่ยนแปลง SafetyNet ใหม่ส่งผลต่อ Magisk อย่างไร โปรดดูที่ topjohnwu's คำถามที่พบบ่อยที่ยอดเยี่ยมบน Twitter. หากคุณเพียงต้องการตรวจสอบว่าอุปกรณ์ของคุณเป็นส่วนหนึ่งของการทดสอบ SafetyNet ใหม่ของ Google หรือไม่ คุณก็ทำตามได้ คู่มือนี้ โดย XDA Senior Member Displax หรือดาวน์โหลด Magisk Manager รุ่นล่าสุด


บทความนี้ได้รับการอัปเดตเมื่อเวลา 10:46 น. EST ของวันที่ 30 มิถุนายน 2020 เพื่อแก้ไขให้ Google จ่ายรางวัลเฉพาะสำหรับช่องโหว่ TEE ที่พบในโทรศัพท์ Pixel เท่านั้น นอกจากนี้ ยังมีการเพิ่มรายละเอียดเกี่ยวกับ Magisk Manager รุ่นล่าสุด ซึ่งขณะนี้แสดงฟิลด์ EaseionType ในตัวตรวจสอบ SafetyNet ในตัว