🇰🇷 한글 설명
Linux 커널의 cifs 모듈에서 지연된 close(deferred close) 작업을 취소할 때 struct cifs_deferred_close 구조체를 정리하지 않아 메모리 누수가 발생하는 문제입니다. xfstests 실행 중 kmemleak에서 cifs_close 경로의 미해제 객체가 탐지되었습니다. 이 수정은 작업 취소 시 해당 구조체를 함께 해제하도록 보완합니다.
💡 쉬운 설명
파일을 닫을 때 나중에 처리하도록 예약된 작업을 취소하면서, 그 작업에 쓰인 메모리를 반환하지 않는 버그입니다. 시간이 지나면서 사용하지 않는 메모리가 계속 쌓여 시스템 자원이 낭비될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
cifs: Fix memory leak on the deferred close
xfstests on smb21 report kmemleak as below:
unreferenced object 0xffff8881767d6200 (size 64):
comm "xfs_io", pid 1284, jiffies 4294777434 (age 20.789s)
hex dump (first 32 bytes):
80 5a d0 11 81 88 ff ff 78 8a aa 63 81 88 ff ff .Z......x..c....
00 71 99 76 81 88 ff ff 00 00 00 00 00 00 00 00 .q.v............
backtrace:
[<00000000ad04e6ea>] cifs_close+0x92/0x2c0
[<0000000028b93c82>] __fput+0xff/0x3f0
[<00000000d8116851>] task_work_run+0x85/0xc0
[<0000000027e14f9e>] do_exit+0x5e5/0x1240
[<00000000fb492b95>] do_group_exit+0x58/0xe0
[<00000000129a32d9>] __x64_sys_exit_group+0x28/0x30
[<00000000e3f7d8e9>] do_syscall_64+0x35/0x80
[<00000000102e8a0b>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
When cancel the deferred close work, we should also cleanup the struct
cifs_deferred_close.
📍 영향받는 시스템
CIFS/SMB 파일시스템을 사용하는 Linux 커널 (수정 이전 버전, CVE 공개 기준 일부 안정 브랜치)
⚔️ 공격 벡터
원격 공격보다는 CIFS 공유를 반복적으로 사용하는 환경에서 누적되는 메모리 누수로 인한 자원 고갈이 주된 영향이며, 악의적 사용자가 의도적으로 유발하여 서비스 거부 상태를 만들 가능성이 있습니다.
🛡️ 대응 방법
커널을 CVE-2022-50076 수정이 포함된 최신 안정 버전으로 업데이트하거나 배포판의 보안 패치를 적용하세요.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지 또는 커널 changelog와 대조해 해당 수정이 포함되었는지 확인하며, cifs 모듈 정보가 없으면 CIFS 기능이 로드되지 않은 것입니다.
uname -r && (modinfo cifs 2>/dev/null | grep -E '^(version|srcversion|filename)')