🇰🇷 한글 설명
Linux 커널 padata 모듈의 reorder_work 함수에서 parallel_data의 참조 카운트가 queue_work() 반환값과 무관하게 무조건 증가되어, 작업이 이미 큐에 있을 경우 참조 카운트가 감소되지 않는 누수가 발생합니다. 이는 이전 UAF 수정 패치로 인해 새로 도입된 문제이며, 수정은 queue_work() 반환값을 확인하여 필요 시 참조 카운트를 감소시키는 방식입니다.
💡 쉬운 설명
Linux 커널이 사용을 끝낸 메모리를 제대로 해제하지 못해 메모리가 조금씩 새어 나가는 문제입니다. 시간이 지나면 시스템 메모리가 부족해져 성능 저하나 불안정이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
padata: do not leak refcount in reorder_work
A recent patch that addressed a UAF introduced a reference count leak:
the parallel_data refcount is incremented unconditionally, regardless
of the return value of queue_work(). If the work item is already queued,
the incremented refcount is never decremented.
Fix this by checking the return value of queue_work() and decrementing
the refcount when necessary.
Resolves:
Unreferenced object 0xffff9d9f421e3d80 (size 192):
comm "cryptomgr_probe", pid 157, jiffies 4294694003
hex dump (first 32 bytes):
80 8b cf 41 9f 9d ff ff b8 97 e0 89 ff ff ff ff ...A............
d0 97 e0 89 ff ff ff ff 19 00 00 00 1f 88 23 00 ..............#.
backtrace (crc 838fb36):
__kmalloc_cache_noprof+0x284/0x320
padata_alloc_pd+0x20/0x1e0
padata_alloc_shell+0x3b/0xa0
0xffffffffc040a54d
cryptomgr_probe+0x43/0xc0
kthread+0xf6/0x1f0
ret_from_fork+0x2f/0x50
ret_from_fork_asm+0x1a/0x30
📍 영향받는 시스템
패치 적용 전 Linux 커널 (padata 모듈을 사용하는 시스템, 주로 커널 버전 6.x 계열 중 해당 패치 이전 버전)
⚔️ 공격 벡터
메모리 누수로 인한 서비스 거부(DoS) 가능성이 있으나, 주로 로컬 사용자가 커널 암호화 작업을 반복 유발할 때 메모리 고갈을 일으키는 형태입니다.
🛡️ 대응 방법
배포판 제공 최신 Linux 커널 보안 업데이트를 적용하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 배포판의 보안 권고에 명시된 수정 버전 이상인지 비교합니다. 해당 수정 버전 이상이면 패치가 적용된 것이고, 미만이면 커널 업데이트가 필요합니다.