2 คะแนน โดย GN⁺ 2025-03-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • หลัง Android 11 Google จำกัดการตรวจสอบข้ามแอป แต่หลายแอปยังสามารถตรวจสอบ รายชื่อแอปที่ติดตั้ง ได้เพียงแค่ประกาศไว้ใน AndroidManifest.xml
  • นโยบาย package visibility กำหนดให้แอปมองเห็นเฉพาะแอปที่จำเป็นต่อฟังก์ชันหลัก แต่การประกาศแพ็กเกจรายตัวและฟิลเตอร์ ACTION_MAIN ถูกใช้เหมือนเป็น ช่องทางเลี่ยง
  • Swiggy ประกาศไว้ 154 แอป, Zepto 165 แอป, KreditBee 860 แอป และ Moneyview 944 แอป ทำให้ตรวจสอบได้ว่ามีแอปเฉพาะอยู่ในอุปกรณ์ของผู้ใช้หรือไม่
  • จากแอปอินเดีย 47 แอปที่สุ่มดู มี 31 แอปใช้ intent filter ACTION_MAIN ซึ่งทำให้มองเห็นแอปที่ติดตั้งส่วนใหญ่ที่มีหน้าจอได้โดยไม่ต้องใช้ QUERY_ALL_PACKAGES
  • ข้อมูลแอปที่ติดตั้งและสิทธิ์ READ_SMS อาจนำไปสู่การทำโปรไฟล์ การตั้งราคาต่างกัน และการตัดสินเครดิต/คุณสมบัติ แต่ผู้ใช้รู้ได้ยากว่าแอปอ่านอะไรเมื่อใด

ช่องโหว่ในนโยบายการมองเห็นแอปของ Android

  • ในอดีต Android อนุญาตให้แอปมองเห็นแอปอื่นที่ติดตั้งอยู่ในโทรศัพท์ของผู้ใช้ได้โดยไม่ต้องมีสิทธิ์พิเศษ
  • Google เริ่มใช้นโยบาย package visibility ตั้งแต่ Android 11 เพื่อจำกัดการเข้าถึงนี้
    • แอปควรมองเห็นแอปอื่นที่ติดตั้งอยู่ได้เฉพาะเมื่อจำเป็นต่อฟังก์ชันหลักเท่านั้น
    • นักพัฒนาต้องระบุแอปที่ต้องการตรวจสอบไว้ใน AndroidManifest.xml ซึ่งเป็นไฟล์ตั้งค่าจำเป็นของแอป Android ทุกแอป
  • สำหรับกรณีใช้งานเฉพาะ เช่น แอปจัดการไฟล์ เบราว์เซอร์ และแอปแอนติไวรัส สิทธิ์ QUERY_ALL_PACKAGES จะได้รับอนุญาตเป็นข้อยกเว้น
  • กรณีอย่างการแสดงแอปชำระเงิน UPI หรือการตรวจจับแอปโคลน/แอปหลายบัญชี อาจเป็นเหตุผลที่ชอบด้วยกฎหมายในการตรวจสอบแอปได้
    • manifest จำนวนมากที่ตรวจสอบก็มีการตรวจสอบแอปเพื่อวัตถุประสงค์ด้านการชำระเงิน ความปลอดภัย และการตรวจจับการฉ้อโกงรวมอยู่ด้วย

การตรวจสอบแอปในวงกว้างของ Swiggy และ Zepto

  • Swiggy ระบุ ชื่อแพ็กเกจ 154 รายการ ไว้ใน manifest เพื่อให้ตรวจสอบได้ว่าแอปเหล่านั้นอยู่ในโทรศัพท์หรือไม่
    • รายชื่อมีแอปอย่าง Xbox, PlayStation, Naukri และ Upstox รวมอยู่ด้วย
    • หมวดหมู่กว้างมาก จึงมีความเป็นไปได้สูงว่าเป็นการเก็บข้อมูลเพื่อทำโปรไฟล์ผู้ใช้และสร้างโปรไฟล์พฤติกรรม
    • Google มองรายชื่อแอปที่ติดตั้งว่าเป็น ข้อมูลผู้ใช้ส่วนบุคคลและละเอียดอ่อน
  • Zepto ลงทะเบียนใน manifest ให้ตรวจสอบ 165 แอป บนอุปกรณ์
    • มีแอปยอดนิยมหลายหมวดหมู่ เช่น Netflix, Bumble และ Binance รวมอยู่ด้วย
    • มี รายงาน ว่า Zepto แสดงราคาต่างกันให้ผู้ใช้ iOS และ Android และลูกค้าบางส่วน รายงาน ว่าราคาแตกต่างกันระหว่างโทรศัพท์ Android แต่ละเครื่อง
  • เมื่อผู้ใช้ติดตั้งแอปจาก Play Store จะไม่สามารถเห็นได้ว่า manifest ของแอปนั้นมีรายชื่อแอปใดที่ใช้ตรวจสอบอยู่บ้าง

