🔍 CVE-2026-98419

7.0
CVSS Score
HIGH
2026-10-14
2026-10-24 14:16
✅ 완료

🇰🇷 한글 설명

Linux 커널의 drop_monitor 모듈에 있는 reset_per_cpu_data() 함수에서 버퍼 크기 계산 오류로 인해 out-of-bounds 쓰기가 발생합니다. al 값에 nlattr 헤더 크기가 포함되어 있어 memset이 할당된 버퍼 범위를 넘어 skb_shared_info를 손상시킬 수 있습니다. 수정은 al을 페이로드 길이만 나타내도록 하고 nla_total_size(al)로 skb를 할당하는 것입니다.

💡 쉬운 설명

리눅스 커널의 네트워크 패킷 드롭 모니터링 기능에서 메모리 크기를 잘못 계산해 할당된 공간 밖을 덮어쓰는 문제입니다. 이로 인해 시스템 충돌이나 권한 상승에 악용될 가능성이 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: drop_monitor: fix out-of-bounds write in reset_per_cpu_data() In reset_per_cpu_data(), al is computed as: al = sizeof(struct net_dm_alert_msg); al += dm_hit_limit * sizeof(struct net_dm_drop_point); al += sizeof(struct nlattr); skb = genlmsg_new(al, GFP_KERNEL); ... nla = nla_reserve(skb, NLA_UNSPEC, sizeof(struct net_dm_alert_msg)); ... msg = nla_data(nla); memset(msg, 0, al); Because al includes sizeof(struct nlattr) (the 4-byte attribute header), genlmsg_new() allocates al bytes of tailroom starting at nla. However, msg points to nla_data(nla), which is located sizeof(struct nlattr) bytes past nla. Calling memset(msg, 0, al) therefore writes al bytes starting from msg, exceeding the allocated buffer by sizeof(struct nlattr) (4 bytes) and corrupting skb_shared_info. Fix this by letting al represent only the payload length, allocating the skb with genlmsg_new(nla_total_size(al), GFP_KERNEL), and zeroing al bytes from msg.

📍 영향받는 시스템

패치가 적용되지 않은 drop_monitor를 포함한 Linux 커널 버전 (수정 커밋 이전의 대부분 배포판 커널)

⚔️ 공격 벡터

로컬 사용자가 drop_monitor 기능을 조작해 커널 메모리 손상을 유발하고 이를 통해 권한 상승 또는 서비스 거부를 시도할 수 있습니다.

🛡️ 대응 방법

배포사가 제공하는 최신 보안 업데이트를 적용하거나 수정이 포함된 커널 버전으로 업그레이드하고 재부팅합니다.

🔧 검증 코드

출력된 커널 버전을 배포사 보안 공지의 패치 버전과 비교하며, drop_monitor가 로드되지 않았다면 해당 모듈로 인한 직접적 위험은 낮습니다.

Shell / Script
uname -r && (lsmod | grep -q drop_monitor && echo 'drop_monitor loaded' || echo 'drop_monitor not loaded')

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel