2 คะแนน โดย GN⁺ 2023-06-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • แอป BM2 สำหรับตรวจสอบสถานะแบตเตอรี่รถยนต์ เก็บรวบรวมไม่เพียงพิกัด GPS แต่ยังรวมถึงข้อมูล Wi‑Fi รอบข้างและสถานีฐานเครือข่ายมือถือ แล้วส่งไปยังเซิร์ฟเวอร์ระยะไกล
  • ข้อมูลถูกส่งไปยังเซิร์ฟเวอร์ bm2.quicklynks.com ของ Leagend ผู้พัฒนาผลิตภัณฑ์/แอป และเซิร์ฟเวอร์ของ AMap ผู้พัฒนา SDK บริการตำแหน่ง โดยตรวจสอบได้ว่าโฮสต์อยู่บน Alibaba Cloud ฮ่องกงและปักกิ่งตามลำดับ
  • แม้เป็นแอปที่มียอดดาวน์โหลด 100K+ บน Google Play แต่ข้อความแสดงความเป็นส่วนตัวใน App Store ช่วงแรก เช่น “ไม่มีการแชร์ข้อมูล”, “ไม่มีการเก็บรวบรวมข้อมูล”, “เข้ารหัสระหว่างส่ง” ไม่ตรงกับพฤติกรรมจริง
  • บน Android การสแกน Bluetooth ต้องใช้สิทธิ์ตำแหน่ง ทำให้ผู้ใช้แทบจำเป็นต้องอนุญาตสิทธิ์ตำแหน่งเพื่อใช้งานอุปกรณ์ ส่วนแอป iOS ยังใช้งานฟังก์ชันมอนิเตอร์แบตเตอรี่ได้แม้ปฏิเสธสิทธิ์ตำแหน่ง
  • หลังอัปเดตวันที่ 25 กรกฎาคม 2023 AMap SDK ถูกถอดออกจากเวอร์ชันใน App Store ทั้งสองรายใหญ่แล้ว แต่ข้อมูลตำแหน่ง GPS ยังคงถูกส่งไปยังเซิร์ฟเวอร์ Alibaba Cloud ฮ่องกง และแอป iPhone ยังส่งที่อยู่ระดับถนนของผู้ใช้ด้วย

ข้อมูลตำแหน่งที่แอปมอนิเตอร์แบตเตอรี่ส่งออกไป

  • ผลิตภัณฑ์เป้าหมายคือมอนิเตอร์แบตเตอรี่แบบ Bluetooth ที่ต่อเข้ากับขั้วแบตเตอรี่รถยนต์แล้วจับคู่กับสมาร์ตโฟน เพื่อแสดง แรงดัน/เปอร์เซ็นต์ และรันทดสอบการสตาร์ตเครื่องยนต์
  • ผู้วิเคราะห์ซื้อผลิตภัณฑ์แบรนด์ PowerTech จากร้านค้าปลีกอุปกรณ์อิเล็กทรอนิกส์ Jaycar Electronics ในออสเตรเลียมาวิเคราะห์ และดูเหมือนเป็นผลิตภัณฑ์ที่รีแบรนด์มาจาก Bluetooth 4.0 Battery Monitor ของ Leagend
  • ผลิตภัณฑ์ในตระกูลเดียวกันยังถูกระบุได้ในชื่อแบรนด์ Century ของ Repco, ZX-1689, และ Li Battery Monitor
  • แอป Android BM2 มียอด ดาวน์โหลด 100K+ และรีวิว 1.55K บน Google Play
  • จากการตรวจสอบทราฟฟิกเครือข่าย แอป BM2 สำหรับ iPhone ก็ส่ง ข้อมูลตำแหน่ง ไปยังเซิร์ฟเวอร์ระยะไกลเช่นกัน

ปลายทางการส่งและขอบเขตการเก็บข้อมูล

  • แอปเก็บรวบรวมไม่เพียงแรงดันแบตเตอรี่ แต่ยังรวมถึง พิกัด GPS, ข้อมูลสถานีฐานเครือข่ายมือถือรอบข้าง และข้อมูลจุดเชื่อมต่อ Wi‑Fi รอบข้าง
  • ปลายทางที่พบในขณะนั้นสำหรับการส่งข้อมูลตำแหน่งแบ่งเป็นสองกลุ่ม
    • เซิร์ฟเวอร์แอป Leagend/BM2: bm2.quicklynks.com, 47.244.125.231, Alibaba Cloud ฮ่องกง
    • เซิร์ฟเวอร์ AMap SDK: dualstack-cgicol.amap.com, 106.11.130.194, Alibaba Cloud ปักกิ่ง
  • AMap เป็นผู้ให้บริการแผนที่ดิจิทัลของจีนที่ Alibaba เข้าซื้อกิจการ และ SDK ของบริษัทไม่ได้ดึงเฉพาะ GPS แต่ยังดึงข้อมูลอื่น ๆ ที่เกี่ยวข้องกับตำแหน่งซึ่งโทรศัพท์สามารถรวบรวมได้ด้วย
  • หลังอัปเดตวันที่ 25 กรกฎาคม 2023 AMap SDK ถูกถอดออกจากแอปใน App Store ทั้งสองรายใหญ่
    • การเก็บข้อมูล GPS, Wi‑Fi และสถานีฐานที่เคยส่งไปยังเซิร์ฟเวอร์จีนแผ่นดินใหญ่ของ AMap หยุดลง
    • ข้อมูลตำแหน่ง GPS ยังคงถูกส่งไปยังเซิร์ฟเวอร์ Alibaba Cloud ฮ่องกง
    • แอป iPhone ยังตรวจสอบและส่ง ที่อยู่ระดับถนน ของผู้ใช้ด้วย

