[방어] 분석 — CVE-2026-31737
Local resource leak in the ftgmac100 driver can lead to kernel memory exhaustion (DoS), requiring immediate module disabling or patching to prevent system instability and potential privilege escalation chains.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00129 · 악용난이도 hard
🔍 공격 기법
본 취약점은 ftgmac100 네트워크 드라이버의 ftgmac100_alloc_rings() 함수 내 리소스 할당 로직 결함으로 인해 발생합니다.
- 촉발 경로: 드라이버가 RX/TX SKB 및 Descriptor 등을 단계별로 할당하던 중 중간 단계에서 메모리 할당 실패(
-ENOMEM)가 발생할 경우, 이전에 이미 할당된 자원들을 해제하지 않고 즉시 반환하는 로직 오류가 존재합니다. - 작동 원리: 추정: 공격자가 의도적으로 시스템 메모리를 압박하거나 특정 조건의
ioctl/netlink호출을 통해 링 할당 실패를 반복적으로 유도함으로써 커널 메모리 누수(Memory Leak)를 일으킵니다. - 단계: [로컬 권한 획득] $\rightarrow$ [ftgmac100 드라이버 인터페이스 접근] $\rightarrow$ [할당 실패 유도 및 리소스 누적] $\rightarrow$ [커널 메모리 고갈].
악용 가능성: 본 취약점의 공격 난이도는 Hard로 평가됩니다. CVSS 벡터상 AV:L 및 PR:L 조건으로 인해, 공격자는 이미 시스템에 낮은 권한(Low Privilege)의 계정으로 로그인하여 로컬 쉘 접근권을 확보한 상태여야만 트리거가 가능합니다. 공격 표면은 Linux 커널 내 ftgmac100 네트워크 드라이버의 링 할당 로직(ftgmac100_alloc_rings)이며, 특정 네트워크 인터페이스를 Open 하는 과정에서 메모리 할당 실패(ENOMEM)를 유도하여 자원 누수를 일으키는 구조입니다. 다만 AC:L인 만큼 트리거 조건 자체는 단순하지만, 커널 레벨의 정교한 메모리 상태 제어가 필요하므로 실제 악용 가능성은 낮습니다. 이는 EPSS 수치가 0.00129로 매우 낮고 KEV에 등재되지 않았다는 점에서도 뒷받침되며, 이론적인 심각도보다는 특정 하드웨어 드라이버를 사용하는 환경에서의 가용성 저하 리스크가 더 큽니다. 결과적으로 로컬 권한을 가진 내부자가 의도적으로 시스템 자원을 고갈시키려는 특수 상황 외에는 실질적인 외부 위협으로 이어질 가능성이 희박합니다.
💥 영향 분석
- 가용성 상실 (DoS): 커널 메모리가 지속적으로 누수되어 Out-of-Memory(OOM) 상태에 도달하면 시스템 전체가 패닉 상태에 빠지거나 핵심 프로세스가 강제 종료됩니다.
- 보안 경계 약화: 추정: OOM 상황에서 보안 모니터링 에이전트나 권한 관리 프로세스가 먼저 종료될 경우, 이를 틈탄 추가 공격의 기회가 될 수 있습니다.
- 격리 무력화: 컨테이너 환경에서 해당 드라이버가 로드된 호스트의 메모리가 고갈되면 멀티테넌시 격리 환경의 안정성이 저해됩니다.
🔗 관련 취약점·체이닝
- 리소스 누수 $\rightarrow$ 권한 상승: 단순 DoS에 그치지 않고, 메모리 부족 상태에서 발생하는 Race Condition이나 커널 구조체의 예측 불가능한 변조를 이용해 로컬 권한 상승(LPE)으로 체이닝될 가능성이 있습니다.
🔎 탐지
본 취약점은 직접적인 공격 페이로드보다 '결과적 증상'인 메모리 고갈 패턴을 감시하는 것이 효율적입니다. 다중 소스 교차검증 결과 데이터 일관성이 확인되었으며, EPSS 0.00129로 실제 악용 확률은 낮으나 영향 범위가 넓어 모니터링(monitor) 우선순위로 결정되었습니다.
- 로그 지표: 커널 로그(
dmesg,/var/log/kern.log) 내ftgmac100관련 에러 및 OOM Killer 작동 기록. - 탐지 규칙 예시:
- OOM 패턴 감시 (SIEM 의사코드):
SELECT timestamp, hostname FROM kernel_logs WHERE message MATCHES "/(out of memory|oom-killer)/" AND message CONTAINS "ftgmac100" - 리소스 누수 징후 정규식:
/(ftgmac100.*failed to allocate.*ENOMEM)/(드라이버의 할당 실패 로그가 단시간 내 빈번하게 발생하는지 확인) - 메모리 임계값 모니터링:
IF (kernel_slab_memory_usage > threshold) AND (module_loaded == "ftgmac100") THEN alert_critical
- OOM 패턴 감시 (SIEM 의사코드):
- 오탐 튜닝: 하드웨어 결함이나 실제 물리적 메모리 부족으로 인한
ENOMEM과 구분해야 합니다. 특정 모듈(ftgmac100) 로드 상태에서만 해당 패턴이 반복적으로 나타나는지 상관관계를 분석하여 오탐을 줄입니다.
🛡️ 완화 방안
-
즉시 (긴급 차단): 해당 드라이버 모듈 블랙리스트 등록 및 언로드
- 방법:
echo "blacklist ftgmac100" > /etc/modprobe.d/ftgmac100.conf실행 후modprobe -r ftgmac100적용. - 난이도/영향: 낮음 / 해당 NIC 사용 불가 (네트워크 단절 위험).
- 검증:
lsmod | grep ftgmac100결과가 없어야 함. - 우선순위: 최상 (공격 표면 자체를 제거).
- 방법:
-
단기 (완화): 커널 메모리 및 프로세스 제한
- 방법: SELinux/AppArmor 프로파일을 통해 일반 사용자의 네트워크 인터페이스 설정 권한(
CAP_NET_ADMIN)을 엄격히 제한하여ioctl호출 경로 차단. - 난이도/영향: 중간 / 일부 관리 도구 작동 제약 가능성.
- 검증: 비특권 계정에서 네트워크 설정 변경 시
Permission denied확인. - 우선순위: 중간.
- 방법: SELinux/AppArmor 프로파일을 통해 일반 사용자의 네트워크 인터페이스 설정 권한(
-
근본 (해결): 커널 패치 및 업데이트
- 방법: 영향받는 버전(4.12 ~ 6.19.12 등)에서 수정된 최신 커널 버전으로 업그레이드하여
ftgmac100_alloc_rings()의 unwind 로직 수정본 적용. - 난이도/영향: 높음 / 시스템 재부팅 필요 및 커널 의존성 검토 필요.
- 검증:
uname -r로 패치 버전 확인 및 소스 코드 내unwind labels적용 여부 검토. - 우선순위: 필수 (최종 해결책).
- 방법: 영향받는 버전(4.12 ~ 6.19.12 등)에서 수정된 최신 커널 버전으로 업그레이드하여
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00129 · exploit=hard · in_scope=None