🇰🇷 한글 설명
Linux 커널의 mdio 드라이버에서 __mdiobus_register 함수 실행 시 부호 있는 32비트 정수를 31비트 왼쪽 시프트하여 정의되지 않은 동작(UB)이 발생하는 문제입니다. 이를 해결하기 위해 해당 비트를 부호 없는 타입으로 변경하였습니다.
💡 쉬운 설명
컴퓨터 내부 계산에서 허용되지 않은 방식의 연산이 일어나 예측할 수 없는 동작이 생길 수 있는 결함입니다. 커널 업데이트로 계산 방식을 올바르게 고치면 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: mdio: fix undefined behavior in bit shift for __mdiobus_register
Shifting signed 32-bit value by 31 bits is undefined, so changing
significant bit to unsigned. The UBSAN warning calltrace like below:
UBSAN: shift-out-of-bounds in drivers/net/phy/mdio_bus.c:586:27
left shift of 1 by 31 places cannot be represented in type 'int'
Call Trace:
<TASK>
dump_stack_lvl+0x7d/0xa5
dump_stack+0x15/0x1b
ubsan_epilogue+0xe/0x4e
__ubsan_handle_shift_out_of_bounds+0x1e7/0x20c
__mdiobus_register+0x49d/0x4e0
fixed_mdio_bus_init+0xd8/0x12d
do_one_initcall+0x76/0x430
kernel_init_freeable+0x3b3/0x422
kernel_init+0x24/0x1e0
ret_from_fork+0x1f/0x30
</TASK>
📍 영향받는 시스템
패치가 적용되기 이전의 Linux 커널(mdio 버스 등록 코드를 포함한 버전)을 사용하는 시스템
⚔️ 공격 벡터
공격자가 직접 악용 가능한 경로는 제한적이며, 주로 정의되지 않은 동작으로 인한 커널 불안정 또는 디버그 경고(UBSAN) 발생이 주된 영향입니다.
🛡️ 대응 방법
배포판에서 제공하는 최신 Linux 커널 보안 업데이트를 설치하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고문에서 이 CVE가 수정된 커널 버전과 비교하여, 같거나 높으면 패치가 적용된 것이고 낮으면 업데이트가 필요합니다.