ข้อความความเป็นส่วนตัวใน App Store กับพฤติกรรมจริง

  • ณ วันที่ 27 มิถุนายน 2023 ผู้พัฒนาแอป BM2 ได้อัปเดตข้อความความเป็นส่วนตัวใน Google Play และ Apple App Store เพื่อระบุชัดเจนว่ามีการเก็บรวบรวม ข้อมูลตำแหน่งที่แม่นยำ
  • ก่อนหน้านั้น ข้อความบน Google Play ไม่ตรงกับพฤติกรรมจริงของแอป
    • “ไม่มีการแชร์ข้อมูลกับบุคคลที่สาม”: สถิติแบตเตอรี่พร้อมละติจูด·ลองจิจูดถูกส่งไปยังเซิร์ฟเวอร์ quicklynks.com, ข้อมูลวิเคราะห์การแครชถูกส่งไปยัง umeng.com, และข้อมูล Wi‑Fi·สถานีฐาน·พิกัด GPS ถูกส่งไปยัง AMap
    • “ไม่มีการเก็บรวบรวมข้อมูล”: มีการเก็บข้อมูลตำแหน่งและข้อมูลเกี่ยวกับแบตเตอรี่
    • “เข้ารหัสระหว่างส่ง”: ข้อมูลที่ส่งไปยังเซิร์ฟเวอร์คลาวด์ BM2 ถูกส่งผ่าน HTTP ที่ไม่เข้ารหัส
  • ในถ้อยคำรายละเอียดของนโยบายความเป็นส่วนตัวมีคำว่า “Hong Kong” และ “location information” รวมอยู่ด้วย

ปัญหาเชิงโครงสร้างที่เกิดจากสิทธิ์บน Android

  • แอป Android ต้องขอสิทธิ์ตำแหน่งเพื่อทำงาน และหากไม่ให้สิทธิ์ก็ไม่สามารถใช้งานอุปกรณ์ฮาร์ดแวร์ได้
  • ตั้งแต่ Android 6.0 เป็นต้นมา การเข้าถึงตัวระบุฮาร์ดแวร์ของอุปกรณ์ภายนอกรอบข้างผ่านการสแกน Bluetooth และ Wi‑Fi ต้องใช้สิทธิ์ ACCESS_FINE_LOCATION หรือ ACCESS_COARSE_LOCATION
  • สิ่งที่แอป BM2 ต้องใช้จริงคือการสแกน BLE แต่สิทธิ์ตำแหน่งแบบกว้างทำให้เข้าถึงข้อมูล GPS·สถานีฐาน·Wi‑Fi ได้ด้วย จึงเปิดช่องให้ถูกนำไปใช้เกินจำเป็น
  • บน Android 12 ขึ้นไป สามารถสแกน BLE ได้ด้วยสิทธิ์ BLUETOOTH_SCAN เพียงอย่างเดียว
  • ตามเอกสารของ Google สามารถกำหนด android:usesPermissionFlags="neverForLocation" ให้กับ ACCESS_FINE_LOCATION ได้ แต่ใช้ได้เฉพาะกรณีที่ไม่ได้นำผลการสแกน Bluetooth ไปใช้อนุมานตำแหน่งทางกายภาพ

สิ่งที่ตรวจพบจากทราฟฟิกเครือข่าย

  • ใช้โหมด WireGuard ของ Mitmproxy เพื่อตรวจสอบทราฟฟิกของแอปมือถือ
  • BM2 ไม่ใช้ HTTPS จึงตรวจสอบการ ส่งละติจูด·ลองจิจูด บน Android และ iOS ได้โดยไม่ต้องติดตั้งใบรับรอง
  • หลังจากแอปเชื่อมต่อกับอุปกรณ์มอนิเตอร์แบตเตอรี่แล้ว แอปส่งคำขอ POST ไปที่ http://bm2.quicklynks.com:8080/api/bm2/userDevice/upload?
  • ในคำขอมีฟิลด์ละติจูด·ลองจิจูด พร้อมตัวอย่างแรงดันแบตเตอรี่, ที่อยู่ MAC ของฮาร์ดแวร์, nickname, และ serialNo
  • จากการตรวจสอบข้อมูล DNS และ IP ในขณะนั้น bm2.quicklynks.com ชี้ไปที่ 47.244.125.231 และข้อมูล IP แสดงว่าเป็น AS ในเครือ Alibaba ที่ Sham Shui Po ฮ่องกง

สัญญาณตำแหน่งที่ AMap SDK จัดการ

  • AMap SDK เก็บข้อมูล GPS, Wi‑Fi และสถานีฐานเครือข่ายมือถือ
  • ข้อมูลเครือข่ายมือถือมี Cell Global Identity รวมอยู่ด้วย
    • MCC: Mobile Country Code
    • MNC: Mobile Network Code
    • MCC + MNC: PLMN ใช้ระบุผู้ให้บริการเครือข่ายมือถือ
    • LAC: กลุ่มสถานีฐานภายในพื้นที่
    • CI: ตัวระบุเครื่องรับส่งสัญญาณของสถานีฐานภายในพื้นที่
    • ใน 4G จะใช้ TAC
  • ข้อมูล Wi‑Fi มีที่อยู่ MAC แบบ BSSID และชื่อจุดเชื่อมต่อ SSID
  • ข้อมูล AMap ถูกประมวลผลในรูป blob ไบนารีแบบ serialize ที่เข้ารหัสแล้ว ก่อนถูกเขียนลงดิสก์หรือส่งออกอินเทอร์เน็ต
  • ข้อมูลตำแหน่งถูกเข้ารหัสด้วยคีย์ AES ชั่วคราว และคีย์ AES นั้นถูกเข้ารหัสซ้ำด้วยคีย์ RSA สาธารณะ
    • วิธีนี้ไม่ได้พึ่งพา certificate pinning
    • หากไม่มีการแก้ไขแอปหรือคีย์ส่วนตัว RSA ที่สอดคล้องกัน ก็ตรวจดูเนื้อหาผ่านการตรวจสอบเครือข่ายแบบคนกลางได้ยาก

ฮาร์ดแวร์และสภาพแวดล้อมการทดสอบ

  • ภายในฮาร์ดแวร์มีโครงสร้างเรียบง่าย โดยมีตัวปรับแรงดันไฟฟ้าและ MCU Bluetooth Low Energy CC2541 ของ Texas Instruments เป็นแกนหลัก
  • CPU ของ CC2541 ใช้สถาปัตยกรรม Intel 8051 แบบ 8 บิต ส่วนตระกูล CC รุ่นหลังใช้สถาปัตยกรรม ARM Cortex
  • SoC ตระกูล CC รองรับอินเทอร์เฟซดีบักบนชิปเฉพาะ และไม่พบ JTAG หรือ SWD
  • อุปกรณ์รองรับการอัปเดต OTA และ REST endpoint ที่ส่งคืน firmware ผ่าน HTTP มีเอกสารอยู่ใน part 3
  • ไม่พบ shunt สำหรับตรวจจับกระแสหรือวงจรวัดกระแสอื่น ๆ ทำให้โครงสร้างฮาร์ดแวร์เรียบง่ายมาก
  • การทดสอบใช้แบตเตอรี่ตะกั่วกรด 12V ขนาดเล็ก, มอนิเตอร์แบตเตอรี่ BM2 และอุปกรณ์ Android ที่รูทแล้ว
  • ข้อมูลตำแหน่งของ AMap จะถูกบันทึกจากหน่วยความจำลงฐานข้อมูลเฉพาะเมื่อพบการเคลื่อนที่ทางกายภาพ จึงใช้ Frida และ Objection ทำ runtime instrumentation

ขั้นตอนการวิเคราะห์แบบไดนามิกและสแตติก

  • สามารถใช้ Frida hook android.location.Location.getLatitude และ getLongitude เพื่อเปลี่ยนพิกัด GPS เป็นค่าที่กำหนดเองได้
  • ใช้ปลั๊กอิน Wallbreaker ของ Objection เพื่อตรวจสอบอินสแตนซ์ข้อมูล GPS, สถานีฐานผู้ให้บริการ และ Wi‑Fi ใน heap memory ของแอป
  • ดึง APK โดยใช้ adb shell pm path บนอุปกรณ์เพื่อหาพาธ แล้ว decompile ด้วย JADX
  • ใน AndroidManifest.xml พบสิทธิ์อย่าง CAMERA, IMAGE_CAPTURE, ACTION_VIDEO_CAPTURE, MODIFY_AUDIO_SETTINGS, RECORD_AUDIO นอกเหนือจาก FINE_LOCATION แต่ต้องตรวจสอบเพิ่มเติมว่าฟังก์ชันเหล่านี้ถูกใช้งานหรือไม่
  • จุดเข้าแอปคือ com.stub.StubApp และมีการใช้ packer เชิงพาณิชย์ qihoo.util
  • ใช้ frida-dexdump dump bytecode การทำงานของ Dalvik ดั้งเดิมจากหน่วยความจำขณะรัน แล้วแปลงเป็นโค้ด Java ที่อ่านได้ด้วย dex2jar และ JADX
  • ตัวแอปหลัก BM2 ไม่มีการ obfuscate เพิ่มเติม แต่ SDK บริการตำแหน่ง amap ถูก obfuscate ไว้ และกู้ชื่อคลาสบางส่วนด้วยฟีเจอร์ deobfuscation ของ JADX

