ผลการวิเคราะห์หลังดักจับทราฟฟิกเครือข่ายของแอปทางการของทำเนียบขาว
(atomic.computer)- มีการวิเคราะห์ว่าแอป iOS ของทำเนียบขาวรับส่งข้อมูลกับเซิร์ฟเวอร์ใดและข้อมูลอะไรบ้าง โดย จับทราฟฟิก HTTPS จริงของแอปด้วย MITM proxy
- แอปสื่อสารกับ 31 โฮสต์บุคคลที่สาม นอกเหนือจาก whitehouse.gov ได้แก่ Elfsight, OneSignal, YouTube, Google DoubleClick, Facebook, Twitter เป็นต้น
- มีการส่ง ข้อมูลสำหรับทำโปรไฟล์ผู้ใช้อย่างต่อเนื่อง ไปยัง OneSignal เช่น ภาษา เขตเวลา IP รุ่นอุปกรณ์ และจำนวนเซสชัน
- มีการรันสคริปต์ภายนอกผ่านตัวโหลดวิดเจ็ตของ Elfsight และ โค้ดติดตามโฆษณา Google DoubleClick ก็ทำงานภายในแอปด้วย
- แม้ว่าใน privacy manifest ของแอประบุว่า “ไม่มีการเก็บข้อมูล” แต่ในความเป็นจริงมี การติดตามและส่งข้อมูลไปยังบุคคลที่สามจำนวนมาก
ภาพรวมการวิเคราะห์ทราฟฟิกเครือข่าย
- มีการจับและวิเคราะห์ทราฟฟิกเครือข่ายของแอป iOS ทางการของทำเนียบขาวด้วย MITM (man-in-the-middle) proxy
- ติดตั้ง mitmproxy บน macOS และบันทึกทราฟฟิก HTTPS ทั้งหมดของ iPhone ผ่านพร็อกซี
- เวอร์ชันแอปคือ v47.0.4 (build 81) และมีการสำรวจครบทุกแท็บ ได้แก่ Home, News, Live, Social, Explore
- ทราฟฟิกถูกถอดรหัสและบันทึกโดยไม่มีการแก้ไข ใช้งานในลักษณะเดียวกับผู้ใช้ทั่วไป
เซิร์ฟเวอร์ที่แอปเชื่อมต่อ
- ในหนึ่งเซสชัน แอปส่งคำขอไปยัง 31 โฮสต์ที่ไม่ซ้ำกัน (ไม่รวมทราฟฟิกของระบบ iOS)
- จากคำขอทั้งหมด 206 ครั้ง มีเพียง 48 ครั้ง (23%) ที่ส่งไปยัง whitehouse.gov
- ที่เหลืออีก 158 ครั้ง (77%) ถูกส่งไปยังบริการบุคคลที่สาม เช่น Elfsight, OneSignal, YouTube, Google DoubleClick, Facebook, Twitter
- ปลายทางของคำขอหลัก
- whitehouse.gov: WordPress API (ข่าว หน้าแรก แกลเลอรี ฯลฯ)
- YouTube: ฝังวิดีโอและภาพตัวอย่าง
- Elfsight: โหลดวิดเจ็ต แอสเซ็ตแบบสแตติก ที่เก็บไฟล์ และ boot API
- OneSignal: การวิเคราะห์และทำโปรไฟล์ผู้ใช้
- Facebook/Twitter CDN: โหลดรูปภาพ
- Google APIs และ DoubleClick: โฆษณาและการติดตาม
ข้อมูลที่ส่งไปยัง OneSignal
- เมื่อเปิดแอป จะมีการส่ง เนื้อหาคำขอ HTTPS ไปยัง
api.onesignal.com- ข้อมูลที่รวมอยู่ ได้แก่ ภาษา เขตเวลา ประเทศ ที่อยู่ IP เวลาเปิดใช้ครั้งแรกและเวลาที่ใช้งานครั้งล่าสุด รุ่นอุปกรณ์ เวอร์ชันระบบปฏิบัติการ ประเภทเครือข่าย (WiFi/เซลลูลาร์) ผู้ให้บริการเครือข่าย สถานะการ jailbreak จำนวนเซสชัน ระยะเวลาเซสชัน และตัวระบุเฉพาะ
- ทุกครั้งที่เปิดแอปจะมีการส่งคำขอ PATCH หลายครั้งเพื่ออัปเดตโปรไฟล์
- ในการเปิดครั้งแรกพบคำขอ PATCH 18 ครั้ง และตลอดทั้งเซสชันพบคำขอ OneSignal 9 ครั้ง
- ลำดับคือใช้ GET เพื่ออ่านโปรไฟล์เดิม → ใช้ PATCH เพื่ออัปเดตข้อมูลเซสชัน
- OneSignal บันทึก IP รายเซสชัน เวลาใช้งาน จำนวนเซสชัน และระยะเวลาเซสชัน อย่างต่อเนื่อง
- หากที่อยู่ IP เปลี่ยน จะมีการอัปเดตโปรไฟล์
- ค่า timestamp ของ
first_activeจะไม่เปลี่ยนหลังจากเวลาที่ติดตั้ง
- ผลลัพธ์คือ OneSignal คงไว้ซึ่ง โปรไฟล์ถาวรรายผู้ใช้ และติดตามรูปแบบการใช้งานแอปกับสภาพแวดล้อมเครือข่าย
- User-Agent ของทราฟฟิกคือ
WhiteHouse/81 CFNetwork/3860.400.51 Darwin/25.3.0
ทราฟฟิกที่เกี่ยวข้องกับ Elfsight
- สิ่งที่พบจากการวิเคราะห์แบบสแตติก คือ วิดเจ็ต 6 ตัวและตัวโหลด JavaScript แบบ 2 ขั้น ถูกยืนยันจากทราฟฟิกจริงด้วย
- เมื่อเปิดแท็บ Social แอปจะเชื่อมต่อกับ โดเมนของ Elfsight 13 แห่ง
- เช่น
elfsightcdn.com,core.service.elfsight.com,static.elfsight.com,storage.elfsight.com,widget-data.service.elfsight.com,video-proxy.wu.elfsightcompute.com
- เช่น
- เมื่อส่ง widget ID ผ่านคำขอ
/p/boot/เซิร์ฟเวอร์จะส่งกลับ รายการสคริปต์ที่จะให้รัน (อาร์เรย์ assets)- ตัวอย่าง: TikTok →
tiktokFeed.js, Instagram →instashow.js, Facebook →facebookFeed.js, YouTube →yottie.js
- ตัวอย่าง: TikTok →
- ฟังก์ชัน
loadAssetsของแอปจะแทรกแต่ละ URL เป็น<script>แล้วรัน- เป็นโครงสร้างที่เซิร์ฟเวอร์เป็นผู้ตัดสินว่าโค้ดใดจะถูกเรียกใช้งาน
- เซิร์ฟเวอร์ของ Elfsight ตั้งค่า คุกกี้มากกว่า 10 ตัว ระหว่างเซสชัน
- รวมถึง
elfsight_viewed_recently, คุกกี้ติดตามของ Cloudflare (_cfuvid,__cf_bm) และตัวระบุเซสชัน
- รวมถึง
การติดตามโฆษณา Google DoubleClick
- เมื่อมีการฝัง YouTube จะมีการโหลด โครงสร้างพื้นฐานสำหรับติดตามโฆษณาของ Google มาด้วย
- พบคำขอไปยัง
googleads.g.doubleclick.net,static.doubleclick.net
- พบคำขอไปยัง
- DoubleClick คือ แพลตฟอร์มแสดงโฆษณาและติดตามของ Google
และภายในแอปทางการของทำเนียบขาวมี การรันโค้ดติดตามโฆษณา
- privacy manifest ของแอปไม่ได้ระบุเรื่องนี้ไว้
ความไม่ตรงกันระหว่าง privacy manifest กับการทำงานจริง
- การตั้งค่าความเป็นส่วนตัวที่แอปประกาศไว้:
NSPrivacyCollectedDataTypes: [] NSPrivacyTracking: false - การส่งข้อมูลที่พบจากเซสชันจริง:
- ส่ง รุ่นอุปกรณ์ ระบบปฏิบัติการ IP เขตเวลา ภาษา จำนวนเซสชัน ระยะเวลาเซสชัน และตัวระบุเฉพาะ ไปยัง OneSignal
- เชื่อมต่อกับโดเมนของ Elfsight 13 แห่ง และได้รับ คุกกี้ติดตามมากกว่า 10 ตัว
- มีการรันโค้ดติดตามโฆษณา Google DoubleClick
- มีคำขอไปยัง Facebook, Twitter/X, YouTube และ Google API
- สรุปแล้ว แม้แอปจะแสดงว่า “ไม่มีการเก็บข้อมูล” แต่ในทางปฏิบัติกลับมี การติดตามและส่งข้อมูลไปยังบุคคลที่สามจำนวนมาก
ระเบียบวิธีการวิเคราะห์
- เครื่องมือพร็อกซี: mitmproxy (mitmdump)
- สภาพแวดล้อม: macOS, iPhone(iOS), เครือข่าย WiFi เดียวกัน
- ใบรับรอง: เพิ่ม mitmproxy CA เข้าไปในการตั้งค่าความเชื่อถือของ iOS
- ขอบเขตการจับข้อมูล: ทราฟฟิก HTTPS ที่เกิดขึ้นระหว่างการสำรวจครบทั้ง 5 แท็บของแอป
- มีการแก้ไขข้อมูลหรือไม่: ไม่มี มีเพียงการสังเกตทราฟฟิกเท่านั้น
- การจัดการข้อมูลส่วนบุคคล: มีการปิดบัง IP ตัวระบุอุปกรณ์ OneSignal ID ฯลฯ ทั้งหมดในโพสต์
- ไม่มีการบุกรุกหรือดัดแปลงเซิร์ฟเวอร์ บันทึกเฉพาะการสื่อสารที่แอปส่งออกมาเอง
งานวิจัยที่เกี่ยวข้อง
- รายงานการวิเคราะห์แบบสแตติก ของแอป iOS ทำเนียบขาว
- ผลการวิเคราะห์ของ Thereallo สำหรับเวอร์ชัน Android
แนะนำ Atomic Computer
- Atomic Computer เป็นบริษัทที่ให้บริการด้านไซเบอร์ซีเคียวริตี้ โครงสร้างพื้นฐาน และงานพัฒนา
- ให้บริการประเมินและวิเคราะห์ความปลอดภัยของแอปมือถือ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ในบรรดาคำขอไปยัง 3rd-party ทั้งหมด 43% เกี่ยวข้องกับ Google (รวม YouTube, Fonts, Analytics) และถ้ารวม Facebook กับ Twitter ก็ราว 55%
การใส่โค้ด tracking หรือ analytics มากเกินไปในแอปรัฐบาลเป็นปัญหา แต่คิดว่า Google Fonts หรือการฝัง YouTube ไม่ได้ร้ายแรงขนาดนั้น
ตอนเห็นพาดหัวก็คาดว่าจะเจอโดเมนช็อก ๆ อย่าง Palantir หรือ ICE แต่กลายเป็น Google/Facebook เลยค่อนข้างจืด
พาดหัวควรเน้นที่ ลักษณะและความร้ายแรง ของคำขอ มากกว่าจะเขียนแค่ว่า “77% เป็นคำขอไปยัง 3rd-party”
อ้างอิงไว้ด้วยว่า atomic.computer ก็ใช้ Google Fonts และ Analytics เช่นกัน ก่อนจะเหมารวมว่าคำขอไปยัง 3rd-party ไม่ดีเสมอไป ก็ควรตรวจเว็บตัวเองก่อน
สุดท้ายแล้วก็สามารถ ตัดสินใจเอง ได้ว่าจะติดตามข้อมูลอะไรผ่านแอป และอาจรวบรวมข้อมูลแบบฟอกผ่านผู้ให้บริการ tracking ทั่วไปก็ได้
คำขอที่เกี่ยวกับ Google น่าจะใส่มาเพื่อความโปร่งใส และไม่ได้มีเจตนาจะโจมตีแอป White House
atomic.computer ไม่ได้บอกว่าคำขอไปยัง 3rd-party แย่โดยเนื้อแท้ แต่เพียงวิเคราะห์ว่ามันเป็นเครื่องมือในการเก็บและติดตามข้อมูล
ผู้ใช้ควบคุมไม่ได้ว่าข้อมูลจะถูกนำไปใช้อย่างไรหลังจากถูกเก็บแล้ว และสุดท้ายประเด็นสำคัญคือ การขาดอำนาจควบคุม
มีการติดตั้ง mitmproxy บน Mac แล้วส่งทราฟฟิกจาก iPhone ไปทางนั้นเพื่อถอดรหัส HTTPS
เลยสงสัยว่าการทำให้ iPhone เชื่อถือใบรับรองผู้ใช้นั้นง่ายขนาดนั้นเลยหรือ
บน Android การส่องดูทราฟฟิกเครือข่ายค่อนข้างยุ่งยาก
การทดลองแบบนี้แสดงให้เห็นชัดว่าเราควรมี อำนาจควบคุมอุปกรณ์ ของตัวเอง เราควรมีสิทธิรู้ว่าข้อมูลถูกส่งไปไหนและส่งอะไรออกไปบ้าง
ทำให้นึกถึงกรณีที่ Zoom เคยส่งทราฟฟิกไปจีน หรือที่ Facebook เคยติดตามข้อมูลการท่องเว็บในแอป
แต่จะมีข้อยกเว้นถ้าแอปใช้ OpenSSL ของตัวเองหรือใช้ certificate pinning
แอปใหญ่ ๆ อย่าง Facebook หรือ Twitter ส่วนมากใช้ pinning แต่แอปง่าย ๆ แบบนี้มักไม่ใช้
แต่ถ้าแอปมี pinning ก็หลบเลี่ยงได้ยาก และ แพลตฟอร์มที่ติดตั้งแอปเองได้ จะได้เปรียบกว่า
กรณีอย่างแอปธนาคารที่มี pinning เข้มมากอาจต้องใช้ อุปกรณ์ที่รูทแล้ว
ถึงขั้นจินตนาการได้ว่ามันอาจถูกใช้เป็น ข้อมูลฝึก deepfake ก็ได้
มีเธรดพูดคุยก่อนหน้านี้ที่เกี่ยวข้อง
การอภิปรายก่อนหน้า 1, การอภิปรายก่อนหน้า 2
ฉันบล็อกโดเมนโฆษณาส่วนใหญ่ (เช่น doubleclick.net) ที่ ระดับ DNS
น่าตกใจที่เว็บส่วนใหญ่รวมถึงเว็บข่าวเปิดการเชื่อมต่อไปยัง 3rd-party จำนวนมาก
atomic.computer ก็พยายามโหลด Cloudflareinsights กับ Google Fonts แต่ในเครือข่ายของฉันถูกบล็อก
คำขอพวกนี้คือสาเหตุหลักที่ทำให้ Google ติดตามผู้ใช้ทั่วทั้งอินเทอร์เน็ต ได้
แอปรัฐบาลควรถูกกำหนดมาตรฐานที่ สูงกว่าอย่างมาก เมื่อเทียบกับแอป B2C ทั่วไป
การเรียก Google Fonts ยังพอรับได้ แต่การส่ง telemetry ไปยัง OneSignal หรือ Facebook เป็นอีกเรื่องหนึ่ง
ในออสเตรเลีย ตามข้อกำหนด PSPF และ ISM ข้อมูลของรัฐบาลต้องไม่ถูก ส่งออกไปยังภายนอกที่ไม่น่าเชื่อถือ
แอปแบบนี้จะไม่ผ่านการประเมิน IRAP ทันที
วิธีแก้ก็ง่าย — โฮสต์ฟอนต์เอง, ทำ analytics แบบ 1st-party, และมองคำขอภายนอกเป็น ช่องทางข้อมูลรั่วไหล
แอป B2C ส่วนใหญ่เองก็มีสัดส่วนคำขอไปยัง 3rd-party มากกว่า 50%
77% ของแอป White House อาจไม่ได้น่าตกใจ แต่ปัญหาคือมีการกรอก รายการการเก็บข้อมูล ใน App Store ผิด
หลังจากนั้นมีการแก้ไขและตอนนี้แสดงผลถูกต้องแล้ว
แอปรัฐบาลก็ควรมีมาตรฐานที่สูง แต่ตัวเลข 77% อาจไม่ได้ต่างจากค่าเฉลี่ยของอุตสาหกรรมมากนัก
เพราะมีแอปจำนวนมากใส่โค้ดโฆษณาและ tracker อยู่แล้ว ดังนั้นระดับนี้อาจเป็น เรื่องปกติ ก็ได้
ดูรายชื่อ SDK ที่แอปใช้ได้ที่ AppGoblin
ใน Privacy manifest ระบุว่า “ไม่มีการเก็บข้อมูล” แต่ความเป็นจริงส่ง รุ่นอุปกรณ์, IP, จำนวนเซสชัน, tracking ID ไปยัง OneSignal
นี่เป็นปัญหา false attestation อย่างชัดเจน
ขั้นต่อไปคงเป็น การเพิ่มโฆษณา นั่นแหละ