3P by neo 24일전 | favorite | 댓글 1개
  • iOS 18은 새로운 비활성화 재부팅 보안 기능을 도입했음 : "3일간 잠금 해제 되지 않으면 자동 재부팅"
  • 아이폰을 켜고 처음으로 암호를 입력하는 것과 나중에 잠금을 해제하기 위해 암호를 입력하는 것은 매우 다름
  • iPhone을 처음 시작할 때 암호를 입력하면 Secure Enclave Processor(SEP)의 키 저장소가 열리며, 이는 iPhone의 데이터를 암호화함
    • 첫 번째 잠금 해제 전(BFU) 상태에서는 사용자 데이터가 암호화되어 있으며, Face ID와 Touch ID가 작동하지 않고 암호 입력이 필요함. Wi-Fi 비밀번호가 암호화되어 있어 Wi-Fi 연결이 불가능하지만, SIM이 PIN으로 보호되지 않은 경우 셀룰러 네트워크에는 연결 가능함. 알림 내용 미리 보기 표시 안 됨.
    • 첫 번째 잠금 해제 후(AFU) 상태에서는 사용자 데이터가 복호화됨. iOS가 실행되는 동안 키 저장소가 열려 있어 Wi-Fi 연결과 메시지 알림 미리보기가 가능함. 그러나 이 상태는 공격에 더 취약함.
  • AFU 상태의 보안 약점: 공격자가 잠금 화면 우회 시 복호화된 데이터에 접근 가능. 물리적 접근 시 USB, Wi-Fi, Bluetooth, 또는 하드웨어 공격 취약점 이용 가능성 증가

iPhone 재부팅에 대한 소문

  • 법 집행 기관은 AFU 상태에서 포렌식적으로 중요한 데이터를 얻기 위해 iPhone을 인터넷에서 격리된 상태로 유지함.
  • iOS 18에서는 iPhone이 무선 네트워크와 완전히 격리되어 있어도 재부팅된다는 소문이 있음
  • 또한, iOS 18의 iPhone이 더 낮은 iOS 버전의 iPhone에 무선으로 재부팅을 지시할 수 있다는 주장도 있음(기술적으로 가능성 낮음)

비활성화 재부팅 기능 발견

  • Apple은 새로운 기능을 추가할 때 디버그 문자열을 통해 힌트를 남김
    • iOS 18.1부터 inactivity_reboot 문자열 등장. iOS 18.2에서 inactivity_reboot_enabled로 변경
  • 테스트 결과, 3일(72시간) 동안 잠금 해제되지 않을 경우 비활성화 재부팅 발생하는 것을 확인

비활성화 재부팅 리버스 엔지니어링

  • Secure Enclave Processor(SEP)는 마지막 잠금 해제 시간을 추적하며, 3일이 초과되면 AppleSEPKeyStore 커널 모듈에 알림.
  • AppleSEPKeyStore 커널 모듈은 사용자 공간에 재부팅을 시작하도록 알림. SpringBoard는 모든 사용자 공간 프로세스를 안전하게 종료함.
  • 재부팅 후, keybagd는 NVRAM 변수 "aks-inactivity"를 읽고, 설정된 경우 Apple에 분석 이벤트를 보냄.
  • 재부팅 실패 시 커널 패닉 발생

Secure Enclave Processor 역공학

  • SEP는 Apple의 가장 보호된 비밀 중 하나이며, 펌웨어는 암호화되어 있음.
  • SEP 펌웨어는 여러 앱으로 구성되어 있으며, SEPKeyStore와 관련된 앱은 "sks"로 불림.
  • SEP는 3일(72시간)을 초과할 경우 메시지를 생성하여 SEPKeyStore 커널 확장에 보냄.

경찰만을 겨냥한 대책인가?

  • 보안 개선 효과: 언론에서는 이 기능이 주로 법 집행 기관을 겨냥한 것으로 보도했지만, 도난 방지 측면에서 큰 보안 향상이 이루어짐.
    • 구형 법 집행 장비는 종종 eBay 같은 플랫폼에서 저렴하게 판매되는데, 도둑들이 이를 이용해 iPhone 데이터를 접근하는 사례를 줄임.
    • 도둑들이 최신 해킹 도구를 구하거나 3일 내 기기를 해제할 재원을 확보하는 것은 현실적으로 어려움.
  • 기기 업데이트의 중요성: 최신 iOS 버전을 유지하는 것은 개인 데이터를 안전하게 보호하는 데 매우 중요함.
  • 법 집행 기관의 적응 필요:
    • 법 집행 기관은 데이터 추출 절차를 3일 내에 완료하도록 조정할 필요가 있음.
    • 일부 포렌식 도구 제조업체들은 이미 24시간 내 데이터 추출 절차를 조율할 수 있다고 발표.
    • 이는 AFU 상태에서만 데이터를 추출할 수 있는 한계를 보여줌.
  • 보안 위협 비대칭성:
    • 도둑들에게는 이 기능이 사실상 데이터를 얻기 어렵게 만들어 주요 보안 장벽으로 작용.
    • 반면, 법 집행 기관은 프로세스를 간소화하고 더 빠르게 대응해야 하는 부담이 있음.

