[공격] 분석 — CVE-2024-49998
CVE‑2024‑49998 is a local kernel DoS in the lan9303 DSA driver caused by race conditions during shutdown; immediate mitigation is to block or unload the lan9303 module until a patched kernel version is deployed.
📋 요약
- 심각도 medium · CVSS 4.7 · EPSS 0.00174 · 악용난이도 hard
🔍 공격 기법
-
전제 조건
- 로컬 계정(특권 낮음)으로 시스템에 로그인 가능해야 함.
- 커널이
lan9303DSA 드라이버를 로드한 상태여야 함(패치 전 버전 5.15.155‑6.10.14 등).
-
트리거 조건
dsa_switch_shutdown()호출 시, 드라이버는drvdata를 NULL 로 설정한다.- PHY 상태 머신(
phy_state_machine)이 종료 후에도 계속 실행되면서lan9303_mdio_phy_read()→dev_get_drvdata()경로를 타게 되면 NPE가 발생한다. - 동시에 패킷 수신 흐름(
dsa_switch_rcv())에서dev->dsa_ptr를 NULL 로 만든 뒤 아직 사용 중인 포인터를 역참조하면 커널 패닉이 유발된다.
-
공격 단계
1️⃣ 정찰 –lsmod | grep lan9303,/proc/modules등으로 모듈 존재 확인.
2️⃣ 초기 접근 – 일반 사용자 권한으로 시스템 종료/재부팅 명령(shutdown -h now또는reboot)을 실행.
3️⃣ 동시 트리거 – 종료 직후 네트워크 트래픽(예: 지속적인 ping, DHCP 요청)으로 PHY 상태 머신이 동작하도록 유지한다. 정확한 타이밍에 패킷이 도착하면 NPE가 발생한다.
4️⃣ 실행·가용성 파괴 – 커널 패닉 → 시스템 다운 → 서비스 중단. -
CVSS ↔ 실제 조건 매핑
- AV:L → 로컬 명령 실행(시스템 종료)으로 충족.
- AC:H → PHY 상태 머신과
dsa_switch_shutdown()사이의 레이스를 재현하기 위한 정밀 타이밍 필요. - PR:L → 일반 사용자 권한만 요구.
- UI:N → 사용자의 추가 입력 없이 자동 발생.
- A:H → 가용성 파괴가 직접적인 결과.
-
공격 표면
- 노출 엔드포인트:
/sbin/shutdown,/usr/sbin/reboot등 시스템 종료/재부팅 바이너리. - 관련 함수/파라미터:
dsa_switch_shutdown(),phy_state_machine()내부 타이머·작업 큐, MDIO PHY 읽기(lan9303_mdio_phy_read).
- 노출 엔드포인트:
악용 가능성: AV:L(로컬)·AC:H(높은 복잡도)·PR:L·UI:N 벡터는 공격자가 먼저 시스템에 로컬 권한을 확보해야 하며, lan9303 드라이버의 phy_state_machine 스레드를 중단시키지 못하는 상황을 인위적으로 만들기 위해 커널 내부 상태를 정밀하게 조작해야 함을 의미합니다.
EPSS 0.00174는 현재까지 실제 악용 사례가 거의 없지만, 0.174% 정도의 확률로 공격이 성공할 가능성이 존재함을 보여주며, KEV에 등재되지 않은 점은 아직 대규모·자동화된 위협으로 전환되지 않았다는 점을 시사합니다.
트리거 조건은 DSA 스위치가 shutdown 절차를 수행하는 중에 lan9303_phy_read 경로가 호출될 때이며, 이때 dev_get_drvdata() 가 임의 런타임에서 실행되는 것이 핵심 취약점입니다.
공격 표면은 Linux 커널의 net/dsa 서브시스템과 lan9303 드라이버가 노출하는 MDIO/PHY 제어 인터페이스이며, /sys/class/net/*/device 또는 netlink을 통해 해당 드라이버에 접근할 수 있는 경우에 한정됩니다.
따라서 공격자는 로컬에서 커널 모듈 로딩·언로드 권한이 있거나, 이미 존재하는 다른 권한 상승 취약점을 연계해 phy_state_machine 스레드가 정상 종료되지 않도록 지속시키는 단계가 필요합니다.
이러한 복합적인 전제와 높은 실행 복잡도 때문에 등급은 hard 으로 평가되며, 실제 악용 가능성은 낮지만 로컬 권한을 확보
💥 영향 분석
- 성공 시 커널 패닉으로 시스템이 즉시 다운되며 재부팅 필요.
- 데이터 손실 및 서비스 가용성 저하가 주요 위험이며, 권한 상승이나 원격 코드 실행은 제공되지 않음.
🔗 관련 취약점·체이닝
- 현재 동일 DSA 드라이버와 연관된 다른 CVE는 확인되지 않았음(추정).
- 가능한 체인 패턴:
- DoS → 권한 상승: 시스템 재부팅 후 초기화되지 않은 메모리 영역을 활용하는 로컬 권한 상승 취약점과 결합 시 지속적인 침투가 가능.
- DoS → 정보 노출: 커널 oops 로그에 포함된 주소 정보가 공격자에게 커널 레이아웃 정보를 제공, 이후 다른 로컬 익스플로잇에 활용될 수 있음(추정).
🔎 탐지
dmesg또는 시스템 로그에lan9303_phy_read·dev_get_drvdata관련 NULL‑pointer dereference 메시지가 기록됨.- 커널 oops/ panic 보고서(
oops파일)에서 스택 트레이스에lan9303_mdio_phy_read가 포함된 경우 경보 생성. auditd로그에 비정상적인shutdown호출과 동시에 네트워크 인터페이스가 활성화된 기록이 나타나면 의심 신호로 활용.
🛡️ 완화 방안
1️⃣ 패치 적용 – 배포판에서 제공하는 최신 커널(5.15.156 이상, 5.16.11 이상, 5.17‑6.10.15 등)으로 즉시 업데이트.
2️⃣ 모듈 차단/언로드 – modprobe -r lan9303 로 언로드하거나 /etc/modprobe.d/blacklist.conf에 blacklist lan9303 추가하여 로드를 차단.
3️⃣ 종료 전 네트워크 비활성화 – 시스템 종료·재부팅 스크립트에서 ip link set down <if> 를 수행해 DSA 스위치를 완전히 정지시킨 뒤 shutdown 진행.
4️⃣ 감사 규칙 적용 – auditctl -w /sbin/shutdown -p x -k lan9303_shutdown 등으로 종료 명령 감시, 동시에 auditctl -w /sys/module/lan9303 -p w -k lan9303_mod 로 모듈 변경 감시.
5️⃣ 보안 프로파일 강화 – SELinux/AppArmor 정책에 lan9303 모듈 로드·제거 권한을 제한하고, 서명 검증을 통해 승인된 커널만 로드되도록 설정.
다중 소스 교차검증 결과(교차검증: 다중 소스에서 일관성이 확인됐음)와 EPSS 0.00174(실측 악용 가능성 낮음)를 반영해, CVSS 4.7·non‑KEV·hard exploit 난이도 기반 “monitor” 우선순위로 판단되었습니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=4.7 · non-KEV · EPSS=0.00174 · exploit=hard · in_scope=None