본문으로 건너뛰기
피드

리눅스 로컬 권한 상승 취약점 '카피 페일', 732바이트 파이썬으로 루트 획득 가능

security 약 8분

카피 페일은 2017년 이후 배포된 주류 리눅스 커널에 영향을 주는 로컬 권한 상승 취약점으로, 레이스 조건이나 커널별 오프셋 없이 같은 732바이트 파이썬 스크립트로 루트 권한을 얻을 수 있다고 공개됐어. 원인은 커널 암호화 API의 에이에프 알고리즘과 스플라이스 경로가 얽히며 페이지 캐시에 4바이트 쓰기가 가능해지는 논리 버그로 설명됨.

  • 1

    네트워크 접근 없이 로컬 일반 사용자 계정만 있으면 공격 조건이 성립함

  • 2

    2017년부터 패치 전까지의 주류 리눅스 배포판이 영향권으로 제시됨

  • 3

    공유 개발 서버, 셀 서비스, 점프 호스트, 빌드 서버, 셀프 호스티드 시아이 러너, 컨테이너 노드가 우선 패치 대상임

  • 4

    패치는 메인라인 커밋을 포함한 배포판 커널 업데이트이며, 임시 완화로 에이에프 알고리즘 모듈 비활성화와 시컴프 차단이 권장됨

  • 카피 페일은 리눅스 로컬 권한 상승 취약점인데, 설명만 보면 꽤 매운 편임
    • 대부분의 리눅스 권한 상승 취약점은 레이스 타이밍이나 커널 버전별 오프셋 같은 조건이 붙는 경우가 많음
    • 그런데 이 취약점은 직선적인 논리 버그라 그런 전제가 필요 없다고 함
    • 공개 글은 같은 732바이트 파이썬 스크립트가 2017년 이후 배포된 주류 리눅스 배포판에서 루트 셸을 얻는다고 주장함

⚠️주의

> 로컬 취약점이라고 가볍게 보면 안 됨. 공유 개발 서버, 빌드 서버, 셀프 호스티드 시아이 러너처럼 남의 코드가 일반 사용자 권한으로 실행되는 환경에서는 바로 루트 권한 상승 시나리오가 됨.

  • 취약점의 흐름은 커널 암호화 API, AF_ALG, splice()가 얽힌 경로에서 페이지 캐시에 4바이트 쓰기가 가능해지는 구조로 설명됨
    • 문제의 출발점은 authencesnalgif_aead 쪽 논리 버그로 소개됨
    • 네트워크 접근, 커널 디버깅 기능, 미리 준비된 커널 프리미티브가 필요 없다고 함
    • 기본 배포판 설정에서 커널 암호화 API가 켜져 있는 경우가 많아서 영향 범위가 넓다고 봄
sequenceDiagram
    participant 일반_사용자
    participant 에이에프_알고리즘
    participant 스플라이스
    participant 페이지_캐시
    participant 셋유아이디_바이너리
    일반_사용자->>에이에프_알고리즘: 암호화 소켓 경로 호출
    에이에프_알고리즘->>스플라이스: 데이터 이동 경로 연결
    스플라이스->>페이지_캐시: 쓰기 가능한 목적지로 오인
    페이지_캐시->>셋유아이디_바이너리: 4바이트 변경
    일반_사용자->>셋유아이디_바이너리: 실행 후 루트 셸 획득
  • 공개된 개념 증명 코드는 방어자가 자기 시스템과 벤더 패치를 확인할 수 있게 하기 위한 용도라고 밝힘

    • 파이썬 3.10 이상 표준 라이브러리만 사용한다고 되어 있음
    • 기본 타깃은 /usr/bin/su이고, 다른 셋유아이디 바이너리를 인자로 넘길 수 있다고 함
    • 원문은 여러 배포판에서 같은 익스플로잇이 수정 없이 동작했다고 설명함
  • 우선 패치해야 하는 곳은 '여러 사용자가 같은 커널을 공유하는 곳'임

    • 공유 개발 박스, 셸 제공 서비스, 점프 호스트, 빌드 서버가 직접 언급됨
    • 깃허브 액션 셀프 호스티드 러너, 깃랩 러너, 젠킨스 에이전트처럼 신뢰하지 않는 풀 리퀘스트 코드를 실행하는 시스템도 위험권임
    • 노트북 호스트, 에이전트 샌드박스, 서버리스 함수, 테넌트 제공 컨테이너나 스크립트 실행 환경도 포함됨
  • 컨테이너 환경에서도 포인트는 '커널 공유'임

    • 페이지 캐시는 호스트 전체에서 공유됨
    • 적절한 프리미티브를 가진 파드가 노드를 장악하면 테넌트 경계를 넘을 수 있다고 설명함
    • 그래서 단순히 컨테이너 안이라 괜찮다는 식의 판단은 위험함

중요

> 권장 조치는 배포판 커널을 메인라인 커밋 a664bf3d603d가 포함된 버전으로 업데이트하는 것임. 이 커밋은 2017년의 algif_aead 인플레이스 최적화를 되돌려 페이지 캐시 페이지가 쓰기 가능한 목적지 목록에 들어가지 않게 함.

  • 바로 패치할 수 없다면 임시 완화책은 algif_aead 모듈 비활성화임

    • 원문은 /etc/modprobe.d/disable-algif.conf에 설치 차단 규칙을 넣고, 이미 로드된 모듈은 제거하는 식의 방식을 제시함
    • 대부분의 시스템에서는 체감 영향이 거의 없을 거라고 설명함
    • 다만 오픈에스에스엘의 afalg 엔진을 명시적으로 켰거나, 임베디드 암호화 오프로딩 경로를 쓰거나, 애플리케이션이 직접 aead, skcipher, hash 소켓을 바인딩한다면 확인이 필요함
  • 신뢰하지 않는 워크로드를 돌리는 환경이라면 패치 여부와 별개로 AF_ALG 소켓 생성을 시컴프로 막으라고 권고함

    • 시아이, 샌드박스, 컨테이너 런타임 쪽에서는 이게 실용적인 방어선이 될 수 있음
    • 원문은 lsofss -xa로 실제 사용 여부를 확인해보라고 덧붙임
  • 흥미로운 뒷이야기도 있음. 이 취약점은 Xint Code가 리눅스 crypto/ 서브시스템을 약 1시간 스캔해서 찾아낸 것으로 소개됨

    • 같은 스캔에서 아직 조율 공개 중인 다른 고위험 버그도 나왔다고 함
    • 글 하단은 Xint Code의 보안 감사 역량 소개로 이어지며, Redis, PostgreSQL, MariaDB 같은 데이터베이스 부문 성과와 DARPA AI 사이버 챌린지 결선 진출 이력을 언급함

기술 맥락

  • 이 취약점에서 제일 중요한 선택지는 커널 패치예요. 원문이 지목한 수정은 2017년에 들어간 algif_aead 인플레이스 최적화를 되돌리는 쪽인데, 성능 최적화가 페이지 캐시 쓰기 경로와 만나면서 권한 상승으로 이어졌다는 판단이 깔려 있어요.

  • AF_ALG는 일반 앱이 커널 암호화 API를 쓰게 해주는 문이라서 기본 배포판에 켜져 있는 경우가 많아요. 그래서 공격자는 특수한 커널 디버그 기능이나 네트워크 접근 없이도, 로컬 사용자 권한만 있으면 이 문을 두드릴 수 있다는 게 위험해요.

  • 컨테이너에서 더 신경 써야 하는 이유는 컨테이너가 커널을 공유하기 때문이에요. 앱 프로세스는 격리돼 보여도 페이지 캐시와 커널 취약점은 호스트 단위로 영향을 주거든요. 그래서 파드 하나의 로컬 권한 상승이 노드 전체 문제로 커질 수 있어요.

  • 임시 완화로 algif_aead를 막는 건 공격 경로를 좁히려는 선택이에요. 대부분의 서비스는 커널 암호화 API를 직접 쓰지 않고 사용자 공간 암호화 라이브러리를 쓰기 때문에 영향이 작을 수 있지만, 암호화 오프로딩이나 afalg 엔진을 켠 시스템은 먼저 사용 여부를 확인해야 해요.

  • 시컴프로 AF_ALG 소켓 생성을 막으라는 권고는 운영 관점에서 꽤 현실적이에요. 신뢰하지 않는 코드가 계속 들어오는 시아이 러너나 샌드박스에서는 커널 패치만 기다리기보다, 애초에 위험한 커널 인터페이스 접근을 줄이는 게 방어층을 하나 더 만드는 방법이에요.

