Mobil
OWASP Mobile Top 10 (2024): M1 dan M10 gacha va ekspertiza har birida nimani tekshiradi
OWASP Mobile Top 10 ning 2024 yilgi ro'yxati bo'yicha qo'llanma: har bir toifa nima, ekspert uni qanday tekshiradi va ilovangizni qanday tayyorlash kerak.
· 12 daq. o'qish

Mobil ilova ekspertizasi hisobotini ochsangiz, har bir topilma yonida ko'pincha ikkita havola turadi: MASVS/MASWE identifikatori va OWASP Mobile Top 10 toifasi. Masalan, o'z ilovamiz hisobotida "root aniqlash joriy qilinmagan" topilmasi MASWE-0097 va M7 (Insufficient Binary Protections) bilan belgilangan edi. Mobile Top 10 — mobil ilovalardagi eng muhim xavf toifalarining ro'yxati, uni OWASP jamoasi tuzadi va oxirgi tahriri 2024 yilda chiqqan.
Bu maqolada ro'yxatni M1 dan M10 gacha ko'rib chiqamiz: har bir toifa nimani anglatadi, ekspertiza unga tegishli nimalarni tekshiradi, o'zingiz qanday tekshirasiz va qanday tuzatasiz. Har bir bo'lim qisqa, chuqurroq ma'lumot uchun tegishli maqolalarga havola berilgan.
Ro'yxat qanday ishlatiladi
Mobile Top 10 — bu standart yoki test metodikasi emas, balki xavflar xaritasi. Amaliy tekshiruv OWASP MASVS (talablar), MASTG (test usullari) va MASWE (zaifliklar katalogi) asosida bajariladi. Top 10 esa topilmalarni tushunarli toifalarga ajratadi va ustuvorlikni belgilashga yordam beradi. Shuning uchun ilovani ekspertizaga tayyorlashda Top 10 — yaxshi boshlang'ich nazorat ro'yxati.
M1: Improper Credential Usage
Nima: kalitlar, parollar va tokenlar noto'g'ri ishlatilishi — kodga yozilgan API kalitlari, hamma foydalanuvchi uchun umumiy statik token, login ma'lumotlarini ochiq saqlash yoki uzatish.
Ekspertiza nimani tekshiradi: APK/IPA dekompilyatsiya qilinadi va satrlar ichidan kalit, parol, token qidiriladi; ilova va server o'rtasida qanday hisob ma'lumotlari uzatilishi kuzatiladi.
O'zingiz tekshiring:
jadx -d out app-release.apk
grep -rniE "api[_-]?key|secret|password|bearer" out/
strings -n 8 lib/arm64-v8a/libapp.so | grep -iE "key|secret"
Tuzatish: maxfiy kalitlar faqat serverda, ilova backend'ga foydalanuvchining qisqa muddatli tokeni bilan murojaat qiladi. Batafsil: APK va IPA ichidagi kalitlar.
M2: Inadequate Supply Chain Security
Nima: ilovaga kiritilgan uchinchi tomon kutubxonalari, SDK'lar va build jarayoni orqali keladigan xavf: zaif yoki tashlab qo'yilgan paketlar, ishonchsiz manbalar, himoyasiz CI va imzo kalitlari.
Ekspertiza nimani tekshiradi: ilovadagi kutubxonalar va ularning versiyalari, ma'lum zaifliklari bor komponentlar, keraksiz SDK'lar (masalan, ortiqcha ruxsat so'raydigan reklama yoki analytics SDK'lari).
O'zingiz tekshiring: Flutter'da flutter pub outdated, Android'da ./gradlew app:dependencies, iOS'da Podfile.lockni ko'rib chiqing. Har bir bog'liqlik uchun: kim qo'llab-quvvatlaydi, oxirgi yangilanish qachon bo'lgan, bizga haqiqatan kerakmi.
Tuzatish: lock fayllar repozitoriyada, bog'liqliklar muntazam yangilanadi, ishlatilmaydigan SDK'lar olib tashlanadi, release imzo kaliti xavfsiz joyda (Google Play App Signing yoki himoyalangan CI secrets) saqlanadi.
M3: Insecure Authentication/Authorization
Nima: autentifikatsiya va huquqlarni tekshirish xatolari — muhim qarorni faqat ilovada qabul qilish, server tomonda huquqni tekshirmaslik, zaif sessiya boshqaruvi, PIN yoki biometriyani faqat UI darajasida qo'llash.
Ekspertiza nimani tekshiradi: API so'rovlari boshqa foydalanuvchi identifikatori bilan qayta yuboriladi (IDOR), ilova ichidagi tekshiruvlar Frida bilan o'chirib ko'riladi, eksport qilingan ekranlar login'siz ochiladi, token muddati va logout'dan keyingi holati sinaladi.
O'zingiz tekshiring: proxy orqali o'z so'rovingizni boshqa foydalanuvchining ID'si bilan yuboring; logout'dan keyin eski token bilan API'ni chaqiring.
Tuzatish: har bir so'rovda huquq serverda tekshiriladi, tokenlar qisqa muddatli, logout'da serverda bekor qilinadi. Batafsil: IDOR va avtorizatsiya xatolari, deep link va eksport komponentlar.
M4: Insufficient Input/Output Validation
Nima: tashqaridan kelgan ma'lumot (foydalanuvchi kiritishi, deep link, intent, server javobi, QR kod) tekshirilmasdan ishlatiladi. Natija — WebView'da XSS, lokal SQL in'ektsiyasi, path traversal, ilova ichida noto'g'ri sahifa ochilishi.
Ekspertiza nimani tekshiradi: deep link va intent parametrlari, WebView'ga uzatiladigan URL'lar, lokal SQLite so'rovlari, fayl nomlari bilan ishlash.
O'zingiz tekshiring:
adb shell am start -a android.intent.action.VIEW \
-d "myapp://open?url=https://evil.example.com"
Tuzatish: har bir tashqi kirish uchun allowlist, SQLite'da faqat parametrli so'rovlar, WebView navigatsiyasi cheklangan, server tomonda ham bir xil validatsiya. Batafsil: WebView xavfsizligi.
M5: Insecure Communication
Nima: tarmoq aloqasi himoyasi yetarli emas — http ishlatilishi, sertifikatni noto'g'ri tekshirish, SSL xatolarini e'tiborsiz qoldirish, pinning yo'qligi.
Ekspertiza nimani tekshiradi: trafik proxy orqali ushlab olinadi; ilova proxy sertifikatini qabul qiladimi, http havolalar bormi, onReceivedSslError da proceed() bormi. O'z ilovamiz hisobotida bu yerda ikki topilma bo'lgan: sertifikatni xavfsiz tekshirmaslik (yuqori xavf) va http havolalar (past xavf).
O'zingiz tekshiring: qurilmaga Burp yoki mitmproxy sertifikatini o'rnating va ilovani ishlating. Pinning to'g'ri bo'lsa, so'rovlar muvaffaqiyatsiz bo'lishi kerak.
Tuzatish: Android'da cleartext o'chirilgan network_security_config va pin-set, Flutter'da faqat ishonchli root sertifikatlari bilan SecurityContext, iOS'da ATS istisnolarisiz:
<base-config cleartextTrafficPermitted="false" />
Batafsil: SSL pinning, allowBackup va cleartext.
M6: Inadequate Privacy Controls
Nima: shaxsiy ma'lumotlar (ism, telefon, JSHSHIR, joylashuv, hujjatlar) keragidan ortiq yig'iladi, loglarga yoziladi, uchinchi tomon SDK'lariga yuboriladi yoki ekran nusxalari va bildirishnomalarda ko'rinadi.
Ekspertiza nimani tekshiradi: ilova so'raydigan ruxsatlar, loglar (adb logcat) ichidagi shaxsiy ma'lumotlar, analytics'ga nima yuborilishi, ilova fonga o'tganda ekranda nima qolishi.
O'zingiz tekshiring:
adb logcat | grep -iE "token|phone|password|passport"
Tuzatish: faqat zarur ruxsatlar va ma'lumotlar, release'da loglar o'chirilgan, maxfiy ekranlarda ekran nusxasi cheklangan (Android'da FLAG_SECURE), analytics'ga shaxsiy ma'lumot yuborilmaydi.
M7: Insufficient Binary Protections
Nima: ilova binari teskari muhandislik va o'zgartirishdan himoyalanmagan: obfuskatsiya yo'q, root/jailbreak va emulyator aniqlanmaydi, Frida kabi dinamik tahlil vositalariga qarshilik yo'q, yaxlitlik (tamper) tekshirilmaydi.
Ekspertiza nimani tekshiradi: bu o'z tajribamizda eng ko'p topilma bergan toifa. Android'da root aniqlash, yaxlitlik tekshiruvi va dinamik tahlildan himoya yo'qligi yuqori xavf, emulyator aniqlash yo'qligi o'rta xavf deb belgilangan; iOS'da jailbreak aniqlash va dinamik tahlildan himoya yo'qligi yuqori xavf bo'lgan.
O'zingiz tekshiring: root qilingan qurilma yoki emulyatorda release build'ni ishga tushiring, frida-server bilan ulaning, APK'ni qayta imzolab o'rnating. Ilova har bir holatni aniqlashi kerak.
Tuzatish: RASP kutubxonasi (biz freeRASP ishlatganmiz) bloklovchi ekran bilan, R8 minify va Dart obfuskatsiyasi:
flutter build apk --release --obfuscate --split-debug-info=build/symbols
Batafsil: root va jailbreak aniqlash, Frida va RASP, ilova yaxlitligi va obfuskatsiya.
M8: Security Misconfiguration
Nima: platforma va ilova sozlamalaridagi xatolar — debuggable=true, allowBackup=true, keraksiz eksport qilingan komponentlar, ortiqcha ruxsatlar, release'da yoqilgan WebView debugging, noto'g'ri fayl ruxsatlari.
Ekspertiza nimani tekshiradi: merged manifest, Info.plist, entitlements, build turlari.
O'zingiz tekshiring:
apktool d app-release.apk -o app_src
grep -nE 'debuggable|allowBackup|exported="true"|usesCleartextTraffic' app_src/AndroidManifest.xml
Tuzatish: release'da debuggable yo'q, allowBackup="false" va dataExtractionRules, faqat zarur komponentlar eksport qilingan, faqat zarur ruxsatlar so'raladi.
M9: Insecure Data Storage
Nima: maxfiy ma'lumotlar qurilmada himoyasiz saqlanadi — SharedPreferences yoki NSUserDefaults da token, shifrlanmagan SQLite, keshda shaxsiy fayllar, logout'dan keyin qolgan WebView cookie'lari, zaxira nusxaga tushadigan ma'lumotlar.
Ekspertiza nimani tekshiradi: ilovaning ichki papkasi (/data/data/<paket>/) root qilingan qurilmada ko'riladi. O'z ilovamizda bu yerda "maxfiy ma'lumotlar ichki xotirada shifrlanmagan holda saqlangan" degan yuqori xavfli topilma bo'lgan.
O'zingiz tekshiring:
adb shell run-as uz.example.app ls -R /data/data/uz.example.app/
adb shell run-as uz.example.app cat shared_prefs/FlutterSharedPreferences.xml
(run-as faqat debug build'da ishlaydi; release'ni root qilingan test qurilmada tekshiring.)
Tuzatish: tokenlar va maxfiy qiymatlar Keystore/Keychain'da (Flutter'da flutter_secure_storage), logout'da barcha lokal ma'lumot va WebView ma'lumotlari tozalanadi. Batafsil: Keystore va Keychain.
M10: Insufficient Cryptography
Nima: kriptografiya noto'g'ri ishlatiladi — eskirgan algoritmlar (MD5 yoki SHA1 parol uchun, DES, ECB rejimi), kodga yozilgan kalitlar, doimiy IV, o'z "shifrlash" algoritmini o'ylab topish, Random bilan kalit yaratish.
Ekspertiza nimani tekshiradi: dekompilyatsiya qilingan kodda Cipher.getInstance, MessageDigest, kalit va IV qayerdan olinishi.
O'zingiz tekshiring:
grep -rnE 'AES/ECB|DES|MD5|SHA1|SecretKeySpec' out/sources
Tuzatish: AES-GCM, kalitlar Keystore/Keychain'da yaratiladi va saqlanadi, IV har safar tasodifiy, parollar faqat serverda bcrypt/Argon2 bilan xeshlanadi. Yaxshisi — o'zingiz kriptografiya yozmasdan, platforma va tekshirilgan kutubxonalarga tayanish.
Bir eslatma: ekspertiza topshirilgan APK/IPA uchun MD5, SHA1 va SHA256 nazorat qiymatlarini so'raydi — bu M10 topilmasi emas, faylni identifikatsiya qilish uchun. Batafsil: APK/IPA nazorat qiymatlari.
Ekspertizadan oldin qisqa checklist
- M1: ilovada maxfiy kalit yo'q, umumiy statik token yo'q.
- M2: bog'liqliklar yangilangan, ishlatilmaydigan SDK'lar olib tashlangan.
- M3: huquqlar serverda tekshiriladi, tokenlar logout'da bekor qilinadi.
- M4: deep link, intent va WebView kirishlari allowlist bilan tekshiriladi.
- M5: cleartext o'chirilgan, pinning ishlaydi, SSL xatolari e'tiborsiz qoldirilmaydi.
- M6: loglarda va analytics'da shaxsiy ma'lumot yo'q, ruxsatlar minimal.
- M7: RASP (root/jailbreak, emulyator, hook, debugger, tamper), obfuskatsiya yoqilgan.
- M8:
debuggableyo'q,allowBackup="false", eksport qilingan komponentlar asoslangan. - M9: maxfiy ma'lumotlar Keystore/Keychain'da, logout'da hammasi tozalanadi.
- M10: zamonaviy algoritmlar, kodda kalit yo'q, tasodifiy IV.
Xulosa
OWASP Mobile Top 10 (2024) ilova xavfsizligini o'nta tushunarli savolga ajratadi. Ekspertiza hisobotidagi deyarli har bir topilma shu toifalardan biriga tushadi, shuning uchun ro'yxatni ekspertizadan oldin bandma-band o'tib chiqish — topilmalar sonini kamaytirishning eng to'g'ri yo'li. Tajribamizda eng ko'p e'tibordan chetda qoladigani M7 va M9: ular odatiy ishlab chiqish jarayonida rejalashtirilmaydi, lekin ekspert ularni birinchi navbatda tekshiradi. Ekspertiza jarayoni haqida umumiy ma'lumot: mobil ilova ekspertizasida nimalar tekshiriladi.
Ilovangizni M1 dan M10 gacha ekspertizadan oldin ko'rib chiqmoqchi bo'lsangiz, skanerlash uchun ariza qoldiring. Claude AI agenti kod, manifest va binarni tez tahlil qiladi, mutaxassisimiz esa har bir topilmani qurilmada tasdiqlaydi va yopishda yordam beradi.


