Preventing Android A11y Click Hijacking Attack

Preventing Android A11y Click Hijacking Attack

ဟိုတစ်နေ့က ထိုင်းက ဆရာတစ်ယောက်ရေးထားတဲ့ Post လေးဖတ်ဖြစ်တယ်။ ထိုင်းမှာ Android ဖုန်းတွေကို exploit လုပ်တဲ့နည်းတစ်ခုပေါ်နေတယ်တဲ့။ Hacker က ဘဏ်ကလူအဖြစ်​ ယောင်ဆောင်ပြီး App တစ်ခုသွင်းခိုင်းမယ်။ အဲ့ App က Accessibility(A11y) Service Privilege တောင်းမယ်။ ရသွားပြီဆိုတာနဲ့ UI ေပါ်မှာရှိတဲ့ စာတွေကိုလိုက်မှတ်ထားမယ်။​ ဘဏ် App ေတွမှာဆိုရင် ကိုယ့်အကောင့် Password တွေ၊​ ကဒ် အချက်အလက်တွေကို Keylogger လိုမျိုးလိုက်မှတ်သွားပြီး Hacker က အချက်အလက်တွေယူသွားလို့ရတယ်။ များသောအားဖြင့် ဒီလို App တွေက memory cleaner တို့လိုမျိုး အယောင်အဆောင် App တွေကို အသုံးပြုတယ်။ ဒီထက်ပိုဆိုးတာက Accessibility Service ရထားတဲ့ App တွေက Screen ကို ထိန်းချုပ်လို့ရတယ်။​ ဒီတော့ ကိုယ်မသိအောင် ငွေလွှဲတာတွေလုပ်သွားလို့လည်း ရသေးတယ်။

ဒီတော့ ကိုယ်တွေအနေနဲ့ ဘယ်လိုကာကွယ်မလဲ။

ဒီက ထိုင်း Central Bank ကတော့ Accessibility Service အကုန်ပိတ်ဆိုပြီး စာထုတ်ထားတယ်ပြောတယ်။ လက်တွေ့မှာတော့ ဒါမျိုးမလုပ်ကြပါနဲ့။​ တကယ် မသန်စွမ်းတွေအတွက် တော်တော့်ကို အခက်အခဲဖြစ်စေပါတယ်။ သင့် App ကို  မသန်စွမ်းတွေ သုံးလို့မရတော့တဲ့ထိဖြစ်သွားမယ်။ နောက်တစ်ခု ကျွန်တော်တွေ့တာက​ ဝှက်သင့်တဲ့ စာတွေကို ပုံနဲ့ အစားထိုးဖို့ပြောတယ်။​ ဒါလည်းမလုပ်ပါနဲ့။ Alt-text မပါတဲ့ ပုံတွေကို Screen reader တွေက ဖတ်လို့မရလို့ မသန်စွမ်းတွေအနေနဲ့ အရေးကြီးတဲ့ အချက်အလက်တွေကို မရရှိတော့ပဲနေမယ်။  ကျွန်တော် လိုက်ဖတ်ကြည့်သလောက် တွေ့တဲ့ တကယ်အသုံးကျတဲ့  နည်းလေးတွေပြောပြမယ်။ 

Biometrics

ပထမနည်းက Biometrics သုံးပြီး Authenticate လုပ်တာကပို စိတ်ချရပါတယ်၊။ Accessibility Service က Biometrics ကိုတော့ ထိန်းလို့မရတာကြောင့် automatic ငွေလွှဲတာမျိုး လုပ်လို့မရပါဘူး။ User တွေကို Biometrics သုံးဖို့ တိုက်တွန်းဖို့ လုပ်ပါ။ သင်ကိုယ်တိုင်လည်း မသုံးရသေးရင် Biometrics On ထားဖို့ အကြံပြုချင်ပါတယ်။

2 Factor Authentication (2FA)

Passcode အပြင် 2FA ခံပါ။ ဒါဆိုရင် Keylogging ကြောင့် Passcode ပါသွားရင်တောင် တစ်ဘက်က Login ဝင်လို့ရမှာ မဟုတ်ပါဘူး။ 2FA အတွက်ဆိုရင် ကျွန်တော်က OTP Generator (1Password, Authy, Google Authenticator) လိုမျိုး ပိုသုံးစေချပါတယ်။ ​SMS, Push Notification က MFA Fatigue Attack  လို့ခေါ်တဲ့ User က ရောင်ပြီး မနှိပ်မိမခြင်း၊ စိတ်မရှုပ်မခြင်း တောက်လျှောက် ပို့တဲ့ Attack လုပ်လို့ရပါတယ်။

ACCESSIBILITY_DATA_PRIVATE_YES

