grep

Engineering

iOS 앱 개발자가 알아야 할 iOS 탈옥의 위험성

NHN

2025년 7월 7일

원문에서 보기 ↗

NHN Cloud_meetup banner_Jailbreak_202507-01-01.png

1. 들어가며: iOS 탈옥이란?

Apple의 iOS는 보안과 안정성을 최우선으로 하는 폐쇄적인 운영체제입니다. 기본적으로 사용자는 앱 스토어에서 승인된 앱만 설치할 수 있으며, 시스템 파일에 접근하는 것도 제한됩니다. 이러한 제한을 해제하고 사용자가 더 자유롭게 장치를 활용할 수 있도록 하는 과정이 바로 탈옥(Jailbreak)입니다.

탈옥을 하면 사용자는 서명되지 않은 앱을 장치에 설치할 수 있고, 시스템 파일을 수정할 수도 있습니다. 그러나 탈옥은 단순한 개인화 도구가 아니라 보안 측면에서 큰 위험을 동반하는 행위이기도 합니다. 이번 글에서는 iOS 탈옥의 개념과 역사, 최신 탈옥 방법, 보안 위협, 그리고 개발자가 탈옥을 탐지하고 방어하는 방법까지 살펴보겠습니다. 🧐

2. iOS 탈옥을 통한 앱 해킹 사례

과거에는 탈옥이 복잡한 과정이었지만, 최근에는 몇 번의 터치만으로도 쉽게 iOS를 탈옥할 수 있는 도구들이 등장했습니다. palera1n, unc0ver 등이 대표적인 예입니다. 특히, 일부 웹사이트에서는 별도의 PC 없이도 iPhone에서 직접 탈옥할 수 있는 도구를 제공하며, 이를 이용해 많은 일반 사용자들도 손쉽게 탈옥을 시도할 수 있습니다. 탈옥한 iPhone에서는 트윅(Tweak)이나 모드 앱(Modified App)을 아무런 제약 없이 자유롭게 설치할 수 있습니다.

