
CVE-2023-34853 공개: Supermicro X12DPG-QR BIOS 펌웨어의 스택 오버플로 취약점으로, 로컬 권한 상승을 통해 DXE Runtime UEFI 애플리케이션 실행이 가능함.
이 저장소는 CVE-2023-34853에 대한 세부 정보를 공개하기 위해 사용됩니다. 이 취약점은 Supermicro 마더보드 X12DPG-QR 1.4b에 존재하며 버전 1.5에서 수정될 예정입니다. BIOS 펌웨어 내 SmcSecureErase 파일(GUID: 2B7C2FD1-C1CF-AB1D-C3BB-D1D691FB131E)에서 오프셋 0x2CC2에 스택 오버플로우 취약점이 있습니다. 취약점이 있는 추정 코드는 다음과 같습니다:
char __fastcall sub_2C20(int *a1, unsigned __int64 a2) { char v4; // r12
unsigned __int64 v6; // r15
__int64 v7; // rbx
unsigned __int64 v8; // rax
char *v9; // rsi
char *v10; // r13
_WORD *v11; // rax
char *v12; // rcx
__int16 i; // dx
__int64 v14; // rdx
__int64 v15; // r8
__int64 v16; // rdx
__int64 v17; // r8
__int16 *v18; // rcx
_BYTE *v19; // rax
__int64 v20; // rcx
__int64 v21; // rax
_BYTE *v22; // rax
__int64 v23; // rcx
__int64 v24; // rax
__int64 v25; // rcx
__int64 v26; // rdx
unsigned __int8 v27; // cl
unsigned __int64 v28; // r14
unsigned __int8 v29; // r8
__int64 v30; // rdx
__int64 v31; // rax
int v32; // edx
__int64 v33; // rax
char v34; // al
_BYTE *v35; // [rsp+50h] [rbp-B0h] BYREF
_BYTE *v36; // [rsp+58h] [rbp-A8h] BYREF
_WORD *v37; // [rsp+60h] [rbp-A0h] BYREF
__int64 v38; // [rsp+68h] [rbp-98h] BYREF
__int64 v39[2]; // [rsp+70h] [rbp-90h] BYREF
char v40[112]; // [rsp+80h] [rbp-80h] BYREF
char v41[1680]; // [rsp+F0h] [rbp-10h] BYREF
char v42[5376]; // [rsp+780h] [rbp+680h] BYREF
char v44; // [rsp+1CA0h] [rbp+1BA0h]
int v45; // [rsp+1CA8h] [rbp+1BA8h] BYREF
v39[0] = 0i64;
v44 = 0;
v37 = 0i64;
v4 = 0;
if ( (*(__int64 (__fastcall **)(__int16 *, __int64 *, _QWORD, __int64 *,_QWORD))(gRT ->GetVariable))(aSmcsecurityera, &VendorGuid, 0i64, v39, 0i64) != 0x8000000000000005ui64 ) return 0;
v6 = 0i64;
v7 = (*(__int64 (__fastcall **)(__int16 *, __int64 *, _QWORD, __int64 *, char *))(gRT ->GetVariable))(aSmcsecurityera, &VendorGuid, 0i64, v39, v41); return v4; }
만약 "SmcSecurityEraseSetupVar"가 긴 문자열로 설정되면, GetVariable의 첫 번째 호출이 v39(DataSize)를 문자열 길이로 수정합니다. 그런 다음, 두 번째 GetVariable 호출이 v41을 덮어씁니다. 이로 인해 버퍼 오버플로우 공격이 발생합니다. 로컬 권한을 가진 공격자는 이 취약점을 이용하여 (운영 체제에 따라) 링 3 또는 링 0에서 DXE 런타임 UEFI 애플리케이션으로 권한을 상승시키고 임의 코드를 실행할 수 있습니다.
마지막으로, 지속적인 후속 조치를 취해준 Supermicro 보안 부서에 특별히 감사드립니다.