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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
vbox-lsilogic-sas-config — VirtualBox 7.2.20 - 치명적 - 로컬 - 타입 혼동 / 임의 읽기·쓰기 - SAS1068 CONFIG SCSI-SPI 오버레이 | Kitploit
도구/GitHubGitHub/abraxas/vbox-lsilogic-sas-config
Memory ForensicsVulnerability AnalysisExploitationReverse EngineeringSecurity VirtualizationPapers & ResearchBinary Exploitation
GitHubabraxas/vbox-lsilogic-sas-config

vbox-lsilogic-sas-config

VirtualBox 7.2.20 - 치명적 - 로컬 - 타입 혼동 / 임의 읽기·쓰기 - SAS1068 CONFIG SCSI-SPI 오버레이

저장소 보기
113일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - vbox-lsilogic-sas-config

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vbox-lsilogic-sas-config

vbox-lsilogic-sas-config

분류: 타입 혼동 / 임의 읽기·쓰기 도달 범위: 로컬 (게스트)

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)

SAS1068 MPT CONFIG는 SCSI-SPI 포트 0을 12바이트 페이지로 취급합니다. SAS에서는 해당 페이지가 유니언의 다른 절반입니다: pManufacturingPage7과 cbManufacturingPage7. 게스트의 CONFIG READ는 힙 포인터를 DMA로 유출합니다. CONFIG WRITE는 포인터와 크기를 심어둡니다. 그런 다음 제조 페이지 7이 심어진 포인터를 통해 복사합니다.

연결된 SAS1068(PDM LsiLogicSas, PCI 1000:0054)에서 게스트 ring3는 VM 프로세스 내 임의 읽기/쓰기를 얻습니다. 이는 VirtualBoxVM / VBoxHeadless 힙이며, 호스트 커널 탈출은 아닙니다.

ID아직 CVE 없음
분류타입 혼동 / 임의 읽기·쓰기
도달 범위로컬 (게스트)
CWECWE-843, CWE-822
CVSS치명적: 8.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
제품VirtualBox OSS
영향 받는 버전7.2.20 (f2792cf44)
필요 조건연결된 SAS1068 (PDM LsiLogicSas, PCI 1000:0054)
라이선스GNU Affero GPL v3.0
실험 환경루프백 소스 하네스

공격자가 할 수 있는 일

방법: 게스트 ring3는 MPT_MESSAGE_HDR_FUNCTION_CONFIG(0x04), 페이지 타입 SCSI-SPI 포트 0(0x03)으로 SAS1068 MMIO 도어벨 또는 요청 FIFO를 프로그래밍합니다. 디스패치는 항상 SPI getter를 호출합니다. EXTENDED만 SAS로 제한됩니다. 페이지 속성 getter는 주석 처리되어 있어, Readonly 포트 0 페이지도 여전히 쓰기가 가능합니다. SPI 포트 0은 12바이트로 패킹되어 SasPages.pManufacturingPage7(8)과 cbManufacturingPage7(4)을 덮어씁니다.

권한종류상태부여하는 것
CONFIG SCSI-SPI 포트 0 READ정보 수집실험실 입증VM 프로세스 힙 포인터 pManufacturingPage7과 그 크기를 게스트 RAM으로 DMA. ASLR 입력.
CONFIG SCSI-SPI 포트 0 WRITE무결성실험실 입증게스트가 선택한 포인터 + 크기를 해당 SAS 필드 위에 심음
제조 페이지 7 CONFIG READ무결성실험실 입증심어진 주소의 호스트 바이트를 게스트 GPA로 복사 (VBOX-LSILOGIC-SAS-CONFIG-WITNESS)
제조 페이지 7 CONFIG WRITE무결성동일 getter에서 추론게스트 바이트를 심어진 주소로 복사 (VirtualBoxVM 내 임의 쓰기)
포트 1 / 디바이스 0 SPI 페이지정보 수집 / 무결성추론된 오버레이포트 1은 pSASIOUnitPage0을 유출/심음; 디바이스 0 페이지 0은 paPHYs에 도달; 디바이스 0 페이지 1은 pSASDeviceHead에 도달
임의로 심어진 포인터가용성추론다음 SAS 페이지 접근 시 또는 lsilogicR3ConfigurationPagesFree에서 VM 프로세스 충돌

인접 영역 중 배제된 것:

  • 호스트 커널
  • 다른 VM
  • VBoxSVC
  • 기본 Windows 게스트 LSI53C1030 SPI (SpiPages가 실제 레이아웃이며, 이 타입 혼동에는 SAS1068이 필요)
  • SPI 컨트롤러의 SAS EXTENDED 페이지 (VERR_NOT_FOUND)
  • Windows 하드닝 토큰 / AppContainer (이는 VM 프로세스 힙이며, 샌드박스 우회가 아님)

이는 VM 프로세스 임의 읽기·쓰기이며, 호스트 커널 탈출이 아닙니다. 완전한 호스트 사용자 권한에는 여전히 하드닝 잔여 취약점이 필요합니다. 남아 있는 3D 쓰기와 결합하지 않았습니다: VMSVGA DX11 UAF(d691aa68)는 이 핀에서 닫혀 있습니다.

Guest Additions 없음. 3D 없음. VRDP 없음. PUEL 아님. 적대적 게스트 ring3만으로 충분하며, 내장 mpt/mptsas 드라이버는 필요하지 않습니다.

발견 방법

Sep 2026 CPU 이후 OSS 7.2.20에 머물면서 LsiLogic MPT CONFIG를 살펴보았다. 2026년의 조용한 reply-stack 누수는 이미 닫혀 있다: 122c6880은 SCSI I/O 오류 시 MptReplyUnion을 RT_ZERO 처리한다. 나는 그 sink가 아니라 그 부류의 잔재를 찾고 있었다.

그 잔재는 stack reply가 아니라 union이다:

union {
    MptConfigurationPagesSpi SpiPages;
    MptConfigurationPagesSas SasPages;
} u;  /* DevLsiLogicSCSI.h:3323 */

SAS alloc은 SasPages 호스트 포인터를 채우고 SPI 페이지 초기화를 절대 실행하지 않습니다. DevLsiLogicSCSI.cpp:2795의 SPI Port getter에는 enmCtrlType 검사가 없습니다. CONFIG 디스패치 SPI 케이스는 게이트되지 않습니다. 페이지 속성 getter는 cpp:3159에서 주석 처리되어 있습니다. cpp:2701의 Manufacturing page 7은 SAS로 게이트되어 있으며, 이는 의도된 경로이고 pManufacturingPage7을 NULL 검사 없이 역참조합니다. 이것이 SPI 타입의 Port 0 READ/WRITE가 SAS 포인터 유출 및 plant가 되는 방식입니다.

이미 기록된 잘못된 방향: 122c6880 재제출; 기본 LSI53C1030을 이 버그로 취급; 와일드 포인터 크래시를 호스트 커널 탈출로 과장; 패킹된 오버레이로 충분한데 라이브 VM을 사용. 극적 요소: 리버스 셸. 오라클은 CONTROL 더미 페이지 데이터이며, 그다음 VBOX-LSILOGIC-SAS-CONFIG-WITNESS의 유출/plant/임의 읽기입니다.

실습

cd lab
./run.sh

또는 python3 vbox-lsilogic-sas-config-Abraxas-Labs.py. pin 구조체의 소스 하네스. VirtualBox는 부팅되지 않음. Compose 프로젝트 vbox-lsilogic-sas-config, network_mode: none. 아무것도 바인드하지 않음.

CONTROL: SPI 타입의 Port 0 오버레이 읽기는 더미 페이지 데이터이며, 제조 페이지 7 힙 포인터가 아님.

SAS 혼동: Port 0 READ는 calloc과 일치하는 pManufacturingPage7을 유출함. Port 0 WRITE는 두 번째 witness 버퍼 포인터+크기를 심음. 제조 페이지 7 getter와 CONFIG READ가 witness를 게스트 GPA 배열로 복사함.

SUCCESS vbox-lsilogic-sas-config leak=yes plant=yes arb-read=yes VBOX-LSILOGIC-SAS-CONFIG-WITNESS

수정

SCSI-SPI 페이지 유형을 enmCtrlType == LSILOGICCTRLTYPE_SCSI_SPI 조건으로 제한합니다. 페이지 속성 검사를 복원하여 Readonly Port 0이 읽기 전용으로 유지되도록 합니다. 역참조 전에 pManufacturingPage7(및 기타 SAS 포인터)에 대한 NULL 검사를 수행합니다. 하나의 union에서 SpiPages와 SasPages를 겹쳐 놓는 것을 중단합니다.

참고 자료

  • github.com/VirtualBox/virtualbox 태그 v7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
  • DevLsiLogicSCSI.h 3323행의 union; 2251행의 SPI Port 0 크기 12
  • DevLsiLogicSCSI.cpp 619행의 SAS 할당; 2701행의 manufacturing getter; 2795행의 SPI Port getter; 3159행의 주석 처리된 페이지 속성; 3293행의 CONFIG READ/WRITE
  • 이 sink가 아닌, 종료된 형제 항목: 122c6880 (MptReplyUnion SCSI I/O 오류 스택)
도구 다운로드