최근 수년 중 최악의 리눅스 취약점, 전 세계를 덮치다
사실상 모든 리눅스 배포판에서 최고 관리자(root) 권한을 획득할 수 있는 심각한 커널 취약점이 공개되었습니다. 단일 스크립트로 모든 배포판을 공격할 수 있어 컨테이너 탈출, 멀티 테넌트 환경 침투 등 서버 인프라에 막대한 피해를 줄 수 있습니다. 이미 패치는 배포되었으나 대부분의 리눅스 배포판에 아직 적용되지 않아 긴급한 업데이트가 요구됩니다.
사실상 패치되지 않은 취약점을 통해 거의 모든 리눅스 배포판에서 루트(root) 권한을 얻을 수 있는 익스플로잇 코드가 공개되면서, 방어자들이 데이터 센터와 개인 기기 내의 심각한 침해를 막기 위해 비상이 걸렸습니다.
이 취약점과 이를 악용하는 익스플로잇 코드는 수요일 저녁에 보안 회사 Theori의 연구원들에 의해 공개되었습니다. 이는 리눅스 커널 보안 팀에 비공개로 보고된 지 5주 만이었습니다. 커널 보안 팀은 버전 7.0, 6.19.12, 6.18.12, 6.12.85, 6.6.137, 6.1.170, 5.15.204 및 5.10.254에서 이 취약점을 패치했습니다. 하지만 익스플로잇 코드가 공개된 시점에서는 이 수정 사항을 적용한 리눅스 배포판은 거의 없었습니다.
단일 스크립트로 모든 배포판 해킹 CVE-2026-31431로 추적되고 CopyFail이라는 이름이 붙은 이 중요한 결함은 권한이 없는 사용자가 관리자 권한으로 자신을 승격시킬 수 있는 로컬 권한 상승(Local Privilege Escalation) 취약점입니다. CopyFail은 수정 없이도 모든 취약한 배포판에서 작동하는 단일 익스플로잇 코드(수요일에 공개됨)를 통해 악용될 수 있기 때문에 특히 심각합니다. 이를 통해 공격자는 멀티 테넌트 시스템을 해킹하고, Kubernetes나 다른 프레임워크 기반의 컨테이너에서 탈출하며, CI/CD 워크플로를 통해 익스플로잇 코드를 파이프라인에 주입하는 악의적인 풀 리퀘스트를 생성할 수 있습니다.
연구원인 Jorijn Schrijvershof는 목요일에 다음과 같이 말했습니다. "'로컬 권한 상승'이라는 말은 다소 지루하게 들릴 수 있지만, 이를 풀어서 설명해 드리겠습니다. 이는 공격자가 가장 낮은 권한의 지루한 사용자라 할지라도, 이미 기계에서 코드를 실행할 수 있는 어떤 수단을 가지고 있다면 자신을 루트(root)로 승격시킬 수 있다는 뜻입니다. 거기서부터 그들은 모든 파일을 읽고, 백도어를 설치하고, 모든 프로세스를 감시하며, 다른 시스템으로 공격을 확장할 수 있습니다."
Schrijvershof는 Theori가 배포한 동일한 파이썬 스크립트가 Ubuntu 22.04, Amazon Linux 2023, SUSE 15.6 및 Debian 12에서 안정적으로 작동한다고 덧붙였습니다. 연구원은 계속해서 말했습니다. 이것이 공유 인프라에서 왜 중요할까요? 2026년에는 '로컬'이라는 개념이 넓은 의미를 내포하기 때문입니다. 공유 Kubernetes 노드의 모든 컨테이너, 공유 호스팅 서버의 모든 테넌트, 신뢰할 수 없는 풀 리퀘스트 코드를 실행하는 모든 CI/CD 작업, Windows 노트북의 모든 WSL2 인스턴스, 쉘 액세스 권한이 부여된 모든 컨테이너화된 AI 에이전트가 이에 해당합니다. 이들은 모두 이웃과 하나의 동일한 리눅스 커널을 공유합니다. 커널 LPE(로컬 권한 상승)는 이러한 경계를 완전히 무너뜨립니다.
현실적인 위협 시나리오는 다음과 같습니다. 공격자가 알려진 워드프레스 플러그인 취약점을 악용하여 www-data 사용자로 쉘 접근 권한을 얻습니다. 그런 다음 copy.fail PoC(개념 증명 코드)를 실행합니다. 이제 공격자는 해당 호스트의 루트 권한을 갖게 됩니다. 다른 모든 테넌트에 갑자기 접근할 수 있게 되며, 이는 제가 예전 해킹 사후 분석 게시물에서 다룬 방식과 같습니다. 이 취약점 자체가 공격자를 시스템 내부로 들여보내는 것은 아닙니다. 대신 공격자가 시스템에 발을 들인 후 다음 10초 동안 일어나는 일을 완전히 바꿔버리는 것입니다.
이 취약점은 커널의 암호화 API에 있는 '직선적(straight-line)' 논리 결함에서 비롯됩니다. 레이스 컨디션(Race condition)이나 메모리 손상 결함을 악용하는 많은 익스플로잇은 커널 버전이나 배포판에 따라 일관되게 성공하지 못하며, 때로는 같은 기기에서도 실패합니다. 하지만 CopyFail을 위해 공개된 코드는 논리적 결함을 악용하기 때문에, Bugcrowd의 연구원들은 "성공 확률에 의존하지 않고 동일한 스크립트가 모든 배포판에서 작동한다. 레이스 창(race window)도, 커널 오프셋도 필요 없다."라고 말했습니다.
CopyFail이라는 이름은 IPsec 확장 시퀀스 번호에 사용되는 authencesn AEAD 템플릿 프로세스가 데이터를 복사해야 할 때 실제로는 복사하지 않기 때문에 붙여졌습니다. 대신 이 프로세스는 "호출자의 대상 버퍼를 스크래치패드로 사용하여, 정상적인 출력 영역을 4바이트나 넘어서 마구잡이로 데이터를 덮어쓰고 이를 결코 복원하지 않는다"고 Theori는 밝혔습니다. "AAD ESN 바이트의 '복사'가 대상 버퍼 내에 머무는 데 '실패'한 것입니다."
최근 수년 중 최악의 리눅스 취약점 다른 보안 전문가들 역시 CopyFail이 심각한 위협이라는 의견에 동의했습니다. 한 전문가는 이를 "최근 시기에 커널에서 발생한 최악의 '루트 권한 탈취(make-me-root)' 취약점 중 하나"라고 평가했습니다. 리눅스에서 이와 비슷한 가장 최근의 취약점은 과거의 Dirty Pipe 취약점이었습니다.