주요 요점

  • 무선 활동과는 무관함:
    • 이 기능은 무선 네트워크 활동과 관련이 없음.
    • 법 집행 기관 문서에서 언급된 "기기간 무선 통신으로 인한 재부팅" 주장은 신뢰하기 어려움.
    • iOS 18 이전 기기의 재부팅은 소프트웨어 버그 때문일 가능성이 높음.
  • SEP의 역할:
    • 비활성 상태 시간 측정과 재부팅 트리거는 SEP에서 수행.
    • SEP는 SEPKeyStore 커널 확장과 통신하여 재부팅 명령을 실행.
    • 인터넷 또는 셀룰러 네트워크를 통한 외부 시간 조작이 3일 타이머에 영향을 미치지 않을 가능성이 높음.
  • 강력한 보안 기능:
    • 공격자가 비활성 재부팅을 막으려면 커널 코드 실행 권한이 필요.
    • 포렌식 분석가는 데이터 추출을 위해 재부팅을 지연시킬 수 있을지라도, 최초 해킹은 3일 내에 이루어져야 함.
  • 위협 환경의 변화:
    • 도둑과 포렌식 분석가 모두에게 새로운 도전 과제를 제시.
    • 도둑들에게는 iPhone에 저장된 은행 계좌 및 기타 민감한 데이터 접근을 사실상 차단함.
    • 법 집행 기관은 데이터 접근을 위해 더 빠르게 대응해야 하는 압박을 받게 됨.
Hacker News 의견
  • AFU 상태에서 사용자 데이터가 해독됨. 개발자는 데이터 보호를 위해 다양한 키를 선택할 수 있음. Apple은 사용자의 건강 데이터와 같은 민감한 정보를 보호하기 위해 특정 키를 사용함

    • Apple의 데이터 보호 클래스에 대한 정보는 여기에서 확인 가능함
  • 네트워크에 연결되지 않는 부분에 너무 많은 강조가 있는 이유에 대한 의문이 제기됨. GrapheneOS는 이미 일정 시간 후 자동 재부팅 기능을 제공하고 있으며, 이는 데이터 유출 방지에 효과적임

  • 두 가지 질문이 제기됨:

      1. 잠긴 iPhone을 3일마다 무조건 재부팅하면 합법적인 사용 사례에서 문제가 발생할 수 있음
      1. 기사가 맞다면, 보안을 위해 "Before First Unlock" 상태로 돌아가기 위해 재부팅한다고 함. 왜 재부팅 없이 이 상태로 전환할 수 없는지에 대한 의문이 있음
    • 보너스 질문: Android 폰은 몇 시간 동안 움직임이 없을 때 재부팅 후처럼 비밀번호를 요구함. 이는 iPhone의 "Before First Unlock" 상태와 다른지에 대한 궁금증이 있음
  • Apple이 SEP 펌웨어를 암호화하는 이유에 대한 궁금증이 제기됨. 보안 모델에 필수적이지 않다면 지적 재산 보호를 위한 것일 수 있음

  • Apple이 기기 보안에서 앞서 나가는 모습을 보여주는 훌륭한 글임

  • iOS 18이 다른 폰에 무선으로 재부팅을 지시할 가능성에 대해 언급했으나, 이후 다시 다루지 않은 것 같음

  • AOSP의 BFU와 AFU 잠금 해제 방식과 유사하다는 의견이 있음

  • Secure Enclave에서 관리되고 있을 것이라고 의심됨. 이는 iOS가 완전히 손상되더라도 비활성화하기 매우 어려울 것임

  • 왜 3일이라는 특정 시간이 설정되었는지, 사용자 설정 가능한 지연이 아닌 이유에 대한 질문이 있음

  • 훌륭한 글에 감사하며, 훌륭한 분석임