ในช่วงเวลาที่ผ่านมา ผู้อ่านหลายคนคงได้ยินข่าวเกี่ยวกับปัญหาแอปที่พยายามใช้งาน Accessibility API ในทางที่ผิดกันมาพอสมควรแล้ว โดยเฉพาะแอปเถื่อนที่พยายามอ่านข้อมูลบนหน้าจอและควบคุมการทำงานของเครื่องเพื่อโอนเงินออกจากบัญชีธนาคารของเหยื่อ ซึ่งวิธีที่มิจฉาชีพใช้ก็จะเป็นการเรียกใช้ชุดคำสั่งที่เรียกว่า Accessibility API ของแอนดรอยด์ที่มีให้ใช้งานตามปกติอยู่แล้ว แต่ต่างจากแอปทั่ว ๆ ไปตรงที่เป็นการนำไปใช้งานในทางที่ผิด (Misuse of Accessibility API)

หมายเหตุ – ที่ผ่านมามีแอปปลอมที่ใช้ Accessibility API ในทางที่ผิดในรูปแบบอื่นด้วย เช่น แอบดูรหัสในแอปจำพวก Authenticator อย่าง Authy หรือ Google Authenticator เป็นต้น

แน่นอนว่าปัญหานี้ไม่ได้เกิดขึ้นที่ประเทศไทยเป็นที่แรก เพราะที่ผ่านมาก็เคยมีรายงานเกี่ยวกับแอปที่ทำงานในลักษณะแบบนี้ในประเทศอื่น ๆ เช่นกัน และทีมแอนดรอยด์ก็ทราบถึงปัญหานี้และพยายามหาวิธีแก้ไขหรือป้องกันอยู่ตลอดเวลาที่มีการปล่อยแอนดรอยด์เวอร์ชันใหม่

จึงทำให้ใน Android 12 เริ่มมีการเพิ่มคำสั่งที่เรียกว่า isAccessibilityTool เพื่อให้นักพัฒนาแอปที่ใช้ Accessibility API ระบุว่าแอปต้องการใช้ชุดคำสั่งดังกล่าวในรูปแบบไหนระหว่าง “การทำงานเพื่อช่วยเหลือผู้พิการ (Accessibility Tool)” กับ “การทำงานที่ไม่เกี่ยวข้องกับผู้พิการ (Non-accessibility Tool)” ซึ่งการกำหนดค่าดังกล่าวจะส่งผลต่อการกรอกแบบฟอร์มการใช้งาน Accessibility API เพิ่มเติมเพื่อส่งแอปขึ้น Google Play โดยอ้างอิงจาก Use of the AccessibilityService API

ในกรณีที่ระบุว่าเป็น “การทำงานเพื่อช่วยเหลือผู้พิการ (Accessibility Tool)” ก็จะต้องกรอกรายละเอียดตามที่ทาง Google Play กำหนดไว้ เช่น

  • อธิบายการทำงานของฟีเจอร์ที่ใช้งาน Accessibility API
  • กลุ่มผู้ใช้งานสำหรับฟีเจอร์นี้คือใคร
  • วีดีโอตัวอย่างการใช้งานตอนที่เปิดแอป และตอนที่ขออนุญาตใช้งาน Accessibility API จากผู้ใช้

และถ้าเป็น “การทำงานที่ไม่เกี่ยวข้องกับผู้พิการ (Non-accessibility Tool)” ก็จะกรอกรายละเอียดที่ต่างกันออกไป เช่น

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

โดยการกำหนดค่าดังกล่าวที่เพิ่มเข้ามาใน Android 12 จะไม่ได้มีผลต่อการทำงานของแอปโดยตรง มีผลเฉพาะตอนที่ส่งแอปขึ้น Google Play เพื่อให้ทีมงานรีวิวเท่านั้น ทำให้ช่วงเวลาที่ผ่านมามีแอปที่แอบใช้งาน Accessibility API ในทางที่ผิดหลุดขึ้นไปโผล่อยู่บน Google Play (และถูกถอดออกในภายหลัง) บ้างเป็นบางครั้ง

จนมาถึง Android 14 ที่มีการเพิ่มคำสั่ง accessibilityDataPrivate เพื่อให้นักพัฒนาแอปสามารถกำหนดได้ว่า UI ส่วนไหนบนหน้าจอที่เป็นข้อมูลสำคัญและเป็นข้อมูลส่วนตัวของผู้ใช้ เช่น ปุ่มกดรหัส PIN, ช่องแสดงรหัส OTP สำหรับ 2FA, หรือช่องกรอกเลขบัญชีปลายทางเพื่อโอนเงิน เป็นต้น

สมมติว่านักพัฒนาแอปกำหนดให้ช่องกรอกเลขบัญชีปลายทางเพื่อโอนเงินให้เป็น Accessbility Data Private ก็จะทำให้แอปจำพวก “การทำงานที่ไม่เกี่ยวข้องกับผู้พิการ (Non-accessibility Tool)” อ่านข้อมูลหรือทำอะไรกับช่องกรอกข้อมูลนั้น ๆ ไม่ได้เลย แต่แอปที่เป็น “การทำงานเพื่อช่วยเหลือผู้พิการ (Accessibility Tool)” จะยังเห็นช่องกรอกข้อมูลดังกล่าวอยู่

แต่ก็ป้องกันแอปเถื่อนที่ดาวน์โหลดไฟล์ APK มาติดตั้งเอง (Sideload) ไม่ได้อยู่ดี

ด้วยคำสั่งที่เพิ่มเข้ามาใน Android 14 ที่จะช่วยให้ผู้ใช้ปลอดภัยจากแอปปลอมที่พยายามใช้ Accessibility API ในทางที่ผิด แต่นั่นก็หมายถึงเฉพาะแอปที่ติดตั้งผ่าน Google Play เท่านั้น เพราะการกำหนดค่า isAccessibilityTool ที่เพิ่มเข้ามาใน Android 12 จะมีผลก็ต่อเมื่อแอปปลอมเหล่านั้นพยายามส่งแอปขึ้น Google Play  เท่านั้น แต่ถ้าแอปเหล่านั้นใช้วิธีหลอกให้ผู้ใช้ดาวน์โหลดไฟล์ APK มาตั้งตั้งเอง (Sideload) ก็จะไม่มีผลอะไรอยู่ดี เรียกได้ว่าเป็นคำสั่งที่ช่วยให้ผู้ใช้สามารถติดตั้งแอปจาก Google Play หรือ Android App Store ได้อย่างมั่นใจซะมากกว่า

ดังนั้นเลี่ยงการดาวน์โหลดไฟล์ APK เพื่อติดตั้งแอปที่มีการขอใช้ Accessibility API จึงเป็นสิ่งที่ผู้ใช้แอนดรอยด์ทั่วไปจะต้องทำอยู่ดีครับ