🔍 CVE-2024-43893

5.5
CVSS Score
MEDIUM
2024-08-26
2026-10-15 01:18
✅ 완료

🇰🇷 한글 설명

Linux 커널 시리얼 드라이버(serial/core)의 divide by zero 취약점. TIOCSSERIAL ioctl 호출 시 유효하지 않은 baud_base로 인해 uartclk이 0으로 설정되면, uart_get_divisor() 함수에서 0으로 나누는 연산이 발생하여 커널 패닉 유발.

💡 쉬운 설명

Linux의 시리얼 포트 설정 명령어에 잘못된 값을 전달하면 커널이 0으로 나누려고 시도하여 시스템이 충돌합니다. 로컬 사용자가 이를 악용하여 서비스 거부 공격을 수행할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: serial: core: check uartclk for zero to avoid divide by zero Calling ioctl TIOCSSERIAL with an invalid baud_base can result in uartclk being zero, which will result in a divide by zero error in uart_get_divisor(). The check for uartclk being zero in uart_set_info() needs to be done before other settings are made as subsequent calls to ioctl TIOCSSERIAL for the same port would be impacted if the uartclk check was done where uartclk gets set. Oops: divide error: 0000 PREEMPT SMP KASAN PTI RIP: 0010:uart_get_divisor (drivers/tty/serial/serial_core.c:580) Call Trace: <TASK> serial8250_get_divisor (drivers/tty/serial/8250/8250_port.c:2576 drivers/tty/serial/8250/8250_port.c:2589) serial8250_do_set_termios (drivers/tty/serial/8250/8250_port.c:502 drivers/tty/serial/8250/8250_port.c:2741) serial8250_set_termios (drivers/tty/serial/8250/8250_port.c:2862) uart_change_line_settings (./include/linux/spinlock.h:376 ./include/linux/serial_core.h:608 drivers/tty/serial/serial_core.c:222) uart_port_startup (drivers/tty/serial/serial_core.c:342) uart_startup (drivers/tty/serial/serial_core.c:368) uart_set_info (drivers/tty/serial/serial_core.c:1034) uart_set_info_user (drivers/tty/serial/serial_core.c:1059) tty_set_serial (drivers/tty/tty_io.c:2637) tty_ioctl (drivers/tty/tty_io.c:2647 drivers/tty/tty_io.c:2791) __x64_sys_ioctl (fs/ioctl.c:52 fs/ioctl.c:907 fs/ioctl.c:893 fs/ioctl.c:893) do_syscall_64 (arch/x86/entry/common.c:52 (discriminator 1) arch/x86/entry/common.c:83 (discriminator 1)) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) Rule: add

📍 영향받는 시스템

모든 Linux 배포판의 kernel (serial/core 모듈 포함), 패치 전 모든 버전

⚔️ 공격 벡터

로컬 사용자가 TIOCSSERIAL ioctl을 호출하여 invalid baud_base 값을 전달해 uartclk을 0으로 설정

🛡️ 대응 방법

Linux 커널 패치 적용 (uart_set_info() 함수에서 uartclk 0 검증 추가)

🔧 검증 코드

커널 버전을 확인하여 kernel.org 보안 공지 또는 배포판별 패치 리릴리스 목록에서 해당 버전이 CVE-2024-43893 패치를 포함하는지 확인

Shell / Script
uname -r | grep -oE '[0-9]+\.[0-9]+' && cat /proc/version | grep -oE 'Linux version [^ ]+'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel