iOS ilovalari uchun Jailbreak Detection: mohiyati, aniqlash usullari va tekshirish

Muallif: IT Sectr Nashr etilgan: 2026-04-03 O'qish vaqti: 10 daq

Jailbreak Detection — iOS qurilmasida jeylbrek mavjudligini aniqlaydigan va ilovani cheklovlar olib tashlangan muhitda ishga tushishining oldini oladigan mexanizmlar to'plamidir. Jeylbrek qum qutisidan tashqarida fayl tizimiga kirish imkonini beradi, o'zgartirilgan kutubxonalarni o'rnatish va tizim chaqiruvlarini tutib olishga ruxsat beradi. Apple Security Documentation (2024) ma'lumotlariga ko'ra, jeylbrekli qurilmalar Secure Boot xavfsiz yuklash modeliga mos kelmaydi. Jailbreak Detection fayl ko'rsatkichlarini tekshirish, chaqiruvlarni ish vaqti tahlili va sandbox imzosining yaxlitligi nazoratini birlashtiradi.

Asosiy ma'lumotlar

  • Jailbreak Detection — ma'lumot va trafikni tutib olish mumkin bo'lgan, Apple cheklovlari olib tashlangan qurilmalarda iOS ilovasining ishlashini bloklash
  • Fayl tekshiruvlari jeylbrekning odatdagi izlarini qidiradi: Cydia.app, Sileo.app, MobileSubstrate kutubxonalari va /usr/bin dagi vositalar
  • Ish vaqti tahlili fork(), posix_spawn() bajarilishi va sandbox-exception yo'llariga kirish imkoniyatini tekshiradi
  • Obfuskatsiya va Objective-C/C da nativ kod majburiydir — Swiftdagi jeylbrek tekshiruvlari Cydia Substrate orqali osonlik bilan chetlab o'tiladi
  • DeviceCheck va Apple dan App Attest mijoz tomoni tekshiruvlarini to'ldirib, qurilma yaxlitligining server attestatsiyasini ta'minlaydi

Jailbreak Detection nima?

Jailbreak Detection — operatsion tizim cheklovlari olib tashlangan iOS qurilmalarini identifikatsiya qilish jarayoni. Jeylbrek iOS yadrosini o'zgartiradi, kod imzosini o'chiradi, to'liq fayl tizimiga kirishni ta'minlaydi va ruxsatsiz kutubxonalarni yuklashga imkon beradi. Bunday qurilmada ishlaydigan ilova uchun bajarish muhitining yaxlitligi kafolatlanmaydi: har qanday jarayon ilova xotirasini o'qishi, tizim sertifikatlar omboriga o'z sertifikatlarini o'rnatish orqali SSL/TLS trafigini tutib olishi va Cydia Substrate yoki Substitute orqali kod inyeksiyasini amalga oshirishi mumkin.

iOS ostidagi moliyaviy ilovalar PCI DSS standarti talablariga muvofiq Jailbreak Detection ni joriy qilishi shart — sertifikatsiya uchun ilova buzilgan qurilmada ishlamasligini isbotlashi kerak. OWASP Mobile Security (2024) Jailbreak Detection ning yo'qligini M8 zaifligi sifatida tasniflaydi. App Store ilovalari uchun Apple jeylbrekli qurilmalarda funksionallikni bloklashni taqiqlamaydi, biroq o'zgartirilishi mumkin bo'lgan mijoz kodiga to'liq ishonmaslik uchun mijoz tomoni va server tekshiruvlarini birlashtirishni tavsiya qiladi.

iOS da Jailbreak Detection arxitekturasi sandbox modeli tufayli Android dagi Root Detection dan murakkabroq. Android da ilova tizimni tahlil qilish uchun /proc ni o'qishi mumkin. iOS qum qutisi (sandbox) ko'pchilik tizim ko'rsatkichlariga to'g'ridan-to'g'ri kirishni bloklaydi. Dasturchilar canAccessFile API orqali taqiqlangan zonalarda fayllarning mavjudligini tekshirish yoki fork() orqali bolajara yonlarini ishga tushirish bilan chiqish kodini tekshirish kabi chetlab o'tish texnikalaridan foydalanishga majbur. Zamonaviy tekshiruvlar faqat jeylbrek vaqtida mumkin bo'lgan harakatlarni bajarishga urinish va natijani tahlil qilishga asoslanadi.

