회사 ‘코드 창고’가 로그인 없이 열릴 수 있었다? 위험도 만점 깃랩(GitLab) 취약점 CVE-2026-110264로 본 12년치 버전 영향, 우리 회사 해당 여부 30초 진단과 올려야 할 버전표를 초보도 쉽게

회사에서 개발팀이 “코드는 깃랩(GitLab)에 올려 두세요”라고 말하는 걸 들어 본 적 있나요? 깃랩은 프로그램 코드를 보관하고, 여러 사람이 함께 고치고, 완성된 코드를 자동으로 서버에 배포까지 해 주는 ‘회사 코드 창고 + 자동 공장’ 같은 서비스예요. 많은 회사·학교·공공기관이 이걸 자기 서버에 직접 설치해서 써요.

그런데 깃랩이 10월 21일(미국 현지 기준) 위험도 만점(CVSS 10.0)짜리 보안 구멍 CVE-2026-110264를 긴급 패치했어요. 로그인 없이도 외부 공격자가 깃랩 서버에서 마음대로 명령을 실행할 수 있는 종류이고, 무려 2014년에 나온 7.0 버전부터 지금까지 약 12년치 버전이 모두 해당돼요. 한국인터넷진흥원(KISA)도 22일 국내 기업·기관에 업데이트를 권고했죠. 오늘은 이게 무슨 뜻인지, 누가 무엇을 하면 되는지를 초보 눈높이로 정리해 볼게요.

깃랩을 회사 서버에 직접 설치해 쓰는 곳이라면, 소스 코드·배포 열쇠가 모인 ‘코드 창고’가 로그인 없이 열릴 수 있었던 CVSS 10.0 구멍을 오늘 막아야 해요
깃랩을 회사 서버에 직접 설치해 쓰는 곳이라면, 소스 코드·배포 열쇠가 모인 ‘코드 창고’가 로그인 없이 열릴 수 있었던 CVSS 10.0 구멍을 오늘 막아야 해요

한눈에 보는 요약

질문 짧은 답
무슨 일이에요? 깃랩 CE(무료판)·EE(기업판)에서 로그인 없이 서버를 장악할 수 있는 취약점이 발견돼 긴급 패치가 나왔어요
이름·점수는요? CVE-2026-110264, CVSS 10.0(최고 등급 ‘치명적’)
원인은요? 깃랩 안에 들어 있는 루비(Ruby) 언어의 정규식 엔진 ‘오니그모(Onigmo)’가 특수하게 꾸민 정규식을 처리하다 숫자가 넘쳐(정수 오버플로) 생기는 문제
어느 버전이요? 7.0부터 18.11.13 미만, 그리고 19.0~19.5의 각 고친 버전 미만 전부
실제 공격은요? 10월 22일 기준 악용 사례는 확인되지 않았어요. 미국 CISA ‘실제 악용 목록(KEV)’에도 아직 없음
누가 해야 해요? 회사 서버에 깃랩을 직접 설치(Self-managed)해 쓰는 곳. GitLab.com은 이미 패치 완료
임시 방편은요? 깃랩은 우회책을 내놓지 않았어요. 업데이트가 유일한 확실한 해결책
주의할 점은? 10월 12일에 패치한 서버도 다시 올려야 해요(그때 고친 건 다른 구멍)

먼저, 깃랩은 뭐 하는 곳일까

출판사의 원고 보관실을 떠올리면 쉬워요. 작가(개발자)들이 원고(코드)를 맡기고, 편집자(동료)가 빨간 펜으로 검토(머지 요청)하고, 완성되면 인쇄소(서버)로 자동으로 보내는 컨베이어 벨트(CI/CD)까지 한 건물에 있는 거예요. 그래서 깃랩 서버 한 대에는 보통 아래 같은 회사의 핵심 자산이 모여 있어요.

깃랩에 모여 있는 것 쉬운 비유 털리면 생기는 일
소스 코드 출판 전 원고 제품 설계도 유출, 몰래 악성 코드 끼워 넣기
CI/CD 파이프라인 인쇄소로 가는 자동 컨베이어 배포되는 프로그램 자체가 오염(공급망 공격)
배포용 비밀값(토큰·API 키·DB 비밀번호) 인쇄소·창고 출입 열쇠 꾸러미 클라우드·운영 서버까지 연쇄 침입
이슈·위키·회의 기록 편집 회의록 내부 계획·고객 정보 노출
직원 계정·권한 사원증 명단 다른 시스템 로그인 시도의 발판
💡 그래서 ‘10점 만점’이 더 무서워요. 보안 업체 비즐리 시큐리티는 “깃랩 서버에는 소스 코드, CI/CD 자격 증명, 배포 비밀값이 들어 있다”며 즉시 패치를 권했어요. 창고 문 하나가 열리면 창고 안 열쇠 꾸러미로 다른 문까지 열 수 있다는 뜻이에요.