이건 '로컬 권한 상승이라 덜 급함'으로 넘기기 어려운 부류야. 요즘 인프라는 시아이, 샌드박스, 노트북, 컨테이너처럼 남의 코드를 로컬 사용자 권한으로 실행하는 곳이 많아서, 로컬 버그가 곧 노드 탈취로 이어질 수 있음.

댓글

댓글

댓글을 불러오는 중...

security

Forgejo에서 RCE까지 이어지는 취약점 사슬이 발견됐다는 공개 압박

보안 연구자가 Fedora의 Forgejo 전환을 계기로 코드를 살펴보다가 SSRF, 인증 결함, DoS, 정보 유출, TOCTOU 등 여러 취약점을 발견했고 일부를 묶어 RCE와 OAuth2 권한 상승까지 만들 수 있었다고 밝혔다. 그는 세부 익스플로잇을 바로 공개하지 않고, 취약함을 입증하는 출력만 공개해 프로젝트가 전체 보안 감사를 하도록 압박하는 'carrot disclosure' 방식을 택했다.

security

Rust가 못 잡는 버그들: uutils 44개 CVE에서 나온 시스템 코드 체크리스트

Canonical이 Ubuntu 25.10부터 기본 포함한 Rust 기반 GNU coreutils 재구현체 uutils에서 44개 CVE를 공개했다. 이 버그들은 버퍼 오버플로 같은 메모리 안전 문제가 아니라, 경로 TOCTOU, Unix 바이트 처리, panic, GNU 호환성 차이처럼 Rust 컴파일러가 잡아주지 않는 시스템 경계의 문제였다.

security

GitHub 내부 Git 인프라 RCE 취약점, git push 한 번으로 서버 실행까지 갔다

Wiz Research가 GitHub 내부 Git 처리 파이프라인에서 CVE-2026-3854 원격 코드 실행 취약점을 발견했다. 세미콜론으로 구분되는 내부 `X-Stat` 헤더에 사용자 입력이 그대로 들어가면서 보안 필드가 덮어써졌고, GHES는 전체 서버 장악, GitHub.com은 공유 스토리지 노드 접근으로 이어질 수 있었다.

security

캐나다 정부, 사기 막겠다며 가상자산 현금입출금기 금지 추진

캐나다 연방정부가 사기 피해를 줄이기 위해 가상자산 현금입출금기 금지를 추진 중이다. 현금만 넣으면 빠르게 비트코인 같은 가상자산으로 바꿔 해외 지갑으로 보낼 수 있는 구조가 사기범에게 너무 좋은 도구가 됐다는 판단이다.

security

Bitwarden CLI npm 패키지에 악성코드 — Checkmarx 공급망 공격 확산 중

Socket 보안팀이 Bitwarden CLI npm 패키지(@bitwarden/cli2026.4.0)가 악성코드에 감염된 채로 배포된 사실을 발견했다. Bitwarden의 CI/CD에 쓰이던 GitHub Action이 뚫려 공식 빌드 라인에 bw1.js 페이로드가 심어졌고, GitHub·AWS·Azure·GCP 자격증명부터 Claude/MCP 설정까지 광범위하게 탈취한다. 최근 번지고 있는 Checkmarx 공급망 캠페인의 일부로 확인됐다.