Android 17 ซ่อนชื่อเว็บตอนต่อเน็ตคาเฟ่ และให้แอปถามก่อนส่องเครื่องในบ้าน
ตอนผมต่อเน็ตคาเฟ่ เคยคิดว่าขึ้น HTTPS แล้วคนดูสายไม่เห็นอะไรเลย แต่จริง ๆ ชื่อเว็บที่กำลังเปิดยังโผล่ตอนเครื่องทักทายเซิร์ฟเวอร์ Android 17 เริ่มหุ้มชื่อนั้น และยังให้แอปถามก่อนส่องทีวีหรือกล้องในบ้านครับ
ชื่อเว็บที่ HTTPS ยังไม่หุ้ม
HTTPS คือการเข้ารหัสเนื้อหาหน้าเว็บ คนแอบดูสายเลยอ่านข้อความในหน้าไม่ได้ แต่ตอนเริ่มต่อ เครื่องยังต้องบอกชื่อเว็บให้เซิร์ฟเวอร์รู้ ชื่อนี้เรียก Server Name Indication หรือ SNI คนที่ดูทราฟฟิกสายเดียวกันยังอ่านชื่อเว็บได้อยู่
Android 17 ใส่ Encrypted Client Hello หรือ ECH เป็นส่วนขยายของ TLS ที่หุ้ม SNI ตามที่เอกสารนักพัฒนาแอนดรอยด์ระบุ แอปที่เล็ง Android 17 (API ระดับ 37) จะใช้ ECH เมื่อไลบรารีเน็ตของแอปรองรับ เช่น HttpEngine, WebView หรือ OkHttp และเซิร์ฟเวอร์ปลายทางรองรับด้วย
ถ้าเจรจา ECH ไม่สำเร็จ เครื่องจะส่งส่วนขยายที่มีเนื้อหาสุ่มแทน กลไกนี้เรียก ECH GREASE ตาม RFC 9849 เพื่อไม่ให้คนดูสายแยกได้ง่าย ๆ ว่าการต่อแบบไหนถูกหุ้ม นักพัฒนาปรับพฤติกรรมได้ผ่านองค์ประกอบ domain-encryption ในไฟล์ Network Security Configuration
ผมไม่ได้วัดเองว่าคาเฟ่ไหนเห็นหรือไม่เห็น ข้อความด้านบนย่อจากเอกสารทางการของแอนดรอยด์
แอปต้องถามก่อนคุยกับเครื่องในบ้าน
อีกเรื่องที่คนใช้มือถือทุกวันเจอได้คือเน็ตบ้าน แอปที่เล็ง Android 17 ถูกบล็อกการเข้าถึงเครือข่ายท้องถิ่นเป็นค่าเริ่ม ต้องขอสิทธิ์รันไทม์ ACCESS_LOCAL_NETWORK หรือใช้ตัวเลือกเครื่องที่ระบบเป็นคนเปิดให้เอง เช่น ตอนแคสต์จอหรือคุยกับอุปกรณ์สมาร์ทโฮม
เอกสารระบุว่าสิทธิ์นี้อยู่กลุ่ม NEARBY_DEVICES ถ้าเคยยอมสิทธิ์ในกลุ่มนี้ไปแล้ว ระบบจะไม่เด้งถามซ้ำ แอปที่ยังเล็ง SDK ต่ำกว่า 37 ยังได้อนุญาตโดยอ้อมจากสิทธิ์อินเทอร์เน็ตอยู่ชั่วคราว จนกว่าผู้พัฒนาจะเล็ง 37
แผนภาพด้านล่างย่อสองชั้นนี้ ไม่ใช่ขั้นตอนการโจมตี
flowchart TD
A[เปิดเว็บจากมือถือ] --> B[HTTPS หุ้มเนื้อหาหน้า]
A --> C[ชื่อเว็บเคยโผล่ตอนทักทาย]
C --> D[ECH หุ้มชื่อเว็บถ้าปลายทางรองรับ]
E[แอปอยากคุยทีวีหรือกล้องในบ้าน] --> F[Android 17 บล็อกเน็ตบ้านเป็นค่าเริ่ม]
F --> G[แอปต้องขอ ACCESS_LOCAL_NETWORK หรือให้ระบบเปิดตัวเลือกเครื่อง]
Recap
- เปิด Settings แล้วดูว่าเครื่องได้อัปเป็น Android 17 หรือยัง
- ตอนแอปขอเข้าถึงเครือข่ายท้องถิ่น ให้ถามตัวเองว่าแอปนั้นต้องคุยกับทีวีหรือเครื่องพิมพ์จริงหรือแค่ส่องบ้าน
- ECH ทำงานเงียบ ๆ ถ้าแอปและเว็บปลายทางรองรับ ไม่ต้องตั้งค่าเองในหน้าผู้ใช้ทั่วไป
- รายละเอียดนักพัฒนาอยู่ที่ behavior changes ของ Android 17 และ คู่มือ local network permission ครับ