펜리젠트 헤더

시계추 루트: CVE-2025-38352 리눅스 커널 경쟁 조건의 해부학

2025년, 보안팀이 경계를 강화하고 있는 가운데 Linux 커널 메일링 리스트는 새로운 위협으로 들썩이고 있습니다. Google의 위협 분석 그룹(TAG)은 다음과 같은 위협이 무기화되었음을 확인했습니다. CVE-2025-38352.

이것은 일반적인 메모리 손상 버그가 아닙니다. 이것은 정교하고 타이밍에 따라 달라지는 레이스 조건 리눅스 커널의 POSIX CPU 타이머 하위 시스템 깊숙한 곳에 존재합니다. CVSS 점수는 7.4점으로 언뜻 보기에는 관리하기 쉬워 보일 수 있지만, 이 점수에 속지 마세요. 상업용 스파이웨어 공급업체가 이미 이 취약점을 무기화하여 신뢰할 수 있는 공격에 사용하고 있습니다. 로컬 권한 에스컬레이션(LPE) 완전히 패치가 적용된 Android 기기에서 KASLR 및 PAN과 같은 최신 완화 기능을 우회합니다.

엘리트 보안 엔지니어에게 CVE-2025-38352는 "사용 후 경쟁" 익스플로잇의 정점을 나타냅니다. 이 취약점은 프로세스가 "좀비" 상태가 되는 것과 커널이 타이머를 정리하는 것 사이의 미세한 간극을 악용합니다. 이 글에서는 개괄적인 요약은 생략하고 다음과 같이 자세히 설명합니다. 커널/시간/포지픽스-cpu-타이머.c익스플로잇 물리학, 그리고 AI 기반 시간 분석이 인간 감사자가 놓친 것을 포착할 수 있는 유일한 방법인 이유에 대해 설명합니다.

커널의 치명적인 결함: 깨진 스핀록 댄스

CVE-2025-38352를 이해하려면 Linux 커널이 프로세스 종료 중 동시성을 처리하는 방식을 살펴봐야 합니다. 이 취약점은 스레드가 동시에 삭제를 시도하는 동안 커널이 만료된 CPU 타이머를 처리하는 방법의 원자성 위반에서 비롯됩니다.

취약한 코드 경로

이 결함은 handle_posix_cpu_타이머() 함수를 호출합니다. 이 함수는 활성 타이머 목록을 반복하고 만료된 타이머를 실행하는 역할을 합니다. 중요한 것은 이 반복을 수행하기 위해 이 함수가 한숨->시글락.

그러나 패치 이전에는 이 로직에 치명적인 순서가 포함되어 있었습니다:

  1. 잠금 획득: 커널은 다음을 획득합니다. 한숨->시글락 를 클릭해 타이머 목록을 탐색합니다.
  2. 더 드롭: 특정 만료 기능을 처리하려면(특히 cpuclock_perthread), 코드를 간략하게 설명합니다. 자물쇠를 떨어뜨립니다. 를 클릭하여 확인 또는 대기열 재대기 작업을 수행합니다.
  3. 사용: 잠금을 다시 획득하고 타이머 객체의 참조 해제를 진행합니다.

레이스 창

공격자가 공격하는 곳은 바로 이 미세한 창문, 즉 자물쇠가 떨어진 곳입니다.

동시 스레드(스레드 B)가 timer_delete() syscall을 발행합니다. 잠금이 해제되었으므로 스레드 B는 성공적으로 잠금을 획득하고 목록에서 타이머를 제거한 후 kfree_rcu 또는 슬래브 할당 해제를 통해 메모리를 해제합니다.

스레드 A(피해자 컨텍스트)가 잠금을 다시 획득하면, 이 스레드는 POSIX_CUTIMER 구조체에서 더 이상 존재하지 않습니다. 이 메모리에 쓰기(예: 만료 시간 업데이트)를 진행하여 사용 후 무료(UAF) 쓰기.

시계추 루트: CVE-2025-38352 리눅스 커널 경쟁 조건의 해부학

좀비 무기화: 익스플로잇 프리미티브

커널 경쟁 조건을 익스플로잇하는 것은 종종 복권 당첨에 비유되기도 합니다. 그러나 고급 익스플로잇 개발자는 주사위를 던지는 것이 아니라 게임을 조작합니다. CVE-2025-38352의 맥락에서 공격자는 다음을 사용하여 게임을 조작합니다. 좀비 프로세스.

1. 창 넓히기("좀비화" 기법)

표준 레이스 윈도우의 폭은 수 나노초에 불과할 수 있습니다. 공격자는 익스플로잇을 안정적으로(성공률 90%+) 수행하기 위해 프로세스 종료 상태를 활용합니다.

자식 프로세스를 생성하고 의도적으로 종료하도록 하여 not 거두어들이기 ( waitpid) - 프로세스가 EXIT_ZOMBIE 상태입니다. 이 상태에서는 작업 구조가 메모리에 남아 있지만 정리 로직은 보류 중입니다. 공격자는 좀비 프로세스에서 타이머 작업을 트리거하면 커널이 더 느리고 복잡한 코드 경로로 강제 이동한다는 사실을 발견했습니다. POSIX_CPU_타이머_델를 사용하여 레이스 윈도우를 나노초에서 마이크로초로 인위적으로 확장할 수 있습니다.

2. SLUB 풍수(힙 스프레이)

UAF가 트리거되면 커널은 해제된 메모리 슬롯에 데이터를 씁니다. 해당 슬롯이 비어 있으면 커널이 크래시(DoS)됩니다. 루트를 얻으려면 공격자는 해제된 타이머 객체를 페이로드로 대체해야 합니다.

