데일리 · 기사 01 · 5 분 읽기
- 보안
CISA, GitLab 정규식 결함의 실제 악용 확인…서버 수정과 침입 흔적을 함께 점검
10월 29일 CISA 목록 갱신 · 10월 30일 JST 개발사 원문 대조
요약·개요
CISA는 10월 29일 GitLab의 로그인 없는 원격 코드 실행 결함을 실제 악용 목록에 추가했습니다. 패치는 10월 12일 공개됐습니다. 자체 운영 서버는 실행 중인 수정판과 침입 흔적을 함께 살펴야 합니다.
회사에서 GitLab을 직접 운영한다면 관리자에게 현재 실행 버전과 이번 결함의 침입 흔적 점검 여부를 함께 물어볼 때입니다. GitLab은 소스코드와 자동 시험·배포 절차를 관리하는 서비스입니다. 미국 보안기관 CISA는 10월 29일 CVE-2026-97229를 실제 악용 취약점 목록 KEV에 추가했습니다.
핵심 팩트
CISA 항목은 조작된 CI/CD 설정의 정규식이 특정 조건에서 로그인하지 않은 사람의 서버 코드 실행으로 이어질 수 있다고 설명합니다. CI/CD는 코드 변경 뒤 시험·배포 등을 자동으로 수행하는 절차입니다. 목록 배포 시각은 30일 04:09:34 JST이며, 첫 공격 시각은 아닙니다. CISA 원본 목록
GitLab은 10월 12일 이 결함을 고친 19.4.2·19.3.5·19.2.8을 공개했습니다. GitLab.com과 GitLab Dedicated는 이미 수정됐다고 안내합니다. 이번 새 경과는 패치 공개가 아니라 실제 악용 목록 편입이며, 자체 운영 GitLab의 적용 여부는 관리자가 따로 확인해야 합니다. GitLab 수정 안내

1. 검색 규칙을 읽다가 왜 명령 실행까지 갈까
정규식은 글자가 어떤 형태와 맞는지 검사하는 규칙입니다. 예를 들어 ‘이름이 release로 시작하는 브랜치인가’를 검사해 자동 시험을 할지 정할 수 있습니다. 이는 정상 용도를 보여 주는 가상 예시입니다.
GitLab 내부의 Ruby 프로그램은 사용자가 준 규칙을 실행용 형태로 바꾸는 컴파일을 합니다. Ruby 개발팀은 이 단계에서 조작된 규칙이 내부 메모리를 손상시키고, GitLab 서버에서 임의 코드를 실행하는 데 쓰일 수 있었다고 설명합니다. 오래 걸리는 검색을 넘어 서버 프로그램의 처리 흐름에 영향을 주는 문제입니다. Ruby 개발팀 설명
정수 넘침은 크기를 담는 계산 칸의 한계를 넘어 값이 뒤틀리는 오류입니다. 가령 세 자리 칸에 1000을 담다 000만 남는 상황에 비유할 수 있지만, 이는 원리 설명용 가상 계산이며 실제 Ruby의 자릿수나 공격 입력이 아닙니다. 컴파일에 필요한 크기를 잘못 다루면 메모리의 경계를 침범할 수 있고, 이번 결함은 그 연결이 서버 코드 실행에 이용될 수 있었던 경우입니다.
%% 규칙 입력에서 서버 코드 실행 위험까지 · GitLab·Ruby 공식 설명의 범위
flowchart TD
A["외부에서 온 조작된 규칙"] --> B["영향받는 Ruby가 컴파일<br/>내부 메모리 손상"]
B --> C["조건이 맞으면 서버 코드 실행<br/>서버 계정의 권한으로 피해"]임의 코드 실행은 공격자가 고른 작업을 서버가 수행할 수 있다는 뜻입니다. 그 계정이 읽거나 바꿀 수 있는 자료가 피해 범위에 들어갈 수 있지만, 이 공지만으로 모든 서버의 관리자 권한 획득이나 고객 자료 유출이 입증된 것은 아닙니다.
고양이와 풀어보기 Q&A
- 고양이 연구원
로그인 화면을 걸어 두면 이 문제도 막히지 않아?
포켓 노트공식 항목은 인증하지 않은 사람도 도달할 수 있는 조건을 명시해. 계정 로그인만을 방어 근거로 삼지 말고, 관리자가 영향 버전과 외부에 노출된 처리 경로를 점검해야 해. 공개된 사실은 공격 조건의 설명이지 네 서버에서 실제로 발생했다는 증거는 아니야.
2. GitLab 패치와 Ruby 업데이트의 위치
GitLab은 자신이 배포하는 Ruby에 수정을 넣었습니다. Ruby 프로젝트는 10월 23일 별도로 4.0.9·3.4.12·3.3.13을 공개하며 관련 네 결함의 수정을 모두 포함했다고 밝혔습니다. 호스트 PC에 별도 설치한 Ruby만 바꾸는 것은 GitLab이 실제 사용하는 Ruby를 바꿨다는 근거가 되지 않습니다.
| GitLab 계열 | 이 CVE 영향 범위 | 처음 수정이 포함된 버전 |
|---|---|---|
| 19.2 | 19.2부터 19.2.8 미만 | 19.2.8 |
| 19.3 | 19.3부터 19.3.5 미만 | 19.3.5 |
| 19.4 | 19.4부터 19.4.2 미만 | 19.4.2 |
- GitLab 계열
19.2
- 이 CVE 영향 범위
- 19.2부터 19.2.8 미만
- 처음 수정이 포함된 버전
- 19.2.8
- GitLab 계열
19.3
- 이 CVE 영향 범위
- 19.3부터 19.3.5 미만
- 처음 수정이 포함된 버전
- 19.3.5
- GitLab 계열
19.4
- 이 CVE 영향 범위
- 19.4부터 19.4.2 미만
- 처음 수정이 포함된 버전
- 19.4.2
표는 이 결함의 최초 수정판이며 현재의 최신 권장판 목록이 아닙니다. 관리자는 지원 중인 계열의 최신 보안 패치와 배포 방식에 맞는 업그레이드 절차를 선택해야 합니다. 다른 Ruby 앱은 외부 사람이 정한 규칙을 컴파일하는지 살필 수 있습니다. Ruby 팀은 개발자가 작성한 고정 규칙만 쓰는 앱은 이 조건에 해당하지 않으며, 검색 시간 제한이나 입력 길이 제한만으로 이 결함을 막을 수 없다고 설명합니다.
고양이와 풀어보기 Q&A
- 고양이 연구원
패치 파일을 받았다는 답만으로 끝낼 수 있어?
포켓 노트실제 요청을 처리하는 GitLab 버전과 배포 완료 기록이 필요해. 패키지·컨테이너를 준비한 것과 실행 중인 서비스가 바뀐 것은 별도 단계야. 관리형 GitLab 이용자는 자기 환경이 공식 관리형 범위에 들어가는지도 확인할 수 있어.
3. 수정 뒤에도 침입 흔적을 보는 이유
패치는 앞으로 같은 결함을 이용하는 경로를 고치는 작업입니다. 그전에 공격자가 이미 서버에서 작업했는지는 접속·오류·보안 탐지 기록을 조사해야 답할 수 있습니다. GitLab은 이번 CVE의 공격 시도 탐지를 돕는 여섯 가지 탐지 항목도 공개했습니다.
| 관리자에게 물을 것 | 받을 근거 |
|---|---|
| 우리 운영 방식과 버전이 영향 범위인가 | 자체 운영·관리형 구분과 현재 버전 |
| 실제 서비스에 수정이 반영됐나 | 실행 중인 버전, 적용 완료 시각·기록 |
| 노출됐던 기간의 공격 흔적을 조사했나 | 보존한 기록과 공식 탐지 항목의 조사 결과 |
- 관리자에게 물을 것
우리 운영 방식과 버전이 영향 범위인가
- 받을 근거
- 자체 운영·관리형 구분과 현재 버전
- 관리자에게 물을 것
실제 서비스에 수정이 반영됐나
- 받을 근거
- 실행 중인 버전, 적용 완료 시각·기록
- 관리자에게 물을 것
노출됐던 기간의 공격 흔적을 조사했나
- 받을 근거
- 보존한 기록과 공식 탐지 항목의 조사 결과
CISA는 이 항목의 조치 기한을 11월 1일로 기재했습니다. 해당 지침의 법적 의무는 미국 연방 민간행정기관 대상이며, 모든 독자의 공통 유예기간을 뜻하지 않습니다. 자체 운영자는 자기 환경의 노출과 공급자 안내에 따라 우선순위를 정해야 합니다. CISA 지침 적용 범위
고양이와 풀어보기 Q&A
- 고양이 연구원
탐지 기록이 없으면 침입이 없었다고 결론 내릴 수 있어?
포켓 노트어떤 기록을 얼마나 보관했고 어떤 항목을 조사했는지가 먼저야. 기록이 부족하면 조사 범위와 남은 공백을 받아 두어야 해. 패치 완료와 과거 침입 여부를 한 답으로 묶지 않는 이유야.
마무리
자동화 도구를 지키는 두 가지 근거
이용자는 관리자가 제시하는 실행 버전으로 수정 반영을, 조사 기록으로 과거 노출의 경과를 살필 수 있습니다. 코드의 시험·배포를 맡기는 서비스인 만큼, 정상 작업을 허용하는 규칙이 서버의 권한을 넘어가지 않도록 관리하는 일이 중요해졌습니다.
출처
- CISA 원본 목록cisa.gov
- GitLab 수정 안내docs.gitlab.com
- Ruby 개발팀 설명ruby-lang.org
- CISA 지침 적용 범위cisa.gov