Gitea RCE CVE-2026-60004: Vulnerability Kritis yang Aktif Dieksploitasi
TL;DR: Jika kamu menjalankan Gitea versi 1.17 sampai 1.27.0, sekarang saatnya panik (tapi tenang). Ada vulnerability kritis yang memungkinkan attacker menjalankan kode arbitrer di server kamu — dan ini sudah aktif dieksploitasi di dunia nyata. Update ke 1.27.1 sekarang, atau baca dulu analisis lengkapnya di bawah.
Daftar Isi
- Ringkasan Kejadian
- CVE Details: Angka, Skor, dan Artinya
- Versi yang Terdampak
- Modus Operandi: Bagaimana Serangan Terjadi
- Kasus Nyata: Serangan di Dunia Nyata
- Timeline Kejadian
- Yang Perlu Dilakukan Sekarang
- Hardening Configuration Gitea
- Pelajaran yang Bisa Diambil
- Referensi dan Tautan
Ringkasan Kejadian
Pada pertengahan Agustus 2026, komunitas keamanan siber dikejutkan oleh laporan mengenai vulnerability kritis pada Gitea — platform hosting Git self-hosted yang populer di kalangan developer dan organisasi yang mengedepankan privasi data.
CVE-2026-60004, dengan skor CVSS 9.8 (Critical), memungkinkan attacker jarak jauh (Remote Code Execution / RCE) untuk menjalankan perintah arbitrer di server yang menjalankan Gitea. Yang membuat situasi semakin serius: vulnerability ini sudah aktif dieksploitasi dalam serangan nyata di lapangan, dan telah masuk ke dalam CISA Known Exploited Vulnerabilities (KEV) catalog.
Dalam blog post ini, kita akan membahas secara mendalam apa yang sebenarnya terjadi, bagaimana serangan ini bekerja, siapa yang terdampak, dan yang paling penting — apa langkah mitigasi yang harus kamu ambil.
CVE Details: Angka, Skor, dan Artinya
Mari kita bedah informasi teknis dari vulnerability ini:
| Field | Detail |
|---|---|
| CVE ID | CVE-2026-60004 |
| CVSS Score | 9.8 / 10.0 (Critical) |
| CVSS Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Jenis Vulnerability | Remote Code Execution (RCE) |
| Affected Component | Diff/Patch endpoint |
| Affected Versions | Gitea 1.17.x — 1.27.0 |
| Fixed Version | Gitea 1.27.1 |
| CISA KEV | Ya — wajib patch segera |
| Penemunya | Shai rod (NightRang3r) |
Apa Arti CVSS 9.8?
Skor CVSS 9.8 artinya vulnerability ini berada di tier paling berbahaya. Mari kita breakdown vektor serangannya:
- AV:N (Attack Vector: Network) — Serangan dilakukan dari jarak jauh, lewat jaringan. Tidak perlu akses fisik atau local.
- AC:L (Attack Complexity: Low) — Tidak ada kondisi khusus yang rumit yang harus terpenuhi. Serangan relatif mudah dilakukan.
- PR:N (Privileges Required: None) — Tidak perlu autentikasi apa pun. Attacker tidak perlu punya akun di Gitea (meskipun dalam praktiknya, attacker perlu registrasi akun untuk mengeksploitasi ini — lebih detail di bagian modus operandi).
- UI:N (User Interaction: None) — Tidak perlu interaksi dari user lain. Attacker bisa menjalankan serangan secara mandiri.
- S:U / C:H / I:H / A:H — Confideniality, Integrity, dan Availability semuanya terdampak High. Artinya attacker bisa membaca semua data, memodifikasi data, dan menjatuhkan seluruh layanan.
Intinya: ini adalah skor CVSS tertinggi yang hampir sempurna. Wajib patch, tidak ada alasan untuk menunda.
Versi yang Terdampak
Gitea Versions Affected
Vulnerability ini mempengaruhi semua Gitea dari versi 1.17.x hingga 1.27.0. Ini artinya rentang versi yang terdampak cukup lebar — banyak instalasi Gitea yang sudah berjalan cukup lama kemungkinan besar masih menggunakan versi vulnerable.
Gitea Versions Safe
- Gitea >= 1.27.1 — Sudah aman dari CVE-2026-60004.
Cara Cek Versi Gitea Kamu
Kalau kamu tidak yakin versi Gitea yang berjalan, ada beberapa cara mengeceknya:
Melalui Web Interface:
- Login ke Gitea → klik ikon profil → scroll ke bawah → lihat versi di footer.
Melalui Command Line:
# Jalankan perintah berikut di server Gitea kamu
gitea --version
# Atau cek dari binary yang sedang running
/path/to/gitea --versionMelalui API:
# GET versi Gitea via API publik
curl -s http://your-gitea-instance/api/v1/version | jq .Kalau versi kamu masih di bawah 1.27.1, stop reading dan update sekarang. Artikel ini akan tetap ada kalau kamu mau baca analisisnya nanti.
Modus Operandi: Bagaimana Serangan Terjadi
Ini bagian yang paling menarik dari sudut pandang teknis. Mari kita bedah step-by-step bagaimana seorang attacker bisa mengeksploitasi CVE-2026-60004.
Langkah 1: Registrasi Akun
Attacker memulai dengan mendaftar akun baru di Gitea instance yang menjadi target. Di banyak instalasi Gitea, registrasi akun baru terbuka untuk siapa saja (fitur open registration). Ini adalah syarat pertama untuk memulai serangan.
Langkah 2: Membuat Repository Baru
Setelah berhasil membuat akun, attacker membuat repository baru. Repository ini akan digunakan sebagai vehicle untuk membawa payload berbahaya.
Langkah 3: Mempersiapkan Payload
Attacker menyiapkan payload khusus yang dirancang untuk mengeksploitasi vulnerability di diff/patch endpoint. Endpoint ini pada dasarnya memproses diff antar file — dan di sinilah kelemahan tersembunyi.
Vulnerability terletak pada cara Gitea memproses data patch/diff. Ada insufficient sanitization atau improper validation pada input yang diterima oleh endpoint ini, yang memungkinkan attacker untuk menyuntikkan kode berbahaya ke dalam proses patching.
Langkah 4: Trigger Exploit via HTTPS
Dengan payload yang sudah siap, attacker mengirim request HTTP (HTTPS) ke endpoint diff/patch yang vulnerable. Request ini memicu vulnerability dan pada akhirnya memungkinkan arbitrary command execution di server.
Yang menarik — serangan ini sepenuhnya dilakukan lewat HTTP request standar. Tidak ada exploit chain yang rumit, tidak perlu primitive yang banyak. Hanya registrasi akun, buat repo, kirim payload. Clean and simple.
Diagram Alur Serangan
[Attacker]
│
▼
[1] Register akun di Gitea ─── Open registration harus aktif
│
▼
[2] Buat repository baru ─── Bisa repo apa saja
│
▼
[3] Siapkan payload ─── Crafted diff/patch data
│
▼
[4] Kirim request ke /diff endpoint ─── Via HTTPS
│
▼
[5] RCE achieved! ─── Kode arbitrer berjalan di server
│
▼
[6] Attacker fully controls server ─── Bisa install miner, reverse shell, dllKenapa Ini Berbahaya?
- No authentication required — Meskipun attacker perlu registrasi, mereka tidak memerlukan izin khusus atau token admin.
- Single-step exploitation — Tidak ada exploit chain yang kompleks. Satu request sudah cukup.
- Network-accessible — Bisa dieksploitasi dari mana saja selama bisa mengakses Gitea instance via HTTP.
- High impact — Privilege escalation ke full system control.
Kasus Nyata: Serangan di Dunia Nyata
Bitcoin Mining di Server Korbannya
Vulnerability ini bukan sekadar teori. Dalam kasus serangan nyata yang dilaporkan, attacker berhasil mengeksekusi cryptocurrency miner di server Gitea korban. Berikut kronologi serangan yang terungkap:
Target: Instalasi Gitea yang menjalankan versi vulnerable dengan registrasi terbuka.
Alur Serangan:
- Attacker membuat akun di Gitea target.
- Membuat repository dan mengunggah file yang memicu vulnerability di endpoint diff/patch.
- Kode berbahaya berjalan di server — men-download dan menjalankan XMRig (cryptocurrency miner untuk Monero).
- Miner berjalan di background, menggunakan CPU server untuk menambang cryptocurrency.
- Server menjadi lambat, CPU usage melonjak ke 100%.
Dampak:
- Biaya infrastruktur melonjak — CPU usage 100% artinya biaya cloud computing membengkak.
- Performa layanan menurun — Gitea menjadi sangat lambat atau tidak responsif.
- Potensi pelanggaran data — Attacker memiliki akses penuh ke server, artinya semua data (source code, credential, database) berpotensi terekspos.
- Crypto wallet korban juga berisika — Jika ada file wallet atau credential di server, attacker bisa mengambilnya.
Siapa yang Paling Berisiko?
Berdasarkan kasus serangan ini, target utamanya adalah:
- Gitea dengan registrasi terbuka — Ini adalah syarat utama untuk eksploitasi.
- Gitea yang ter-expose ke internet — Jika hanya bisa diakses dari internal network, risiko lebih rendah.
- Server dengan sedikit monitoring — Kalau tidak ada alert untuk CPU spike atau proses mencurigakan, serangan bisa berjalan berhari-hari tanpa terdeteksi.
Timeline Kejadian
Berikut timeline lengkap dari disclosure hingga eksploitasi:
| Tanggal | Kejadian |
|---|---|
| Awal Juli 2026 | Shai rod (NightRang3r) menemukan vulnerability di endpoint diff/patch Gitea. |
| ~10 Juli 2026 | Responsible disclosure dilakukan ke tim Gitea melalui jalur yang seharusnya. |
| ~15 Juli 2026 | Tim Gitea mengkonfirmasi vulnerability dan mulai menyiapkan patch. |
| ~20 Juli 2026 | Patch mulai dikembangkan dan diuji di Gitea development branch. |
| Awal Agustus 2026 | Gitea 1.27.1 dirilis dengan fix untuk CVE-2026-60004. |
| ~5 Agustus 2026 | Advisory resmi diterbitkan. CISA KEV catalog diperbarui. |
| ~10 Agustus 2026 | Exploit code mulai bocor / tersedia di publik. |
| ~15 Agustus 2026 | Eksploitasi massal dimulai — kasus cryptocurrency mining dilaporkan di beberapa organisasi. |
| ~20 Agustus 2026 | CISA menerbitkan Binding Operational Directive (BOD) untuk patch CVE-2026-60004. |
| 26 Agustus 2026 | Kamu membaca blog post ini. |
Perhatikan Gap antara Patch dan Eksploitasi
Ada jendela waktu beberapa minggu antara rilis patch (awal Agustus) dan dimulainya eksploitasi massal (pertengahan Agustus). Ini adalah window of opportunity yang kritis. Banyak organisasi yang tidak langsung update setelah patch dirilis, dan attacker memanfaatkan jendela waktu ini untuk menyerang instalasi yang belum di-patch.
Pelajaran penting: Jangan menunda patch. Serangan tidak menunggu kamu selesai jalan-jalan.
Yang Perlu Dilakukan Sekarang
Prioritas 1: Update Gitea (KRITIS)
Ini bukan pilihan, ini kewajiban. Update Gitea ke versi 1.27.1 atau lebih baru sekarang juga.
# Backup dulu (WAJIB!)
cp -r /path/to/gitea /path/to/gitea-backup-$(date +%Y%m%d)
# Download versi terbaru
wget https://dl.gitea.com/gitea/1.27.1/gitea-1.27.1-linux-amd64
# Stop service Gitea
systemctl stop gitea
# Replace binary
cp gitea-1.27.1-linux-amd64 /path/to/gitea/gitea
chmod +x /path/to/gitea/gitea
# Start service
systemctl start gitea
# Verify version
gitea --versionPrioritas 2: Disable Open Registration
Jika Gitea kamu tidak membutuhkan registrasi publik, matikan sekarang. Ini menghilangkan vector serangan paling umum.
Edit app.ini (biasanya di /etc/gitea/app.ini):
[service]
DISABLE_REGISTRATION = trueAtau, jika kamu tetap ingin registrasi aktif tetapi lebih terkendali:
[service]
DISABLE_REGISTRATION = false
REQUIRE_EMAIL_CONFIRMATION = trueRestart Gitea setelah mengubah konfigurasi:
systemctl restart giteaPrioritas 3: Review Akun yang Ada
Setelah patch dan disable registrasi, audit akun-akun yang ada di Gitea kamu:
- Cek apakah ada akun asing yang baru dibuat dalam beberapa hari terakhir.
- Periksa aktivitas repository yang mencurigakan (repository yang isinya aneh atau payload yang tidak dikenal).
- Review log akses Gitea untuk anomali.
# Contoh: cek log Gitea untuk aktivitas mencurigakan
grep -i "diff\|patch" /path/to/gitea/log/gitea.log | tail -50Prioritas 4: Monitor Indicators of Compromise (IoC)
Untuk mengecek apakah server kamu sudah terkena serangan:
# Cek proses cryptocurrency miner
ps aux | grep -i "xmr\|minergate\|miner\|coin"
# Cek network connections yang mencurigakan
netstat -tlnp | grep -v "gitea\|sshd\|nginx\|apache"
# Cek file binary yang tidak dikenal di /tmp atau /var/tmp
find /tmp /var/tmp -type f -executable -ls
# Cek scheduled tasks yang mencurigakan
crontab -l
ls -la /etc/cron.d/Prioritas 5: Jika Sudah Terkena
Kalau kamu curiga server sudah dieksploitasi, jangan panik tapi jangan lambat:
- Isolasi server dari network (tapi jangan matikan — butuh forensik).
- Preserve logs — jangan hapus apapun. Backup semua log.
- Scan seluruh sistem dengan tools keamanan.
- Rotate semua credential yang pernah ada di server itu.
- Rebuild dari clean state — setelah forensik selesai, rebuild server dari awal. Jangan hanya hapus file yang mencurigakan.
- Report insiden sesuai kebijakan organisasi kamu.
Hardening Configuration Gitea
Setelah patch CVE-2026-60004, ada baiknya melakukan hardening menyeluruh pada instalasi Gitea kamu. Berikut konfigurasi yang direkomendasikan:
1. Disable Registrasi atau Gunakan Email Confirmation
# /etc/gitea/app.ini
[service]
; Pilihan A: Matikan registrasi total
DISABLE_REGISTRATION = true
; Pilihan B: Aktifkan registrasi tapi wajib email confirmation
DISABLE_REGISTRATION = false
REQUIRE_EMAIL_CONFIRMATION = true2. Batasi Akses dengan Reverse Proxy
Gunakan Nginx atau Caddy sebagai reverse proxy untuk Gitea dengan aturan ketat:
# /etc/nginx/conf.d/gitea.conf
server {
listen 443 ssl http2;
server_name git.example.com;
# SSL Configuration (wajib)
ssl_certificate /etc/ssl/certs/gitea.pem;
ssl_certificate_key /etc/ssl/private/gitea.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# Rate limiting — batasi request untuk mitigasi abuse
limit_req zone=gitea burst=20 nodelay;
limit_conn gitea 50;
# Security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'";
add_header Referrer-Policy "strict-origin-when-cross-origin";
# Proxy ke Gitea
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Block akses ke API dari IP yang tidak dikenal (opsional)
location /api/v1 {
allow 10.0.0.0/8;
allow 172.16.0.0/12;
allow 192.168.0.0/16;
deny all;
proxy_pass http://127.0.0.1:3000;
}
}
# Rate limiting zone
# Tambahkan di http block utama nginx.conf:
# limit_req_zone $binary_remote_addr zone=gitea:10m rate=10r/s;
# limit_conn_zone $binary_remote_addr zone=gitea:10m;3. Firewall Rules
# UFW — hanya buka port SSH dan HTTPS
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 443/tcp
ufw enable
# Atau iptables — limit rate untuk port HTTPS
iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j DROP
iptables -A INPUT -p tcp --dport 443 -m hashlimit --hashlimit-above 50/sec --hashlimit-mode srcip -j DROP4. File Permission
# Pastikan binary Gitea tidak bisa dimodifikasi oleh user lain
chown root:root /path/to/gitea/gitea
chmod 755 /path/to/gitea/gitea
# Pastikan direktori data Gitea hanya bisa diakses oleh Gitea
chown -R git:git /path/to/gitea-data
chmod 750 /path/to/gitea-data5. Audit Logging
# /etc/gitea/app.ini
[log]
; Aktifkan logging level yang cukup detail
LEVEL = Info
MODE = file
; Atau untuk audit logging lebih detail:
LEVEL = Warn6. Dashboard dan Repository Settings
Melalui web interface:
- Site Administration → Authentication Source → Pastikan hanya SMTP atau LDAP yang kamu butuhkan. Nonaktifkan yang tidak perlu.
- Site Administration → Configuration → Disable API access jika tidak diperlukan.
- Repository Settings → Batasi siapa yang bisa membuat repository baru.
- User Settings → Nonaktifkan akses untuk user yang tidak aktif.
Pelajaran yang Bisa Diambil
1. Self-hosted ≠ Self-secure
Banyak yang mengira self-hosted berarti lebih aman. Kenyataannya, self-hosted juga berarti self-responsibility. Kalau vendor tidak cepat merilis patch, atau kamu tidak cepat update, ya sudah — masalah di tangan kamu sendiri.
2. Open Registration adalah Attack Surface
Ini pelajaran klasik yang terus berulang: semakin terbuka akses ke layanan kamu, semakin besar risikonya. Open registration di Gitea (atau platform apapun) adalah undangan bagi attacker untuk bermain-main di infrastruktur kamu.
Best practice: Nonaktifkan registrasi jika tidak benar-benar diperlukan. Jika harus aktif, gunakan email verification dan human verification (captcha).
3. Patch Management Adalah Kebutuhan, Bukan Pilihan
Organisasi yang sudah mature dalam hal keamanan memiliki automated patch management pipeline. Kalau kamu masih mengandalkan manusia untuk ingat update, kamu sudah kalah.
Pertimbangkan untuk:
- Subscribe ke security advisory dari vendor software yang kamu gunakan.
- Gunakan tools monitoring seperti Dependabot (untuk dependency) atau Trivy (untuk container images).
- Setup automated testing pipeline untuk patch update sebelum deploy ke production.
4. Monitoring yang Baik = Deteksi Lebih Cepat
Serangan cryptocurrency mining sangat mudah dideteksi dengan monitoring yang tepat:
- CPU usage alert — Alert ketika CPU usage > 80% secara konsisten.
- Process monitoring — Alert untuk proses baru yang tidak dikenal.
- Network monitoring — Alert untuk koneksi outbound ke mining pools.
- Log aggregation — Centralize semua log untuk analisis.
Kalau kamu menggunakan Prometheus + Grafana atau monitoring stack lainnya, setup alerting rules untuk anomali ini. Deteksi dini = response lebih cepat = damage lebih kecil.
5. Defense in Depth
Jangan hanya mengandalkan satu lapis pertahanan. Strategi yang baik:
- Layer 1: Update software tepat waktu (patch management).
- Layer 2: Hardening configuration (disable fitur yang tidak perlu).
- Layer 3: Network security (firewall, rate limiting, reverse proxy).
- Layer 4: Monitoring dan alerting (deteksi anomali).
- Layer 5: Incident response plan (jika semua layer di atas gagal).
6. Responsible Disclosure Matters
Shai rod menemukan vulnerability ini dan melakukan responsible disclosure ke tim Gitea. Tanpa itu, vulnerability ini mungkin sudah dieksploitasi jauh lebih lama sebelum siapapun tahu. Kalau kamu menemukan vulnerability, disclose dengan bertanggung jawab.
Referensi dan Tautan
- NVD (National Vulnerability Database): CVE-2026-60004
- CISA KEV Catalog: Known Exploited Vulnerabilities
- Gitea Security Advisory: GHSA for CVE-2026-60004
- Gitea 1.27.1 Release Notes: Release Page
- Penemu: Shai rod (NightRang3r) — terima kasih atas responsible disclosure-nya!
Kesimpulan
CVE-2026-60004 adalah contoh sempurna mengapa security patch management sangat penting. Vulnerability kritis pada software yang menjalankan source code dan data sensitif organisasi — itu resep bencana kalau tidak ditangani dengan serius.
Kalau kamu menjalankan Gitea versi apapun di bawah 1.27.1: update sekarang. Nonaktifkan registrasi terbuka. Audit akun yang ada. Setup monitoring. Dan yang paling penting — jangan pernah meremehkan pentingnya patch management.
Stay safe, stay patched. 🔒
Blog post ini ditulis untuk tujuan edukasi keamanan siber. Selalu merujuk ke advisory resmi vendor untuk informasi paling up-to-date.
Tulisan lain
Rust Supply Chain Attack: Serangan ke Crate Populer di crates.io
· 8 menit baca
Next.js 16.3: Update Besar dengan Instant Navigations & 90% Less Memory
· 8 menit baca
Tips Productivity untuk Developer Remote
· 10 menit baca
Kenapa Saya Pilih Self-Hosting untuk Project Pribadi
· 9 menit baca