공격자들은 슬럽 할당자의 예측 가능한 동작(라스트 인, 퍼스트 아웃).

  1. 무료입니다: 레이스를 트리거하여 타이머 구조체.
  2. 스프레이: 커널 힙을 정확히 동일한 크기의 사용자 제어 객체로 즉시 채우십시오(예 sendmsg 보조 데이터 또는 key_serial 객체).
  3. 부패: 커널은 타이머를 업데이트하고 있다고 생각하여 공격자의 객체에 씁니다. 공격자가 함수 포인터가 포함된 구조체(예를 들어 tty_struct 또는 file_operations)를 누르면 커널이 해당 포인터를 덮어씁니다.
  4. 실행: 공격자가 스프레이된 객체를 호출하면(예: 파일 닫기), 커널은 덮어쓴 주소 -> ROP 체인 -> 루트로 이동합니다.
시계추 루트: CVE-2025-38352 리눅스 커널 경쟁 조건의 해부학

시즈칼러 그 이상: 기존 퍼징이 실패한 이유

CVE-2025-38352는 수년 동안 구글의 시즈칼러와 같은 자동 퍼저에 의해 탐지되지 않았습니다. 그 이유는 무엇일까요?

기존의 커버리지 가이드 퍼징은 확률론적. 커널에 무작위 시스템 호출을 던져 충돌을 일으킵니다.

  • 이해하지 못합니다. 타이밍.
  • 이해하지 못합니다. 상태 종속성 (예: "스레드 A는 스레드 B가 타이머를 삭제하는 동안 종료되어야 합니다").

블라인드 퍼저가 이 특정 레이스 조건에 맞을 통계적 확률은 정확한 프로세스와 함께 좀비 상태는 천문학적으로 낮습니다.

AI 솔루션: 펜리젠트의 시간적 분석

이러한 기존 도구의 실패는 다음과 같은 필요성을 강조합니다. AI 기반 로직 분석. 여기에서 Penligent.ai 는 "퍼징"에서 "추론"으로 패러다임을 바꿉니다.

펜리전트는 전문화된 타이밍 인식 AI 에이전트 동시성 버그 헌팅을 위해 설계되었습니다:

1. 동시성 패턴 인식

펜리전트 모델은 무작위 입력 대신 커널 소스 AST(추상 구문 트리)를 분석합니다. 동일한 공유 리소스를 수정하는 시스템 호출인 "위험한 쌍"을 식별합니다(이 경우, POSIX_CUTIMER)를 사용하지만 다른 잠금 경로를 따릅니다. 플래그가 타이머_삭제 그리고 핸들_포지픽스_CPU_타이머 를 충돌 가능성이 높은 타깃으로 설정합니다.

2. AI를 통한 레이스 윈도우 확장

펜리전트는 단순히 시스템 호출을 실행하는 데 그치지 않고 이를 조율합니다. AI는 레이스 창을 넓혀야 할 필요성을 인식하여 자동으로 EXIT_ZOMBIE 기법을 개발하기 위해 이전의 "Ref-Count" 취약점 보고서를 분석했습니다. 이 기법은 프로그래밍 방식으로 CPU를 정지시키는 개념 증명( sched_yield 또는 광범위한 메모리 장벽)을 사용하여 충돌을 보장합니다.

보안 엔지니어에게 이는 Penligent가 '잠재적 버그'를 보고하는 것을 넘어 다음과 같은 서비스를 제공한다는 것을 의미합니다. 검증되고 무기화된 익스플로잇 코드의 실제 위험 프로필을 보여줍니다.

수정 및 블루팀 탐지

2025년 말에 Linux 커널에 병합된 이 수정 사항은 단순한 잠금이 아닌 로직 검사를 포함합니다.

수정:

이제 run_posix_cpu_timers()에서 커널은 명시적으로 (tsk->exit_state) 여부를 확인합니다. 작업이 이미 죽었거나 죽어가고 있는 경우 타이머 처리를 즉시 중단합니다. 이렇게 하면 방정식에서 "좀비" 변수가 효과적으로 제거됩니다.

탐지 전략(EDR/Syslog):

Blue팀은 Linux/Android 서버에서 다음과 같은 침해 지표(IoC)를 찾아야 합니다:

  • 고주파 타이머 이탈: 초당 수천 개의 POSIX 타이머를 빠르게 생성하고 삭제하는 프로세스입니다.
  • 좀비 홍수: 비정상적으로 축적된 Z 상태 프로세스는 빠르게 생성되고 회수되지 않습니다.
  • 커널 오염: dmesg 로그에 "일반 보호 오류" 또는 "슬래브 손상"이 표시되는 경우 kmalloc-192 (또는 아치의 타이머에 대한 특정 슬래브 크기)를 설정합니다.

결론

CVE-2025-38352는 레거시 코드가 지뢰밭이라는 사실을 상기시켜 줍니다. POSIX 타이머 코드는 수십 년 전에 작성되었지만 2025년의 복잡한 메모리 환경을 무기화하는 데 필요한 잠재적 결함이 포함되어 있습니다.

하드코어 보안 엔지니어에게 분명한 교훈은 취약성 연구의 미래는 단순한 버퍼 오버플로우를 찾는 것이 아니라는 점입니다. 그것은 코드의 네 번째 차원을 이해하는 것입니다.시간. 커널이 복잡한 잠금 메커니즘을 사용하는 한, 경쟁 조건은 악용의 '왕관 보석'으로 남을 것입니다.

신뢰할 수 있는 참조 자료

게시물을 공유하세요:
관련 게시물
ko_KRKorean