ขอบเขตการตรวจสอบของแอปไรเดอร์ส่งอาหารและแอปสินเชื่อส่วนบุคคล

  • แอปสำหรับไรเดอร์ส่งอาหารของ Swiggy และ Zepto มีรายชื่อแอปที่ตรวจสอบต่างจากแอปสำหรับผู้บริโภค
    • ทั้งสองแอปมีรายการที่สามารถตรวจสอบได้ว่าไรเดอร์ทำงานให้บริษัทอื่นใดบ้าง
    • Swiggy ยังตรวจสอบแอปสินเชื่อส่วนบุคคล แอปการเงินส่วนบุคคล และแอปเกมอย่าง Ludo King กับ Carrom Pool ด้วย
  • แนวปฏิบัติแบบเอารัดเอาเปรียบของแอปสินเชื่อส่วนบุคคลในอินเดียได้รับการ บันทึกไว้ แล้ว และเมื่อหลายปีก่อนเคยมีการกวาดล้างครั้งใหญ่จนแอปหลายพันรายการถูกลบออกจาก Play Store
  • KreditBee เป็นหนึ่งในแอปยอดนิยมด้านสินเชื่อส่วนบุคคลบน Play Store มียอดดาวน์โหลด มากกว่า 50 ล้านครั้ง และตรวจสอบ 860 แอป ใน manifest
    • มีรายการอย่าง Tamil Calendar, Odia Calendar, Qibla Direction Finder, แอปวัด และแอปโหราศาสตร์รวมอยู่ด้วย
    • แอปหาคู่สำหรับผู้ที่ยังไม่จบมัธยมปลาย Jodii for Diploma, +2,10 below และแอปซื้อขายวัวกับควาย ซื้อขายวัวและควาย Animall ก็ปรากฏเป็นตัวอย่าง โดยทั้งสองมียอดดาวน์โหลดมากกว่า 10 ล้านครั้ง
  • Moneyview ก็เป็นแอปสินเชื่อส่วนบุคคลที่มียอดดาวน์โหลด มากกว่า 50 ล้านครั้ง และมี 944 แอป ใน manifest
  • นโยบาย Play Store จำกัดอย่างชัดเจน การใช้ QUERY_ALL_PACKAGES ของแอปสินเชื่อส่วนบุคคล แต่ KreditBee และ Moneyview เลี่ยงข้อจำกัดนี้ด้วยการไล่ระบุแอปที่ต้องการทีละรายการใน manifest

วิธีดูรายชื่อแอปโดยไม่ใช้ QUERY_ALL_PACKAGES

  • ในบรรดาแอปที่ตรวจสอบ มีเพียง Cred เท่านั้นที่ใส่ QUERY_ALL_PACKAGES ซึ่งเป็นสิทธิ์ความเสี่ยงสูงและละเอียดอ่อนไว้ใน manifest
    • Play Store อนุญาต “ข้อยกเว้นชั่วคราว” สำหรับสิทธิ์นี้แก่แอปที่มีวัตถุประสงค์หลักที่ตรวจสอบได้ในการอำนวยความสะดวกธุรกรรมทางการเงินที่เกี่ยวข้องกับผลิตภัณฑ์ทางการเงินที่อยู่ภายใต้การกำกับดูแล
    • manifest ของ PhonePe หรือ PayTM ที่อยู่ในสาขาเดียวกันไม่มีสิทธิ์นี้
    • Cred ยังให้บริการสินเชื่อส่วนบุคคลด้วย และดูเหมือนจะไม่เข้าข่ายข้อยกเว้นตามนโยบายสินเชื่อส่วนบุคคลของ Play Store
  • manifest ของบางแอปมี intent filter ACTION_MAIN ดังต่อไปนี้
<queries>
  [...]
  <intent>
    <action android:name="android.intent.action.MAIN" />
  </intent>
  [...]
</queries>
  • ฟิลเตอร์ ACTION_MAIN ให้การมองเห็นแอปที่ติดตั้งส่วนใหญ่ที่มีหน้าจอ และทำให้มองเห็นรายชื่อแอปในโทรศัพท์ได้แม้ไม่มีสิทธิ์ QUERY_ALL_PACKAGES
    • เมื่อใช้แอป Android พื้นฐานที่ใส่การตั้งค่าเดียวกันนี้เพื่อตรวจสอบแอปที่ติดตั้ง ก็ได้รับรายชื่อแอปทั้งหมดในโทรศัพท์กลับมา
  • จากแอปอินเดียที่สุ่มวิเคราะห์ 47 แอป มี 31 แอป ใช้ฟิลเตอร์นี้ หรือประมาณ 2 ใน 3 แอป
    • แอปที่ใช้: Astrotalk, Axis Mobile, Bajaj Finserv, BookMyShow, Cars24, Cure.fit, Fibe, Groww, Housing, Instamart, Ixigo, JioHotstar, KreditBee, KukuTV, LazyPay, Ludo King, Meesho, MoneyTap, Moneyview, Navi, NoBroker, Nykaa, Ola, PhonePe, PhysicsWallah, Slice, Spinny, Swiggy, Swiggy Delivery, Tata Neu, Zomato
    • แอปที่ไม่ใช้: Airtel Thanks, Blinkit, Byju’s, MyGate, Dream11, Flipkart, HDFC Mobile, Healthify, INDmoney, MyJio, Paytm, PaisaBazaar, ShareChat, Unacademy, Vedantu, Zepto
  • Swiggy มีฟิลเตอร์ ACTION_MAIN ด้วย แต่ก็ยังระบุรายชื่อแอปที่ตรวจสอบไว้อย่างชัดเจน ทำให้เห็นบางส่วนของแนวทางการเก็บข้อมูล
  • ไฟล์ manifest ที่อ่านเผยแพร่อยู่ที่ android-manifest-files และส่วนใหญ่ดาวน์โหลดเมื่อวันที่ 18 หรือ 19 มีนาคม
  • การตั้งค่านี้ไม่ได้จำกัดอยู่เฉพาะแอปของบริษัทอินเดีย
    • Facebook, Instagram, Snapchat, Subway Surfers และ Truecaller มีการตั้งค่าเดียวกัน
    • Amazon, Spotify, X, Discord และ WhatsApp ไม่มี