CVSS 10.0, 로그인 없이 원격 코드 실행이 뭐예요?

보안 뉴스에서 자주 보는 단어들을 하나씩 풀어 볼게요.

용어 뜻 이번 사건에서는
CVE 전 세계 공통 ‘보안 구멍 주민번호’ CVE-2026-110264
CVSS 구멍의 위험도를 0~10점으로 매긴 점수 10.0 = 최고점
원격 코드 실행(RCE) 멀리서 남의 컴퓨터에 내 명령을 실행시키는 것 깃랩 서버에서 공격자 명령 실행 가능
비인증(무인증) 로그인·비밀번호가 필요 없음 계정이 없어도 공격 가능
정규식 글자 패턴을 찾는 검색 규칙(예: 이메일 모양 찾기) 특수하게 꾸민 정규식이 엔진을 망가뜨림
정수 오버플로 숫자가 그릇 크기를 넘어 엉뚱한 값으로 바뀌는 현상 엔진이 메모리 크기를 잘못 계산 → 코드 실행으로 이어짐

CVSS 점수표(벡터)를 보면 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H예요. 어렵게 보이지만 풀면 “인터넷으로(N), 쉽게(L), 권한 없이(N), 사용자가 아무것도 안 눌러도(N), 다른 영역까지 번지며(C), 정보 유출·변조·마비 모두 심각(H)”이라는 뜻이에요. 거의 모든 칸이 ‘최악’인 셈이죠.

CVSS 점수 등급 우리 생활 비유
0.1 ~ 3.9 낮음 현관 손잡이가 조금 헐거움
4.0 ~ 6.9 보통 창문 잠금이 가끔 안 걸림
7.0 ~ 8.9 높음 열쇠를 가진 사람이면 다른 집도 열 수 있음
9.0 ~ 10.0 치명적 지나가던 누구나 열쇠 없이 문을 열 수 있음

왜 하필 ‘12년치 전부’일까

깃랩은 루비 정규식 엔진 ‘오니그모’를 2014년 7.0부터 모든 버전에 함께 넣어 왔어요. 그래서 이번 결함은 12년치 버전 전부에 해당돼요
깃랩은 루비 정규식 엔진 ‘오니그모’를 2014년 7.0부터 모든 버전에 함께 넣어 왔어요. 그래서 이번 결함은 12년치 버전 전부에 해당돼요

깃랩은 루비(Ruby)라는 프로그래밍 언어로 만들어졌고, 루비에는 정규식을 처리하는 엔진 오니그모(Onigmo)가 기본으로 들어 있어요. 깃랩은 이 엔진을 자기 설치 패키지 안에 함께 넣어 배포하고, 직접 패치해 왔죠. 그러니 엔진의 약점은 엔진이 들어간 모든 버전, 즉 7.0(2014년)부터 지금까지 전부에 남아 있었던 거예요. 자동차로 치면 12년 동안 모든 모델에 같은 부품을 써 왔는데 그 부품에서 결함이 나온 ‘리콜’과 비슷해요.

시점 무슨 일 로그인 필요?
9월 23일 정규식 엔진 관련 코드 실행 구멍 2개 수정(CVE-2026-93577, CVE-2026-89078, 각 9.9점) 필요(로그인한 사용자)
10월 12일 정규식 엔진 정수 오버플로 수정(CVE-2026-97229, 10.0점) — 19.2.8·19.3.5·19.4.2 불필요
10월 21일 이번 CVE-2026-110264(10.0점) — 7개 버전 동시 패치, 7.0까지 영향 불필요
10월 22일 KISA ‘GitLab 제품 보안 업데이트 권고’, CERT-EU·싱가포르 CSA 등 각국 경보 –

재미있는(?) 점은 이 네 개가 모두 같은 연구자(joaxcar)가 한 달 사이 버그 바운티(보안 구멍 신고 포상 제도)로 찾아낸 정규식 엔진 결함이라는 거예요. 앞의 세 개는 19.2 이후 버전에만 해당됐지만, 이번 건은 처음으로 그 이전 버전까지 거슬러 올라가요. 깃랩은 “특정 조건에서” 공격이 가능하다고만 했고, 그 조건이 뭔지는 아직 공개하지 않았어요. 그래서 “우리 설정은 괜찮을 거야”라고 스스로 판단할 수 없고, 업데이트만이 확실한 해결책이에요.

우리 회사는 해당될까? 30초 자가 진단