Jailbreak_01.png (Source: https://palera.in/)

게임 앱의 피해 사례

Jailbreak_02.png NHN Cloud On 웨비나 16, '사례로 알아보는 NHN AppGuard 실전 A to Z: 모바일 앱 해킹 유형별 대응 방법 공개!'

이렇게 탈옥한 iOS 환경에서 최근 피해가 지속적으로 발생하는 분야는 바로 모바일 게임입니다. 과거에는 특정 사용자의 단독적인 해킹으로 피해가 크지 않았지만, 최근에는 조직적이고 상업적으로 특정 게임을 타깃으로 해커들이 게임 앱을 해킹하고 변조하여 이를 배포하는 사례가 많아지고 있습니다. 대표적으로 iOS 모드 앱 배포 사이트인 <iOSGods.com>과 같은 사이트들이 있습니다.

Jailbreak_03.png (Source: iOSGods.com)

하지만 공개된 사이트에서 배포되던 것과 달리 최근에는 텔레그램 등의 단체 대화방에서 은밀하게 거래가 이루어지기도 합니다. 때문에 개발사에서는 일일이 iOS 모드 앱 대응이 쉽지 않습니다.

이렇게 손쉽게 모드 앱을 설치하여 일부 유저가 게임 내에서 어뷰징을 하면 그 수가 적을지라도 게임사에게는 치명적인 피해를 입히게 됩니다. 게이머들이 게임을 하는 목적은 경쟁에서 승리하는 것인 경우가 많습니다. 하지만 어뷰징을 통해 노력 없이 한 번에 성과를 획득하는 일이 생기고 일부 유료 콘텐츠를 정당한 지불 없이 이용하기도 합니다. 이렇게 되면 유저들은 정당하게 엄청난 시간과 노력, 그리고 돈을 들여 게임을 할 가치를 못 느끼게 되고, 결국 게임 내 결제를 중단하거나 게임에서 이탈하게 되며, 이는 게임사의 매출 하락으로 이어집니다. 게임의 매출은 1~3%의 소수 유저들이 만들어 내기 때문입니다. 실제로 저희 NHN AppGuard의 한 조사에 따르면 대형 게임 해킹 사건 이후 매출이 하락했다는 결과가 있습니다.

Jailbreak_04.png NHN Cloud On 웨비나 16, '사례로 알아보는 NHN AppGuard 실전 A to Z: 모바일 앱 해킹 유형별 대응 방법 공개!'

결과적으로 게임사의 매출과 앱 서비스에 대한 고객의 신뢰가 하락하게 되는 것입니다. 자세한 내용은 NHN Cloud On 웨비나 16|사례로 알아보는 NHN AppGuard 실전 A to Z | 모바일 앱 해킹 유형별 대응 방법 공개! 영상에서 확인하실 수 있습니다.

3. iOS 탈옥의 역사와 동작 원리

JailbreakMe (iOS 1.x ~ 4.x)

Jailbreak_05.png (Source: https://en.wikipedia.org/wiki/JailbreakMe)

JailbreakMe는 Safari 웹 브라우저를 이용해 탈옥하는 방식으로, 사용자가 특정 웹사이트를 방문하는 것만으로도 탈옥이 가능했습니다. 이는 PDF 렌더링 엔진의 보안 취약점을 이용한 것으로, 사용자 입장에서 가장 간편한 탈옥 방법이었습니다. 그러나 Apple이 보안 패치를 적용하면서 더 이상 사용이 불가능해졌습니다.

Redsn0w & Greenpois0n (iOS 4.x ~ 5.x)

이 시기의 탈옥은 USB를 통해 기기를 컴퓨터에 연결한 뒤, 전용 탈옥 프로그램을 실행하는 방식으로 이루어졌습니다. Redsn0w 와 Greenpois0n은 각각 다른 커널 취약점을 이용하여 탈옥을 수행하였으며, tethered(재부팅 시 탈옥이 해제됨) 및 untethered(영구 탈옥) 방식으로 나뉘었습니다.

Evasi0n (iOS 6.x)

Jailbreak_06.png (Source: https://evasi0n.com/)

Evasi0n은 iOS 6에서 사용된 탈옥 도구로, USB 연결을 통해 시스템의 여러 취약점을 연쇄적으로 이용하여 완전한 탈옥을 가능하게 했습니다. 당시 매우 높은 안정성과 호환성을 제공하여 널리 사용되었습니다.

Pangu & TaiG (iOS 7.x ~ 9.x)

Pangu 와 TaiG는 중국 해커 그룹이 개발한 탈옥 도구로, iOS 7 이후 보안이 강화된 환경에서도 탈옥을 가능하게 했습니다. 특히, TaiG는 iOS 8에서 Apple이 취약점을 보완한 패치를 우회하는 새로운 기법을 도입하여 탈옥을 성공시켰습니다.

Yalu (iOS 10.x)

Yalu는 iOS 10에서 사용된 탈옥 도구로, 개발자인 Luca Todesco가 만든 것으로 유명합니다. 그러나 이 탈옥은 semi-untethered 방식이어서 기기를 재부팅하면 탈옥이 해제되며, 다시 실행하려면 특정 앱을 실행해야 했습니다.

unc0ver & Electra (iOS 11.x ~ 14.x)

unc0ver 와 Electra는 최근까지 사용되는 탈옥 도구로, 커널 취약점을 이용하여 탈옥을 수행합니다. 특히 unc0ver는 안정성이 높아 많은 사용자들이 선호하였으며, 탈옥 후에도 시스템 기능을 최대한 유지할 수 있도록 설계되었습니다.

checkra1n (iOS 12.x ~ 14.x)

Jailbreak_07.png (Source: https://checkra.in/)

checkra1n은 기존의 탈옥과 달리, checkm8이라는 하드웨어 부트롬(bootrom) 취약점을 이용한 영구 탈옥 방식입니다. 이로 인해 iOS 버전에 상관없이 특정 기기에서는 항상 탈옥이 가능하지만, 반대로 Apple이 소프트웨어 패치를 통해 막을 수 없는 특성을 가집니다. 다만, checkra1n은 semi-tethered 방식으로, 재부팅 후에는 다시 탈옥 프로세스를 수행해야 합니다.

최근에는 Apple이 보안 강화를 지속하면서 탈옥이 점점 어려워지고 있으며, 대부분의 탈옥이 semi-tethered(재부팅 시 탈옥이 풀림) 형태로 제공되고 있습니다.

4. 탈옥한 iOS 장치의 보안 취약점

탈옥한 iOS 장치는 Apple이 제공하는 기본 보안 메커니즘을 우회하기 때문에 여러 가지 보안 취약점에 노출됩니다. 다음은 탈옥한 iOS가 갖는 주요 취약점입니다.

특히, 탈옥한 장치에는 앱의 실행을 제한하는 보안 프로세스가 없기 때문에, 악성 소프트웨어가 시스템에 침투할 가능성이 높아집니다. 이러한 위험은 사용자의 개인 정보와 금융 정보를 보호하는 데 큰 위협이 될 수 있습니다. 예를 들어, 온라인 뱅킹 앱이나 결제 서비스 앱에 저장된 정보가 해커의 손에 넘어갈 수 있습니다.

5. iOS 탈옥이 배포하는 앱에 미치는 영향

5.1. 보안 취약점 증가

5.2. 불법 복제 및 수익 손실

5.3. 사용자 경험 저하

6. iOS 탈옥 탐지 방법

앱 개발자는 탈옥한 장치에서 앱을 보호하기 위해 기기의 상태를 탐지해야 합니다. 탈옥한 장치를 탐지하는 데 사용되는 다양한 기법들이 있으며, 각 기법은 고유한 특징과 장단점을 가지고 있습니다. 주요 탐지 방법은 다음과 같습니다.

6.1. 시스템 파일 검사

탈옥한 장치는 시스템 파일에 변화를 일으키는 경우가 많습니다. 대표적인 예로 /private/var/lib/cydia나 /bin/bash 같은 파일들이 존재하는지 확인하여 탈옥 여부를 탐지할 수 있습니다. 이러한 파일들은 일반적으로 탈옥 도구를 설치할 때 생성됩니다.

func isJailbroken() -> Bool {
    // 확인할 시스템 파일 경로들
    let jailbreakPaths = [
        "/private/var/lib/cydia",  // Cydia 파일
        "/bin/bash",               // bash 파일
        "/usr/sbin/sshd",          // SSH 서버 파일
        "/etc/apt"                 // APT 디렉터리
    ]
    
    // 각 파일/디렉터리 존재 여부 체크
    for path in jailbreakPaths {
        if FileManager.default.fileExists(atPath: path) {
            return true  // 파일이 존재하면 탈옥된 기기
        }
    }
    
    return false  // 파일이 없으면 탈옥되지 않은 기기
}

6.2. API 호출 감지

탈옥한 장치에서 주로 사용되는 특정 API 호출을 감지하여 탈옥 여부를 판단할 수 있습니다. 예를 들어, fork(), sysctl() 등의 함수 호출은 탈옥과 관련된 행동을 나타낼 수 있습니다. 이러한 함수 호출을 모니터링하여 탈옥 여부를 탐지합니다.

func checkFork() -> Bool {
    let pid = fork()
    if pid == 0 {
        // 자식 프로세스 종료 (fork가 성공하면 탈옥 가능성이 높음)
        exit(0)
    } else if pid > 0 {
        print("fork() 호출 가능 - 탈옥된 기기일 수 있음")
        return true
    }
    return false
}

6.3. 탈옥 도구 탐지

탈옥한 장치에는 MobileSubstrate, Frida, Cydia 등과 같은 탈옥 도구들이 설치됩니다. 이러한 도구들이 설치되어 있는지 확인하여 탈옥 여부를 탐지할 수 있습니다. 예를 들어, Cydia 앱이 설치되어 있는지 확인하는 방법이 있습니다.

// 확인할 파일 및 디렉터리 목록
let jailbreakFilePaths: [String] = [
    "/Applications/Cydia.app",
    "/private/var/lib/cydia/",
    "/private/var/tmp/cydia.log"
]

// 파일 존재 여부 확인 함수
func checkJailbreakFiles() -> Bool {
    for path in jailbreakFilePaths {
        if FileManager.default.fileExists(atPath: path) {
            print("탈옥 관련 파일 발견: \(path)")
            return true
        }
    }
    return false
}

6.4. 비공식 앱 설치 탐지

탈옥한 장치에는 Apple의 공식 앱 스토어 외에도 비공식 앱 스토어를 통해 앱을 설치할 수 있습니다. 따라서 비공식적으로 설치된 앱들을 탐지하여 탈옥 여부를 확인할 수 있습니다.

6.5. 루트 접근 권한 검사

탈옥한 장치는 루트 권한을 얻을 수 있기 때문에, 루트 권한으로 실행된 프로세스나 파일들을 확인하는 방법이 있습니다. 시스템 내에서 루트 권한을 사용하는 프로세스나 파일 접근 시 이를 탐지할 수 있습니다. 탈옥한 장치에서 발생할 수 있는 보안 위험을 완전히 없애는 것은 불가능할 수 있지만, 여러 방어 기법을 결합하여 다층적인 보안을 구축하는 것이 중요합니다.

7. 나가며

iOS 앱 개발자는 사용자 데이터를 보호하고, 앱의 안전한 환경을 제공하는 중요한 책임을 지고 있습니다. 탈옥한 장치에서 발생할 수 있는 보안 위협을 사전에 탐지하고 방어하는 것은 필수적인 작업입니다. 탈옥 탐지 및 방어 기능을 통해 앱의 보안을 강화하고, 사용자가 안전하게 앱을 사용할 수 있도록 보장해야 합니다.

글로벌 IT기업 NHN이 직접 만든 NHN AppGuard는 탈옥 기기에서 발생하는 다양한 보안 위협에 대응할 수 있는 필수적인 보안 솔루션입니다. NHN AppGuard를 적용하여 배포하면 아래와 같이 탈옥 환경을 탐지하고 차단할 수 있도록 정책을 설정할 수 있습니다.

Jailbreak_08.png 탈옥 환경을 탐지하고 차단하기 위한 NHN AppGuard 정책 설정 화면

배포된 앱이 실행되는 중 탈옥이 탐지되면 곧바로 탐지에 대한 로그를 남기며 이를 추적할 수 있습니다.

Jailbreak_09.png 탈옥 탐지 로그 조회 화면

이렇게 NHN AppGuard는 앱 운영자가 기기 보안에 대한 걱정 없이 안정적인 서비스 제공에 집중할 수 있도록 도와줍니다. 강력한 탈옥 탐지와 차단 기능을 통해 앱의 무결성과 사용자 데이터를 완벽하게 보호할 수 있습니다.

👉 NHN AppGuard 더 알아보기

지금까지 iOS 탈옥의 개념과 역사, 탈옥한 장치에서의 피해 사례, 최신 탈옥 방법, 보안 위협, 그리고 개발자가 탈옥을 탐지하고 방어하는 방법에 대해 알아보았습니다. iOS 앱 개발자 분들뿐만 아니라 iOS를 사용하거나 보안에 관심이 있는 모든 분들께 도움이 되었길 바랍니다. 긴 글을 읽어 주셔서 감사합니다. 😃

NHN Cloud_meetup banner_footer_202507-01.png