GitLab tự cài dính lỗi 10 điểm, người lạ chạy được mã trên máy chủ
Lỗ hổng CVE-2026-110264 cho phép người không có tài khoản chạy mã trên GitLab tự cài, có từ bản 7.0 năm 2014. Kiểm tra phiên bản, nâng lên bản vá ngày 21/10, chưa nâng được thì đóng GitLab khỏi internet.
Xem nhanh trong 1 phút
Con VPS chạy GitLab của team nhỏ thường giữ nhiều bí mật hơn cả máy production. Trong biến CI/CD có key cloud, key API AI, mật khẩu database. Có deploy key, token của runner, khóa SSH để đẩy code lên server. Ngày 21/10, GitLab công bố một lỗ hổng cho phép người không cần tài khoản chạy mã trên chính máy chủ đó, điểm CVSS 10, mức cao nhất của thang đo.
Lỗi mang mã CVE-2026-110264 và có mặt từ GitLab 7.0, bản ra năm 2014. Nói cách khác, mọi GitLab tự cài chưa lên bản vá hôm 21/10 đều dính, dù bạn dựng nó từ năm nào.
Lỗi nằm ở đâu
Theo thông báo của GitLab, khi máy chủ biên dịch một biểu thức chính quy (regex) được chế sẵn, một phép tính số nguyên bị tràn. Trong “một số điều kiện”, người chưa đăng nhập lợi dụng được chỗ này để chạy mã tùy ý trên máy chủ GitLab.
Những điều kiện đó là gì thì GitLab chưa nói. Theo thông lệ, chi tiết kỹ thuật của các lỗi bảo mật chỉ được mở ra khoảng 90 ngày sau khi vá. Manh mối duy nhất nằm ở hai quy tắc phát hiện mà GitLab phát hành kèm bản vá: một quy tắc bắt trường hợp worker chết vì Onigmo (bộ máy regex của Ruby, ngôn ngữ GitLab dùng), một quy tắc bắt lỗi dồn dập khi hiển thị file Org mode. Cùng đợt, GitLab cũng cập nhật bản vá lỗi regex cho Ruby 3.3, 3.4 và 4.0 đi kèm. Đường khai thác cụ thể thì chưa nguồn nào xác nhận.
Người báo lỗi là nhà nghiên cứu joaxcar, qua chương trình săn lỗi của GitLab trên HackerOne.
Lỗi 10 điểm thứ hai trong tháng
Hôm 12/10, GitLab đã vá CVE-2026-97229, cũng 10 điểm, cũng tràn số nguyên lúc biên dịch regex, nhưng nằm ở phần đọc cấu hình CI/CD và chỉ ảnh hưởng ba nhánh 19.2, 19.3, 19.4 (bản vá 19.2.8, 19.3.5, 19.4.2).
Rapid7 đã dựng được mã khai thác cho lỗi ngày 12/10. Trên image Docker chính thức gitlab-ce 19.4.1, họ chạy được lệnh dưới quyền user git của GitLab, còn với bản 19.4.2 thì không. Điều kiện của họ là đẩy được một file .gitlab-ci.yml độc vào một dự án công khai, việc rất dễ nếu GitLab của bạn cho người lạ tự đăng ký và tạo dự án.
Cần tách bạch hai chuyện. Bản khai thác của Rapid7 là cho lỗi ngày 12/10, không phải CVE-2026-110264. Với lỗi mới, tới sáng 22/10:
chưa có mã khai thác công khai
GitLab chưa ghi nhận vụ khai thác thật nào
lỗi chưa có trong danh sách KEV (lỗ hổng đang bị khai thác) của CISA, bản cập nhật ngày 21/10
Có điều hai lỗi cùng nằm ở khâu biên dịch regex, và lỗi trước đã bị dựng mã khai thác chỉ trong vài ngày. Mình không nghĩ lỗi mới sẽ yên lâu. Đây là nhận định của mình, không phải thông tin từ nguồn.
Còn một điểm dễ nhầm: ai đã lên 19.4.2 hồi 12/10 vẫn phải lên tiếp 19.4.3.
Ai bị ảnh hưởng
GitLab CE và EE tự cài, dù cài bằng gói Omnibus, Docker hay Helm, mọi bản từ 7.0 chưa tới bản vá. GitLab.com đã được vá từ trước khi công bố. GitLab Dedicated chạy từ 19.3.5-internal0 hoặc 19.4.2-internal0 trở lên cũng không phải làm gì.
Bản vá theo từng nhánh, theo thông báo chính thức ngày 21/10:
Nhánh đang chạy
Lên tối thiểu bản
19.5
19.5.1
19.4
19.4.3
19.3
19.3.6
19.2
19.2.9
19.1
19.1.9
19.0
19.0.10
18.11
18.11.13
Đang chạy bản cũ hơn 18.11 thì không có bản vá riêng, phải nâng lên ít nhất 18.11.13.
Xem GitLab của bạn đang chạy bản nào
Cài bằng gói Omnibus (.deb, .rpm), gõ trên máy chủ:
sudo head -1 /opt/gitlab/version-manifest.txt
Chạy bằng Docker, thay gitlab bằng tên container của bạn:
Hoặc đăng nhập bằng tài khoản quản trị rồi mở trang /help, số phiên bản nằm ở đầu trang.
Nâng cấp
Sao lưu trước bằng sudo gitlab-backup create. Bản sao lưu này không chứa /etc/gitlab/gitlab.rb và /etc/gitlab/gitlab-secrets.json, nên chép riêng hai file đó ra chỗ an toàn. Mất file secrets thì khôi phục xong cũng không giải mã được biến CI/CD.
Omnibus trên Ubuntu, Debian:
sudo apt-get updatesudo apt-get install gitlab-ce # bản EE thì thay bằng gitlab-ee
Lệnh trên đưa máy lên bản mới nhất. Muốn ở lại nhánh đang dùng thì ghi rõ bản, ví dụ sudo apt-get install gitlab-ce=19.4.3-ce.0.
Docker Compose: sửa dòng image: thành bản vá, ví dụ gitlab/gitlab-ce:19.5.1-ce.0, rồi chạy:
docker compose pulldocker compose up -d
Ba sai lầm thường gặp:
GitLab không cho nhảy cóc. Máy đang ở 15.x, 16.x mà muốn lên 19.x thì phải đi qua các bản dừng bắt buộc (tra bằng công cụ Upgrade Path của GitLab), mỗi bước chờ background migration chạy xong. Máy càng cũ càng mất thời gian, nên làm mục chặn mạng bên dưới trước.
Bản vá có migration database. Cài một máy thì GitLab sẽ ngừng phục vụ trong lúc migrate, báo team trước khi bấm.
Nâng xong, chạy lại lệnh xem phiên bản. Đừng tin vào việc lệnh cài chạy không báo lỗi.
Chưa nâng được thì đóng cửa trước
GitLab không đưa ra cách giảm thiểu tạm thời nào cho lỗi này. Cách chắc nhất là không để người lạ chạm được vào GitLab cho tới khi vá xong.
Chặn cổng web (80, 443) và cổng SSH của git, chỉ mở cho IP văn phòng, IP của runner, hoặc chỉ cho vào qua VPN như WireGuard, Tailscale. Làm việc này ở firewall của nhà cung cấp VPS (security group, cloud firewall) sẽ chắc hơn ufw: GitLab chạy trong Docker thì cổng do Docker mở thường đi vòng qua luật ufw, chặn bằng ufw tưởng đã đóng mà vẫn mở.
Nhớ để runner vẫn gọi được GitLab, không thì pipeline đứng hết.
Thêm hai việc trong Admin Area, Settings, General: tắt tự đăng ký tài khoản (mục Sign-up restrictions) và hạn chế dự án công khai (mục Visibility and access controls). Hai việc này chặn đúng đường mà Rapid7 dùng cho lỗi ngày 12/10. Với lỗi mới, đường khai thác chưa rõ nên chúng chỉ giảm bớt rủi ro, không thay được bản vá.
Nếu nghi máy đã bị vào
GitLab bị chiếm thì coi như mọi thứ nó giữ đều đã lộ. Thu hồi và tạo lại:
biến CI/CD ở cả cấp instance, group và project, nhất là key cloud, key API AI, mật khẩu database production
deploy key, khóa SSH mà pipeline dùng để vào server
personal access token, token của project và group
token của runner, và khóa trên chính máy runner nếu runner nằm chung máy với GitLab
secret của webhook và các tích hợp như registry, Slack
Dấu hiệu nên xem lại: worker của GitLab chết bất thường trong log (sudo gitlab-ctl tail), lỗi 500 dồn dập khi mở file .org, tài khoản lạ, khóa SSH lạ, dự án hay pipeline mà không ai trong team tạo.
GitLab tự cài hay là kiểu máy dựng một lần rồi để đó cả năm. Lần này đáng để mở nó ra xem lại.
Team bạn đang chạy GitLab bản nào, tự cài hay dùng GitLab.com? Nâng cấp có vướng bản dừng bắt buộc không? Kể trong cộng đồng Vibe Code & Bảo Mật nhé.
GitLablỗ hổngmáy chủ/anh/web/gitlab-lo-hong-10-diem-480.webpGitLab · lỗ hổng · máy chủ
GitLab tu cai dinh loi 10 diem, nguoi la chay duoc ma tren may chu Lo hong CVE-2026-110264 cho phep nguoi khong co tai khoan chay ma tren GitLab tu cai, co tu ban 7.0 nam 2014. Kiem tra phien ban, nang len ban va ngay 21/10, chua nang duoc thi dong GitLab khoi internet. GitLab lo hong may chu Con VPS chay GitLab cua team nho thuong giu nhieu bi mat hon ca may production. Trong bien CI/CD co key cloud, key API AI, mat khau database. Co deploy key, token cua runner, khoa SSH de day code len server. Ngay 21/10, GitLab cong bo mot lo hong cho phep nguoi **khong can tai khoan** chay ma tren chinh may chu do, diem CVSS 10, muc cao nhat cua thang do.
Loi mang ma CVE-2026-110264 va co mat tu GitLab 7.0, ban ra nam 2014. Noi cach khac, moi GitLab tu cai chua len ban va hom 21/10 deu dinh, du ban dung no tu nam nao.

