Mobil
iOS ilovani ekspertizaga tayyorlash: amaliy checklist
Jailbreak va dinamik tahlildan himoya, ATS, Keychain va IPA tayyorlash. iOS ilovani kiberxavfsizlik ekspertizasiga topshirishdan oldin nimalarni tekshirish kerak.
· 8 daq. o'qish

iOS ko'pincha "o'zi xavfsiz platforma" deb qabul qilinadi. Ilovalar sandbox'da ishlaydi, App Store tekshiruvi bor, kod imzolanadi. Bu to'g'ri, lekin kiberxavfsizlik ekspertizasi platformani emas, aynan sizning ilovangizni tekshiradi. O'z mahsulotimizning iOS ilovasida (Flutter) ekspertiza ikkita yuqori darajali topilma bergan: dinamik tahlil vositalaridan himoya yo'q va jailbreak aniqlanmaydi. Ikkalasi ham OWASP Mobile Top 10 (2024) M7 — Insufficient Binary Protections toifasiga kiradi.
Quyidagi ro'yxat shu tajriba asosida tuzilgan. U OWASP MASVS bo'limlari bo'yicha guruhlangan, shuning uchun ekspertiza hisobotidagi topilmalar bilan solishtirish oson.
1. Jailbreak va dinamik tahlildan himoya (MASVS-RESILIENCE)
Jailbreak qilingan qurilmada sandbox cheklovlari zaiflashadi: boshqa jarayonlar ilova fayllarini o'qishi, Keychain'ga kirishi, ilova ichidagi funksiyalarni ishlash paytida almashtirishi mumkin. Frida kabi vositalar esa jailbreak'siz ham ilova ichiga kod "ulab" (hook), uning xatti-harakatini o'zgartirishga imkon beradi.
Ekspertiza bu yerda ilovadan quyidagilarni kutadi:
- jailbreak belgilarini aniqlash (shubhali fayllar, yoziladigan tizim papkalari, Cydia/Sileo kabi do'konlar);
- debugger ulanganini aniqlash;
- Frida va boshqa hook vositalarini aniqlash;
- ilova qayta imzolanganini (tamper) aniqlash;
- tahdid aniqlanganda aniq reaksiya: ishlashni to'xtatish yoki muhim funksiyalarni bloklash.
Biz buni freeRASP kutubxonasi bilan yopdik. iOS konfiguratsiyasida bundle ID va Apple Team ID ko'rsatiladi — ilova boshqa jamoa sertifikati bilan qayta imzolansa, kutubxona buni sezadi. Tahdid aniqlanganda foydalanuvchiga tushunarli bloklovchi ekran chiqadi.
Tekshirish uchun: jailbreak qilingan test qurilmada yoki Frida ulangan holatda ilovani ishga tushiring va bloklovchi ekran chiqishini ko'ring. Ekspertiza ham aynan shunday tekshiradi.
2. App Transport Security (MASVS-NETWORK)
ATS iOS'da shifrlanmagan HTTP ulanishlarni standart holatda bloklaydi. Muammo — uni o'chirib qo'yish juda oson.
Info.plistda quyidagi kalit bo'lmasligi kerak:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Agar biror tashqi xizmat hali ham HTTP ishlatsa, butun ATS'ni o'chirmasdan, faqat shu domen uchun istisno
qiling (NSExceptionDomains) va bu istisnoni hujjatlashtiring. Ideal holatda esa istisnolar umuman bo'lmaydi.
ATS — faqat transport darajasi. Sertifikatni mahkamlash (pinning) alohida qo'shiladi. Flutter ilovasida biz
Dart SecurityContext'ga faqat ishonchli root sertifikatlarni yukladik — bu iOS va Android'da bir xil ishlaydi.
3. Keychain va ma'lumot saqlash (MASVS-STORAGE)
Token, sessiya kaliti yoki shaxsiy ma'lumot UserDefaultsda yoki oddiy faylda saqlanmasligi kerak — ular
shifrlanmagan va qurilma zaxirasiga tushadi. To'g'ri joy — Keychain.
Keychain'da ham qaysi "accessibility" darajasi tanlangani muhim. Qurilmadan boshqa qurilmaga ko'chmasligi
kerak bo'lgan ma'lumot uchun ThisDeviceOnly bilan tugaydigan variantlardan foydalaning, masalan
kSecAttrAccessibleWhenUnlockedThisDeviceOnly. Flutter'da flutter_secure_storage bilan:
const storage = FlutterSecureStorage(
iOptions: IOSOptions(
accessibility: KeychainAccessibility.first_unlock_this_device,
),
);
Yana bir nozik joy: iOS'da Keychain yozuvlari ilova o'chirilgandan keyin ham qolishi mumkin. Ilova birinchi marta ishga tushganda eski yozuvlarni tozalash mantiqini qo'shing.
4. Ilova ichidagi izlar
Ekspertiza ilova ishlash paytida qoldiradigan izlarni ham ko'radi:
- Loglar. Release build'da
print/NSLogorqali token, telefon raqami yoki so'rov tanasi chiqmasin. - Fon rasmi (snapshot). Ilova fonga o'tganda iOS ekran rasmini saqlaydi. Maxfiy ma'lumot ko'rsatiladigan ekranlarda fonga o'tishda ekranni yopib qo'ying.
- WebView. Ilovada WebView bo'lsa, logout paytida uning cookie va keshini tozalang. Biz buni ham alohida qo'shdik.
- Clipboard. Parol yoki kod maydonlaridan nusxa olishni cheklang.
5. Kod himoyasi
Dart kodi flutter build ipa --release --obfuscate --split-debug-info=... bilan yig'ilsin. Endpoint va kalitlar
binar faylda oddiy satr bo'lib turmasin. Bu mavzu alohida maqolada batafsil yoritilgan.
6. Export compliance haqida qisqa eslatma
Info.plistdagi ITSAppUsesNonExemptEncryption kaliti — App Store Connect'ning eksport nazorati bo'yicha
savoli. Ilova faqat HTTPS va tizimning standart shifrlashidan foydalansa, odatda false qo'yiladi; o'z
shifrlash algoritmlaringiz bo'lsa, qo'shimcha hujjat kerak bo'lishi mumkin. Bu kalit kiberxavfsizlik
ekspertizasiga bevosita aloqador emas, lekin u ham shifrlash haqidagi savol, va ikkalasiga beriladigan
javoblar bir-biriga zid bo'lmasligi kerak. Aniq vaziyatingiz uchun Apple'ning rasmiy hujjatlariga tayaning.
7. IPA faylni topshirish
- Ekspertiza qanday faylni kutayotganini oldindan aniqlashtiring: qaysi build turi, qaysi imzo bilan.
- Topshirilgan IPA aynan release sozlamalari bilan yig'ilgan bo'lsin — debug build'da obfuskatsiya va RASP boshqacha ishlaydi.
- Ekspertiza fayl uchun nazorat qiymatlarini (MD5, SHA-1, SHA-256) so'raydi. Ularni topshiriladigan aniq fayldan oling va faylni qayta yig'mang.
Qisqa checklist
- Jailbreak, debugger, Frida va tamper aniqlanadi; tahdidga reaksiya bor.
NSAllowsArbitraryLoadsyo'q, ATS istisnolari minimal va hujjatlashtirilgan.- Sertifikat pinning sozlangan.
- Maxfiy ma'lumot Keychain'da,
ThisDeviceOnlydarajasida. - Loglarda maxfiy ma'lumot yo'q, fon snapshot'i yopilgan, WebView logout'da tozalanadi.
- Dart kodi obfuskatsiya qilingan.
- IPA release build, nazorat qiymatlari aynan shu fayldan olingan.
Skanerlash
iOS ilovangizni ekspertizaga topshirishdan oldin tekshirib olmoqchimisiz? Skanerlash uchun ariza qoldiring. Claude AI agenti va mutaxassisimiz yuqoridagi bandlar bo'yicha ilovani ko'rib chiqib, qaysi teshiklarni birinchi navbatda yopish kerakligini aytib beramiz.