GitLab.com은 이미 패치를 마쳤고, 회사 주소로 접속하는 직접 설치형(Self-managed) 깃랩만 관리자가 업데이트하면 돼요
GitLab.com은 이미 패치를 마쳤고, 회사 주소로 접속하는 직접 설치형(Self-managed) 깃랩만 관리자가 업데이트하면 돼요
어떻게 깃랩을 쓰나요? 해당 여부 할 일
gitlab.com 주소로 접속해서 씀(클라우드) 조치 불필요 깃랩이 이미 패치 완료
GitLab Dedicated(전용 클라우드) 대부분 조치 불필요 19.3.5-internal0 / 19.4.2-internal0 이상이면 이미 포함
git.우리회사.co.kr처럼 회사 주소로 접속 해당 가능성 높음 서버 관리자에게 버전 확인·업데이트 요청
내 PC·NAS·도커에 직접 깔아 쓰는 개인 깃랩 해당 오늘 바로 업데이트
깃허브(GitHub)·비트버킷 등 다른 서비스 이번 건과 무관 –
🙋 개발자가 아닌 직원이라면? 직접 할 일은 거의 없어요. 다만 회사 깃랩 주소가 gitlab.com이 아니라면, IT팀이나 개발팀에 “깃랩 10월 21일 긴급 패치 적용됐나요?” 한 줄만 물어봐 주세요. 그 한마디가 생각보다 큰 도움이 돼요.

내 버전 확인하고, 이 버전으로 올리세요

지금 쓰는 계열별로 올려야 할 버전: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13 — 10월 12일 패치 버전(19.2.8·19.3.5·19.4.2)도 다시 올려야 해요
지금 쓰는 계열별로 올려야 할 버전: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13 — 10월 12일 패치 버전(19.2.8·19.3.5·19.4.2)도 다시 올려야 해요
지금 쓰는 버전 올려야 할 버전(이상) 비고
19.5 (19.5.0) 19.5.1 최신 계열
19.4 (19.4.3 미만) 19.4.3 DB 마이그레이션 포함
19.3 (19.3.6 미만) 19.3.6 DB 마이그레이션 포함
19.2 (19.2.9 미만) 19.2.9 특별 백포트(구버전용 패치)
19.1 (19.1.9 미만) 19.1.9 특별 백포트
19.0 (19.0.10 미만) 19.0.10 특별 백포트
7.0 ~ 18.11 (18.11.13 미만) 18.11.13 18.10 이하는 공식 업그레이드 경로를 따라 18.11.13 이상으로

깃랩은 원래 최신 버전과 직전 두 달치(지금은 19.5·19.4·19.3)만 보안 패치를 해 줘요. 그런데 이번엔 사안이 심각해서 19.2·19.1·19.0·18.11까지 특별히 고쳐 줬어요. 그만큼 급하다는 신호예요.

확인 방법 어디서/어떻게 누가
웹 화면 로그인 후 오른쪽 위 도움말(?) → 도움말(Help) 페이지에 버전 표시, 또는 관리자 영역 첫 화면 관리자·사용자
서버 명령(옴니버스 설치) sudo gitlab-rake gitlab:env:info 결과의 GitLab 버전 항목 서버 관리자
버전 파일 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 서버 관리자
도커로 설치 docker exec <컨테이너이름> cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 서버 관리자
API 개인 액세스 토큰으로 /api/v4/version 호출 개발자
⚠️ 함정 하나: “우리 지난주(10월 12일)에 패치했는데요?” — 그때 받은 19.2.8·19.3.5·19.4.2는 이번 구멍의 영향 범위 안이에요. 새 고친 버전이 그보다 딱 한 단계 위라서, 반드시 버전 숫자를 직접 확인해야 해요.

관리자를 위한 업데이트 순서 (쉬운 버전)

단계 할 일 왜
1. 노출 줄이기 업데이트 전까지 깃랩을 인터넷에서 떼거나, 회사 IP·VPN에서만 접속되게 제한 우회책이 없으니 ‘문 앞까지 못 오게’ 하는 게 최선
2. 백업 sudo gitlab-backup create + /etc/gitlab/gitlab.rb, gitlab-secrets.json 따로 보관 업그레이드 실패 시 되돌리기
3. 업그레이드 경로 확인 깃랩 공식 ‘Upgrade Path’ 도구로 지금 버전 → 목표 버전 경로 확인 오래된 버전은 중간 단계를 건너뛰면 안 됨
4. 공지·점검 시간 19.4.3·19.3.6은 DB 마이그레이션 포함 → 서버 1대짜리는 잠시 멈춤 개발팀이 갑자기 푸시 못 하는 혼란 방지
5. 업데이트 옴니버스는 패키지 관리자로, 도커는 새 이미지 태그로 교체 –
6. 확인 버전 숫자 재확인 + 로그 점검(아래 표) ‘했다고 생각’이 아니라 ‘했음을 확인’
깃랩이 공개한 탐지 규칙 무엇을 찾나(쉬운 말) 어느 로그
Onigmo native worker crash 정규식 엔진 오류로 깃랩 작업 프로세스가 갑자기 죽은 흔적 puma_stderr.log
Org mode render error burst 같은 접속자가 30분 안에 .org 문서 표시 시간 초과를 5번 이상 일으킨 흔적 exceptions_json.log

