9 คะแนน โดย xguru 2020-11-16 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • การวิเคราะห์เชิงเทคนิคของ 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 ความคิดเห็น

 
kunggom 2020-11-16

อ้างอิงตาม Wikipedia ภาษาอังกฤษ Google Chrome ได้ปิดการใช้งาน OCSP ไปแล้วตั้งแต่ปี 2012 โดยให้เหตุผลว่า “ประโยชน์นั้นหาได้ยาก ขณะที่ต้นทุน (ทั้งความหน่วงและปัญหาความเป็นส่วนตัว) ชัดเจน”

https://www.imperialviolet.org/2012/02/05/crlsets.html

 
galadbran 2020-11-16

เดิมที OCSP ก็เป็นวิธีที่เว็บเบราว์เซอร์ใช้เพื่อตรวจสอบเรื่องอย่างการหมดอายุของใบรับรอง SSL อยู่แล้ว จึงอาจคาดเดาได้ว่าเป็นเพราะมีการยืนยันแอปในลักษณะเดียวกับใบรับรอง SSL

 
godrm 2020-11-16

ผมเดาว่านี่อาจเป็นการเก็บข้อมูล App Analytics สำหรับแอปบน Mac เหมือนกับใน iOS ก็ได้

 
xguru 2020-11-16

ประเด็นที่เกี่ยวข้องให้อ่านเพิ่มเติม

[1] คอมพิวเตอร์ของคุณไม่ได้เป็นของคุณเพียงคนเดียว https://th.news.hada.io/topic?id=3200

[2] macOS Catalina (10.15): ช้าลงเพราะการออกแบบ https://th.news.hada.io/topic?id=2145