CopyFail (CVE-2026-31431) 취약점 테스트
Xint Code가 발견한 리눅스 커널 초고위험 취약점 CopyFail을 테스트해 보았다.
CopyFail
2026년 4월에 Anthropic 사가 Claude Mythos를 발표하였다. (물론 너무 위험하다면서 일반 공개 대신에 선택된 파트너에게만 제한 배포함)
얼마 지나지 않아서, 국내 티오리사도 비슷한 Xint Code를 발표하면서, Xint Code가 1시간만에 찾았다는 리눅스 커널의 초고위험 취약점인 CopyFail(CVE-2026-31431)을 공개하였다. (관련 뉴스: 리눅스 커널 초고위험 취약점, 티오리 AI 솔루션 ‘진트 코드’가 찾았다)
이 취약점은 2017년부터 Kernel 코드에 존재했던 버그이므로, 2017년 이후 배포된 우분투나 아마존 리눅스, RHEL, SUSE 등 거의 모든 주요 메인스트림 배포판에 동일한 보안 위협이 존재하는 것으로 확인되었다. 이 취약점은 지난 9년간 세계 보안 전문가와 오픈소스 커뮤니티를 통해서도 발견되지 않았던 취약점인데, 이번에 티오리가 자체 개발한 AI 기반 코드 분석 솔루션 Xint Code에 의해서 발견되었다고 한다.
자세한 내용는 Xint Blog 페이지에서 확인할 수 있지만 영문이라 보기에는 조금 불편한데, 리눅스 취약점 Copy Fail(CVE-2026-31431) 블로그에서는 한글로 잘 설명이 되어 있다.
테스트
내가 사용하거나 관리하는 Linux 서버들에서 테스트 해 보았더니 (우분투 18.04, 20.04, 22.04, 24.04), 모든 버전들에서, 아주 간단히 사용자 권한에서 root 권한을 획득할 수 있었다. (단, 최신 보안 업데이트를 마친 서버에서는 해당 보안 패치가 되어서, root 권한을 획득할 수 없었음)
서버에서 일반 사용자 권한으로 로그인 한 후에, 아래와 같이 copy-fail 공격 코드를 clone 받고, 디렉토리로 이동한다.
$ git clone https://github.com/pjt3591oo/copy-fail-CVE-2026-31431.git
$ cd copy-fail-CVE-2026-31431/
이제 아래와 같이 실행하여 # 프롬프트가 얻어지면 root 권한 획득이 성공한 것이다. (root 권한을 얻는게 이렇게 쉽다고? 😱)
$ ./copy_fail_exp.py
root#
만약에
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/su'와 같은 에러 메시지가 출력되면서 실패한 경우에는which su명령을 실행해 보면 “/bin/su”와 같이 다른 경로가 출력될 것이다.
이 경우에는 copy_fail_exp.py 소스에서 “/usr/bin/su” 부분을 찾아서 “/bin/su”와 같이 수정한 후에, 다시 실행하면 된다.
Python 버전
그런데 이 공격 코드는 Python 3.10 이상에서 동작하므로, 만약에 Ubuntu 20.04 이하와 같이 낮은 Python이 버전이 설치되어 있는 경우에는, 아래와 같은 방법을 Python 3.10 이상 버전을 설치하면 된다.
- pyenv 툴 이용 예
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash이후 ~/.bashrc 파일에 아래 내용을 추가한다.
export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)"이후 아래와 같이 변경된 내용을 적용한다.
$ . ~/.bashrc이제 아래와 같이 pyenv 툴로 원하는 Python 버전을 설치한다.
$ pyenv install 3.10.20 $ pyenv shell 3.10.20 $ python3 --version Python 3.10.20 - uv 툴 이용 예
$ curl -LsSf https://astral.sh/uv/install.sh | sh이후 ~/.bashrc 파일에서 필요시 PATH에 “~/.local/bin” 경로를 추가하고, 아래와 같이 적용한다.
$ . ~/.bashrc이제 아래와 같이 uv 툴로 원하는 Python 버전을 설치한다.
$ uv python install 3.10.20 $ uv venv --python 3.10.20 $ . ~/.venv/bin/activate $ python3 --version Python 3.10.20
맺음말
추가로 다른 팀에서 운영하는 개발 서버 중에서 계정이 있는 서버에서도 확인했더니 (보안 업데이트가 되지 않은 서버였고), 이 CopyFail 취약점을 이용하여 쉽게 root 권한을 얻을 수 있었다. 사내 개발 서버들은 관리자들이 보안 업데이트를 신경쓰지 않는 경우가 많아서, 아마도 해당 서버의 일반 사용자들이 이 취약점을 이용하여 너무나 쉽게 root 권한을 획득할 수 있는 상황이 많을 것 같다.
AI가 보안 취약점을 찾아내는 일이 점점 많아질 것이므로, 앞으로 AI에 의한 해킹 공격으로 인해 보안 분야에도 많은 변화가 있을 것 같다. 공격자는 AI를 이용하여 취약점을 찾아서 공격하고 (필요하다면 자동으로 공격까지), 방어자는 AI를 이용하여 취약점을 찾아서 방어(필요하다면 자동으로 방어까지) 할 것이다.
또한 일반적으로 취약점을 발견한 이후에 일정 기간 후에 (취약점을 수정할 시간을 줌) 취약점을 공개하는 disclosure 정책이 있었는데, 이제는 공개하지 않는 그 기간에 공격자는 AI를 통하여 취약점을 찾아서 공격할 수 있으므로, 이러한 공개 정책이나 취약점 대응 방법에도 변화가 있을 것 같다.