이 규칙은 깃랩의 오픈소스 탐지 모음(TLDR)에 시그마(Sigma) 형식으로 들어 있어요. 다만 이스트시큐리티 설명처럼 공격이 성공했다면 프로세스가 안 죽을 수도 있어서, 로그가 깨끗하다고 “공격이 없었다”고 단정할 수는 없어요. 의심되면 배포용 토큰·비밀값을 새로 발급(교체)하는 것까지 고려하세요.

같이 고쳐진 다른 구멍들

이번 패치에는 10점짜리 말고도 11개의 보안 수정이 함께 들어 있어요(높음 2, 보통 5, 낮음 4). 주의할 점은 10점짜리를 뺀 나머지는 19.3.6·19.4.3·19.5.1에서만 고쳐졌다는 거예요. 19.2 이하 백포트 버전을 쓰면 이 구멍들은 남아 있어요.

CVE 점수 쉬운 설명 언제 위험?
CVE-2026-15723 8.2 (높음) 로그인한 사용자가 다른 사람 계정을 가로챌 수 있음 SAML과 LDAP 자동 연결을 둘 다 켠 경우
CVE-2026-112212 7.5 (높음) 로그인 안내 정보를 오염시켜 가짜 로그인 서버로 유도 공유 캐시를 쓰는 구성
CVE-2026-12664 6.8 읽기 전용 토큰으로 프로젝트 메일 주소 조회·작업 항목 생성 read_api 토큰 사용 시
CVE-2026-105777 4.3 내부 응답 헤더로 서버 내부 자격 증명 노출 가능 보통 등급이지만 주의 권고
CVE-2026-14288 등 3.1 이하 머지 승인 정책 우회, 보안 결과 삭제 등 기업판(EE) 일부 기능

이번 일, 한 걸음 물러서서 보면

포인트 의미
오래된 부품이 문제 최신 기능이 아니라 12년 묵은 ‘기본 부품’에서 터졌어요. 소프트웨어 안의 남이 만든 부품(의존성)도 내 책임이에요
버그 바운티의 힘 외부 연구자가 신고해 공격보다 먼저 고칠 수 있었어요. 포상 제도가 ‘선제 방어’ 역할을 한 셈이에요
클라우드 vs 직접 설치 GitLab.com 사용자는 아무것도 안 해도 됐지만, 직접 설치형은 관리자가 움직여야만 안전해져요
‘패치했음’ ≠ ‘안전함’ 열흘 사이 같은 부위에서 또 구멍이 나왔어요. 버전 숫자를 매번 확인하는 습관이 중요해요

자주 묻는 질문

질문 답
깃랩 계정 비밀번호를 바꿔야 하나요? 이번 구멍은 비밀번호 유출 사건이 아니라 서버 자체의 결함이에요. 일반 사용자는 회사 공지를 따르면 되고, 관리자가 침해를 의심하면 토큰·비밀값 교체를 안내할 거예요
깃허브(GitHub)도 위험한가요? 깃허브는 다른 회사의 다른 서비스라 이번 CVE와 무관해요
실제 해킹 피해가 있었나요? 10월 22일 기준 깃랩은 악용 사례가 없다고 밝혔고, CISA KEV 목록에도 없어요. 다만 공개 직후가 가장 위험한 시기예요
업데이트하면 코드가 날아가나요? 정상 절차대로면 아니에요. 그래도 백업은 꼭 먼저 하세요
임시로 기능 하나만 끄면 안 되나요? 깃랩은 우회책을 제시하지 않았어요. 접속 범위를 좁히는 건 도움이 되지만, 해결은 업데이트뿐이에요

마무리: 코드 창고 문, 오늘 다시 잠그기

이번 깃랩 사건을 한 줄로 줄이면 “12년 동안 같은 자물쇠 부품을 썼는데, 그 부품에 열쇠 없이 열리는 결함이 있었다”예요. 다행히 아직 실제 공격은 확인되지 않았고, 고친 버전도 나와 있어요. ① 우리 깃랩이 직접 설치형인지 확인 → ② 버전 숫자 확인 → ③ 표의 버전 이상으로 업데이트, 이 세 단계면 충분해요. 개발자가 아니라면 IT팀에 한 줄 물어보는 것만으로도 회사의 코드 창고를 지키는 데 힘을 보탤 수 있어요. 🔐