2 คะแนน โดย GN⁺ 27 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • มีการวิเคราะห์ว่าแอป 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
  • ฟังก์ชัน 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 ความคิดเห็น

 
GN⁺ 27 일 전
ความคิดเห็นบน 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 ไม่ดีเสมอไป ก็ควรตรวจเว็บตัวเองก่อน

    • ไม่ได้มีข้อห้ามว่า ICE หรือ Palantir จะซื้อข้อมูลจาก Google หรือ Facebook ไม่ได้
      สุดท้ายแล้วก็สามารถ ตัดสินใจเอง ได้ว่าจะติดตามข้อมูลอะไรผ่านแอป และอาจรวบรวมข้อมูลแบบฟอกผ่านผู้ให้บริการ tracking ทั่วไปก็ได้
    • ในบทความจริงโฟกัสอยู่ที่ คำขอไปยัง OneSignal และ Elfsight มากกว่า Google หรือ YouTube
      คำขอที่เกี่ยวกับ Google น่าจะใส่มาเพื่อความโปร่งใส และไม่ได้มีเจตนาจะโจมตีแอป White House
    • ตอนนี้เห็นความพยายามของรัฐบาลที่จะพาสหรัฐฯ ไปในทิศทางแบบ อำนาจนิยม แต่คิดว่าระบบใหญ่มากจนเปลี่ยนได้ไม่ง่าย
    • ข้อโต้แย้งแบบ “atomic.computer ก็ใช้คำขอไปยัง 3rd-party เหมือนกัน” ค่อนข้างอ่อน เพราะเป็นตรรกะประเภท ‘โจมตีผู้ส่งสาร’
      atomic.computer ไม่ได้บอกว่าคำขอไปยัง 3rd-party แย่โดยเนื้อแท้ แต่เพียงวิเคราะห์ว่ามันเป็นเครื่องมือในการเก็บและติดตามข้อมูล
      ผู้ใช้ควบคุมไม่ได้ว่าข้อมูลจะถูกนำไปใช้อย่างไรหลังจากถูกเก็บแล้ว และสุดท้ายประเด็นสำคัญคือ การขาดอำนาจควบคุม
  • มีการติดตั้ง mitmproxy บน Mac แล้วส่งทราฟฟิกจาก iPhone ไปทางนั้นเพื่อถอดรหัส HTTPS
    เลยสงสัยว่าการทำให้ iPhone เชื่อถือใบรับรองผู้ใช้นั้นง่ายขนาดนั้นเลยหรือ
    บน Android การส่องดูทราฟฟิกเครือข่ายค่อนข้างยุ่งยาก
    การทดลองแบบนี้แสดงให้เห็นชัดว่าเราควรมี อำนาจควบคุมอุปกรณ์ ของตัวเอง เราควรมีสิทธิรู้ว่าข้อมูลถูกส่งไปไหนและส่งอะไรออกไปบ้าง
    ทำให้นึกถึงกรณีที่ Zoom เคยส่งทราฟฟิกไปจีน หรือที่ Facebook เคยติดตามข้อมูลการท่องเว็บในแอป

    • iOS ทุกวันนี้ก็ยังเชื่อถือ ใบรับรองที่ผู้ใช้ติดตั้ง โดยปริยาย
      แต่จะมีข้อยกเว้นถ้าแอปใช้ OpenSSL ของตัวเองหรือใช้ certificate pinning
      แอปใหญ่ ๆ อย่าง Facebook หรือ Twitter ส่วนมากใช้ pinning แต่แอปง่าย ๆ แบบนี้มักไม่ใช้
    • การตั้งค่า mitmproxy บน iOS ง่ายกว่า Android มาก
      แต่ถ้าแอปมี pinning ก็หลบเลี่ยงได้ยาก และ แพลตฟอร์มที่ติดตั้งแอปเองได้ จะได้เปรียบกว่า
    • ขั้นตอนติดตั้ง CA ค่อนข้างยุ่งยาก แต่ถ้าแอปไม่มี pinning การดักทราฟฟิกก็ไม่ได้ยาก
      กรณีอย่างแอปธนาคารที่มี pinning เข้มมากอาจต้องใช้ อุปกรณ์ที่รูทแล้ว
    • สิ่งที่น่าสนใจคือ บางชุมชนด้านความปลอดภัยโจมตี MITM proxy แต่ในความเป็นจริงกลับเต็มไปด้วย มุมมองแบบองค์กรเป็นศูนย์กลาง
    • ตอนที่ Zoom ส่งทราฟฟิกไปจีน ก็เป็นไปได้ว่าวิดีโอการประชุมของรัฐบาลอาจหลุดไปทั้งดุ้น
      ถึงขั้นจินตนาการได้ว่ามันอาจถูกใช้เป็น ข้อมูลฝึก 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 ผิด
    หลังจากนั้นมีการแก้ไขและตอนนี้แสดงผลถูกต้องแล้ว

    • ฉันคัดค้าน telemetry ของ 3rd-party ในแอป White House และในแอปอื่น ๆ ด้วย ทำหลายอย่างพร้อมกันได้
    • ประเด็นสำคัญก็คือ แอปรัฐบาลถูกสร้างออกมาเหมือนแอป B2C นี่แหละ
    • เคยมีคำกล่าวอ้างเกินจริงประมาณว่าแอป White House ส่งข้อมูลให้ Huawei แต่ที่น่าตกใจกว่าคือมันมีมากกว่าแอปอื่นอยู่ 20%
  • แอปรัฐบาลก็ควรมีมาตรฐานที่สูง แต่ตัวเลข 77% อาจไม่ได้ต่างจากค่าเฉลี่ยของอุตสาหกรรมมากนัก
    เพราะมีแอปจำนวนมากใส่โค้ดโฆษณาและ tracker อยู่แล้ว ดังนั้นระดับนี้อาจเป็น เรื่องปกติ ก็ได้

  • ดูรายชื่อ SDK ที่แอปใช้ได้ที่ AppGoblin

  • ใน Privacy manifest ระบุว่า “ไม่มีการเก็บข้อมูล” แต่ความเป็นจริงส่ง รุ่นอุปกรณ์, IP, จำนวนเซสชัน, tracking ID ไปยัง OneSignal
    นี่เป็นปัญหา false attestation อย่างชัดเจน

  • ขั้นต่อไปคงเป็น การเพิ่มโฆษณา นั่นแหละ