🔍 CVE-2026-98538

0.0
CVSS Score
UNKNOWN
2026-10-18
2026-10-19 10:19
✅ 완료

🇰🇷 한글 설명

리눅스 커널의 writeback 과정에서 cleanup_offline_cgwb() 함수가 스캔된 inode를 순환시키지 않고 매번 처음부터 다시 스캔하여 발생하는 성능 저하 문제입니다. 이로 인해 inode 수가 많을 경우 drain 과정이 이차 시간 복잡도를 가지게 되어 CPU 소프트 락업(soft lockup) 현상이 발생할 수 있습니다.

💡 쉬운 설명

리눅스 시스템이 데이터를 정리하는 과정에서 이미 확인한 목록을 처음부터 다시 반복해서 확인하는 비효율적인 동작이 발견되었습니다. 이 때문에 데이터 양이 매우 많으면 컴퓨터가 일시적으로 멈추는 현상이 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: writeback: bound cleanup_offline_cgwb() rescans by rotating scanned inodes cleanup_offline_cgwb() prepares at most WB_MAX_INODES_PER_ISW inodes per call and is called again until the dying wb is drained, but every call walks wb->b_attached and then wb->b_dirty_time from the same end. Inodes already prepared (they stay on the list with I_WB_SWITCH set until the switch worker runs) and inodes that cannot be switched (I_FREEING, I_WILL_FREE, !SB_ACTIVE, DAX, already on the target wb) stay where they are, so each pass rescans a growing run of them under wb->list_lock and a full drain is quadratic in the number of inodes on the list. With ~17M inodes attached to one dying cgwb we saw this end in soft lockups, with CPUs reported stuck for 21-48s. Walk both lists from the oldest end and move every scanned inode to the newest end, so the next pass starts where the previous one stopped and the drain becomes linear. b_attached is unordered, so nobody sees the reorder there. b_dirty_time is ordered by dirtied_when, but the oldest unscanned inode stays at the end move_expired_inodes() picks from, sync takes the whole list regardless of order, and prepared inodes leave the list as soon as the switch work runs and get a new dirtied_time_when on the new wb anyway, so the only inodes left out of order are the ones that can never switch (DAX), and only on the dying wb.

📍 영향받는 시스템

Linux Kernel (writeback 관련 기능이 포함된 모든 버전)

⚔️ 공격 벡터

직접적인 공격보다는 대량의 inode를 생성하여 시스템 자원을 고갈시키는 DoS(서비스 거부) 유발 가능

🛡️ 대응 방법

리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 inode 스캔 방식이 선형(linear)으로 개선된 코드를 적용해야 합니다.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel