CVE-2026-53390 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 19.

리눅스 커널에서 다음 취약점이 해결되었습니다:

ksmbd: smb_check_perm_dacl() 내의 버퍼 오버플로우 읽기 오류 수정

smb_check_perm_dacl() 함수 내 권한 확인 ACE(Access Control Entry) 순회 로직은 ACE 헤더 크기를 검증하고 sid.num_subauth를 SID_MAX_SUB_AUTHORITIES로 제한하지만, compare_sids()가 이를 역참조하기 전에 ace->size가 실제로 num_subauth개의 서브 권리를 포함하기에 충분히 큰지 여부는 전혀 확인하지 않습니다.

CIFS_SID_BASE_SIZE는 sub_auth[] 배열을 제외한 SID 헤더까지의 크기를 나타내며, offsetof(struct smb_ace, sid)는 ACE 헤더를 의미합니다. 따라서 기존 보호 장치는 8바이트의 기본 SID(즉, 서브 권리가 없는 경우)만을 보장할 뿐입니다. 이후 compare_sids() 함수는 i가 num_subauth 범위 내에 있을 때 ace->sid.sub_auth[i]를 읽습니다. 로컬 비교용 SIDs(sid_everyone, sid_unix_NFS_mode 및 id_to_sid() 결과)은 항상 최소 하나의 서브 권리를 가지며, 공격자는 ACE_revision과 authority 바이트(이들은 유효한 기본 SID 범위 내에 위치함)를 제어할 수 있으므로 이러한 SID 중 하나와 일치하도록 설정하여 sub_auth 읽기를 유발시킬 수 있습니다.

따라서 보안 설명자(security descriptor)의 꼬리 부분에 크기(size)가 16이고 num_subauth가 1 이상인 조작된 ACE를 배치하면, pntsd 할당 영역을 넘어 최대 SID_MAX_SUB_AUTHORITIES * sizeof(__le32) 바이트에 달하는 힙 기반 버퍼 오버플로우 읽기가 발생합니다. 보안 설명자는 ksmbd_vfs_get_sd_xattr() 함수를 통해 디스크 데이터 크기에 정확히 맞춰진缓冲区(kzalloc(sd_size), ndr_decode_v4_ntacl() 내)로 로드되므로, 이 읽기 작업은 할당된 메모리 영역을 벗어난 위치에서 수행됩니다. 이러한 손상된 설명자는 SMB2_SET_INFO를 통해 원본 그대로 저장될 수 있으며(DACL이 security.NTACL xattr에 기록되기 전에 정규화되지 않음), 이후 SMB2_CREATE 접근 검사 시 해당 읽기가 발생하므로, ACL xattr을 사용하는 공유 영역의 인증된 클라이언트로부터 도달 가능합니다.

누락되었던 num_subauth와 ace_size 간의 검사를 추가하여, 형제 파서인 parse_dacl()과 smb_inherit_dacl()에 이미 존재하는 동일한 보호 장치를 반영했습니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 06. 09.

모더레이션

수락

항목

VDB-380122

EPSS

0.00000

활동

낮음

출처

Do you know our Splunk app?

Download it now for free!