Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2023-6931 — CVE-2023-6931 커널 패닉 PoC | Kitploit
도구/GitHubGitHub/k0n9-log/cve-2023-6931
Memory ForensicsVulnerability AnalysisExploitationLearning & EducationBinary Exploitation
GitHubk0n9-log/cve-2023-6931

CVE-2023-6931

CVE-2023-6931 커널 패닉 PoC

저장소 보기
21년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2023-6931

CVE-2023-6931용 커널 패닉 PoC

설명

CVE-2023-6931은 perf_event의 취약점으로, 그룹의 read_size에서 정수 오버플로로 인해 힙 버퍼 오버플로가 발생합니다.

퍼포먼스 이벤트(perf event)란 무엇인가요?

perf_events는 Linux 커널이 제공하는 성능 모니터링 및 분석 프레임워크입니다. 이 프레임워크는 하드웨어와 소프트웨어 구성 요소에서 생성되는 다양한 성능 관련 데이터를 추적할 수 있게 해줍니다.

주요 용도

  • 하드웨어 이벤트 추적 CPU 사이클, 명령어 실행 횟수, 캐시 미스 등의 이벤트를 추적합니다.
  • 소프트웨어 이벤트 추적 스위칭, 페이지 폴트, 컨텍스트 스위치 등의 이벤트를 모니터링합니다.
  • 커스텀 이벤트 추적 특정 애플리케이션이나 커널에 특화된 이벤트 추적을 가능하게 합니다.

perf의 구성 요소

  • perf_event_open 시스템 콜 사용자 공간에서 커널의 성능 이벤트를 구성하고 제어할 수 있는 인터페이스입니다. 이벤트 생성, 그룹화, 제어 또는 데이터 읽기에 사용됩니다.
  • 성능 카운터 실행된 명령어 수 또는 CPU 사용률과 같이 CPU와 커널이 추적하는 실제 데이터입니다.
  • 이벤트 그룹 여러 성능 이벤트를 함께 그룹화하고 관리할 수 있게 해줍니다. 그룹 리더 이벤트는 그룹의 대표 역할을 하며, 형제(sibling) 이벤트는 그룹 내 나머지 이벤트를 나타냅니다.

요구 사항

  1. /proc/sys/kernel/perf_event_paranoid 값이 1 이하여야 합니다.
  2. 열 수 있는 파일 디스크립터 수가 약 4100개 이상이어야 합니다. 이 값은 ulimit -n 명령어로 확인하거나 수정할 수 있습니다.
  3. 커널 옵션 CONFIG_PERF_EVENTS가 설정되어 있어야 합니다.

설명

이 취약점은 그룹의 read_size에서 발생하는 정수 오버플로로 인해 발생합니다. perf_event_validate_size 함수는 read_size에 대한 검증을 수행합니다. 그러나 read_size가 검증되는 방식은 현재 이벤트의 read_size만 확인합니다.

핵심은 각 검증 중에 현재 이벤트만 검증되고 이전 이벤트는 검증되지 않는다는 점입니다. 그룹 리더에 PERF_FORMAT_GROUP이 설정되어 있으면 현재 이벤트를 추가하는 것만으로도 그룹 리더의 read_size가 증가할 수 있습니다.

이는 궁극적으로 perf_read_group에서 문제를 일으킵니다. event->read_size의 계산은 그룹 리더의 read_format을 기준으로 nr_siblings를 곱한 값입니다. read_size 변수는 2바이트 u16이므로 저장할 수 있는 최대값은 0xffff입니다.

이를 악용하기 위해 공격자는 먼저 가능한 모든 read_format 옵션이 설정된 그룹 리더 이벤트를 생성합니다. 그 다음 수많은 형제(sibling) 이벤트를 생성합니다. 이 형제 이벤트들은 perf_event_validate_size에서 검증 문제가 발생하지 않도록 read_Format에 PERF_FORMAT_TOTAL_TIME_RUNNING만 설정합니다. 그 결과 nr_siblings 값이 매우 커지지만 각 형제 이벤트가 개별적으로 검증을 통과하므로 이 단계에서는 문제가 없습니다.

이 상태에서 perf_read_group이 호출되면 PERF_FORMAT_GROUP이 설정되어 있으므로 그룹 리더의 read_size가 계속 증가합니다. 결국 정수 오버플로가 발생하고 kzalloc은 매우 작은 버퍼를 할당합니다. 그러나 실제 이벤트 수는 매우 많기 때문에 힙 버퍼 오버플로가 발생하여 커널 패닉이 발생합니다.

도구 다운로드