## Loi nam o dau
Theo thong bao cua GitLab, khi may chu bien dich mot bieu thuc chinh quy (regex) duoc che san, mot phep tinh so nguyen bi tran. Trong "mot so dieu kien", nguoi chua dang nhap loi dung duoc cho nay de chay ma tuy y tren may chu GitLab.
Nhung dieu kien do la gi thi GitLab chua noi. Theo thong le, chi tiet ky thuat cua cac loi bao mat chi duoc mo ra khoang 90 ngay sau khi va. Manh moi duy nhat nam o hai quy tac phat hien ma GitLab phat hanh kem ban va: mot quy tac bat truong hop worker chet vi Onigmo (bo may regex cua Ruby, ngon ngu GitLab dung), mot quy tac bat loi don dap khi hien thi file Org mode. Cung dot, GitLab cung cap nhat ban va loi regex cho Ruby 3.3, 3.4 va 4.0 di kem. Duong khai thac cu the thi chua nguon nao xac nhan.
Nguoi bao loi la nha nghien cuu joaxcar, qua chuong trinh san loi cua GitLab tren HackerOne.
## Loi 10 diem thu hai trong thang
Hom 12/10, GitLab da va CVE-2026-97229, cung 10 diem, cung tran so nguyen luc bien dich regex, nhung nam o phan doc cau hinh CI/CD va chi anh huong ba nhanh 19.2, 19.3, 19.4 (ban va 19.2.8, 19.3.5, 19.4.2).
Rapid7 da dung duoc ma khai thac cho loi ngay 12/10. Tren image Docker chinh thuc gitlab-ce 19.4.1, ho chay duoc lenh duoi quyen user `git` cua GitLab, con voi ban 19.4.2 thi khong. Dieu kien cua ho la day duoc mot file `.gitlab-ci.yml` doc vao mot du an cong khai, viec rat de neu GitLab cua ban cho nguoi la tu dang ky va tao du an.
Can tach bach hai chuyen. Ban khai thac cua Rapid7 la cho loi ngay 12/10, **khong phai** CVE-2026-110264. Voi loi moi, toi sang 22/10:
- chua co ma khai thac cong khai
- GitLab chua ghi nhan vu khai thac that nao
- loi chua co trong danh sach KEV (lo hong dang bi khai thac) cua CISA, ban cap nhat ngay 21/10
Co dieu hai loi cung nam o khau bien dich regex, va loi truoc da bi dung ma khai thac chi trong vai ngay. Minh khong nghi loi moi se yen lau. Day la nhan dinh cua minh, khong phai thong tin tu nguon.
Con mot diem de nham: ai da len 19.4.2 hoi 12/10 van phai len tiep 19.4.3.
## Ai bi anh huong
GitLab CE va EE tu cai, du cai bang goi Omnibus, Docker hay Helm, moi ban tu 7.0 chua toi ban va. GitLab.com da duoc va tu truoc khi cong bo. GitLab Dedicated chay tu 19.3.5-internal0 hoac 19.4.2-internal0 tro len cung khong phai lam gi.
Ban va theo tung nhanh, theo thong bao chinh thuc ngay 21/10:
| Nhanh dang chay | Len toi thieu ban |
|---|---|
| 19.5 | 19.5.1 |
| 19.4 | 19.4.3 |
| 19.3 | 19.3.6 |
| 19.2 | 19.2.9 |
| 19.1 | 19.1.9 |
| 19.0 | 19.0.10 |
| 18.11 | 18.11.13 |
Dang chay ban cu hon 18.11 thi khong co ban va rieng, phai nang len it nhat 18.11.13.
## Xem GitLab cua ban dang chay ban nao
Cai bang goi Omnibus (.deb, .rpm), go tren may chu:
```bash
sudo head -1 /opt/gitlab/version-manifest.txt
```
Chay bang Docker, thay `gitlab` bang ten container cua ban:
```bash
docker exec gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
```
Hoac dang nhap bang tai khoan quan tri roi mo trang `/help`, so phien ban nam o dau trang.
## Nang cap
Sao luu truoc bang `sudo gitlab-backup create`. Ban sao luu nay **khong** chua `/etc/gitlab/gitlab.rb` va `/etc/gitlab/gitlab-secrets.json`, nen chep rieng hai file do ra cho an toan. Mat file secrets thi khoi phuc xong cung khong giai ma duoc bien CI/CD.
Omnibus tren Ubuntu, Debian:
```bash
sudo apt-get update
sudo apt-get install gitlab-ce # ban EE thi thay bang gitlab-ee
```
Lenh tren dua may len ban moi nhat. Muon o lai nhanh dang dung thi ghi ro ban, vi du `sudo apt-get install gitlab-ce=19.4.3-ce.0`.
Docker Compose: sua dong `image:` thanh ban va, vi du `gitlab/gitlab-ce:19.5.1-ce.0`, roi chay:
```bash
docker compose pull
docker compose up -d
```
Ba sai lam thuong gap:
1. GitLab khong cho nhay coc. May dang o 15.x, 16.x ma muon len 19.x thi phai di qua cac ban dung bat buoc (tra bang cong cu Upgrade Path cua GitLab), moi buoc cho background migration chay xong. May cang cu cang mat thoi gian, nen lam muc chan mang ben duoi truoc.
2. Ban va co migration database. Cai mot may thi GitLab se ngung phuc vu trong luc migrate, bao team truoc khi bam.
3. Nang xong, chay lai lenh xem phien ban. Dung tin vao viec lenh cai chay khong bao loi.
## Chua nang duoc thi dong cua truoc
GitLab khong dua ra cach giam thieu tam thoi nao cho loi nay. Cach chac nhat la khong de nguoi la cham duoc vao GitLab cho toi khi va xong.
Chan cong web (80, 443) va cong SSH cua git, chi mo cho IP van phong, IP cua runner, hoac chi cho vao qua VPN nhu WireGuard, Tailscale. Lam viec nay o **firewall cua nha cung cap VPS** (security group, cloud firewall) se chac hon ufw: GitLab chay trong Docker thi cong do Docker mo thuong di vong qua luat ufw, chan bang ufw tuong da dong ma van mo.
Nho de runner van goi duoc GitLab, khong thi pipeline dung het.
Them hai viec trong Admin Area, Settings, General: tat tu dang ky tai khoan (muc Sign-up restrictions) va han che du an cong khai (muc Visibility and access controls). Hai viec nay chan dung duong ma Rapid7 dung cho loi ngay 12/10. Voi loi moi, duong khai thac chua ro nen chung chi giam bot rui ro, khong thay duoc ban va.
## Neu nghi may da bi vao
GitLab bi chiem thi coi nhu moi thu no giu deu da lo. Thu hoi va tao lai:
- bien CI/CD o ca cap instance, group va project, nhat la key cloud, key API AI, mat khau database production
- deploy key, khoa SSH ma pipeline dung de vao server
- personal access token, token cua project va group
- token cua runner, va khoa tren chinh may runner neu runner nam chung may voi GitLab
- secret cua webhook va cac tich hop nhu registry, Slack
Dau hieu nen xem lai: worker cua GitLab chet bat thuong trong log (`sudo gitlab-ctl tail`), loi 500 don dap khi mo file `.org`, tai khoan la, khoa SSH la, du an hay pipeline ma khong ai trong team tao.
GitLab tu cai hay la kieu may dung mot lan roi de do ca nam. Lan nay dang de mo no ra xem lai.
---
Team ban dang chay GitLab ban nao, tu cai hay dung GitLab.com? Nang cap co vuong ban dung bat buoc khong? Ke trong [cong dong Vibe Code & Bao Mat](https://www.facebook.com/groups/1867387324580254) nhe.
## Nguon
- [GitLab Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13](https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-5-1-released/), GitLab, 21/10/2026
- [GitLab Patch Release: 19.4.2, 19.3.5, 19.2.8](https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-4-2-released/), GitLab, 12/10/2026 (CVE-2026-97229)
- [CVE-2026-97229: Critical Unauthenticated Remote Code Execution in GitLab](https://www.rapid7.com/blog/post/etr-cve-2026-97229-critical-unauthenticated-remote-code-execution-in-gitlab/), Rapid7
- [Known Exploited Vulnerabilities Catalog](https://www.cisa.gov/known-exploited-vulnerabilities-catalog), CISA, ban 21/10/2026
- [GitLab Critical Patch Release: CVE-2026-110264](https://securityonline.info/gitlab-critical-patch-release-cve-2026-110264/), SecurityOnline
- [12-Year-Old GitLab Vulnerability Allows Remote Code Execution](https://cybersecuritynews.com/12-year-old-gitlab-vulnerability/), Cyber Security News