Apple บันทึกแอปทุกตัวที่เราเรียกใช้งานลงบนเซิร์ฟเวอร์จริงหรือไม่?
(blog.jacopo.io)- การวิเคราะห์เชิงเทคนิคของ OCSP ที่กลายเป็นประเด็นในครั้งนี้
→ เพื่อตรวจสอบว่าใบรับรองนักพัฒนายังมีผลใช้งานหรือไม่ ระบบจะเชื่อมต่อไปยังเซิร์ฟเวอร์ของ Apple ตอนเปิดแอปเพื่อตรวจเช็ก
→ ถ้าเชื่อมต่อเครือข่ายไม่ได้ ก็ยังเปิดใช้งานได้ตามปกติ
→ ถ้าเชื่อมต่อได้แต่เซิร์ฟเวอร์ช้า ก็จะเกิดปัญหาแบบครั้งนี้ คือแอปทุกตัวที่ไม่ได้ทำโดย Apple เปิดไม่ขึ้น
→ มีข้อกล่าวอ้างว่า Apple ส่งแฮชของแอปไปยังเซิร์ฟเวอร์ของ Apple ทุกครั้งที่เปิดแอป [1]
→ ปัญหาคือมันใช้ HTTP แทน HTTPS (เพราะถ้าจะตรวจสอบใบรับรอง HTTPS ก็ต้องเปิดการเชื่อมต่อเพิ่มอีกครั้ง)
- มองดูข้างในระบบ
→ ถ้ามี HTTP Proxy หรือ Wireshark อยู่ตรงกลาง ก็สามารถดักจับทั้งหมดได้
→ เมื่อรันหนึ่งครั้งแล้วผ่านการรับรอง OCSP จะไม่มีการยืนยันซ้ำอีกในช่วงเวลาหนึ่ง
→ มีการส่งสตริงยาว 80 ไบต์ที่เข้ารหัสแบบ base64 ผ่าน GET
→ ค่านั้นดูเหมือนจะเป็นแฮชของแอป แต่ "ไม่ใช่"
→ เมื่อลองเปิดข้อมูลไบนารีนั้นด้วย OpenSSSL จะพบว่ามีชื่อผู้ออกใบรับรอง, ค่าแฮชของคีย์ และหมายเลขซีเรียลอยู่จริง
→ ถึงอย่างนั้น ถ้าใบรับรองแตกต่างกันไปตามแต่ละแอป ก็ยังน่าสงสัยว่าแบบนี้ก็แทบไม่ต่างจากค่าแฮชที่ระบุแอปอยู่ดีหรือไม่?
- ใบรับรองนักพัฒนา
→ แล้วข้อมูลใบรับรองนี้มาจากไหน?
→ ลองใช้ codesign ดึงใบรับรองของแอปบน Mac ออกมา (ในที่นี้คือ Firefox)
→ หมายเลขซีเรียลตรงกับที่ดักจับไว้ข้างต้น
→ จากนั้นพอดึงใบรับรองของ Thunderbird ออกมาดู ก็พบว่าหมายเลขซีเรียลเหมือนกันอีกเช่นกัน (ซึ่งก็สมเหตุสมผล)
→ กล่าวคือ ข้อมูลใน [1] ที่บอกว่าส่งข้อมูลแฮชซึ่งใช้ระบุทุกแอปได้นั้นเป็นข้อมูลที่ไม่ถูกต้อง
→ แน่นอนว่า Apple ยังสามารถรู้ได้ว่าในเครื่องไหนและเมื่อไรมีการเปิดแอปของ "นักพัฒนาคนใด"
- เรื่องการบล็อก OCSP
→ สามารถบล็อกได้ด้วย Little Snitch หรือผ่าน /etc/hosts
→ แต่เพราะนี่คือการปิดกั้นฟังก์ชันความปลอดภัยสำคัญ จึงไม่แนะนำให้ทำ
- TL;DR
→ macOS ไม่ได้ส่งแฮชของแอปไปยัง Apple ทุกครั้งที่เปิดแอป
→ macOS ส่งข้อมูลใบรับรองนักพัฒนาของแอปที่คุณใช้งานอยู่ และข้อมูลนี้ถูกส่งผ่าน HTTP
→ ถ้าเป็นไปได้ อย่าบล็อกการเชื่อมต่อไปที่ ocsp.apple.com
4 ความคิดเห็น
อ้างอิงตาม Wikipedia ภาษาอังกฤษ Google Chrome ได้ปิดการใช้งาน OCSP ไปแล้วตั้งแต่ปี 2012 โดยให้เหตุผลว่า “ประโยชน์นั้นหาได้ยาก ขณะที่ต้นทุน (ทั้งความหน่วงและปัญหาความเป็นส่วนตัว) ชัดเจน”
https://www.imperialviolet.org/2012/02/05/crlsets.html
เดิมที OCSP ก็เป็นวิธีที่เว็บเบราว์เซอร์ใช้เพื่อตรวจสอบเรื่องอย่างการหมดอายุของใบรับรอง SSL อยู่แล้ว จึงอาจคาดเดาได้ว่าเป็นเพราะมีการยืนยันแอปในลักษณะเดียวกับใบรับรอง SSL
ผมเดาว่านี่อาจเป็นการเก็บข้อมูล App Analytics สำหรับแอปบน Mac เหมือนกับใน iOS ก็ได้
ประเด็นที่เกี่ยวข้องให้อ่านเพิ่มเติม
[1] คอมพิวเตอร์ของคุณไม่ได้เป็นของคุณเพียงคนเดียว https://th.news.hada.io/topic?id=3200
[2] macOS Catalina (10.15): ช้าลงเพราะการออกแบบ https://th.news.hada.io/topic?id=2145