Android 14 က စပြီးတော့ Google က ACCESSIBILITY_DATA_PRIVATE_YES  ဆိုတဲ့ Flag တစ်ခုထည့်ထားပေးတယ်။  ဒီ Flag ကို သုံးမယ်ဆိုရင် Google Play Store မှာ Permission Declaration Form ဖြည့်ထားပြီး သေချာစီစစ်ထားတဲ့ Accessibility Service တွေကပဲ အဲဒီ အချက်အလက်ကိ်ုဖတ်လို့ရမယ်။ ဒီတော့ ဖုန်းဆက်ပြီး Play Store အပြင်ကသွင်းတဲ့ (Sideload) App တွေက အရေးကြီးတဲ့ အချက်အလက်တွေကို ယူမလို့မရတော့ဘူး။

<TextView
   android:id="@+id/card_cvc"
   android:accessibilityDataPrivate="yes"
   android:text="732" />

 ဒါပေမဲ့ Android 14 ကအခုမှ Dev Preview ဆိုတော့ တကယ် User တွေလက်ထဲရောက်ဖိုက ကြာဦးမယ်။ လက်ထဲရောက်ရင်တောင် Adoption ကိုလည်းစောင့်ရဦးမယ် ဆိုတော့ အနည်းဆုံး ၂နှစ်လောက် ကြာမယ်။

Inform users

အခု အကောင်းဆုံးလုပ်လို့ရတာက Device မှာ သွင်းထားတဲ့ Accessibility Service တွေကို ပြပေးပြီး "ခင်ဗျား ဒါတွေသွင်းထားတယ်။​ ဒီအန္တာရယ်ရှိတယ်။​ လက်ခံလား" ဆိုပြီး မေးတာမျိုးလုပ်ထားလို့ရတယ်။

if (isA11yEnabled()) {
	val getA11yNames = getEnabledA11yServiceNames()
    // Show user warning that these a11y are turned on
    // Preferably filter out trusted services like Talkback
}

fun isA11yEnabled(): Boolean {
    val accessibilityManager =
        getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager

    return accessibilityManager.isEnabled
}

fun getEnabledA11yServiceNames(): List<String> {
    val accessibilityManager =
        getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager

    return accessibilityManager.getEnabledAccessibilityServiceList(AccessibilityEvent.TYPES_ALL_MASK)
        .map {
            // Format: {.PACKAGE_NAME/.NAME}
            it.id.substringAfter("/.")
        }
}

KBank မှာတော့ ဖွင့်ထားတဲ့ A11y Service တွေပြပေးပြီး လက်ခံတယ်ဆို Selfie ရိုက်ခိုင်းတယ်။ ကိုယ်သွင်းထား/အသုံးပြုနေတဲ့ A11y Service စာရင်းက အရင်က ကိုယ်လက်ခံခဲ့တဲ့ စာရင်းနဲ့ မတူတော့ဘူးဆိုရင် ထပ်ပြီးတော့ Confirm ထပ်လိုပ်ခိုင်းပါတယ်။ မကာကွယ်နိုင်ပေမဲ့ အနည်းဆုံး User တွေအနေနဲ့ အသိတစ်ခုတော့ ရသွားတာပေါ့။

ဒီနည်းတွေအကုန်လုံးက ရာနှုန်းပြည့် ကာကွယ်မှာတော့မဟုတ်ဘူး။ ရာနှုန်းပြည့် ကာကွယ်လို့လည်းမရဘူး။ တကယ်တော့ ဒီလို Click jacking Attack တွေက User တွေက နည်းပညာနဲ့ အကျွမ်းတဝင်မဖြစ်လို့​ အမြတ်ထုတ်လို့ရတာဖြစ်တယ်။​ ဒီတော့ ကိုယ့် User တွေကို နားလည်အောင်လို့ သင်ပေးဖို့ (User Education) လည်းလိုအပ်တယ်။​ User တစ်ယောက်အနေနဲ့ အကောင်းဆုံးက

  • မသိတဲ့ App ဘာမှမသွင်းနဲ့။​ Memory cleaner, task cleaner ဆိုတာတွေက Android လိုမျိုး Unix အခြေခံတဲ့ OS တွေမှာမလိုဘူး။ (Unused memory is useless memory philosophy)
  • မသိတဲ့သူ ဖုန်းဆက်ပြီး ဘဏ်ကပြောရင် မယုံနဲ့။​ သေချာပြန်မေး။
  • အကောင့်ပါသွားပြီဆိုတာ သိသိချင်း သက်ဆိုင်ရာ ဘဏ်ကို အကြောင်းကြား၊​ အကောင့်ကို အမြန်ပိတ်ပါ။

Click Hijacking ရန်ကနေကာကွယ်နိုင်ကြပါစေ။

Show Comments