
1. Fragnesia 이란?
Fragnesia(프래그네시아)"라는 별칭으로 명명된 Linux 커널의 로컬 권한 상승(LPE, Local Privilege Escalation) 취약점입니다.
2026년 5월에 공개되었으며, 앞서 발견된 'Dirty Frag(CVE-2026-43284)' 취약점의 패치를 우회하거나 유사한 영역에서 발생한 새로운 변종 취약점입니다. 일반 사용자 권한을 가진 공격자가 이 취약점을 악용하면 시스템의 최고 권한인 root 권한을 획득할 수 있습니다
2. 기술적 분석
문제는 리눅스 커널의 XFRM ESP-in-TCP 서브시스템 내부에 있습니다. 네트워크 패킷을 합칠 때 사용하 skb_try_coalesce() 함수가 SKBFL_SHARED_FRAG 마커를 제대로 전파하지 못합니다.

skb_try_coalesce : 소켓 버퍼를 병합하는 과정에서 커널이 외부 소유 페이지나 파일(외부 백업 페이지)의 마커(SKBFL_SHARED_FRAG)를 제대로 유지하거나 전파하지 못하는 논리적 오류가 존재합니다.
공격자가 splice() 시스템 콜 등을 이용해 읽기 전용 파일(예: /usr/bin/su)의 데이터를 TCP 수신 큐에 밀어 넣은 뒤, 해당 소켓을 espintcp ULP(Upper Layer Protocol) 모드로 전환합니다. 이 상태에서 데이터가 복호화(Decrypt) 과정을 거치게 되면, 커널은 이 페이지를 일반 네트워크 데이터로 착각하여 메모리(Page Cache) 상에 존재하는 읽기 전용 파일의 내용을 직접 수정(Write)하게 됩니다.
AES-GCM 복호화가 파일 시스템에서 읽어온 페이지 캐시 위에서 직접 수행되어, 공격자가 제어하는 IV 값으로 결정론적 1바이트 쓰기 프리미티브를 만들 수 있습니다. 경쟁 조건(race condition)이 필요 없어 신뢰성이 매우 높습니다.
3. 공격 시연
Step 1) 커널 버전(6.8.0-117-generic)은 Fragnesia 취약점의 영향을 받는 버전을 확인하였습니다.

Step 2) PoC 코드를 다운로드하기 위해 git을 설치합니다.

Step 3) PoC 공격 코드를 다운받습니다.

Step 4) PoC 공격 코드인 fragnesia.c 소스코드를 확인합니다.

Step 5) 공격 코드를 컴파일을 하기 위해 gcc를 설치합니다.

Step 6) fragnesia.c 컴파일을 하여 exp 파일을 만듭니다.

Step 7) 컴파일하여 생성된 exp 파일을 실행시킵니다.

Step 8) 레이스 컨디션(경쟁 조건) 없이 한 바이트 한 바이트를 원하는 값으로 확실하게 변조해 나가는 것을 알 수 있습니다.

Step 9) 작업이 100% 완료되어 오염된 메모리 상의 명령어가 실행되는 순간 시스템 권한이 탈취된 것을 알 수 있습니다.

Step 10) 실습 영상입니다.
4. 대응방안

'CVE 취약점' 카테고리의 다른 글
| ORM Injection (CVE-2026-30951) (0) | 2026.05.01 |
|---|---|
| Pack2TheRoot (CVE-2026-41651) (0) | 2026.04.26 |
| CVE-2026-24061 (0) | 2026.01.31 |
| Ni8mare (CVE-2026-21858) (0) | 2026.01.16 |
| MongoBleed (CVE-2025-14847) (0) | 2026.01.06 |