🔍 CVE-2026-43455

5.5
CVSS Score
MEDIUM
2026-05-08
2026-05-20 18:04
✅ 완료

🇰🇷 한글 설명

Linux 커널의 MCTP 라우팅에서 mctp_flow_prepare_output() 함수가 key->lock을 보유하지 않고 key->dev를 확인·수정하여 발생하는 경쟁 조건(race condition)입니다. 여러 CPU가 동시에 접근할 때 참조 카운트가 누수되어 리소스 누출이 발생합니다.

💡 쉬운 설명

Linux 커널이 여러 작업을 동시에 처리할 때 같은 메모리 영역을 제어하는 과정에서 충돌이 발생합니다. 결과적으로 할당된 자원이 해제되지 않아 시스템 메모리가 계속 줄어듭니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: mctp: route: hold key->lock in mctp_flow_prepare_output() mctp_flow_prepare_output() checks key->dev and may call mctp_dev_set_key(), but it does not hold key->lock while doing so. mctp_dev_set_key() and mctp_dev_release_key() are annotated with __must_hold(&key->lock), so key->dev access is intended to be serialized by key->lock. The mctp_sendmsg() transmit path reaches mctp_flow_prepare_output() via mctp_local_output() -> mctp_dst_output() without holding key->lock, so the check-and-set sequence is racy. Example interleaving: CPU0 CPU1 ---- ---- mctp_flow_prepare_output(key, devA) if (!key->dev) // sees NULL mctp_flow_prepare_output( key, devB) if (!key->dev) // still NULL mctp_dev_set_key(devB, key) mctp_dev_hold(devB) key->dev = devB mctp_dev_set_key(devA, key) mctp_dev_hold(devA) key->dev = devA // overwrites devB Now both devA and devB references were acquired, but only the final key->dev value is tracked for release. One reference can be lost, causing a resource leak as mctp_dev_release_key() would only decrease the reference on one dev. Fix by taking key->lock around the key->dev check and mctp_dev_set_key() call.

📍 영향받는 시스템

Linux kernel with MCTP module enabled (모든 배포판의 최신 커널)

⚔️ 공격 벡터

로컬 공격자가 race condition을 반복 유발하여 서비스 거부(DoS) 또는 권한 상승

🛡️ 대응 방법

Linux kernel 패치 적용 또는 CONFIG_MCTP 비활성화

🔧 검증 코드

커널 버전을 확인하고 MCTP 모듈이 로드되어 있으면 취약함. MCTP가 로드되지 않으면 안전.

Shell / Script
uname -r && lsmod 2>/dev/null | grep -i mctp || echo 'MCTP not loaded'

📊 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