Fragnesia, 리눅스 커널 취약점으로 권한 상승 시도!
Fragnesia는 Dirty Frag 취약점과 유사한 방식으로, 리눅스 XFRM ESP-in-TCP 서브시스템의 로직 버그를 악용하여 임의의 바이트를 커널 페이지 캐시에 기록함
AES-GCM 암호화 과정에서 발생하는 키스트림(Keystream) 바이트를 조작하여, 읽기 전용 파일의 내용을 변경하는 기술을 사용함
익스플로잇은 /usr/bin/su 바이너리의 처음 192바이트를 변조하여 루트 쉘(Root Shell) 획득을 시도하며, AppArmor 설정 변경이 필요함
Dirty Frag와 동일한 완화 방법을 적용하며, 아직 패치가 머지되지 않아 주의가 필요함
Fragnesia 취약점의 기술적 원리
Fragnesia는 XFRM ESP-in-TCP 서브시스템(Subsystem)의 로직 오류를 활용하여, 커널 페이지 캐시(Kernel Page Cache)에 임의의 바이트를 기록하는 취약점이다. 특히, TCP 소켓이 espintcp ULP 모드로 전환될 때, 파일에서 읽어온 데이터가 ESP 암호문으로 처리되는 과정에서 문제가 발생한다. 공격자는 AES-GCM 암호화의 키스트림 바이트를 조작하여, 읽기 전용 파일의 내용을 변경할 수 있다. 이는 Dirty Pipe와 유사한 페이지 캐시 쓰기 버그(Page-Cache Write Bug)의 일종이다.
익스플로잇 과정 상세 분석
익스플로잇은 먼저 네트워크 네임스페이스(Network Namespace)를 생성하고, CAP_NET_ADMIN 권한을 획득한다. 그 후, AES-128-GCM을 사용하여 ESP-in-TCP 보안 연관(Security Association)을 설정한다. 공격자는 256개의 항목을 가진 룩업 테이블(Lookup Table)을 생성하여, 각 키스트림 바이트에 해당하는 IV(Nonce)를 찾는다. 이 테이블을 기반으로, /usr/bin/su 파일의 특정 바이트를 변조하여 권한 상승(Privilege Escalation)을 시도한다. 구체적인 구현 코드는 본문에 포함되지 않았다.
취약점 완화 및 영향
Fragnesia는 Dirty Frag와 동일한 완화 방법을 사용한다. 즉, esp4, esp6, rxrpc 모듈을 제거하는 것이다. 하지만, 아직 업스트림 패치(Upstream Patch)가 머지되지 않아, 취약한 시스템은 공격에 노출될 수 있다. 이 취약점은 /usr/bin/su 파일의 내용을 변경하여, 루트 쉘(Root Shell)을 획득하는 데 사용될 수 있으며, AppArmor 설정 변경이 필요하다는 점도 유의해야 한다.
커뮤니티 반응 및 추가 정보
커뮤니티에서는 Fragnesia가 Dirty Frag와 유사한 취약점이라는 점에 주목하며, 동일한 완화 방법이 적용된다는 점을 강조한다. 또한, 아직 패치가 적용되지 않은 시스템에 대한 위험성을 경고하며, 신속한 패치 적용을 권고한다. Radicle 네트워크에 미러링된 정보가 공유되었으며, 익스플로잇 코드(Exploit Code)를 제공하여, 취약점 분석에 도움을 주고 있다.