Jeylbrekni aniqlashning fayl usullari

Eng sodda va tarixan birinchi yondashuv — faqat jeylbrekli qurilmalarda o'rnatiladigan fayl va ilovalarning mavjudligini tekshirish. Oddiyligiga qaramay, fayl tekshiruvlari asosiy himoya qatlami bo'lib qoladi, chunki ularni chetlab o'tish foydalanuvchidan faol harakatlarni talab qiladi.

Jeylbreek paketlarini tekshirish

Jeylbrekli qurilmada Cydia, Sileo, Zebra yoki Installer ilovalari mavjud. Ularning borligi NSFileManager orqali tekshiriladi: [[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"]. Xuddi shunday unc0ver, checkra1n, Taurine va Chimera paketlari tekshiriladi. Bu tekshiruvlar NSFileManager chaqiruvlarini tutib oladigan HideJB tweaklari orqali chetlab o'tiladi.

/usr/bin da vositalarni tekshirish

Jeylbreek stock iOS da mavjud bo'lmagan UNIX vositalarini o'rnatadi: apt, dpkg, ssh, rsync, sftp, dd, readlink va boshqalar. /usr/bin/ssh, /bin/bash, /bin/sh va /usr/libexec/sftp-server mavjudligi tekshiriladi. Ushbu fayllardan biri topilganda, jeylbrek ehtimoli yuqori. iOS 13-17 uchun shuningdek /var/jb — unc0ver va Taurine uchun bootstrap ildiz katalogining mavjudligini tekshirish dolzarbdir.

Dinamik kutubxonalarni tekshirish

MobileSubstrate (CydiaSubstrate.dylib) va Substitute — jarayonlarga kod inyeksiyasi uchun kutubxonalar. Ularning mavjudligi RTLD_NOLOAD bayrog'i bilan dlopen() orqali tekshiriladi. Agar kutubxona manzil maydoniga yuklangan bo'lsa — jarayon jeylbrek muhitida ishlaydi. Bu ishonchli tekshiruv, chunki HideJB jarayonga allaqachon yuklangan kutubxonani tushira olmaydi.

objective-c
- (BOOL)isJailbrokenByFiles {
    NSArray *paths = @[
        @"/Applications/Cydia.app",
        @"/Applications/Sileo.app",
        @"/Applications/Zebra.app",
        @"/usr/bin/ssh",
        @"/bin/bash",
        @"/var/jb",
        @"/etc/apt"
    ];

    for (NSString *path in paths) {
        if ([[NSFileManager defaultManager]
            fileExistsAtPath:path]) {
            return YES;
        }
    }
    return NO;
}

- (BOOL)isSubstrateLoaded {
    void *handle = dlopen(
        "/Library/MobileSubstrate/MobileSubstrate.dylib",
        RTLD_NOLOAD | RTLD_LAZY
    );
    if (handle) {
        dlclose(handle);
        return YES;
    }
    return NO;
}

Ish vaqtining dinamik tekshiruvlari

Dinamik tekshiruvlar iOS qum qutisida taqiqlangan harakatlarni bajaradi va natijani tahlil qiladi. Agar harakat bloklanmagan bo'lsa — qurilma katta ehtimol bilan jeylbreklidir.

fork() va posix_spawn() ni tekshirish

Stock iOS da fork() chaqiruvi errno = EPERM bilan -1 qaytaradi. Jeylbrekli qurilmada fork() bajarilishi mumkin, chunki qum qutisi cheklovlari olib tashlangan. Bu tekshiruv ishonchli, ammo ba'zi iOS versiyalarida noto'g'ri ijobiy natijalar berishi mumkin. fork() shuningdek bolajara yonini ishga tushirish imkoniyatini tekshirish uchun posix_spawn() bilan almashtirilishi mumkin.

Sandbox tizim imzosini tekshirish

Taqiqlangan zonalarda fayllarni o'qishga urinish: /etc/master.passwd, /var/log/system.log, /private/var/cache. Stock iOS da bu o'qishlar xato qaytaradi. Agar ilova bu fayllarni muvaffaqiyatli o'qisa — sandbox o'chirilgan. Qo'shimcha ravishda /private/ ga yozish imkoniyati tekshiriladi — qum qutisida barcha tizim bo'limlari oddiy ilovalar uchun faqat o'qish uchun o'rnatilgan.

Tizim simvollarini tekshirish

Jeylbreek tizim kutubxonalarini, jumladan dyld shared cache ni o'zgartiradi. Tizim freymvorklarining yoki alohida simvollarning xeshini tekshirish o'zgarishni aniqlashi mumkin. iOS 14+ uchun jit_region_create simvolining yoki Fugu14/checkra1n belgilarining sysctl kern.version ni o'qish orqali yadro manzil maydonida mavjudligi tekshiriladi.

objective-c
- (BOOL)isJailbrokenByRuntime {
    // fork() tekshiruvi
    int pid = fork();
    if (pid == 0) {
        exit(0);
    }
    if (pid > 0) {
        waitpid(pid, NULL, 0);
        return YES;
    }

    // Tizim fayllariga kirishni tekshirish
    FILE *f = fopen("/etc/master.passwd", "r");
    if (f) {
        fclose(f);
        return YES;
    }

    // sysctl kern.version tekshiruvi
    size_t size = 0;
    sysctlbyname("kern.version", NULL, &size, NULL, 0);
    if (size > 0) {
        char *version = malloc(size);
        sysctlbyname("kern.version", version, &size, NULL, 0);
        NSString *str = [NSString stringWithUTF8String:version];
        free(version);
        if ([str containsString:"pwned"]) {
            return YES;
        }
    }

    return NO;
}

Objective-C da nativ tatbiq

Swift kodi osonlik bilan deassemlanadi va Substrate orqali chetlab o'tiladi. libobjc va C tizim funksiyalarining to'g'ridan-to'g'ri chaqiruvlari bilan Objective-C da nativ tatbiq tekshiruvlarni chetlab o'tishga nisbatan sezilarli darajada chidamli qiladi.

NSFileManager o'rniga stat() dan foydalanish

libc dan stat() chaqiruvi Objective-C darajasida tutib olinmaydi. NSFileManager metodlarini tutib oladigan HideJB tweaklari stat() ga ta'sir qilmaydi. stat() bilan nativ tekshiruv o'rnatilgan HideJB modullari bo'lgan qurilmalarda ham fayl ko'rsatkichlarini aniqlaydi. Fayllar uchun stat() va kutubxonalar uchun RTLD_NOLOAD bilan dlopen() kombinatsiyasi ikkita kesishmaydigan aniqlash kanalini beradi.

Kod imzosining yaxlitligini tekshirish

SecStaticCodeCheckValidity nativ funksiyasi ilova kod imzosining Apple sertifikatiga mosligini tekshiradi. Jeylbrekli qurilmada bu tekshiruv kernel-patch orqali almashtirilishi mumkin. Almashtirishning oldini olish uchun tekshiruv Swift Bridge orqali emas, Security.framework dan dlopen() orqali chaqiruv bilan nativ koddan amalga oshirilishi kerak.

objective-c
#import <sys/stat.h>
#import <dlfcn.h>

- (BOOL)nativeCheckForJailbreak {
    // stat() NSFileManager hook-dan chetlab o'tish
    struct stat st;
    if (stat("/Applications/Cydia.app", &st) == 0) {
        return YES;
    }

    // Yuklamasdan Substratni tekshirish uchun dlopen
    void *substrate = dlopen(
        "/Library/MobileSubstrate/MobileSubstrate.dylib",
        RTLD_NOLOAD
    );
    if (substrate) {
        dlclose(substrate);
        return YES;
    }

    return NO;
}

Jailbreak Detection ni chetlab o'tish usullari

Chetlab o'tish texnikalarini tushunish barqaror himoya qurish uchun muhimdir. Zamonaviy chetlab o'tish vositalari faol rivojlanmoqda va statik tekshiruvlar to'plami bir necha oy ichida samarasiz bo'ladi.

HideJB va Shadow

HideJB — NSFileManager, stat(), dlopen() va fork() chaqiruvlarini tutib oladigan va qaytariladigan qiymatlarni almashtiradigan tweakdir. HideJB Cydia Substrate darajasida ishlaydi, shuning uchun ham Objective-C, ham C funksiyalarini tutib oladi. iOS 15-16 uchun HideJB versiyasi (Shadow) kernel-level hook metodologiyasidan foydalanadi. Qarshi chora: tekshiruvni natijani IPC orqali uzatadigan alohida jarayonda bajarish, bu hook zanjirini uzadi.

Choicy va Liberty Lite

Choicy ma'lum jarayonlar uchun Substrate ni o'chirishga imkon beradi. Foydalanuvchi himoyalangan ilova uchun inyeksiyani o'chiradi — kutubxona tekshiruvlarining barchasi false qaytaradi. Liberty Lite — mashhur himoya kutubxonalarining ko'pchilik tekshiruvlarini qamrab oluvchi kompleks chetlab o'tish vositasidir. Qarshi chora: DeviceCheck va App Attest orqali server tasdiqlash — serverda qurilmaning jeylbrekli qurilmada soxtalashtirib bo'lmaydigan haqiqiy Apple sertifikatiga ega ekanligi tekshiriladi.

Fugu14 va KFD orqali chetlab o'tish

Fugu14 va KFD kabi yadro eksploytlari yadro maydonida (kernel-space) kod bajaradi, bu tizim chaqiruvlarini ilova ko'rishidan oldin tutib olishga imkon beradi. Bu darajada stat() va fork() tekshiruvlari samarasiz bo'ladi. Yagona ishonchli qarshi chora — qurilmaning Apple Attestation protsedurasidan o'tganligini tekshirish bilan server attestatsiyasi. Bu protokol Secure Enclave ichidagi kriptografik kalitlarga asoslangan bo'lib, ular hatto kernel-level eksployt vaqtida ham o'qish uchun mavjud emas.

iOS xavfsizlik arxitekturasi va jeylbrekning roli

Samarali Jailbreak Detection qurish uchun jeylbrek vaqtida iOS ning qaysi xavfsizlik mexanizmlari o'chirilishini tushunish kerak.

Secure Boot Chain

iOS imzo tekshiruvlari ketma-ketligi orqali yuklanadi: Boot ROM → iBoot → iOS Kernel. Agar jeylbrek bootrom eksploytidan (checkra1n) foydalansa, butun Secure Boot Chain buzilgan — ilova darajasidagi tekshiruvlar foydasiz. Agar software-only eksployt (unc0ver, Taurine, Fugu14) ishlatilsa, yuklash zanjiri buzilmagan va App Attest kabi Apple xizmatlari ishonchli qoladi.

Kernel Patch Protection (KPP)

iOS 10 dan boshlab Apple KPP ni — har 200 ms da yadro yaxlitligini qayta tekshiruvchi apparat himoyasini joriy qildi. Barcha zamonaviy jeylbreklar (iOS 14-17) PAC yoki APRR orqali KTRR chetlab o'tishdan foydalanadi, ammo KPP o'zgartirilgan sysctl tizim jadvallari shaklida izlar qoldiradi. kern.version da pwned, prod yoki nostandart versiyali xnu satrlarining mavjudligini tekshirish yadro yamasi borligini aniqlashi mumkin.

Sandbox yaxlitligi

iOS Sandboxi entitlements dan foydalanib TrustedBSD darajasida ishlaydi. Jeylbreek sandbox profilini allow-all bilan almashtiradi. Ilova sandboxni o'z Documents papkasidan tashqarida istalgan faylni o'qishga urinish orqali tekshirishi mumkin. Agar muvaffaqiyatli bo'lsa — sandbox o'zgartirilgan. Sandbox yaxlitligi — ruxsat tekshiruvi tutib olinishidan oldin yadroda amalga oshirilgani uchun kernel-level eksploytsiz soxtalashtirib bo'lmaydigan kam sonli ko'rsatkichlardan biridir.

Tez-tez beriladigan savollar

Jailbreak Detection Root Detection dan nimasi bilan farq qiladi?

Root Detection Android uchun su ikkilik fayli va Magisk mavjudligini tekshiradi. Jailbreak Detection iOS uchun Cydia, Sileo, MobileSubstrate ni qidiradi, fork() imkoniyatini tekshiradi va tizim fayllarini o'qiydi. iOS Sandbox arxitekturasi Android dan qattiqroq, shuning uchun iOS tekshiruvlari tizim ko'rsatkichlarini o'qishdan ko'ra ko'proq taqiqlangan harakatlarni bajarishga urinishga asoslanadi.

Jailbreak Detection iOS 16 va 17 da ishlaydimi?

Ha, iOS 16-17 uchun Dopamine, palera1n va checkra1n jeylbreklari dolzarb. Jailbreak Detection ishlaydi, ammo tekshiruvlarni yangi vositalarga mos ravishda yangilashni talab qiladi. iOS 17 da Apple sandboxni kuchaytirdi va ko'plab eski tekshiruvlar (masalan, fork()) XNU dagi o'zgarishlar sababli ishonchli bo'lishdan to'xtadi

Ilovada Jailbreak Detection ni qanday chetlab o'tish mumkin?

Eng oddiy usul — kutubxona darajasida tekshiruvlarni tutib oladigan HideJB yoki Shadow. Murakkabroq himoya uchun muayyan ilova uchun inyeksiyani o'chirish bilan Frida yoki Choicy ishlatiladi. Server attestatsiyasi (App Attest) faqat Secure Enclave apparat kalitini almashtirish bilan kernel-level eksployt orqali chetlab o'tiladi, bu amalda mumkin emas.

Ilovaning jeylbrekli qurilmada ishlashining oqibatlari qanday?

Jeylbrekli qurilmadagi har qanday ilova quyidagilarga duchor bo'lishi mumkin: ishonchli sertifikatlar omborini o'zgartirish orqali SSL trafigini tutib olish, fayl tizimiga kirish orqali Keychain ni o'qish, tokenlar bilan ishlash metodlarini tutib olish bilan Substrate orqali kod inyeksiyasi, shifrlash kalitlarini olish uchun jarayon xotirasini dump qilish.

App Attest nima va u qanday yordam beradi?

App Attest — Apple ning ilova va qurilma yaxlitligini tekshirish xizmati. Ishga tushganda ilova Apple serveridan attestation challenge oladi, uni Secure Enclave dan shaxsiy kalit bilan imzolaydi va o'z serveriga yuboradi. Agar qurilma jeylbrekli bo'lsa, Secure Enclave attestation failure bilan javob beradi, bu himoyalangan funksiyalarga kirishni bloklaydi.

Xulosa

  • Jailbreak Detection — moliyaviy va shaxsiy ma'lumotlarni qayta ishlaydigan iOS ilovalari uchun majburiy himoya mexanizmi, cheklovlar olib tashlangan qurilmalarda ishga tushishni bloklaydi
  • Fayl tekshiruvlari HideJB ning NSFileManager hooklaridan chetlab o'tib, stat() va dlopen() orqali Cydia, Sileo, Zebra va /usr/bin dagi vositalarni qidiradi
  • Dinamik tekshiruvlar sandboxning o'chirilganligini tasdiqlash uchun fork(), posix_spawn() va /etc/master.passwd o'qishga urinishni bajaradi
  • Nativ tatbiq libc to'g'ridan-to'g'ri chaqiruvlari bilan Objective-C da Substrate orqali chetlab o'tishga Swift tekshiruvlaridan ancha chidamli
  • HideJB va Shadow — jarayon darajasida asosiy chetlab o'tish vositalari, server attestatsiyasi bilan zararsizlantiriladi
  • Secure Enclave dan foydalanadigan Apple dan App Attest software-only jeylbrekda chetlab o'tib bo'lmaydigan kriptografik qurilma tasdiqlashni ta'minlaydi
  • Tavsiya etilgan arxitektura: iOS ilovalarini kompleks himoya qilish uchun nativ fayl tekshiruvlari + ish vaqti tahlili + DeviceCheck server attestatsiyasi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing