🇰🇷 한글 설명
리눅스 커널의 i2c: ismt 드라이버 내 ismt_access() 함수에서 발생하는 경계 외 참조(Out-of-bounds) 취약점입니다. 사용자로부터 전달받은 데이터의 크기를 검증하지 않아 'data->block[0]' 변수가 매우 커질 수 있으며, 이로 인해 메모리 오류가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 부품을 제어하는 프로그램이 사용자가 입력한 데이터의 크기를 제대로 확인하지 않아 발생하는 문제입니다. 잘못된 크기의 데이터를 입력하면 시스템이 예상치 못한 메모리 영역을 건드려 오류가 발생하거나 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
i2c: ismt: Fix an out-of-bounds bug in ismt_access()
When the driver does not check the data from the user, the variable
'data->block[0]' may be very large to cause an out-of-bounds bug.
The following log can reveal it:
[ 33.995542] i2c i2c-1: ioctl, cmd=0x720, arg=0x7ffcb3dc3a20
[ 33.995978] ismt_smbus 0000:00:05.0: I2C_SMBUS_BLOCK_DATA: WRITE
[ 33.996475] ==================================================================
[ 33.996995] BUG: KASAN: out-of-bounds in ismt_access.cold+0x374/0x214b
[ 33.997473] Read of size 18446744073709551615 at addr ffff88810efcfdb1 by task ismt_poc/485
[ 33.999450] Call Trace:
[ 34.001849] memcpy+0x20/0x60
[ 34.002077] ismt_access.cold+0x374/0x214b
[ 34.003382] __i2c_smbus_xfer+0x44f/0xfb0
[ 34.004007] i2c_smbus_xfer+0x10a/0x390
[ 34.004291] i2cdev_ioctl_smbus+0x2c8/0x710
[ 34.005196] i2cdev_ioctl+0x5ec/0x74c
Fix this bug by checking the size of 'data->block[0]' first.
📍 영향받는 시스템
Linux Kernel (ismt driver 포함 버전)
⚔️ 공격 벡터
사용자 권한을 가진 프로세스가 조작된 크기의 데이터를 I2C ioctl 명령을 통해 드라이버로 전달
🛡️ 대응 방법
ismt_access() 함수 내에서 'data->block[0]'의 크기를 사전에 검증하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.