1 ความคิดเห็น

 
GN⁺ 2023-06-27
ความคิดเห็นบน Hacker News
  • นี่เป็นผลจากการทำ reverse engineering กับมอนิเตอร์แบตเตอรี่รถยนต์แบบ BLE แอปนี้มียอดดาวน์โหลดบน Google Play อย่างเดียวเกิน 100,000 ครั้ง
    ปรากฏว่ามันส่งข้อมูล GPS, cell ID ของสถานีฐานโทรศัพท์มือถือ และข้อมูลบีคอน Wi‑Fi ไปยังเซิร์ฟเวอร์ในฮ่องกงและจีนแผ่นดินใหญ่อย่างต่อเนื่อง หน้าแอปใน Google และ Apple App Store ระบุว่าไม่ได้เก็บข้อมูลส่วนบุคคลหรือส่งให้บุคคลที่สาม
    หวังว่าจะเป็นทิปบางอย่างให้คนที่อยากวิเคราะห์แอปของอุปกรณ์ที่เชื่อมต่อได้

    • ดูเหมือนจะมีรุ่นย่อย BM6 ด้วย และที่นี่ระบุชัดเจนว่าสร้างบัญชีส่วนตัวและ ติดตามรถ ได้
      https://www.amazon.de/dp/B0BLG9Z462
      ถ้ากดรูปที่สามจะเห็นตารางเปรียบเทียบ ที่น่าสนใจคือมันถูกนำเสนอเหมือนเป็นฟีเจอร์พิเศษเฉพาะของ BM6 แต่จริง ๆ แล้วเป็นเพียงฟังก์ชันของแอปเท่านั้น
      QR code ของอุปกรณ์ [0] ชี้ไปที่แอปนี้: https://play.google.com/store/apps/details?id=com.dc.bm6
      ดังนั้นจึงลองตรวจ URL อื่น ๆ อย่าง https://link.quicklynks.com/bm3.html และ https://link.quicklynks.com/bm4.html ด้วย โดยอันหลัง redirect ไปที่ https://www.leagend.com/ และพวกเขาดูแลช่อง YouTube นี้: https://www.youtube.com/channel/UCqkvyOFP5cXQ02f3h1Ns42Q
      [0] http://link.quicklynks.com/bm6.html
    • ที่แย่กว่านั้นคือ ครั้งล่าสุดที่ตรวจ บน Android การ เชื่อมต่ออุปกรณ์ BLE ต้องใช้สิทธิ์ตำแหน่งด้วย น่าจะเพราะสามารถประเมินตำแหน่งจากการสแกน BLE ได้
    • ไม่เข้าใจว่าทำไมคน 100,000 คนถึงต้องการแอปมอนิเตอร์แบตเตอรี่รถยนต์ แดชบอร์ดก็แสดงอยู่แล้ว เลยสงสัยว่าแอปนี้ทำอะไรเพิ่มให้
      แถมยังทำให้แบตมือถือหมดตลอดเวลา คุ้มไหมที่จะดูสิ่งที่แดชบอร์ดบอกอยู่แล้วบนหน้าจอโทรศัพท์ ถ้าเป็นแบตเตอรี่แบบติดตั้งอยู่กับที่ ใช้หน้าปัดโวลต์มิเตอร์อนาล็อกก็พอไม่ใช่หรือ
      ทุกวันนี้หาอุปกรณ์แบบสแตนด์อโลนที่ทำงานได้โดยไม่ต้องใช้แอปยากเกินไป เช่น แม้แต่โคมไฟ LED ที่เลือกสีด้วยปุ่มบนตัวเครื่องโดยไม่ต้องใช้แอปก็ยังหาได้ยาก และถึงจะเจออยู่ตัวหนึ่ง แต่ก็ยังวนสีโดยไม่ใช้แอปไม่ได้
      ถ้าผู้คนไม่ได้ชอบเรื่องไร้สาระแบบนี้ ก็คงกลับไปหาเครื่องใช้ไฟฟ้าปกติ ๆ ได้ง่ายกว่านี้
  • ไม่เข้าใจว่าทำไมบน Android ผู้ใช้ถึงกันไม่ให้แอป 1) ทำงานตอนเริ่มระบบ 2) ทำงานเบื้องหลัง ไม่ได้ อย่างน้อยก็ควรเป็นสิทธิ์ที่ต้องให้ผู้ใช้อนุมัติไม่ใช่หรือ
    น่าจะกันแอปจำนวนมากที่ดูดข้อมูลแบบนี้ได้ และมองว่า Google ก็มีส่วนรู้เห็นด้วย

    • LineageOS เคยทำได้มากกว่านี้ด้วยระบบสิทธิ์แบบแยกต่างหากที่ส่ง ข้อมูลปลอม ให้แอป และแอปก็บ่นไม่ได้ Google ทำให้ฟีเจอร์นั้นถูกถอดออก
    • มือถือในแง่นี้แย่กว่าประสบการณ์เดสก์ท็อปยุค 90 และ 00 มาก รู้สึกเหมือนถอยหลังอย่างชัดเจน อย่างน้อยใน Windows 98 ก็ยังลบรายการออกจากโฟลเดอร์ StartUp ได้
    • สิ่งที่ต้องการดูใกล้เคียงกับ GrapheneOS
      https://grapheneos.org/
    • เมื่อไม่นานมานี้บน Android เจอแอปที่แจ้งเตือนทุก ๆ ไม่กี่ชั่วโมงประมาณว่า “แอป X ต้องการข้อมูลตำแหน่ง จึงเปิดตำแหน่งให้แล้ว”
      รู้ว่าแอปสามารถขอให้เปิดข้อมูลตำแหน่งได้ แต่แปลกใจที่แอปเปิดเองฝ่ายเดียวได้ และก็หาวิธีบล็อกไม่เจอ
      ด้วยเหตุผลแบบนี้เลยรู้สึกว่าโทรศัพท์เครื่องไหนก็ไว้ใจได้ยาก
    • iOS มีการตั้งค่า Background App Refresh ที่เปิดปิดได้เป็นรายแอป
  • เพราะกรณีแบบนี้ เราจึงต้องไม่หยุดต่อสู้เพื่อ ความเป็นส่วนตัวดิจิทัล และกฎหมายที่คุ้มครองมัน
    มันไม่ใช่เรื่อง “ไม่มีอะไรต้องซ่อน” แต่เป็นเรื่องการไม่ให้บุคคลที่สามเฝ้าติดตามและขายข้อมูลส่วนบุคคลโดยที่เราไม่รับรู้อย่างชัดเจนและไม่ยินยอม
    ตอนนี้เราอยู่ท่ามกลางสงครามข้อมูลเต็มรูปแบบ และต้องต้านกลับอย่างแข็งขัน

  • น่าหงุดหงิดที่เรื่องแบบนี้กลายเป็นเหมือนมาตรฐาน ทั้งที่ผู้กระทำที่ไม่หวังดีแทบไม่ต้องจ่ายต้นทุนอะไรเลย
    พอเห็นบทความนี้แล้วรู้สึกดีที่ใช้ GrapheneOS อยู่ ใช้เป็นเครื่องหลักมาหลายเดือนแล้ว และทุกแอปตอนติดตั้งต้องถูกอนุญาตหรือปฏิเสธ สิทธิ์เครือข่าย อย่างชัดเจน
    แอปโลคัลแบบนี้จะไม่มีทางให้สิทธิ์เครือข่ายเด็ดขาด และแอปคีย์บอร์ดที่รู้สึกไม่สบายใจมาตลอดก็ไม่ให้เช่นกัน

    • วิธีที่ซ่อนสิทธิ์ไว้ แล้วทำให้ผู้ใช้ต้องเชื่อใจฝ่ายที่เชื่อได้ยากที่สุดแทบทั้งหมด ทำให้เรื่องแบบนี้กลายเป็นมาตรฐานและถูกส่งเสริมอย่างแข็งขัน
      ไม่ใช่แค่ระดับน่าขำ แต่เป็นการเป็นปฏิปักษ์ต่อ ความเป็นส่วนตัวและความปลอดภัย ของผู้ใช้อย่างโจ่งแจ้ง
    • กำลังคิดว่าจะย้ายไป GrapheneOS แต่ลังเลตรงที่มันทำงานได้เฉพาะบน โทรศัพท์ Google เท่านั้น ส่วน OS ทางเลือกอื่น ๆ สำหรับ Android ดูเข้ากันได้น้อยกว่ามาก เลยสงสัยว่าตัวเองระแวงเกินไปหรือเปล่า
    • อยากรู้ว่าสามารถควบคุมได้ไหมว่าแอปไหนรันตอนเริ่มระบบ และแอปไหนรันในเบื้องหลังได้
  • ระบบปฏิบัติการควรทำให้ การเข้าถึงอินเทอร์เน็ต เป็นสิทธิ์ที่ผู้ใช้อนุญาตหรือเพิกถอนได้ เหมือนว่า Android เคยมีอะไรแบบนั้นมาก่อน ส่วน iOS น่าจะมีแค่ข้อมูลมือถือเท่านั้น
    ถ้าผมซื้ออุปกรณ์ที่อ้างว่าใช้ Bluetooth แต่จริง ๆ แล้วต้องการการเข้าถึงอินเทอร์เน็ต ผมจะคืนสินค้า

    • สิทธิ์แบบอนุญาต/เพิกถอนของ Android เป็นโครงสร้างที่เพิ่มเข้ามาภายหลัง เมื่อก่อนต้องยอมรับสิทธิ์ทั้งหมดทีเดียวก่อนติดตั้งจากสโตร์ และการเข้าถึงอินเทอร์เน็ตก็เป็นหนึ่งในนั้น
      ถ้าไม่ยินยอมก็รับแอปไม่ได้ สิทธิ์บางอย่างยังเป็นแบบนั้นอยู่ และหลายสิทธิ์เปลี่ยนมาเป็นแบบอนุญาต/เพิกถอนแล้ว
      การเข้าถึงอินเทอร์เน็ตยังคงเป็นสิทธิ์อยู่ แต่ Google Play ไม่ถามอีกต่อไปแล้ว แอปทุกตัวจึงมีได้ อย่างไรก็ตาม ถ้าไม่ได้ร้องขอไว้ใน manifest ก็จะไม่ทำงาน
    • เคยใช้ NetGuard เพื่อบล็อกการเข้าถึงอินเทอร์เน็ตของแอปบางตัวบน Android
      https://netguard.me/
    • ถ้าดู คำขอเครือข่าย ที่แอปส่งและรับได้ก็คงดี
      สำหรับผู้เริ่มต้น ให้แสดงโดเมน และถ้าเป็นโดเมนที่ Apple ใส่ไว้ใน allowlist ด้วยวิธีใดวิธีหนึ่ง ก็แสดงเป็นสีเขียวได้ ถ้าไม่อยู่ทั้งใน allowlist และ blocklist ก็แสดงเป็นสีเหลือง หรือถ้าสีทำให้สับสน ก็แค่แสดงชื่อก็พอ
      แอปที่ส่งคำขอไปยัง blocklist ก็ให้ระงับจาก App Store จนกว่าจะมีการตรวจสอบเพิ่มเติม
      สำหรับผู้ใช้ขั้นสูง ควรให้แตะเพื่อดูรายละเอียดอย่าง payload และ header ได้ ฟีเจอร์นี้จำเป็นจริง ๆ และดูเหมือนไม่ได้เพิ่มยากขนาดนั้น
    • นี่เป็นส่วนที่น่าขำที่สุด ในบรรดาสิทธิ์ทั้งหมด สิ่งที่สำคัญจริง ๆ มีอยู่แค่สองอย่างเท่านั้น คือ การเข้าถึงไฟล์ทั้งหมด กับการเข้าถึงเครือข่าย ถ้าแอปอ่านหรือเขียนข้อมูลนอกพื้นที่เก็บข้อมูลของตัวเองไม่ได้ จะมีหรือไม่มีสิทธิ์ Bluetooth แล้วมันต่างกันตรงไหน
    • แม้จะไม่ใช่สิทธิ์ที่ผู้ใช้อนุญาตเองโดยตรง แต่แอป macOS ที่อยู่ใน sandbox มี entitlement[1] สำหรับการเข้าถึงเครือข่าย Apple บังคับให้แอปทั้งหมดที่ขายบน Mac App Store ต้องใช้ sandbox
      [1]: https://developer.apple.com/documentation/bundleresources/en...
  • ผู้ให้บริการแอปสโตร์น่าจะควรตัดข้อความอย่าง “ไม่มีการเก็บข้อมูลส่วนบุคคลหรือส่งต่อให้บุคคลที่สาม” ออกไปเสีย
    แล้วเตือนแทนว่า “แอปนี้มีสิทธิ์เกี่ยวกับเครือข่าย จึงสามารถส่งข้อมูลใด ๆ ไปที่ไหนก็ได้ตามต้องการ” หรือ “ผู้สร้างแอปอ้างว่าจะไม่ให้ข้อมูลแก่บุคคลที่สาม แต่เราไม่มีวิธีตรวจสอบเรื่องนี้เลย”
    ในความเป็นจริง Apple หรือ Google ไม่มีทางรู้ได้ว่าอะไรคือ บุคคลที่สาม เซิร์ฟเวอร์ในจีนและฮ่องกงอาจเป็นฝ่ายหนึ่งเองก็ได้ ใครจะไปรู้ นอกจากผู้สร้างแอปแล้วก็ไม่มีใครรู้

    • ถ้าคุณแตะต้องเทคโนโลยีดิจิทัลหรืออิเล็กทรอนิกส์ที่เกี่ยวข้องกับจีน ก็ควรมองไว้ก่อนว่าข้อมูลส่วนบุคคล ข้อมูลตำแหน่ง และข้อมูลอื่น ๆ ทั้งหมดที่มีอยู่จะถูกดึงออกไป เก็บรวบรวม และ พรรคคอมมิวนิสต์จีน สามารถเข้าถึงได้
      พรรคคอมมิวนิสต์จีนอาจไม่ได้สนใจข้อมูลของบุคคลใดบุคคลหนึ่งมากนัก แต่สนใจข้อมูลรวมอย่างมาก อีกทั้งมันจะมีประโยชน์มากเมื่อเชื่อมโยงกับเป้าหมายเฉพาะ เช่น ข้อมูลของเจ้าหน้าที่รัฐบาลสหรัฐฯ หลายล้านคนที่รวบรวมมาหลายปี [0][1]
      “การทดลองครั้งใหญ่” ที่หวังว่าการค้าเสรีและการแลกเปลี่ยนจะนำจีนไปสู่ประชาธิปไตยและเสรีภาพ ล้มเหลวโดยสิ้นเชิง ผลลัพธ์มีเพียงทำให้เผด็จการไร้ปรานีที่มุ่งขยายอิทธิพลไปทั่วโลกแข็งแกร่งขึ้นเท่านั้น ไม่ควรทำธุรกิจกับจีน
      [0] https://en.wikipedia.org/wiki/Office_of_Personnel_Management...
      [1] https://www.nbcnews.com/tech/security/china-spent-years-coll...
  • ต้องตระหนักว่าอุปกรณ์ที่ใช้เฝ้าดู สุดท้ายก็จะค่อย ๆ ใช้สิ่งที่มันเฝ้าดูอยู่จนหมดไปเอง ท้ายที่สุดก็กลายเป็นว่าต้องเฝ้าดูตัวมอนิเตอร์อย่างจริงจังอีกที
    อุปกรณ์ BLE ตัวนี้จะค่อย ๆ แต่แน่นอน ระบายแบตเตอรี่รถยนต์ให้หมด วันหนึ่งมันส่งคำเตือนมา คุณก็ต้องชาร์จแบตเตอรี่ แต่ไม่นานแม้แต่คำเตือนก็จะหยุดส่ง
    แถมยังดูดข้อมูลมือถือแล้วส่งไปจีน และยังใช้แบตเตอรี่มือถือด้วย นึกของขวัญวันหยุดที่แย่กว่านี้ได้ยาก และนี่เป็น ภัยต่อผู้บริโภคแบบ 3 ชั้น ที่หาได้ยาก

    • ถ้าเป็นแบตเตอรี่รถยนต์ทั่วไปขนาด 70Ah กระแสที่มอนิเตอร์นี้ใช้ 1mA จะใช้เวลา 8 ปีถึงจะทำให้แบตหมด ถ้าได้รับคำเตือนว่า “เหลือ 25%” ก็แปลว่าเหลือเวลาอีกแค่ 2 ปีก่อนต้องชาร์จใหม่
      พูดจริง ๆ แล้ว การคายประจุเองสูงกว่ามอนิเตอร์นี้ประมาณหนึ่งหลัก
  • Android ควรมีฟีเจอร์ที่ให้ ข้อมูล GPS ปลอม บนอุปกรณ์จริงได้ น่าจะมีประโยชน์กับแอปที่ขอ GPS โดยไม่มีเหตุผล
    ถ้าแอปไฟฉายต้องการ GPS เพื่อเปิดใช้งาน ก็ไม่มีปัญหา ตำแหน่งปัจจุบันคือภูเขาคิลิมันจาโร

    • Android เตือนผู้ใช้ว่าจำเป็นต้องใช้สิทธิ์ที่เกี่ยวข้องกับตำแหน่ง ปัญหาคือการสแกน Bluetooth ต้องใช้สิทธิ์นี้ และนักพัฒนาแอปก็ฉวยโอกาสเก็บ ข้อมูลตำแหน่ง อื่น ๆ ไปด้วย
      นักพัฒนาแอปยังพยายามอธิบายกับผู้ใช้ผ่านป๊อปอัปทำนองว่า “ให้กดอนุญาตเพื่อให้ Bluetooth ทำงาน”
    • ในการตั้งค่าสำหรับนักพัฒนามีฟีเจอร์ mock location อยู่ เท่าที่เข้าใจคือให้ดาวน์โหลดและเลือกแอปที่ให้ “ข้อมูลตำแหน่งปลอม” แล้วแอปนั้นจะให้ตำแหน่งปลอมตามวิธีที่มันถูกพัฒนามา
  • มาถึงจุดนี้ การสันนิษฐานว่าอุปกรณ์พวกนี้กำลังรวบรวมข้อมูลจำนวนมากแล้วส่งกลับสำนักงานใหญ่ก็ดูสมเหตุสมผล ถ้าเราเตอร์ TP-Link ส่งทุกอย่างไปจีนก็คงไม่น่าแปลกใจ
    แต่เรื่องนี้ไม่ได้จำกัดอยู่แค่จีน และ iPhone ที่ใช้อยู่ตอนนี้ก็อาจกำลังส่งทุกการกดแป้นพิมพ์และข้อมูลตำแหน่งไปสหรัฐฯ อยู่ก็ได้

    • ผมไม่ค่อยชอบวิธีคิดแบบ “สันนิษฐานว่ามันเป็นอย่างนั้น” เท่าไร ตัวอย่างเช่น ถ้าเราเตอร์ TP-Link ส่งข้อมูลกลับไปจริง ๆ เว้นแต่จะใช้เทคนิคจารกรรมแท้ ๆ มันก็น่าจะส่งเป็นแพ็กเก็ตบนอินเทอร์เน็ตสาธารณะ ซึ่งตรวจสอบได้
      ถ้าสงสัยว่าเราเตอร์ TP-Link กำลังส่งทุกอย่างไปยังเซิร์ฟเวอร์ระยะไกล ก็แค่ มอนิเตอร์ทราฟฟิก
  • เวลาที่เพื่อน ๆ หัวเราะเยาะความหมกมุ่นเรื่องความเป็นส่วนตัวและการเก็บข้อมูล ก็เอากรณีแบบนี้ให้ดูได้เลย
    ไม่มีเหตุผลให้เชื่อว่าพวกเขาทำเรื่องนี้ด้วยเจตนาร้าย แต่ในความเป็นจริงเราก็ไม่มีทางรู้ อาจเป็นแค่ความไม่รู้หรือความไร้ความสามารถก็ได้

    • หนึ่งในแรงจูงใจที่บันทึกเรื่องนี้ไว้เป็นเอกสาร คือเพื่อเพิ่มการตระหนักรู้ และกระตุ้นให้คนอื่น ๆ ลองดูว่าอุปกรณ์และแอปในบ้านของตัวเองกำลังทำอะไรอยู่
      ปริมาณข้อมูลตำแหน่งที่ผู้ผลิตอุปกรณ์เก็บรวบรวมนั้นมากพอสมควร ถ้ามีการนำไปสร้างรายได้จริง ก็สงสัยว่าแม้จะไม่ได้เปิดเผยต่อผู้ใช้ปลายทาง แบบนั้นจะถือว่าเป็นเจตนาร้ายได้หรือไม่
      AMap SDK ที่แอปใช้นั้นเก็บข้อมูลตำแหน่งมากกว่านี้อีกมาก ในกรณีนี้รู้สึกว่าน่าจะมีวัตถุประสงค์เพื่อเพิ่มความแม่นยำของบริการระบุตำแหน่งและซอฟต์แวร์แผนที่ และไม่ได้มองว่าสิ่งนั้นเป็นเจตนาร้ายในตัวเอง
      แต่ถ้าพฤติกรรมแบบนี้ไม่ได้เปิดเผยต่อผู้ใช้และนักพัฒนา เรื่องก็จะต่างออกไป เว็บไซต์เป็นภาษาจีน [1] และก็ไม่แน่ใจว่าจะมีใครอ่านข้อกำหนดโดยละเอียดเพื่อยืนยันหรือไม่
      [1] https://lbs.amap.com/api/lightweight-android-sdk/download
    • การที่เจตนาไม่ได้ดูเป็นอันตรายไม่ได้แปลว่าไม่เป็นไร อีกปัญหาคือถ้าไม่มีอะไรต้องปิดบัง แล้วทำไมถึงไม่เปิดเผยการเก็บข้อมูลอย่างตรงไปตรงมาตั้งแต่แรก
      ทำให้นึกถึงสมัยก่อนที่เคยคิดว่าปุ่ม Facebook “Like” บนทุกเว็บไซต์ไม่มีพิษภัย จนได้รู้ว่ามีการติดตามในวงกว้างแค่ไหนโดยไม่ได้รับความยินยอม
      วิธีแบบจีนที่พบได้บ่อยคือจงใจรวบรวมข้อมูลด้วยวิธีที่ดูภายนอกเหมือนไม่มีพิษภัย หรือจงใจเปิดช่องโหว่ด้านความปลอดภัยทิ้งไว้กว้าง ๆ เพื่อให้เอาไปใช้ในทางที่ผิดได้ภายหลัง ถ้าถูกจับได้ก็พูดว่า “ขอโทษครับ/ค่ะ เราจะแก้ไขทันที”
      ที่แย่กว่านั้นคือการกระทำแบบนี้ไม่มีผลตามมาเลย Google, EU หรือ FTC สักฝ่ายควรต้องสั่งปรับเป็นเงินค่าปรับ
    • การที่ผู้คนยอมมอบข้อมูลของตัวเองไปโดยไม่คิดอะไรมาก ดูเหมือนจะเป็นกรณีพิเศษของ โศกนาฏกรรมของทรัพยากรร่วม หรืออาจเป็นด้านกลับกันของมัน แน่นอนว่าไม่ได้ใช้ได้กับทุกที่ แต่การต้องปรับตัวให้เข้ากับผู้ใช้ที่ไร้เดียงสาที่สุดนั้นมีต้นทุน