ความละเอียดอ่อนของข้อมูลแอปที่ติดตั้งและสิทธิ์ SMS

  • ข้อมูลแอปที่ติดตั้งเป็น ข้อมูลส่วนบุคคลที่ละเอียดอ่อน
    • ในปี 2022 Vice รายงาน ว่าหลังมีข่าวว่า Roe v. Wade อาจถูกพลิกกลับ ไม่นานนัก ตลาดข้อมูลชื่อ Narrative ก็กำลังขายข้อมูลผู้ใช้ที่ดาวน์โหลดแอปติดตามประจำเดือน
  • นอกจากการตรวจสอบแอปที่ติดตั้งแล้ว manifest ของแอปยังอาจรวมสิทธิ์จำนวนมากที่ดูเกินขอบเขตที่จำเป็นได้
  • Zepto ขอสิทธิ์ READ_SMS
    • ผู้ใช้สามารถปฏิเสธได้ แต่จำเป็นต้องให้สิทธิ์นี้เมื่อสมัคร Zepto Postpaid
    • หากอนุญาตสิทธิ์ดังกล่าว SMS จาก sender ID ของธนาคารจำนวนมากตามระบบ TRAI รวมถึง SMS จาก Blinkit, Swiggy, Bigbasket และ Flipkart จะถูกนับรวมอยู่ในเป้าหมายการตรวจสอบด้วย
    • ดูเหมือนว่าเป็นการอ่านข้อความ SMS ของธนาคารเพื่อตรวจสอบคุณสมบัติสำหรับแผน Postpaid แต่ก็สามารถอ่านได้แม้ผู้ใช้ไม่ได้เลือกใช้ฟังก์ชันนั้น
  • หลังจากผู้ใช้ให้สิทธิ์อย่าง READ_SMS แก่แอปแล้ว ผู้ใช้จะไม่สามารถเห็นได้ว่าแอปเข้าถึงอะไรเมื่อใด
  • ข้อมูลการติดตั้งแอปบน Android อาจถูกใช้โดยนักพัฒนาแอปและนายหน้าข้อมูลเพื่อทำโปรไฟล์ อ้างอิงข้ามกับข้อมูลจากเครือข่ายโฆษณา และใช้ในงานอย่างการกำหนดราคา

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

 
GN⁺ 2025-03-30
ความคิดเห็นจาก Hacker News
  • ช่องโหว่ ACTION_MAIN เคยถูกพูดถึงมาก่อนแล้ว: https://commonsware.com/blog/2020/04/05/android-r-package-vi...
    Google ไม่พยายามแพตช์เรื่องนี้ อยากรู้เหมือนกันว่าจะเกิดอะไรขึ้นถ้าส่งเรื่องนี้เข้า Android VDP ในฐานะการข้ามสิทธิ์
    ยังมีคำถาม SO ที่ผู้เขียนโพสต์ไว้เกี่ยวกับการ bypass ด้วย: https://stackoverflow.com/q/79527331

    • ถ้ากำหนดว่าแอปที่ประกาศ ACTION_MAIN ต้องเป็น launcher จริง ๆ ก็ดูเหมือนว่าสักวันช่องโหว่นี้จะปิดได้ การผสานงานที่ถูกต้องน่าจะควรใช้ intent ที่เฉพาะเจาะจงกว่านี้
      ถึงตอนนั้น โฟลว์ที่ Android ถามว่าจะตั้งเกมสุ่ม ๆ ที่เพิ่งดาวน์โหลดมาเป็น launcher เริ่มต้นหรือไม่ จะกลายเป็นปฏิสัมพันธ์ที่ค่อนข้างเสี่ยงสำหรับแอปน่าสงสัยเอง ผู้ใช้อาจเลิกใช้แล้วรายงาน หรือผู้ใช้ที่ไม่ค่อยรู้เรื่องอาจเลือกเป็น launcher เริ่มต้นจนทำหน้าจอ Home พัง แล้วไปรายงานใน Play Store ก็เป็นไปได้ จริง ๆ แล้วถ้าจะเผยแพร่เป็นแอประดับ launcher ก็น่าจะมีการทดสอบอัตโนมัติและข้อกำหนดเพิ่มเติม ทำให้เป็นภาระต่อผู้พัฒนา
    • เพราะอย่างนั้นโปรเจกต์อย่าง XPL-Extended หรือ XPrivacyLua รุ่นเก่าจึงจำเป็นอย่างยิ่ง เวลาใช้โทรศัพท์ Android จะไม่ใช้โดยไม่มีของพวกนี้
    • ช่องโหว่นี้มีมาตั้งแต่ตอนที่เริ่มนำข้อจำกัดการมองเห็น package มาใช้แล้ว และดูเหมือนแทบทุกคนจะรู้วิธี bypass ข้อจำกัดนี้
      ยากที่จะเชื่อว่าวิศวกรของ Google จะไม่รู้ช่องโหว่ที่ใช้กันแพร่หลายนี้ แต่ก็สงสัยว่ามีแหล่งอ้างอิงไหมว่า Google ปฏิเสธที่จะแก้ไข
    • การส่งไปยัง Android VDP เป็นความคิดที่ดี แต่ก็คงไม่แปลกใจถ้าเขาปัดว่าเป็น พฤติกรรมตามที่ตั้งใจไว้
    • ไม่เข้าใจว่า “ปฏิเสธที่จะแพตช์” หมายถึงอะไร ใน Play Store ถ้าแอปที่ไม่ใช่ launcher พยายามเผยแพร่โดยขอฟิลเตอร์นั้น Google ก็ปฏิเสธอยู่แล้ว
  • ยังไม่เข้าใจเลยจริง ๆ ว่าทำไมถึงต้องมี “แอป” แบบ native จนถึงตอนนี้ยังไม่เคยเห็น “แอป” ที่เว็บไซต์หรือเว็บแอปทำแทนไม่ได้ และส่วนใหญ่ถ้าเป็นเว็บแอปก็น่าจะดีกว่าด้วยซ้ำ
    ข้อดีเดียวของ “แอป” ดูเหมือนจะเป็นการที่นักพัฒนาสามารถเข้าถึง ข้อมูลส่วนตัว ที่จริง ๆ แล้วไม่จำเป็นต้องใช้
    การได้ขึ้น “App Store” ก็เป็นข้อดีอย่างหนึ่ง แต่ App Store เป็นแนวคิดที่ไม่จำเป็นซึ่ง Apple/Google สร้างขึ้นเพื่อหักส่วนแบ่งก้อนใหญ่จากยอดขาย
    เว็บเบราว์เซอร์ให้ sandboxing ที่ดีพอสมควร ไม่มีค่าธรรมเนียม “submit” และทุกคนบนโทรศัพท์ทุกเครื่องเข้าถึงได้

    • คำตอบง่าย ๆ คือ ประสบการณ์ผู้ใช้
      ในความเป็นจริง เว็บแอปบนมือถือส่วนใหญ่แย่มาก ประสบการณ์ผู้ใช้สู้แอป native ไม่ได้เลย ไม่ชอบที่ข้อความถูกเลือกได้ ไม่ชอบที่ทุกหน้าดึงลงเพื่อรีเฟรชได้ และไม่ชอบที่ปัดซ้ายแล้วกลับไปหน้าก่อนหน้า
      ปัญหาเหล่านี้คงหาวิธีเลี่ยงได้ แต่ไลบรารี Silk ตัวใหม่ (https://silkhq.co/) ดูเหมือนเป็นกรณีแรกที่เข้าใกล้ประสบการณ์ native มาก ๆ แต่แค่ความจริงที่ว่ามันเป็นไลบรารีแบบเสียเงิน ก็แสดงให้เห็นแล้วว่าปัญหานี้ไม่ใช่เรื่องเล็กน้อย
    • เป็นมุมมองที่แปลก โดยแก่นแล้วก็เหมือนกับการบอกว่าแล็ปท็อปไม่จำเป็นต้องมีแอป native
      มีหลายอย่างที่แอป native ทำได้ แต่เบราว์เซอร์ทำได้ไม่ดีหรือทำไม่ได้เลย เช่น การตัดต่อวิดีโอ/เสียงหนัก ๆ การเข้าถึง RAM ปริมาณมาก การใช้ประโยชน์จากการประมวลผลด้วย GPU และงานที่ใกล้กับฮาร์ดแวร์ ซึ่งเบราว์เซอร์อย่างเดียวยังไม่พอ
    • บน iOS ในกรณีที่มีทั้งแอป native และเว็บแอป มักมีความแตกต่างมากในเรื่อง การใช้แบตเตอรี่ และอาการกระตุก ตามที่คอมเมนต์อื่นบอก ผม/ฉันก็ชอบแอปออฟไลน์เต็มรูปแบบอย่างแผนที่หรือโน้ตด้วย
      ไม่ได้หมายความว่าวิธีที่ Apple และ Google นำไปใช้จริงนั้นดี แต่ก็ไม่คิดว่าอนาคตที่ใช้แต่เว็บแอปจะมาถึง ด้วยเหตุผลเดียวกัน ผม/ฉันคงไม่เปลี่ยนคอมพิวเตอร์จริง ๆ ของตัวเองไปเป็น Chromebook ในเร็ว ๆ นี้
    • เห็นด้วยบางส่วน แอปที่บริษัทต่าง ๆ ทำออกมาเพื่อรวบรวมและจัดการโทเคนช้อปปิ้ง หรือเพื่อติดต่อศูนย์บริการลูกค้า ถ้าเป็นเว็บไซต์คงดีกว่ามาก
      แต่แอปที่ ทำงานแบบออฟไลน์ บนอุปกรณ์ และไม่โปรยข้อมูลไปยังบริการต่าง ๆ ที่ผม/ฉันควบคุมไม่ได้ ยังเป็นสิ่งที่ดีอยู่ ผม/ฉันก็ไม่อยากพึ่งพาการเชื่อมต่ออินเทอร์เน็ตไม่ว่าจะอยู่ที่ไหน
      ชอบแอปออฟไลน์อย่าง OsmAnd/Organic Maps ที่นำทางเวลาอยู่ในป่าหรือภูเขา และชอบแอปที่แชร์ข้อมูลโดยเชื่อมต่อโดยตรงกับอุปกรณ์ local ของผม/ฉัน แทนที่จะผ่านเซิร์ฟเวอร์บุคคลที่สาม
      ถ้าเป็นไปได้ แอปทุกตัวควรถูกพัฒนาแบบ offline-first และต้องการอินเทอร์เน็ตเฉพาะเมื่อจำเป็นเท่านั้น แอปที่ทำงานไม่ได้หากไม่มีอินเทอร์เน็ต เป็นเว็บแอปก็พอแล้ว และไม่จำเป็นต้องมาอยู่บนอุปกรณ์ของผม/ฉัน
    • ยากมากที่จะเข้าใจหรือเห็นใจ มือถือเว็บยังรู้สึกเหมือนเป็นประสบการณ์ที่แย่มากอยู่ และโดยทั่วไปแอปไม่เป็นแบบนั้น
      สงสัยว่าครั้งล่าสุดที่คุณจองตั๋วเครื่องบินบนมือถือเว็บคือเมื่อไหร่ ก็ไม่รู้ว่าจะจัดการพื้นที่หน้าจอที่เบราว์เซอร์กินไปอย่างไร แอปสามารถ cache การยืนยันตัวตนและจัดการด้วย FaceID ได้ แต่การต้องล็อกอินทุกครั้งก็เป็นปัญหา
  • นี่แหละเหตุผลที่ชอบ Hacker News
    เมื่อวานเจอบทความนี้เลยเอาไปโพสต์ในบอร์ด Android ของ Reddit: https://old.reddit.com/r/Android/comments/1jmwg4w/everyone_k...
    ได้ upvote 0 และคอมเมนต์เต็มไปด้วยปฏิกิริยาที่ไม่รู้ว่าเป็นคนซึม ๆ หรือบอตกันแน่
    แต่ที่นี่ขึ้นมาอยู่แถวอันดับ 2 และคอมเมนต์ส่วนใหญ่ก็น่าสนใจ
    subreddit ที่ตายแล้วมีเยอะ แต่ r/android น่าจะเกือบแย่ที่สุดในบรรดานั้น

    • ไม่รู้ว่าใน Reddit เกิดอะไรขึ้นกันแน่ แต่ถ้ามีที่ไหนที่ ทฤษฎีอินเทอร์เน็ตที่ตายแล้ว เป็นจริง ก็คงเป็นที่นั่น
      แถม subreddit ตามหัวข้อต่าง ๆ โดยรวมดูเหมือนจะถูกดูแลโดยคนที่มีผลประโยชน์เกี่ยวข้องกับหัวข้อนั้น ๆ ซึ่งเป็นผลเสียต่อชุมชน เคยโพสต์บทความที่เขียนอย่างละเอียดว่า Llama ของ Meta อยู่ภายใต้ไลเซนส์กรรมสิทธิ์แบบไหน และไลเซนส์นั้นหมายความว่าอะไรกันแน่ แต่ผู้ดูแล r/LocalLlama ลบเองโดยไม่มีเหตุผล และแม้จะถามเพื่อจะเข้าใจกฎให้ดีขึ้น ก็ไม่ตอบว่าลบเพราะอะไร
      ตอน “Reddit purge” ครั้งล่าสุด มีการแทนที่ผู้ดูแลชุมชนจำนวนมากด้วยพนักงาน Reddit เลยอดคิดไม่ได้ว่าแพลตฟอร์มส่วนใหญ่ถูกขายให้แต่ละบริษัทดูแลพื้นที่ของตัวเองโดยตรงหรือเปล่า
    • ความสำเร็จของโพสต์ขึ้นกับดวงมาก โพสต์แล้วอาจไม่มีปฏิกิริยาอะไรเลย หรือผู้คนอาจแห่เข้ามาก็ได้
      ถ้ากดลิงก์ “past” ใต้หัวข้อ จะเจอกระทู้เมื่อ 2 วันที่แล้วที่เงียบสนิท
    • ในทางกลับกัน ต่อให้โพสต์ลิงก์ที่คิดว่าน่าสนใจลง HN ก็มีหลายครั้งที่คอมเมนต์เป็น 0
    • r/android ได้รับผลกระทบหนักจาก subreddit blackout และปริมาณกิจกรรมลดลงมาก
    • subreddit นั้นโดยรวมเป็นกลุ่มคนอายุน้อยกว่า และมีท่าทีใกล้เคียง “แฟนบอย” เลยดูเหมือนจะ downvote เพียงเพราะเป็นการวิจารณ์ Android
      Hacker News เข้าใจแนวคิดของการวิจารณ์เชิงสร้างสรรค์
  • ประเด็นสำคัญคือส่วนที่ว่า “ตรวจไปไกลกว่าหมวดหมู่ทั่วไป ถึงขั้นดูแอปอย่าง Tamil Calendar, Odia Calendar, Qibla Direction Finder, แอป mandir, แอปโหราศาสตร์ด้วย พวกเขารู้ว่ากำลังทำอะไรอยู่”
    แอปกู้นี้กำลังทำ profiling ผู้คนตาม อัตลักษณ์ทางชาติพันธุ์/ภูมิภาค (Tamil, Odia) และ ศาสนา (Qibla Direction Finder คือมุสลิม, แอป mandir คือฮินดู)

  • แอป Android ของ HSBC UK จะดูแอปที่ติดตั้งอยู่ และถ้ามีแอปที่มีสิทธิ์บางอย่างก็จะปฏิเสธไม่ยอมทำงาน เช่น ห้ามมี launcher ทางเลือก และตอนนี้ถ้ามีแอปแม้เพียงตัวเดียวที่ติดตั้งจากนอก Google app store ก็จะปฏิเสธไม่ยอมทำงาน
    เคยบ่นไว้ที่นี่มาก่อนแล้ว แต่สุดท้ายก็ไปขอ อุปกรณ์รักษาความปลอดภัยแบบฮาร์ดแวร์ แล้วใช้เว็บไซต์แทน

    • แนวทางสำหรับแอปที่ปฏิเสธการทำงานด้วยกลเม็ดน่าสงสัยและเปราะบาง แล้วอ้างว่าผู้ใช้จะได้รับ “การปกป้อง” จากสิ่งนั้น
    • น่าสนใจที่แอป FirstDirect ซึ่งอยู่ในเครือ HSBC กลับไม่มีปัญหานั้น เคยใช้ได้แม้บนมือถือที่เคย root มาก่อน
    • เรื่องนี้ค่อนข้างตลก เพราะเพื่อจะแจ้งให้ผู้ใช้รู้ว่าแอปอื่นอาจสอดส่องผู้ใช้ได้ ก็ต้อง สอดส่อง ผู้ใช้ก่อน
      สงสัยว่าพวกเขามีบอกไหมว่าข้อมูลนี้จะไม่ถูกส่งกลับไปยังบริษัท
    • ไร้สาระถึงขั้นนั้นเลย ให้ความรู้สึกสมเป็น HSBC
  • คำตอบของคำถามที่ว่า “ทำไมการรู้ว่ามีแอป Xbox หรือ Playstation ติดตั้งอยู่ในมือถือฉันถึงจำเป็นต่อฟังก์ชันหลักของ Swiggy? การรู้ว่ามีแอป Naukri หรือ Upstox ช่วยอะไรในการส่งของชำถึงบ้านฉัน?” คือเพื่อ fingerprinting

    • ยังตรวจแอป remote desktop ยอดนิยมด้วย แอปที่อนุญาตให้เชื่อมต่อเข้ามายังโทรศัพท์สามารถถูกใช้เพิ่มอัตราความสำเร็จของการหลอกลวงได้
      แอปธนาคารก็เช่นกัน ถ้าเป็นมิจฉาชีพ การรู้ล่วงหน้าว่าเป้าหมายใช้ธนาคารไหนย่อมมีประโยชน์มาก
      โดยเฉพาะถ้าเชื่อมโยงกับหมายเลขโทรศัพท์ได้ ก็น่าจะมีกลุ่มคนจำนวนไม่น้อยที่ต้องการข้อมูลแบบนี้
    • ถ้าเป็นแค่ fingerprinting ก็ถือว่ายังเป็นสถานการณ์ที่ดีที่สุดแล้ว
  • จากส่วนที่ว่า “สำหรับกรณีใช้งานที่เฉพาะเจาะจงมาก เช่น file manager, browser, แอป antivirus Google ให้ข้อยกเว้นสิทธิ์ QUERY_ALL_PACKAGES เพื่อให้เห็นแอปทั้งหมดที่ติดตั้งอยู่ได้” ผมไม่เข้าใจว่าทำไม browser ต้อง enumerate แอปที่ติดตั้งอยู่ด้วย
    ทำไม?!

    • เมื่อผู้ใช้เข้า URL ของ play.google.com Google อยากแสดงปุ่ม “ติดตั้ง” หรือ “เปิด” โดยขึ้นกับว่าแอปนั้นติดตั้งอยู่แล้วหรือยัง
      พูดง่าย ๆ คือโทษฝ่าย product management ของ Google ได้เลย
    • แอปบางตัวในกลุ่มนี้ขอสิทธิ์กว้างกว่าที่จำเป็นจริงมาก
      เช่น Obsidian ขอสิทธิ์ทั้ง file system ทั้งที่จริงแล้วแค่เข้าถึงไฟล์ที่ผู้ใช้ให้ดูได้ก็เพียงพอ
    • file manager จำเป็นต้องมีสิทธิ์เข้าถึงทั้งหมด เพราะด้วยฟังก์ชันนั้น มันสามารถดึงและตรวจสอบโค้ดของแอปใด ๆ ที่ติดตั้งอยู่ในระบบได้
      เป็นฟีเจอร์ที่มีประโยชน์มาก และคงไม่อยากให้มันหายไป
    • อาจเป็นเพราะต้องการตรวจว่าแอปใดสามารถจัดการลิงก์นั้นได้
  • “ทุกคนรู้จักแอปทั้งหมดในมือถือคุณ” หมายถึงเรื่องของ มือถือ Android ส่วน iPhone ไม่มีข้อบกพร่องด้านความเป็นส่วนตัวแบบนี้

    • จริง ๆ แล้วทำได้ด้วย API ที่ไม่เปิดเผยต่อสาธารณะ แอปของ Apple ใช้กันตลอด แต่ห้ามแอปอื่นใช้
      https://blog.verichains.io/p/technical-analysis-improper-use...
    • iOS แย่กว่าในบางแง่ ถ้าลงทะเบียนกับ MDM ของบริษัท บริษัทจะเห็นแอปทั้งหมดได้
      ถ้าใช้ work profile ซึ่งเป็นวิธีมาตรฐานใน Android ช่วงหลัง ๆ บริษัทจะเห็นได้เฉพาะแอปใน work profile เท่านั้น
    • iPhone ถือว่าเป็นฝันร้ายด้านความเป็นส่วนตัวน้อยกว่า
      หนึ่งในแรงจูงใจใหญ่ที่สุดของการทำแอปคือการกวาดข้อมูลสารพัดจากผู้ใช้ ลองดูว่ามีแอปจำนวนแค่ไหนที่ขอสิทธิ์เข้าถึงรายชื่อผู้ติดต่อ และมีแอปจำนวนแค่ไหนที่จำเป็นต้องใช้รายชื่อผู้ติดต่อจริง ๆ สำหรับฟังก์ชันของมัน ดังนั้นจึงยังน่าแปลกใจอยู่บ้างที่หลายคนตกใจกับการค้นพบแบบนี้
    • บน iOS เรื่องนี้ถูกบรรเทาลงไปพอสมควรเมื่อไม่กี่ปีก่อน
      เดิมทีแอปสามารถลองสื่อสารกับแอปอื่นผ่าน custom URI scheme และถ้าสำเร็จก็จะรู้ว่าแอปนั้นติดตั้งอยู่ Twitter เคยใช้วิธีนี้ในการทำ fingerprinting
      ตอนนี้แอปต้องรับ intent แบบพิเศษ และต้องระบุรายชื่อแอปที่จะใช้เพื่อวัตถุประสงค์นั้น
    • พอพูดถึง iPhone เลยมีเรื่องที่สงสัย บางครั้งแอปใหม่ [เดิม] แค่เช็กฟอลโลว์หลัก ๆ ก็พอ เลยล็อกอินผ่านเว็บแอป
      ช่วงหลังฟีเจอร์ LLM ของพวกเขาอัปเดตครั้งใหญ่ เลยติดตั้งแอปเพื่อลองดู ระหว่างที่ติดตั้งแอปอยู่ ทุกครั้งที่ดูเว็บไซต์บนมือถือจะมีแบนเนอร์ใหญ่บอกให้ไปใช้แอป โผล่ขึ้นมา และลบด้วย ad blocker หรือ content blocker สำหรับสิ่งรบกวนก็ไม่ได้ พอลบแอปออกอีกครั้งมันก็หายไป
      ทำไมถึงเป็นแบบนี้? สงสัยว่าเว็บไซต์บนมือถือรู้ได้อย่างไรว่าติดตั้งแอปไว้หรือไม่ และตอนที่ไม่ได้ติดตั้งแอป ก็สามารถบล็อกคำชวนให้ใช้แอปทั้งหมดด้วย content/blocker สิ่งรบกวนได้ แต่ทำไมตอนติดตั้งแล้วถึงบล็อกไม่ได้
  • ต้องมี root แต่สามารถบล็อกหรือปลอมสิ่งนี้ได้ด้วยโมดูล LSPosed[1] อย่าง XPrivacyLua[2] ได้ยินว่ายังมี AppOps[3] ซึ่งเป็น closed source ด้วย แต่ไม่เคยลองใช้
    [1]: https://lsposed.org
    [2]: https://github.com/M66B/XPrivacyLua / https://github.com/0bbedCode/XPL-EX
    [3]: https://appops.rikka.app

    • เพิ่งเคยได้ยิน XPrivacyLua ครั้งแรก เป็นแอปจากผู้เขียนคนเดียวกับ NetGuard[0] ที่ยอดเยี่ยม ซึ่งใช้มาหลายปีแล้ว
      ที่น่าสนใจคือ XPrivacyLua ไม่ได้รับการสนับสนุนอีกต่อไป และแอป companion รุ่นโปรกำลังจะถูก Google ถอดออกจาก Play Store ด้วยเหตุผลว่าใช้สิทธิ์ QUERY_ALL_PACKAGES
      [0]: https://github.com/M66B/NetGuard
      [1]: https://xdaforums.com/t/closed-app-xposed-6-0-xprivacylua-an...
  • สงสัยว่าแอป Windows โดยเฉพาะแอปที่ไม่ได้ติดตั้งจาก MS Store สามารถ enumerate ชื่อหน้าต่างทั้งหมดที่เปิดอยู่ได้หรือไม่ แอปจะเฝ้าดูทราฟฟิกเว็บทั้งหมดได้ยากแค่ไหน ถ้าดูจากชื่อหน้าต่างอย่างเดียว?
    ถามจริง ๆ นะ ChatGPT เออออไปหมดเลยไม่ค่อยมีประโยชน์ ต้องการคนที่บอกได้ว่าในโลกจริงทำไมมันถึงทำได้ไม่จริง

    • ในฐานะโปรแกรมเมอร์ที่ทำ Win32 มานาน ขอบอกว่าทำได้ เป็นการออกแบบโดยตั้งใจ ถ้าเปรียบเทียบ Windows ก็เหมือน สังคมที่มีความไว้วางใจสูง
      มีฟังก์ชัน EnumWindows() และ EnumChildWindows() สำหรับจุดประสงค์นี้
      ตัวอย่างของฟีเจอร์นี้ให้ดูยูทิลิตี “Windows Modifier v2.00” และ Spy++ (SPYXX.EXE) ของ Microsoft เมื่อก่อนตอนเพิ่งได้มาใหม่ ๆ มีหน้าที่เกี่ยวข้องเยอะมาก แต่ตอนนี้ค้นหาด้วยชื่อที่ถูกต้องแทบไม่เจอแล้ว รู้สึกเหมือนเป็นสัญญาณว่าอินเทอร์เน็ตลืมอะไรได้ดีขึ้น
      ทางออกสำหรับแอปที่ไม่น่าไว้วางใจคือไม่ใช้มันเลย หรือใช้ใน VM
    • แอปส่วนใหญ่ไม่เพียงแต่เห็นชื่อหน้าต่างอื่นทั้งหมดที่เปิดอยู่ในระบบได้เท่านั้น แต่ยังบันทึกทุกการกดคีย์ ถ่ายสกรีนช็อต บันทึกเสียง/วิดีโอของผู้ใช้หรือหน้าจอ และคัดลอกหรือลบไฟล์ในโฮมไดเรกทอรีได้ด้วย ทำได้โดยไม่ต้องมีสิทธิ์หรือการแจ้งเตือนแบบชัดเจน
      อย่างน้อยนี่ก็เป็นจริงกับ Windows และระบบ *nix แบบดั้งเดิมส่วนใหญ่ โดยเฉพาะ X11
      ในเรื่องนี้มีอย่างหนึ่งที่ Android ทำได้ดี โดยพื้นฐานแล้วรันแอปพลิเคชันทั้งหมดในฐานะผู้ใช้คนละคนกัน กล่าวคือมีโฟลเดอร์ home ต่างกัน และมองไม่เห็นแอปอื่น
    • การเฝ้าดูทราฟฟิกเว็บด้วยชื่อหน้าต่างอย่างเดียวไม่แม่นยำนัก เพราะชื่อหน้าของเพจเปลี่ยนแปลงได้มาก
      ถึงอย่างนั้นเครื่องมืออย่าง ManicTime หรือ ActivityWatch ถ้าไม่ติดตั้งปลั๊กอินเบราว์เซอร์ ก็จะติดตามประวัติเบราว์เซอร์ด้วยชื่อหน้าต่าง
      https://www.manictime.com/
      https://activitywatch.net/
    • Windows แตกต่างกว่ามาก มีโมเดลความปลอดภัยที่หลวมกว่าและเก่ากว่า ไม่มีขอบเขตความปลอดภัยระหว่างหน้าต่างที่รันอยู่บนเดสก์ท็อปเดียวกัน
      โดยเฉพาะประโยคที่ว่า “UAC [ยังคง] ไม่ใช่ขอบเขตความปลอดภัย” นั้นถูกต้อง เมื่อคุณกดยืนยันหรือป้อนรหัสผ่านเพื่อยกระดับโปรเซส ก็เท่ากับว่ายกระดับเดสก์ท็อปทั้งชุดและทุกอย่างที่กำลังรันอยู่ไปด้วยโดยพฤตินัย
    • ใช่แล้ว จุดที่ AutoHotKey ทำสิ่งนี้ได้คือพื้นฐานของสคริปต์ AHK ที่มีประโยชน์จำนวนมาก