
Alpine Linux 프로젝트가 28일 공식 공지를 통해 자체 GitLab 서버에 대한 취약점 악용 시도를 공개했다. 공격 성공을 확인하지는 못했으나 침해 가능성을 배제할 수 없다고 판단해 서버를 처음부터 재구축하고 모든 이용자의 비밀번호와 GitLab 비밀키를 교체했다. 공지 시점에는 일반 이용자에게 다시 개방하기 전 테스트를 진행 중이라고 밝혔다.
공격자가 노린 것은 GitLab의 CI/CD 설정에 포함된 정규표현식을 처리하는 과정의 취약점 CVE-2026-97229다. GitLab 공식 보안 공지는 이를 인증되지 않은 공격자가 특정 조건에서 서버의 임의 코드를 실행할 수 있는 문제로 설명하고, 심각도를 CVSS 10.0으로 평가했다. 수정 버전은 19.2.8, 19.3.5, 19.4.2로 제시됐다.
Alpine 측에 따르면 공격자는 20일과 21일 새로 만든 계정으로 조작된 CI 설정을 전송했다. 당시 서버는 수정이 적용되지 않은 GitLab 19.3.4를 사용하고 있었다. 이 과정에서 작업자 프로세스가 여덟 차례 중단됐으며, 네 차례는 공격이 일부 단계까지 진행된 뒤 다음 단계에서 실패한 것으로 분석됐다.
문제는 GitLab 버전을 올린 뒤에도 남아 있었다. Alpine은 22일 19.3.6으로 업그레이드했지만, 자체 컨테이너 이미지가 GitLab 공식 패키지에 포함된 Ruby 패치를 받지 못했다고 설명했다. 취약점의 근본 원인은 GitLab 애플리케이션 코드가 아니라 Ruby에 내장된 정규표현식 엔진 Onigmo에 있었기 때문이다.
Ruby 프로젝트가 23일 공개한 공식 설명도 이 차이를 확인해 준다. GitLab은 자사 배포본에 포함하는 Ruby를 패치하는 방식으로 대응했으며, Ruby 프로젝트는 관련 수정 사항을 포함한 3.3.13, 3.4.12, 4.0.9를 배포했다. 자체 Ruby 환경이나 별도 컨테이너 이미지로 GitLab을 운영한다면 GitLab 버전뿐 아니라 실제 실행되는 Ruby의 수정 여부도 확인해야 한다.
Alpine은 코드 실행 흔적이나 외부에 노출된 서명키를 발견하지 못했다고 밝혔다. 패키지와 릴리스의 서명키는 애초 GitLab 서버에 보관하지 않았다는 설명이다. 20~22일 aports 저장소 커밋과 20~24일 빌드 패키지, 21일 배포한 릴리스는 GitLab 밖의 기록과 대조해 변조 흔적을 찾지 못했다고 전했다. 서버가 27일까지 취약한 상태였던 만큼 검증 범위도 그날까지 넓히고 있다.
다만 일부 로그와 이전 컨테이너 파일시스템이 남아 있지 않고, 외부로 나가는 네트워크 연결 기록도 없었다. Alpine은 이 때문에 공격 성공을 완전히 배제할 수 없다고 설명했다. 이용자 정보와 비밀번호 해시, 2단계 인증 비밀값, CI/CD 변수 등이 노출됐을 가능성을 조사 대상에 포함했지만, 실제 유출이 확인됐다는 뜻은 아니다.
이용자에게는 GitLab이 재개방되면 비밀번호 찾기 기능으로 새 비밀번호를 설정하도록 안내했다. 같은 비밀번호를 다른 서비스에서도 썼다면 해당 서비스의 비밀번호를 바꾸라고 권고했다. 자체 배포하는 alpinelinux/gitlab 이미지를 쓰는 운영자는 Ruby 3.3.13이 포함된 27일자 19.3.6 이미지를 다시 내려받아야 한다. 같은 태그라도 27일 이전에 받은 이미지는 취약하다는 설명이다.
Alpine은 중요 GitLab 보안 패치를 하루 안에 적용하고, 자체 빌드에 필요한 Ruby 등 구성요소의 패치를 별도로 확인하겠다고 밝혔다. 외부 연결과 데이터베이스 접속 로그를 보강하고, 릴리스 태그에 서명해 GitLab과 독립적으로 검증할 수 있도록 하는 조치도 제시했다.
출처: Alpine Linux 공식 보안 사고 공지 ‘GitLab security incident: attempted exploitation of CVE-2026-97229’ https://alpinelinux.org/posts/GitLab-security-incident-CVE-2026-97229.html
GitLab 공식 패치 릴리스 보안 공지 https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-4-2-released/
Ruby 공식 ‘Ruby 3.3.13 Released’ https://www.ruby-lang.org/en/news/2026/10/23/ruby-3-3-13-released/
Ruby 공식 정규표현식 수정 안내 https://www.ruby-lang.org/en/news/2026/10/23/regexp-fixes-for-gitlab-cves/