이번 달에 네 번째 긴급 재부팅 창이 뜨는 걸 원치 않으신가요? KernelCare는 다운타임이나 업무 중단 없이 재부팅 없이 리눅스 커널 패치를 적용합니다.
*업데이트 (2026-05-18, 13:00 UTC): KernelCare가 Ubuntu 22.04 (Jammy), Debian 11 (ePortal), EL9 계열 (test 및 main 피드), RHEL 8/Rocky Linux 8 (test 피드)용 재부팅 없이 적용 가능한 패치를 출시했습니다.
요약
내용: 리눅스에서 발생하는 로컬 권한 상승 취약점 __ptrace_may_access(), 비공식적으로 ssh-keysign-pwn(또는 헤드라인에 언급된 PoC를 따서 chage_pwn)이라고 불립니다. 본문 게시 시점에는 아직 CVE가 할당되지 않았습니다.
영향: A 공개 개념 증명 해당 창을 통해 SUID 바이너리를 경쟁적으로 실행함으로써, 권한이 없는 로컬 사용자를 확실하게 루트 권한으로 승격시킵니다: chage 유출되다 /etc/shadow, ssh-keysign SSH 호스트의 개인 키가 유출되도록 하기 위해.
상태: 그리고 상류 수정 (커밋 31e62c2)는 다음과 같은 기간과 겹쳤습니다. OSS-Security에 게시된 공개 정보. 아직 CVE가 할당되지 않았으며, Qualys 권고문도 아직 공개되지 않았고, CVSS 점수도 아직 없습니다. KernelCare는 Ubuntu 22.04(Jammy), Debian 11(ePortal 내), EL9 계열(test 및 main 피드 내)용 재부팅 없이 적용 가능한 패치를 배포했습니다. RHEL 8/Rocky Linux 8 (테스트 릴리스).
위험도: 로컬 벡터, 권한 불필요, 사용자 상호작용 불필요, 별도 구성 불필요. 공개된 PoC는 Debian 11/12/13, Ubuntu 22.04/24.04/26.04, Arch, Raspberry Pi OS Bookworm, 그리고 EL9 및 EL10 계열에서 별도 설정 없이 바로 작동합니다. EL8 및 Ubuntu 20.04는 취약하지만 수정된 PoC가 필요합니다. 3.10 커널을 사용하는 EL7은 영향을 받지 않습니다.
이 문제가 중요한 이유: 이 취약점은 일반적인 SUID 바이너리를 노리며, 별도의 권한이나 사용자의 개입이 필요하지 않기 때문에, 취약한 다중 사용자 리눅스 시스템은 즉각적인 위험에 처해 있다고 간주해야 합니다.
지금 바로 이렇게 하세요: 야마 조이기 ptrace_scope 서버에서 (sysctl 한 가지 설정, 원상복구 가능). KernelCare 고객 여러분께서는 테스트 피드 릴리스를 주시해 주시기 바랍니다. 문제 해결 명령어와 재부팅 없이 패치를 적용하는 방법은 아래와 같습니다.
자세한 내용
오늘 아침, CVE 식별번호도 없고 결함을 발견한 연구원의 권고 사항도 없는 리눅스 커널 루트 취약점이 GitHub에 공개되었으며, 기본 설정의 데비안(Debian)이나 우분투(Ubuntu) 시스템에서 작동하는 공개 PoC도 함께 공개되었습니다. 이 버그는 __ptrace_may_access(). 해당 수정 사항은 같은 기간 내에 업스트림에 반영되었습니다. 좋은 소식이지만, 배포판 커널 팀 외부의 사용자들은 며칠 동안은 이를 이용할 수 없을 것입니다.
타임라인을 좀 더 자세히 살펴보면 다음과 같습니다. Jann Horn은 2020년에 이 버그에 대한 유사한 수정안을 제안했습니다. 하지만 이 수정안은 병합되지 않았습니다. 근본 원인은 5년 동안 모든 안정판 커널 브랜치에 그대로 남아 있다가, Qualys의 한 연구원이 이를 재발견했고, 업스트림에 공개된 지 몇 시간 만에 또 다른 연구원이 ssh-keysign-pwn 저장소에 작동하는 익스플로잇 두 개를 올렸습니다.
KernelCare 재부팅 없이 적용 가능한 패치가 빌드 중에 있습니다. 정식 패치가 배포되기 전까지는 공개된 PoC(개념 증명) 공격을 즉시 차단할 수 있는 sysctl 명령어가 하나 있습니다. 현재 상황과 당장 취해야 할 조치에 대해 설명해 드리겠습니다.
이 취약점 공격의 작동 원리
2017년에 수행된 리팩토링 __ptrace_may_access() (커밋 bfedb589, v4.10-rc1)는 작업의 mm NULL입니다. 리팩토링 전 코드는 해당 상태에서 액세스를 거부했습니다. 리팩토링된 코드는 해당 상태를 그대로 통과시켜 액세스를 허용합니다.
프로세스가 종료되는 동안, 마이크로초 단위의 짧은 시간 동안 task->mm 이미 정리되었지만, 해당 작업의 파일 설명자는 여전히 활성화된 상태입니다. 공개된 PoC는 다음을 사용하여 그 틈을 타 SUID 프로세스를 실행합니다. pidfd_open 그리고 pidfd_getfd, 리포지토리에 미리 준비된 두 개의 타깃이 포함되어 있습니다: chage 유출되다 /etc/shadow, 그리고 ssh-keysign SSH 호스트의 개인 키를 유출하기 위해. 보고된 성공률은 1회 성공 시 100~2,000개의 인스턴스가 생성되는 것으로 나타났습니다.
Jann Horn은 2020년에 이에 상응하는 수정안을 제안했습니다(v1, v2). 이 수정안은 병합되지 않았고, 버그는 여전히 해결되지 않은 채 남아 있었습니다.
누가 영향을 받나요?
이 회귀 현상은 v4.4.40 안정판 시리즈로 역포트되었으므로, 사실상 EL7을 제외한 모든 최신 배포판 커널이 기본적으로 해당 범위에 포함됩니다. 세 가지 그룹:
공개 PoC는 별다른 설정 없이 바로 작동합니다:
- 데비안 11, 12, 13
- 우분투 22.04, 24.04, 26.04
- Arch Linux (최신 버전)
- 라즈베리 파이 OS 북웜
- CentOS Stream 9, AlmaLinux 9, RHEL 9, Oracle Linux 9, Rocky Linux 9
- AlmaLinux 10, RHEL 10
취약점은 확인되었으나, PoC는 수정 작업이 필요합니다:
- EL8 계열 (RHEL 8, AlmaLinux 8, Rocky 8, Oracle Linux 8)
- 우분투 20.04
영향을 받지 않음:
- 3.10 커널의 EL7 계열 – 2017년 회귀 현상 이전 버전
지금 바로 위험을 줄이세요
야마 조이기 ptrace_scope. 이 익스플로잇은 다음 경로를 통해 해당 버그에 도달합니다. pidfd_getfd(). pidfd_getfd() 통화 ptrace_may_access(…, PTRACE_MODE_ATTACH_REALCREDS), 이는 끝부분에서 LSM 훅을 실행하며 __ptrace_may_access. Yama 부정문은 버그가 있는 mm-NULL의 연속 실행과 관계없이 해당 버그를 차단합니다.
흔히 ptrace_scope=1 기본 설정(데비안/우분투의 기본 구성)만으로는 충분하지 않습니다. 아래 scope=1, 부모 프로세스에서 자식 프로세스로의 연결이 허용됩니다. 공격자가 SUID 프로세스를 직접 생성하므로, 그들은 는 부모. 다음으로 이동해야 합니다. scope=2 또는 scope=3.
추천: ptrace_scope=2 (관리자 전용 첨부, 실행 시 완전히 되돌릴 수 있음):
sudo sysctl -w kernel.yama.ptrace_scope=2
재부팅 없이 적용되는 패치를 설치한 후 원래 상태로 되돌리기:
sudo rm /etc/sysctl.d/99-ssh-keysign-pwn.conf
더 강력하게: ptrace_scope=3 (누구에게도 첨부되지 않으며, 재부팅 없이는 되돌릴 수 없음):
sudo sysctl -w kernel.yama.ptrace_scope=3
scope=3 재부팅 전까지는 되돌릴 수 없습니다: 커널은 이후 이 값을 낮추려는 시도를 거부합니다 (sysctl -w kernel.yama.ptrace_scope=2 수익 EINVAL). 이 옵션을 선택하려면 재부팅을 통해 변경 사항을 원상복구할 수 있어야 하며, root debug-attach (gdb -p, strace -p (루트 권한으로)는 일상적인 작업의 일부가 아닙니다.
호환성
scope=2권한이 없는gdb -p/strace -p/perf trace --pid및 컨테이너 디버깅 워크플로 root는 연결 상태를 유지합니다따라서 관리자 문제 해결 기능은 여전히 정상적으로 작동합니다.scope=3root를 포함한 모든 사용자의 디버그 연결이 중단됩니다.
KernelCare 재부팅 없이 적용되는 패치
KernelCare는 Ubuntu 22.04(Jammy), Debian 11(ePortal), EL9 계열(test 및 main 피드), RHEL 8/Rocky Linux 8(test 피드)용 재부팅 없이 적용 가능한 패치를 배포했습니다.
테스트 피드에 공개되면:
kcarectl --update --prefix test
검증이 완료되면, 패치는 다음 예정된 실행 시점에 적용되거나 필요에 따라 수동으로 적용할 수 있습니다:
kcarectl --update
향후 전개 과정에서 주목해야 할 점
- CVE 할당: (작성 시점 기준 없음)
- Qualys가 직접 발표한 이 권고문에는 보다 상세한 기술적 설명이 포함될 것으로 보입니다
- 데비안, 우분투 및 EL9/10 공급업체의 배포판 커널 업데이트
- 공개 ssh-keysign-pwn 저장소에 새로운 커밋이 추가되었습니다. 현재 두 개의 타겟이 유일한 유효한 대상은 아닐 가능성이 높습니다.
CVE가 등록되고 KernelCare 패치가 테스트 버전에서 안정화 버전으로 전환되면 이 게시물을 업데이트하겠습니다. KernelCare를 사용 중이시라면 패치가 자동으로 적용되므로 별도로 조치를 취하실 필요가 없습니다.
아직 KernelCare를 사용 중이 아니시라면, 지금이 바로 재부팅 없이 패치를 적용하는 방식이 긴급 유지보수 시간이나 가동 중단 없이 중요한 리눅스 시스템을 어떻게 보호할 수 있는지 확인해 볼 좋은 기회입니다.