🇰🇷 한글 설명
Linux 커널의 hwmon(nct6775-core) 드라이버에서 NCT6116 칩셋의 온도 레지스터 개수를 잘못 계산하여 발생하는 취약점입니다. NCT6116은 3개의 레지스터만 보유하고 있으나, NCT6106의 레지스터 개수인 6개를 참조함으로써 메모리 경계를 벗어나는 KASAN 오류가 발생합니다.
💡 쉬운 설명
하드웨어 온도 센서를 제어하는 소프트웨어가 실제 센서 개수보다 더 많은 개수를 읽으려고 시도하여 시스템 오류를 일으키는 문제입니다. 이로 인해 시스템이 불안정해지거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
hwmon: (nct6775-core) Fix number of temperature registers for NCT6116
Unlike NCT6106, NCT6116 only has three temperature registers, and with
it only three temperature source and temperature source configuration
registers. The register addresses match those of NCT6106 and can be
re-used.
The code used a separate array to list the temperature source registers
for NCT6116, but used the size of the NCT6106 register array to set
the number of registers. The NCT6106 register array provides six addresses,
while the temperature source register array for NCT6116 only provides three
addresses. This causes a KASAN report.
BUG: KASAN: global-out-of-bounds in nct6775_probe+0x936/0x46f0 [nct6775]
Read of size 2 at addr ffffffffc19561a6 by task modprobe/954
...
Call Trace:
dump_stack+0x7d/0xa7
print_address_description.constprop.0+0x1c/0x220
? __kasan_kmalloc.constprop.0+0xc9/0xd0
? __kmalloc_node_track_caller+0x194/0x5b0
? nct6775_probe+0x936/0x46f0 [nct6775]
? nct6775_probe+0x936/0x46f0 [nct6775]
...
Fix the problem by hard-coding the number of temperature and temperature
configuration registers to three for NCT6116. Drop the unnecessary
NCT6116_REG_TEMP_SOURCE array and re-use NCT6106_REG_TEMP_SOURCE.
📍 영향받는 시스템
NCT6116 칩셋을 사용하는 하드웨어가 탑재된 Linux 커널 시스템
⚔️ 공격 벡터
로컬 공격자가 잘못된 하드웨어 구성을 유도하거나 관련 드라이버를 로드하여 메모리 경계 외 읽기(Out-of-bounds Read)를 유발할 수 있음
🛡️ 대응 방법
NCT6116의 온도 및 설정 레지스터 개수를 3개로 고정하도록 커널 패치를 적용하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전인지 배포판 보안 공지를 통해 확인하십시오.
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux