대상 독자: 자체 서버나 클라우드에서 GitLab을 운영하는 관리자(셀프 호스팅)와 Ruby로 애플리케이션을 개발하는 개발자. 이 페이지는 GitLab의 패치 릴리스 공지, Ruby의 공식 발표, 미국 국가취약점데이터베이스(NVD)와 CISA의 공개 자료를 바탕으로 합니다. 공격이 어떻게 작동하는지는 다루지 않습니다.
続報待ち:この記事は公式発表に合わせて更新します
2026년 10월 25일 08:00 JST 기준まだ分かっていないこと
- 이 결함이 발생할 정확한 조건(GitLab은 '특정 조건에서'라고만 설명함)
- 악용 상태의 변경 여부(공개 시점에는 보고된 악용 없음)
- NVD 자체 평가(분석 중)
GitLab은 10월 21일 패치 릴리스를 공개했고, Ruby 팀은 10월 23일 수정 버전을 공개했습니다. 악용은 보고되지 않았으며, 이 취약점은 CISA의 KEV 카탈로그에 없습니다. GitLab은 릴리스 후 90일 뒤에 세부 정보를 공개할 예정이라고 밝혔습니다. 상황이 바뀌면 이 페이지를 업데이트하겠습니다.
오늘 해야 할 일 (셀프 호스팅 GitLab)
버전 확인
Linux 패키지(Omnibus) 설치에서는 GitLab Rails를 실행하는 노드에서 sudo gitlab-rake gitlab:env:info를 실행하십시오. 버전은 "GitLab information" 섹션에 표시됩니다. 관리자로 로그인한 상태에서 Admin 영역에서도 확인할 수 있습니다. 다중 노드 구성이라면 모든 노드를 확인하십시오.
같은 라인의 수정 릴리스로 이동
19.4.x를 사용 중이라면 19.4.3으로, 19.3.x라면 19.3.6으로 이동하는 식입니다. 이 사이트의 견해로는 같은 마이너 라인 안의 패치 업그레이드는 보통 업그레이드 중간 단계가 필요하지 않습니다(확실히 하려면 GitLab의 도구로 확인하십시오). GitLab은 단일 노드 인스턴스는 마이그레이션이 끝날 때까지 GitLab이 시작되지 않으므로 다운타임을 예상해야 한다고 밝혔습니다. 다중 노드 인스턴스는 무중단 업그레이드 절차를 사용할 수 있습니다.
이전 버전이라면 먼저 업그레이드 중간 단계 확인
GitLab은 건너뛰면 안 되는 필수 업그레이드 중간 단계를 정의합니다. 2026년 10월 기준 목록은 GitLab 18의 경우 18.2, 18.5, 18.8, 18.11이며, GitLab 19의 경우 19.2, 19.5, 19.8, 19.11입니다(GitLab 19 중간 단계 중 19.2와 19.5는 이미 출시되었습니다). 현재 버전과 목표 버전을 GitLab의 Upgrade Path 도구에 입력하면 거쳐야 할 버전을 확인할 수 있습니다. GitLab은 이후 버전으로 가기 전에 이 버전들로 먼저 업그레이드해야 하며, 각 중간 단계에서 백그라운드 마이그레이션이 끝날 때까지 기다려야 한다고 밝혔습니다.
즉시 업그레이드할 수 없다면 접근 범위 제한
GitLab의 공지는 업그레이드 외에 우회 방법을 제시하지 않았습니다. 업그레이드하기 전까지 이 사이트는 방화벽이나 VPN으로 GitLab을 내부 네트워크 밖에서 접근할 수 없게 하고, 신규 가입을 끄는 것을 권장합니다. 두 조치 모두 취약점을 막지는 못하므로, 업그레이드는 계속 진행하십시오.
흔적 찾기
GitLab은 셀프 호스팅 고객을 위해 위협 탐지 2건을 공개했습니다(공지의 "Detecting CVE-2026-110264 Exploitation Attempts" 섹션). 로그 모니터링을 사용 중이라면 이 탐지 규칙을 불러오십시오. 또한 낯선 프로세스, 파일, 관리자 계정, 외부 연결을 확인하십시오. 서버가 침해되었는지 확인하는 방법을 참고하십시오.
내가 영향을 받나요? 빠른 확인표
| 사용 중인 버전 | CVE-2026-110264 (Critical) | 같은 릴리스의 High 취약점 및 기타 | 목표 버전 |
|---|---|---|---|
| 19.5.1 이전의 19.5.x | 영향받음 | 영향받음 | 19.5.1 |
| 19.4.3 이전의 19.4.x | 영향받음 | 영향받음 | 19.4.3 |
| 19.3.6 이전의 19.3.x | 영향받음 | 영향받음 | 19.3.6 |
| 19.0.x – 19.2.x | 영향받음 (19.0.10, 19.1.9, 19.2.9에서 수정) | 19.3.6 이상에서만 수정 | 19.3.6 이상 |
| 18.11.13 이전의 18.11.x | 영향받음 (18.11.13에서 수정) | 19.3.6 이상에서만 수정 | 19.3.6 이상 |
| 18.10 이하 (7.0 이상) | 영향받음 | 취약점에 따라 다름 | 업그레이드 중간 단계를 거쳐 더 새로운 버전으로 |
| GitLab.com | 패치됨 | 패치됨 | 조치 불필요 |
| GitLab Dedicated | 19.3.5-internal0, 19.4.2-internal0부터 패치됨 | 동일 | GitLab에 따르면 조치 불필요 |
다른 취약점마다 영향받는 범위가 다릅니다(예: CVE-2026-15723은 10.1부터, CVE-2026-112212는 18.3부터 시작). 정확한 범위는 GitLab 공지의 표를 확인하십시오.
현재 버전
수정 전에는 치명적 취약점이 남아 있음
18.11.13 – 19.2.9
치명적 취약점은 수정, High 취약점은 남아 있음
19.3.6 / 19.4.3 / 19.5.1
이번 릴리스의 모든 수정 포함
공개된 내용 (GitLab 공지 기준)
- CVE
- CVE-2026-110264 (CWE-190: 정수 오버플로우)
- 심각도
- Critical, CVSS v3.1 10.0 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H, GitLab의 평가)
- 문제
- 특정 조건에서, 특수하게 조작된 정규식을 컴파일할 때 발생한 정수 오버플로우로 인해 인증되지 않은 사용자가 GitLab 서버에서 임의의 코드를 실행할 수 있게 될 수 있음
- 영향 범위
- GitLab CE/EE 7.0부터, 각 라인의 18.11.13, 19.0.10, 19.1.9, 19.2.9, 19.3.6, 19.4.3, 19.5.1 이전 버전
- 이미 수정됨
- GitLab.com, 19.3.5-internal0 및 19.4.2-internal0 이후의 GitLab Dedicated
- 제보자
- HackerOne의 GitLab 버그 바운티 프로그램을 통한 외부 연구자
- 악용
- 공지에 언급되지 않음. 2026년 10월 25일 기준 CISA KEV 카탈로그에 없음
같은 릴리스는 다른 취약점 11건도 수정하며, 그중 2건은 High입니다. CVE-2026-15723(CVSS 8.2)은 OmniAuth SAML과 LDAP 자동 연결이 모두 활성화된 경우, 인증된 사용자가 기존 LDAP 연동 계정을 장악할 수 있게 할 수 있습니다. CVE-2026-112212(CVSS 7.5)는 캐시된 OAuth/OIDC 디스커버리 문서가 오염되어 특정 흐름이 외부 서버로 전송되게 할 수 있습니다. 나머지는 Medium 5건, Low 4건입니다.
CISA의 10월 21일자 SSVC 평가는 악용 여부를 "none", 자동화 가능성을 "yes", 기술적 영향을 "total"로 분류했습니다. 악용이 보고되지 않은 지금 업그레이드를 마치는 것이 이 상황을 가장 적은 비용으로 넘기는 방법입니다(이 사이트의 견해).
근본 원인은 Ruby의 정규식 엔진에 있습니다: Ruby 개발자를 위한 내용
10월 23일 Ruby 팀은 Ruby 정규식 엔진(Onigmo)의 버그를 수정한 Ruby 4.0.9, 3.4.12, 3.3.13을 공개했습니다. GitLab이 부여한 CVE 4건(CVE-2026-89078, CVE-2026-93577, CVE-2026-97229, CVE-2026-110264)과 관련된 버그 3건을 수정했습니다. CVE-2026-110264를 제외한 세 건은 GitLab 19.4.1과 19.4.2에서 수정되었습니다.
Regexp.timeout은 도움이 되지 않습니다
Ruby의 공지에 따르면, 이 버그들은 애플리케이션이 공격자가 제어하는 문자열로 정규식을 컴파일할 때만 발생합니다(Regexp.new, Regexp.union, Regexp.compile, 또는 /#{input}/ 같은 보간). 개발자가 작성한 정규식만 사용하는 애플리케이션은 영향을 받지 않습니다. Regexp.timeout은 이 버그들로부터 보호하지 못하며, 패턴 길이를 제한하는 방법도 신뢰할 수 없습니다.
Ruby 3.3은 보안 수정만 제공되는 유지보수 단계에 있지만, GitLab이 이 수정에 의존하는 문제에 CVE를 부여했기 때문에 3.3.13에는 예외적으로 이 수정이 포함되었습니다. Ruby 3.2는 2026년 4월 1일 지원이 종료되었으며, 수정된 릴리스가 없습니다.
GitLab의 Linux 패키지와 클라우드 네이티브 이미지에는 GitLab 자체의 정규식 패치가 포함되어 있으므로, GitLab 관리자는 서버의 Ruby가 아니라 GitLab 자체를 업데이트하면 됩니다. 소스에서 GitLab을 설치했다면, 이 사이트는 해당 Ruby도 수정 버전으로 업데이트할 것을 권장합니다.
위험한 패턴
- 검색창이나 필터 입력값을 그대로 Regexp.new에 전달하기
- 사용자가 등록한 정규식을 서버에서 실행하기
- Regexp.timeout이나 길이 제한이 안전을 보장한다고 가정하기
- 지원이 끝난 Ruby 3.2 이하에 머물기
더 안전한 패턴
- 단순 텍스트 검색에는 Regexp.escape를 사용해 입력을 문자 그대로 매칭하기
- 사용자가 정규식을 직접 작성해야 하는지 검토하기
- 꼭 필요하다면 다른 정규식 엔진을 쓰거나 격리된 프로세스에서 실행하기(이 사이트의 견해)
- Ruby를 4.0.9, 3.4.12 또는 3.3.13 이상으로 업그레이드하기
사용 중인 gem이나 프레임워크가 사용자 입력으로 정규식을 만드는지는 여러분의 코드만으로는 알 수 없으므로, Ruby를 업그레이드하는 것이 가장 확실한 해결책입니다. 의존성을 지속적으로 점검하려면 osv-scanner로 의존성 CVE를 모니터링하는 방법을 참고하십시오.
자체 Git 서버 운영자가 자주 놓치는 것
GitLab을 직접 운영하면 실수로 저장소가 공개되는 등의 사고는 줄어들지만, 패치의 책임은 여러분에게 넘어옵니다. 7.0까지 거슬러 올라가는 취약점이므로, 오랫동안 업데이트를 멈춘 서버가 거쳐야 할 업그레이드 중간 단계가 가장 많고 작업량도 가장 큽니다.
이 사이트의 견해: 평소에 최신 필수 업그레이드 중간 단계보다 최소 한 단계 뒤까지는 따라가 두십시오. 그러면 긴급 업그레이드가 길고 복잡한 과정이 아니라 한두 단계로 끝납니다. 셀프 호스팅의 장단점은 셀프 호스팅 Git과 GitHub 중 어느 쪽이 더 안전한가를 참고하십시오.
아직 알려지지 않은 사항
| 항목 | 상태 |
|---|---|
| 취약점이 발생하는 정확한 조건 | 명시되지 않음 ("특정 조건에서"; 세부 정보는 릴리스 후 90일 뒤 공개 예정) |
| 악용 | 명시되지 않음 (2026년 10월 25일 기준 CISA KEV에 없음) |
| 공개된 익스플로잇 코드 | 명시되지 않음 |
| NVD 평가 | 분석 중 (GitLab 평가는 10.0) |
| Ruby 버그 자체에 대한 CVE | Ruby 팀이 아직 요청하지 않음 (재검토될 수 있음) |
출처
- GitLab, "GitLab Critical Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13" (2026년 10월 21일) — docs.gitlab.com
- Ruby, "Regexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264" (2026년 10월 23일) — ruby-lang.org
- Ruby, "Ruby Maintenance Branches" — ruby-lang.org
- GitLab, "Upgrade paths" — docs.gitlab.com
- GitLab, "Maintenance Rake tasks" (gitlab:env:info) — docs.gitlab.com
- NIST NVD, "CVE-2026-110264" — nvd.nist.gov
- CISA, "Known Exploited Vulnerabilities Catalog" — cisa.gov
변경 기록
2026-10-25: 최초 버전. GitLab 패치 릴리스 공지, Ruby 공식 발표, NVD, CISA KEV 카탈로그(2026년 10월 23일 버전)를 바탕으로 작성했습니다.
다음으로 읽을 글
- 셀프 호스팅의 장단점: 셀프 호스팅 Git과 GitHub 중 어느 쪽이 더 안전한가
- 우선순위 정하기: 어떤 CVE를 먼저 수정할지 정하는 방법 (CVSS, EPSS, KEV)
- 침해 여부 확인: 서버가 침해되었는지 확인하는 방법
- 같은 주의 다른 런타임 수정: PHP 취약점 CVE-2026-109618 및 CVE-2026-109619
- 용어: RCE(원격 코드 실행)란 무엇인가 / CVSS란 무엇인가