🔍 CVE-2026-89648

7.5
CVSS Score
HIGH
2026-09-11
2026-10-30 13:20
✅ 완료

🇰🇷 한글 설명

Linux 커널의 Ceph 구성 요소에서 MDS(Metadata Server)로부터 전달받은 위임된 inode 개수(len)를 검증하지 않아 발생하는 취약점입니다. 공격자가 조작된 응답을 보낼 경우 무한 루프를 유발하거나 메모리(xarray)를 무제한으로 점유하여 시스템 자원을 고갈시킬 수 있습니다.

💡 쉬운 설명

나쁜 마음을 먹은 서버가 컴퓨터에게 너무 많은 데이터를 처리하라고 명령하여 컴퓨터를 멈추게 하거나 메모리를 가득 채울 수 있는 문제입니다. 이를 방지하기 위해 한 번에 처리할 수 있는 데이터의 양을 제한하는 보안 조치가 적용되었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: ceph: cap delegated inode count in ceph_parse_deleg_inos() ceph_parse_deleg_inos() decodes interval sets of delegated inode numbers from an MDS create-with-delegation reply. For each set it reads a 64-bit start and a 64-bit len with ceph_decode_64_safe(), which only validates that the eight bytes are present in the message, not the value, and then loops over len while inserting entries into s_delegated_inos. len is fully attacker controlled. A malicious or compromised MDS can send one huge interval, many intervals in one reply, duplicate intervals, or repeated replies that accumulate delegated inodes on the same session. The original code bounded none of these and could spin the insert loop or grow the xarray without limit. Bound both dimensions with a single enforcement point. Track the number of delegated inodes held by each MDS session in an atomic counter and grow it only in ceph_insert_deleg_ino(), which uses atomic_add_unless() to refuse to push the count past CEPH_MAX_DELEG_INOS. Because that helper is the only place the counter grows, the per-session population can never exceed the cap, so no separate per-session pre-check is needed. The counter is decremented when async create consumes a delegated inode or when an insert fails, incremented when a delegated inode is restored, initialized with the session xarray, and reset when reconnect destroys the xarray. A per-session cap alone still lets one reply spin the insert loop on duplicate ranges without growing the counter, so also cap the aggregate interval length accepted from a single reply. Together these bound both the loop trip count per reply and the xarray population across replies. The cap is a fixed, client-chosen constant rather than a value derived from the MDS. mds_client_prealloc_inos is a userspace MDS configuration option; it is never sent to the kernel client on the wire, and a server-supplied bound could not be trusted for a defensive limit in any case. The constant is set well above that option's documented default of 1000 (a generous multiple), so legitimate refill behavior is unaffected while the CPU and xarray memory a malformed delegation stream can consume stays bounded. Impact: a malicious or compromised Ceph MDS can no longer make a client spin through an unbounded delegated-inode interval or grow one session's delegated-inode xarray without limit.

📍 영향받는 시스템

Linux kernel (Ceph MDS client 포함 버전)

⚔️ 공격 벡터

악의적이거나 탈취된 MDS가 조작된 inode 위임 정보를 포함한 메시지를 클라이언트에 전송

🛡️ 대응 방법

Ceph의 위임된 inode 개수 및 단일 응답의 인터벌 길이를 제한하는 최신 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel