CVE-2026-46263 in Linux정보

요약

\~에 의해 VulDB • 2026. 06. 04.

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

drm/amd/display: 스트림 인코더 인덱스 범위 초과(v3) 수정

eng_id는 음수가 될 수 있으며, 이로 인해 stream_enc_regs[]의 인덱스가 범위를 벗어날 수 있습니다.

eng_id는 stream_enc_regs[]의 인덱스로 직접 사용되는데, 이 배열은 5개의 항목만 가지고 있습니다. eng_id가 5(ENGINE_ID_DIGF)이거나 음수인 경우, 배열의 끝을 넘어선 메모리에 접근할 수 있습니다.

eng_id를 인덱스로 사용하기 전에 ARRAY_SIZE()를 사용하여 범위 검사를 추가합니다. 부호 없는 정수 캐스팅도 음수 값을 거부합니다.

이를 통해 범위 초과 접근을 방지합니다.

다음 smatch 오류를 수정합니다: dcn*_resource.c: stream_encoder_create()에서 stream_enc_regs[eng_id]가 범위 밖(index out of bounds)으로 인덱싱될 수 있습니다 (크기 5).

drivers/gpu/drm/amd/amdgpu/../display/dc/resource/dcn351/dcn351_resource.c 1246 static struct stream_encoder *dcn35_stream_encoder_create( 1247 enum engine_id eng_id, 1248 struct dc_context *ctx) 1249 {

...

1255 1256 /* VPG, AFMT, DME 레지스터 블록을 DIO 블록 인스턴스에 매핑 */ 1257 if (eng_id <= ENGINE_ID_DIGF) {

ENGINE_ID_DIGF는 5입니다. <= 대신 <?여야 하지 않나요?

관련은 없지만, 음... 왜 Smatch가 "eng_id"가 음수가 될 수 있다고 말하는 걸까요? end_id는 signed long 타입이지만, 호출부에서 음수가 되지 않도록 검사하는 코드가 있습니다.

1258 vpg_inst = eng_id; 1259 afmt_inst = eng_id; 1260 } else 1261 return NULL; 1262

...

1281 1282 dcn35_dio_stream_encoder_construct(enc1, ctx, ctx->dc_bios, 1283 eng_id, vpg, afmt, 1284 &stream_enc_regs[eng_id],
^^^^^^^^^^^^^^^^^^^^^^^ 이 stream_enc_regs[] 배열은 5개의 요소를 가지므로, 배열의 끝을 하나 넘어서는 위치에 접근하고 있습니다.

...

1287 return &enc1->base; 1288 }

v2: Roman/Dan의 제안대로 명시적인 범위 검사를 사용; 부호 없는 정수(int) 캐스팅 제거

v3: 컴파일러는 이미 두 값을 비교하는 방법을 알고 있으므로, 캐스팅 (int)이 필요하지 않습니다. (Roman)

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

책임이 있는

Linux

예약하다

2026. 05. 13.

모더레이션

수락

항목

VDB-368168

EPSS

0.00018

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!