GhostLock, 15년간 모든 Linux 배포판에 존재한 스택 UAF
요약
본 기사는 Linux 배포판에 존재하는 스택 UAF(Use After Free) 취약점을 발견하고, 이를 통해 커널 레벨의 로컬 권한 상승(LPE) 공격이 가능함을 보여줍니다. 이 취약점은 Firefox와 같은 격리된 브라우저 프로세스에서도 발동할 수 있어 심각하며, 기기 장악에 활용될 위험성이 높습니다.
핵심 포인트
- Firefox 등 샌드박싱 환경에서도 커널 레벨의 공격이 가능함.
- 공격 성공을 위해서는 특정 빌드에 맞는 스탬프와 오프셋 파악이 중요함.
- 취약점은 Firefox/IonMonkey 타입 혼동 취약점과 결합하여 위험도가 극대화됨.
- 패치 및 업데이트가 필수적이며, 특히 구형 기기에서 위험성이 높음.
Android 9·13·16과 서로 다른 Firefox 150 미만 버전을 쓰는 기기 3대에서 테스트했는데, 2대는 부팅 반복에 빠져 복구 모드로 들어가야 했고 나머지 1대는 전원이 꺼짐. 데모는 지원되는 Pixel 기기의 배경화면을 바꾸며, 테스트 페이지는 IonStack에서 확인 가능함
개인 기기에서 블로그나 임의 사이트를 볼 때는 주 브라우저와 별도로 Chromite 같은 Chromium 계열 브라우저를 설치하고, 플래그에서 JavaScript와 자주 공격받는 하드웨어 가속 비디오 디코더를 끈 뒤 깨진 사이트에는 읽기 모드를 쓰는 편이 안전함. 아니면 전용 태블릿을 두는 방법도 있음
커널 익스플로잇을 다른 기기로 이식해 보니, 컴파일러가 커널 빌드마다 스택 프레임을 배치하는 방식에 매우 민감했음. 특정 빌드에 맞는 스탬프 방식과 오프셋을 찾고 나면 상당히 안정적으로 동작함
위험을 감수하고 Samsung S26 Ultra에서 실행했으며, adb를 설치해 확인한 뒤 전체 결과를 밝힐 예정임 테스트 페이지에 접속하자 Firefox 탭에 출력이 나타나 개념 증명 코드가 실행된 듯했지만, 이후 휴대전화가 멈추고 모든 입력을 거부함. 재시작만 작동했는데 커널이 멈춘 것으로 보이는 상황에서도 어떻게 재시작 이벤트에는 응답할 수 있는지 궁금함. 화면은 실행 결과 일부를 표시한 채 켜져 있다가 화면 보호기가 작동함
아직 루팅할 수 없는 Android 기기들을 루팅하는 데 활용할 수 있다면 대단할 텐데, 가능한 방법이 궁금함
익스플로잇을 발견했을 뿐 아니라 copyfail과 달리 누구나 바로 쓸 수 있는 제로데이 로컬 권한 상승 스크립트를 공개하지 않은 보안 연구자들에게 큰 찬사를 보냄
Rocky Linux 9에서 몇 시간 동안 로컬 권한 상승(LPE)을 시도했지만 다행히 성공하지 못했음. 시간 여유가 많거나 실력이 매우 뛰어나지 않다면 기업용 배포판에서 실제 공격에 활용하기는 어려워 보임
일반적으로 부트로더를 해제할 수 없는 휴대전화에서도 이 취약점으로 부트로더 잠금 해제가 가능할지 궁금함. 가능하다면 Android 생태계에 일어난 최고의 사건 중 하나가 될 수 있음
제목에 로컬 권한 상승을 뜻하는 LPE를 넣었어야 대부분이 안심하고 주말로 돌아갈 수 있었을 것 같음
그렇게 안심할 일은 아님. 보통 로컬 권한 익스플로잇은 일반 사용자 권한에서 루트 권한으로 올라가는 공격을 뜻하고, 일반 권한 앱도 이미 큰 피해를 줄 수 있어 대개 크게 걱정하지 않음
하지만 이번 공격은 Firefox의 격리된 브라우저 프로세스처럼 강하게 샌드박스된 프로세스 안에서도 발동 가능함. 공격자는 JavaScript 취약점으로 격리 샌드박스에서 로컬 코드를 실행한 뒤 이번 취약점으로 커널 모드까지 올라가는 두 단계 공격만 연결하면 되므로, Firefox와 Linux 커널을 모두 업데이트해야 함
상위 댓글의 공격은 JavaScript에서 곧바로 루트 권한을 얻는 것처럼 보이지만, 실제로는 서로 다른 익스플로잇 두 개를 연결함
컨테이너 탈출이 가능하다면 여전히 많은 사람에게 영향을 줄 수 있지 않을까 싶음
Firefox/IonMonkey의 타입 혼동 취약점도 함께 발견했으므로, 임의 웹사이트에 접속하는 것만으로도 매우 빠르게 기기가 장악될 수 있음
요즘은 이런 상황에 소모하려고 쌓아 둔 제로데이가 수백 개는 있을 것 같음. SSH부터 Node.js까지 몇 주마다 새로운 문제가 나오니, 모든 통신을 WireGuard 뒤에 두는 정도가 아니라면 사실상 전부 원격 취약점처럼 취급해야 할 판임
영향 범위를 고려하면 적은 금액처럼 보임. 기업들은 원격 익스플로잇에만 큰돈을 지급하는 것인지 궁금함
Android 앱이 NDK로 네이티브 코드를 실행해 루트 권한을 얻을 수 있다는 뜻인지, SELinux가 방어에 도움이 되는지 궁금함
비플래그십 휴대전화는 커널을 비롯한 업데이트를 받기 드물어 실제로 가능할 확률이 높아 보임
오래된 커널에도 패치를 백포트할 수는 있지만, 스마트폰 업데이트 변경 내역에서 CVE를 명시하는 경우가 드물어 취약점 검사 도구가 사실상 유일한 확인 수단임. Play Store나 외부에서 받은 앱이 침해됐다면 즉시 루트 권한을 얻을 수 있으므로, 설치 시 신뢰와 감사를 확인하는 원칙은 여전히 중요함
향후 모든 Google Play Integrity 수준에 이 검사가 추가돼 패치되지 않은 휴대전화에는 여러 앱을 설치하지 못하게 될 가능성이 있음. 임의 사이트와 광고를 피하기 어려운 브라우저에서는 샌드박스 탈출이 앱 격리까지 우회하므로 더 심각하며, iOS의 JailbreakMe와 비슷함
커널 자체가 침해되면 SELinux는 방어하지 못함. Android 샌드박스나 Docker 같은 컨테이너 기술도 이 익스플로잇을 막지 못하고, 현실적인 격리 수단은 완전 가상화뿐임. KVM을 쓴다면 지난주 공개된 CVE-2026-53359 패치가 모든 곳에 배포됐다는 전제가 필요함
지난 15년간 나온 Linux에서 네이티브 코드를 실행할 수 있는 앱이라면 기기에 커널 업데이트가 도착하기 전까지 루트 권한을 얻을 수 있음
GhostLock은 Linux 2.6.39에 들어갔고 Linux 7.1에서야 수정됐다는 사실이 충격적임
댓글을 전날 이미 읽은 것 같은데 작성 시각은 모두 10시간 이내로 표시돼 있어 HN의 시간 표시가 잘못된 것인지 궁금함
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기