Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
optee-qemu — TEE 드라이버(CVE-2021-44733) 악용을 위한 취약한 커널 환경 | Kitploit
도구/GitHubGitHub/pjlantz/optee-qemu
Embedded Systems SecurityVulnerability AnalysisExploitationFuzzingLearning & EducationBinary ExploitationLabs & Practice
GitHubpjlantz/optee-qemu

optee-qemu

TEE 드라이버(CVE-2021-44733) 악용을 위한 취약한 커널 환경

저장소 보기
761184년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-44733: 리눅스 커널 TEE 서브시스템의 use-after-free 취약점 퍼징 및 익스플로잇

최근 리눅스 커널 TEE 서브시스템(버전 5.15.11까지 포함)에서 use-after-free 취약점이 발견되어 CVE-2021-44733 [1]이 할당되었습니다.

처음에는 여러 이유로 익스플로잇이 불가능해 보였지만, 취약한 코드 경로를 추가로 분석하고 개념 증명 익스플로잇을 구현한 결과 커널의 함수 포인터를 덮어쓸 수 있었습니다. 이 글에서는 권한 상승 페이로드를 제시하지 않지만, OPTEE와 익스플로잇을 실행하기 위한 전체 환경을 추가 테스트용으로 제공합니다('환경 설정' 참조).

배경

TEE(Trusted Execution Environment)는 ARM CPU의 TrustZone과 같은 보안 환경에서 실행되는 신뢰할 수 있는 OS입니다. TEE 드라이버는 TEE와 통신하는 데 필요한 세부 사항을 처리합니다. 드라이버의 주요 임무 중 일부는 Globalplatform TEE 클라이언트 API 사양 [3]에 기반한 TEE용 일반 API를 제공하는 것뿐만 아니라 Linux와 TEE 간의 공유 메모리를 관리하는 것입니다. 이 서브시스템은 ARM 아키텍처의 커널 구성에서 CONFIG_OPTEE를 설정하여 활성화할 수 있습니다.

보안 월드에는 OP-TEE OS [4]라는 신뢰할 수 있는 OS가 포함되어 있습니다. 이 OS 위에서 소위 Trusted Application(TA)을 실행할 수 있으며, 이는 격리된 환경에서 일부 작업을 수행할 수 있습니다(그림 1 참조).

TEE 개요
그림 1: TEE 개요 - Linaro의 프레젠테이션 [5]에서 발췌

노멀 월드(Linux 사용자 공간/커널)는 클라이언트 애플리케이션(CA)과 TEE 서브시스템이 노출하는 API를 사용하여 이러한 애플리케이션과 상호 작용할 수 있습니다. CA는 특정 TA에 대한 세션을 열고 TA가 구현한 함수를 호출할 수 있습니다. TA와 CA 간의 인수 전달은 공유 메모리를 사용하여 수행됩니다. CA와 TA 간의 상호 작용은 관련 모든 시스템 호출을 사용하여 다음에 설명됩니다.

  1. CA는 드라이버와 통신하기 위해 /dev/tee[0-9]를 엽니다. 참고로, 이러한 API를 사용하는 일반적인 방법에서는 libteec를 사용하여 암시적으로 수행됩니다.

  2. 공유 메모리는 CA가 IOCTL TEE_IOC_SHM_ALLOC을 사용하여 등록할 수 있습니다. 이는 공유 메모리를 할당하고 사용자 공간이 mmap의 일부로 사용할 수 있는 파일 디스크립터를 반환합니다.

  3. 다음 단계는 IOCTL TEE_IOC_OPEN_SESSION을 사용하고 특정 TA의 uuid를 지정하여 세션을 설정하는 것입니다. 이 uuid는 TA 컴파일 중에 하드코딩됩니다.

  4. TA의 특정 함수를 호출하려면 CA가 함수 식별자와 입력 인수를 지정하여 호출하며, 이는 TEE_IOC_INVOKE를 사용하여 수행됩니다.

  5. CA가 모든 요청을 완료하면 TEE_IOC_CLOSE_SESSION을 사용하여 세션을 닫을 수 있습니다.

CA와 TA 간의 세션
그림 2: CA와 TA 간의 세션 - Linaro의 프레젠테이션 [5]에서 발췌

클라이언트와 TEE 간의 통신의 대부분은 드라이버에 대해 불투명합니다. 드라이버의 주요 작업은 컨텍스트를 관리하고, 클라이언트로부터 요청을 수신하고, 이를 TEE로 전달하고, 결과를 다시 보내는 것입니다 [2].

TEE 드라이버 퍼징

도구 다운로드