Fortnite Mobile บนแอปติดตั้งของ Android สามารถหาประโยชน์ได้ในการเปิดตัวครั้งแรก การติดตั้งแอปใดๆ บนโทรศัพท์ Samsung Galaxy แบบเงียบๆ อาจถือเป็นการละเมิด
การเปิดตัว Fortnite Mobile บน Android ยังไม่ค่อยดีนัก โดยเฉพาะอย่างยิ่งตั้งแต่นั้นเป็นต้นมา อุปกรณ์ที่รองรับมากมาย จริงหรือ พยายามเล่นเกมด้วยอัตราเฟรมที่ยอมรับได้. เกมดังกล่าวเปิดตัวเป็น Samsung Galaxy Exclusive เพียง 3 วันเท่านั้น. โปรแกรมติดตั้ง Fortnite เปิดให้ใช้งานครั้งแรกเมื่อ แอพซัมซุงกาแล็กซี่ ก่อนที่ Epic Games จะอนุญาตให้ผู้เล่นที่ไม่ใช่ของ Samsung ดาวน์โหลดและติดตั้งเกมตัวเต็มจากตัวติดตั้ง Fortnite ที่ได้รับบนเว็บไซต์ของ Epic ไม่นานหลังจากที่ตัวติดตั้ง Fortnite พร้อมใช้งาน 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
. สำหรับท่านที่ใช้ Substratum ที่ไม่มีรูทผ่านปลั๊กอิน Andromeda บน Android Oreo สคริปต์ Andromeda ที่เรียกใช้จากพีซีของคุณจะทำให้กระบวนการเชลล์ทำงานต่อไปดังนั้น Substratum จึงสามารถใช้เพื่อติดตั้งแพ็คเกจ (การซ้อนทับของธีม) จากนั้นใช้ คำสั่ง OverlayManager เพื่อเปิดใช้งานการซ้อนทับ
แอพโหลดด้านข้างจากแหล่งบุคคลที่สาม
หากคุณพยายามดาวน์โหลดและติดตั้งแอปจากภายนอก App Store ของบุคคลที่หนึ่ง คุณจะต้องเปิดใช้งานแหล่งการติดตั้งที่ไม่รู้จักก่อน นี้จะช่วยให้ บริการจัดการแพ็คเกจ ภายในเฟรมเวิร์ก Android (ซึ่งมีสิทธิ์ INSTALL_PACKAGES) รู้ว่าคุณรับทราบความเสี่ยงของแอปโหลดข้างจากแหล่งบุคคลที่สาม บนอุปกรณ์รุ่นก่อน Android Oreo มีการสลับการตั้งค่าความปลอดภัยเพียงปุ่มเดียวเพื่อให้สามารถติดตั้งจากแหล่งที่ไม่รู้จักได้ บน Android Oreo และเวอร์ชันที่ใหม่กว่าแอปที่เรียกร้องให้ติดตั้ง APK จะต้องประกาศ REQUEST_INSTALL_PACKAGES และผู้ใช้จะต้องอนุญาตแอปนั้นเป็นพิเศษเพื่อให้สามารถขอติดตั้งแอปผ่านบริการตัวจัดการแพ็คเกจได้ เนื่องจาก REQUEST_INSTALL_PACKAGES เป็นการอนุญาต "แอป" ซึ่งทำให้เป็นหนึ่งในการอนุญาตที่สามารถควบคุมได้จากภายในตัวจัดการสิทธิ์ของการตั้งค่าหรือผ่านทาง cmd appops
คำสั่งเชลล์
เมื่อเปิดใช้งานการติดตั้งจากแหล่งที่ไม่รู้จักทั้งแบบโกลบอลหรือแบบเฉพาะสำหรับแอปพลิเคชันที่ร้องขอ ผู้ใช้สามารถโหลดแอปแบบไซด์โหลดได้ อย่างไรก็ตาม Package Manager ไม่อนุญาตให้ติดตั้งแอปแบบเงียบๆ แต่จะแจ้งให้ผู้ใช้ทราบว่าต้องการติดตั้งแอปหรือไม่ และแสดงรายการสิทธิ์ที่ละเอียดอ่อนที่ร้องขอเมื่อติดตั้ง หากผู้ใช้ยอมรับ แอปจะได้รับการติดตั้งโดยมีสิทธิ์ที่ไม่ใช่รันไทม์ที่ร้องขอ OEM ยังสามารถปรับแต่ง Package Manager ได้: ตัวอย่างเช่น Package Manager ในเวอร์ชันภาษาจีน EMUI 5 ของ Huawei มีคุณสมบัติในการสแกน APK เพื่อตัดสินใจว่าปลอดภัยหรือไม่และควบคุมสิทธิ์ใดบ้าง ได้รับ ก่อน การติดตั้ง. ฉันสังเกตเห็นสิ่งนี้ใน Honor Note 8 ที่ใช้ EMUI 5 ที่นำเข้าจากประเทศจีน แต่ฉันมั่นใจว่าอุปกรณ์ Huawei และ Honor ของจีนอื่นๆ ก็มีคุณสมบัตินี้ในตัวจัดการแพ็คเกจด้วยเช่นกัน
ไม่ว่าในกรณีใด นั่นเป็นการสรุปความแตกต่างระหว่างการติดตั้งแอปจากแหล่งที่มาของบุคคลที่หนึ่งที่ได้รับอนุมัติและแหล่งที่มาจากบุคคลที่สาม หากคุณพยายามติดตั้งแอปจาก Play Store หรือ App Store ที่เทียบเท่าด้วย INSTALL_PACKAGES การอนุญาต มันจะจัดการการติดตั้งทั้งหมดโดยอัตโนมัติโดยไม่ต้องมีการแทรกแซงจากผู้ใช้หลังจากที่คุณเริ่มต้น การดาวน์โหลด แต่ถ้าคุณดาวน์โหลด APK จาก XDA Labs, APKMirror หรือแหล่งบุคคลที่สามอื่นๆ ตัวติดตั้งแพ็คเกจมาตรฐานจะจัดการการติดตั้งและแจ้งให้ผู้ใช้ติดตั้งแพ็คเกจนั้น แล้วตัวติดตั้ง Fortnite มาจากไหนและทำไมทั้งหมดนี้จึงเกี่ยวข้องกัน?
ข้อบกพร่องในกระบวนการติดตั้งของ Fortnite
ก่อนหน้านี้วันนี้ Google เปิดเผยช่องโหว่ พวกเขาค้นพบด้วย Fortnite Installer เวอร์ชันแรก ช่องโหว่นี้แสดงให้เห็นบน Exynos Samsung Galaxy S8+ (dream2lte) แต่ยังส่งผลกระทบต่ออุปกรณ์ Samsung Experience อื่นๆ ทั้งหมด รวมถึง Samsung Galaxy Note 9 และ Samsung Galaxy Tab S4 ช่องโหว่ดังกล่าวทำให้สามารถ แอปพลิเคชันที่เป็นอันตรายที่ติดตั้งไว้แล้ว เพื่อใช้ประโยชน์จากวิธีที่โปรแกรมติดตั้ง Fortnite พยายามติดตั้ง Fortnite สำหรับครั้งแรก บนอุปกรณ์ Samsung Galaxy ด้วยการใช้ API ส่วนตัวในแอพ Samsung Galaxy ตัวติดตั้ง Fortnite จะข้ามความจำเป็นในการแจ้งให้ผู้ใช้ติดตั้ง Fortnite ผ่านแพ็คเกจติดตั้งมาตรฐาน นั่นเป็นเพราะ Galaxy Apps มีสิทธิ์ที่จำเป็นในการจัดการการติดตั้งแบบเงียบๆ คงไม่มีอะไรผิดปกติกับกระบวนการติดตั้งแบบเงียบ ๆ หากแอปที่ถูกติดตั้งแบบเงียบ ๆ คือ Fortnite ตัวจริง แต่เนื่องจากตำแหน่งที่ตัวติดตั้ง Fortnite เก็บไฟล์ APK ที่ดาวน์โหลดสำหรับเกม Fortnite จึงสามารถหาประโยชน์ได้ง่าย
ตามรายงานของ 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 เก็บ APK ของ Fortnite ที่ดาวน์โหลดไว้ในไดเร็กทอรี /data/data/ ของตัวเอง มันจะเป็นไปไม่ได้สำหรับแอปใด ๆ ที่ไม่มีสิทธิ์ในการอ่าน (เช่น โดยไม่ต้องเข้าถึงรูท) เพื่อทราบว่าเกิดอะไรขึ้นในไดเร็กทอรีนี้
อย่างไรก็ตาม เนื่องจากตัวติดตั้ง Fortnite บันทึก 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? เนื่องจากไม่ได้ติดตั้งแอป Samsung Galaxy บนอุปกรณ์ที่ไม่ใช่ของ Samsung APK ที่เป็นอันตราย จะไม่ถูกติดตั้งอยู่เบื้องหลัง. Fortnite Installer เป็นแอปของบุคคลที่สาม ดังนั้นจึงต้องแจ้งให้ผู้ใช้เปิดใช้งานก่อน การติดตั้งจากแหล่งที่ไม่รู้จักแล้วส่งคำขอไปยังผู้ติดตั้งแพ็คเกจเพื่อติดตั้งของปลอม APK ของฟอร์ทไนท์ จากนั้นจะขึ้นอยู่กับผู้ใช้ที่จะแตะ "ติดตั้ง" เมื่อถูกถามว่าต้องการติดตั้งแอปหรือไม่ นี่เป็นปัญหาไม่ว่าโทรศัพท์ที่ไม่ใช่ของ Samsung จะไม่ตกอยู่ในอันตรายจากการติดตั้งแอปที่เป็นอันตรายในเบื้องหลังก็ตาม ผู้ใช้โดยเฉลี่ยจะฉลาดกว่านี้ไม่ได้หาก APK ที่เป็นอันตรายซึ่งสร้างด้วยชื่อ "Fortnite" และแสดงไอคอนแอป Fortnite ให้ผู้ใช้ติดตั้ง
ถึงกระนั้น มีความแตกต่างที่ชัดเจนระหว่างการใช้ประโยชน์จากข้อบกพร่องนี้บนสมาร์ทโฟน Samsung Galaxy และสมาร์ทโฟนที่ไม่ใช่ของ Samsung แบบแรกคือการโจมตีแบบ Man-in-the-Disk ที่ใช้ประโยชน์จาก API ของระบบที่ซ่อนอยู่เพื่อติดตั้งแอปใด ๆ โดยไม่ต้องแจ้งให้ทราบ พื้นหลังพร้อมการอนุญาตใด ๆ และไม่จำเป็นต้องหลอกให้ผู้ใช้คิดว่าพวกเขากำลังติดตั้ง Fortnite ปลอม เอพีเค อย่างหลังคือก การโจมตี Man-in-the-Disk มาตรฐานที่สามารถเกิดขึ้นกับแอปอื่น ๆ ที่บันทึก APK หรือข้อมูลสำคัญอื่น ๆ ในไดเรกทอรีจัดเก็บข้อมูลภายนอกดังที่แสดงไว้ล่าสุด ด่าน โพสต์. มันบังเอิญว่าต้องขอบคุณ 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 วันหลังจากมีการเปิดตัวการแก้ไข Tim Sweeney ซีอีโอของ Epic Games ไม่ พอใจกับระยะเวลาดำเนินการที่รวดเร็วตั้งแต่รายงานความปลอดภัยเบื้องต้นจนถึงการเปิดเผย เขาเสนอข้อความต่อไปนี้ให้ แอนดรอยด์เซ็นทรัล.
Epic ชื่นชมความพยายามของ Google อย่างแท้จริงในการดำเนินการตรวจสอบความปลอดภัยของ Fortnite ในเชิงลึกหลังจากเราดำเนินการทันที เผยแพร่บน Android และแบ่งปันผลลัพธ์กับ Epic เพื่อให้เราสามารถออกการอัปเดตอย่างรวดเร็วเพื่อแก้ไขข้อบกพร่องเหล่านั้น ค้นพบ.
อย่างไรก็ตาม Google ไม่มีความรับผิดชอบในการเปิดเผยรายละเอียดทางเทคนิคของข้อบกพร่องต่อสาธารณะอย่างรวดเร็ว ในขณะที่การติดตั้งจำนวนมากยังไม่ได้รับการอัปเดตและยังคงมีช่องโหว่
ตามคำแนะนำของฉัน วิศวกรความปลอดภัยของ Epic ขอให้ Google ชะลอการเปิดเผยต่อสาธารณะเป็นเวลา 90 วันโดยทั่วไปเพื่อให้มีเวลาสำหรับการติดตั้งการอัปเดตในวงกว้างมากขึ้น Google ปฏิเสธ สามารถอ่านทั้งหมดได้ที่ https://issuetracker.google.com/issues/112630336
ความพยายามในการวิเคราะห์ความปลอดภัยของ Google ได้รับการชื่นชมและเป็นประโยชน์ต่อแพลตฟอร์ม Android อย่างไรก็ตาม บริษัทที่มีอำนาจพอ ๆ กับ Google ควรฝึกฝนให้มากกว่านี้ ระยะเวลาการเปิดเผยอย่างมีความรับผิดชอบมากกว่านี้ และไม่เป็นอันตรายต่อผู้ใช้ในระหว่างการพยายามต่อต้านการประชาสัมพันธ์เพื่อต่อต้านการจำหน่าย Fortnite ของ Epic ภายนอก Google Play
ฉันไม่สามารถพูดได้ว่ามีอุปกรณ์ Samsung Galaxy กี่เครื่องที่ยังมี Fortnite Installer รุ่นเก่าอยู่ บางที Epic Games ควรบอกผู้ใช้เหล่านี้ให้อัปเดตการติดตั้งโดยส่งข้อความใน Fortnite Mobile คุณสมบัติการส่งข้อความในแอปใหม่ที่ดีของ Firebase สามารถทำเคล็ดลับได้ แม้ว่ามันอาจจะไม่ใช่เรื่องใหญ่อะไรอยู่แล้ว เพราะหากผู้ใช้ที่มีตัวติดตั้งรุ่นเก่าได้ดาวน์โหลดไฟล์ที่ถูกต้องแล้ว Fortnite ดังนั้นการโจมตี MITD จะไม่ทำงานเนื่องจากไม่สามารถติดตั้ง APK ที่เป็นอันตรายทับ Fortnite ที่มีอยู่ได้ การติดตั้ง. ไม่ว่าในกรณีใด การค้นพบข้อบกพร่องนี้เร็วมากหลังจาก Fortnite วางจำหน่ายบน Android ซึ่งยังคงมีข้อโต้แย้งมากมายเกี่ยวกับ Epic Games การตัดสินใจทิ้ง Google Play—ช่วยโต้แย้งได้ว่าการตัดสินใจของ Epic Games นั้นประมาทเลินเล่ออย่างแน่นอน ไม่ว่านั่นจะเป็นความตั้งใจของ Google ที่จะเผยแพร่ปัญหานี้อย่างรวดเร็วหรือไม่ เราก็ไม่มีทางรู้ได้