Bayangkan sebuah platform otomasi yang memegang kunci ke berbagai API, database, dan layanan internal perusahaan Anda tiba-tiba diambil alih sepenuhnya oleh penyerang. Inilah skenario mimpi buruk yang dibawa oleh CVE-2025–68613.
Pada 19 Desember 2025, kerentanan Remote Code Execution (RCE) dengan skor CVSS 9.9 (Critical) dipublikasikan untuk n8n, platform otomasi workflow open-source populer. Kerentanan ini memungkinkan penyerang yang terautentikasi untuk mengeksekusi perintah sistem (OS command) secara sewenang-wenang dengan privilege proses n8n tersebut.
Dalam artikel ini, kita akan membedah bagaimana kerentanan ini bekerja, melihat proof-of-concept (PoC) eksploitasinya, dan bagaimana cara mendeteksi serta memitigasinya.
Apa itu n8n?
n8n adalah alat otomasi workflow berbasis node yang memungkinkan pengguna menghubungkan berbagai aplikasi dan layanan untuk mengotomatisasi tugas. Pengguna membangun alur kerja (workflows) yang terdiri dari nodes, di mana setiap node melakukan tindakan tertentu seperti request API, pemrosesan data, atau mengirim email.
n8n dibangun di atas Node.js dan menggunakan JavaScript untuk logika internalnya. Fitur utamanya adalah Sistem Evaluasi Ekspresi, yang memproses kode dinamis dalam kurung kurawal ganda {{ }} sebagai JavaScript selama eksekusi workflow. Di sinilah letak celahnya.
Expression Injection
Kerentanan ini (CVE-2025–68613) berada pada sistem evaluasi ekspresi n8n. Versi yang terdampak adalah mulai dari 0.211.0 hingga 1.120.38.
Masalah intinya adalah kurangnya isolasi konteks (sandboxing) yang memadai saat memproses input pengguna. n8n mengevaluasi input yang dibungkus dalam {{ }} sebagai kode JavaScript tanpa validasi input yang cukup. Hal ini memungkinkan penyerang untuk "escape" dari sandbox evaluasi dan mengakses internal Node.js.
Praktek
Sebelumnya praktek pastikan anda sudah mempunyai docker compose untuk membangun home lab karena praktek kali ini berjalan di localhost atau dari komputer kita pribadi.
Download docker compose dari repo saya ini
Menggunakan Docker Compose
Panduan ini menjelaskan cara menyiapkan lingkungan Home Lab, menginstal Docker Compose, dan menjalankan project menggunakan file docker-compose.yml yang telah disediakan.
1. Prasyarat Sistem
Sebelum memulai instalasi, pastikan sistem memenuhi kebutuhan berikut:
- Sistem Operasi: Linux, Windows (via WSL2), atau macOS.
- Docker Engine sudah terpasang dan berjalan.
- Koneksi internet aktif untuk mengunduh image Docker.
- Port 5678 tidak sedang digunakan oleh aplikasi lain.
2. Verifikasi Docker Compose
Pastikan Docker Compose sudah tersedia (biasanya sudah terintegrasi dalam instalasi Docker Desktop atau Docker Engine terbaru). Verifikasi versi dengan perintah berikut:
docker compose versionJika output menampilkan versi (contoh: Docker Compose version v2.x.x), perangkat lunak siap digunakan.
3. Instalasi Lingkungan Lab
Lakukan kloning repositori project dan masuk ke direktori kerja menggunakan perintah berikut:
git clone https://github.com/Dlanang/homelab-CVE-2025-68613.git
cd homelab-CVE-2025-68613Pastikan file docker-compose.yml tersedia di dalam direktori tersebut sebelum melanjutkan.
4. Menjalankan Layanan
Jalankan container dalam mode detached (latar belakang) agar terminal tetap dapat digunakan:
docker compose up -dProses ini akan mengunduh image n8n, membuat jaringan virtual, dan menjalankan layanan. Untuk memverifikasi bahwa layanan berjalan dengan baik, gunakan perintah:
docker compose psPastikan status container menunjukkan "Up" atau "Running".
5. Akses Aplikasi
Setelah container berjalan, buka peramban web dan akses alamat berikut:
Jika instalasi berhasil, halaman konfigurasi awal n8n akan muncul. Lab siap digunakan untuk simulasi.
6. Manajemen
Berikut adalah perintah untuk mengelola siklus hidup container:
Menghentikan app (Stop) Menghentikan container tanpa menghapusnya:
docker compose stopMenghapus app (Down) Menghentikan dan menghapus container serta jaringan virtual:
docker compose downTroubleshooting
Jika muncul pesan kesalahan "Bind for 0.0.0.0:5678 failed: port is already allocated", artinya port 5678 sedang digunakan oleh aplikasi lain. Solusinya adalah mengubah pemetaan port pada file docker-compose.yml (misalnya menjadi 8080:5678) atau menghentikan aplikasi lain yang menggunakan port tersebut.
Langkah 1: Memulai Workflow Baru
- Klik tombol "Start from scratch" jika muncul di layar sambutan, atau buat workflow kosong baru dari menu editor.

Langkah 2: Menambahkan Trigger
Langkah pertama dalam workflow adalah menentukan pemicunya.
- Klik tombol "Add first step" (tanda plus) di tengah editor.
- Pada panel pencarian di sebelah kanan ("What triggers this workflow?"), ketik "Manual".
- Pilih "Manual Trigger" dari hasil pencarian. Node ini memungkinkan kita menjalankan eksploitasi hanya dengan mengklik tombol, tanpa menunggu pemicu eksternal.

Langkah 3: Menambahkan Node Target (Edit Fields)
Selanjutnya, kita akan menambahkan node tempat kita bisa menyuntikkan kode berbahaya.
- Klik tanda "+" (plus) kecil yang muncul di sebelah kanan node "Manual Trigger" yang baru saja dibuat.
- Panel pencarian "What happens next?" akan muncul. Ketik "Set" atau "Edit Fields".
- Pilih node bernama "Edit Fields (Set)". Node ini berfungsi untuk memodifikasi atau menambah field data, yang merupakan tempat kerentanan berada.

Langkah 4: Injeksi Payload (Eksploitasi)
Di sinilah proses eksploitasi (RCE) dilakukan.
- Pada panel konfigurasi node "Edit Fields", cari bagian "Fields to Set" atau sejenisnya.
- Klik tombol "Add Field".
- Isi kolom Name dengan nama bebas, misalnya
resultatauexploit. - Pada kolom Value, pilih opsi untuk memasukkan ekspresi (biasanya ditandai dengan ikon gear atau tombol "Expression").
- Tempelkan (Paste) kode payload dari sini
Langkah 5: Eksekusi dan Verifikasi
- Setelah payload dimasukkan, klik tombol "Execute step" atau "Test step" pada node tersebut.
- Periksa bagian OUTPUT di panel node.
- Jika berhasil, Anda akan melihat hasil keluaran dari perintah
id(sepertiuid=0(root) gid=0(root)...) ditampilkan sebagai nilai dari field yang Anda buat tadi.

Langkah 6: Reverse shell
- Setelah payload revershell dimasukkan, klik tombol "Execute step" atau "Test step" pada node tersebut.
- Terminal lain membuka lalu menggunakan listen untuk menangkap koneksi dari target.
- Periksa panel node ketika berjalan apakah sudah masuk revershellnya.
- Jika berhasil, Anda akan melihat hasil keluaran dari perintah listen tadi begini:
rlwrap nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.1.24] from (UNKNOWN) [172.18.0.2] 46013
sh: can't access tty; job control turned off
~ $

Strategi Deteksi CVE-2025–68613 (n8n RCE)
Bagian ini merinci cara mendeteksi serangan Remote Code Execution (RCE) Expression Injection pada n8n menggunakan SIEM atau solusi deteksi lainnya.
1. Tantangan Logging & Solusi Proxy
Sayangnya, n8n secara bawaan tidak menyediakan tingkat pencatatan (logging) yang cukup detail untuk mendeteksi serangan ini secara langsung melalui log aplikasinya.
Oleh karena itu, cara terbaik untuk mendeteksi serangan ini adalah dengan menempatkan solusi Proxy (seperti Nginx) di depan aplikasi n8n untuk mengelola permintaan yang masuk. Dengan pendekatan ini, Anda dapat mengirimkan log proxy ke solusi deteksi (SIEM) dan menganalisis isi konten body dari permintaan web untuk menemukan pola eksploitasi.
2. Konfigurasi Logging Nginx
Berikut adalah contoh konfigurasi Nginx untuk mencatat konten body permintaan menggunakan format 'Request-Body: "$request_body" '. Catatan: Konfigurasi ini mungkin berbeda tergantung solusi proxy yang Anda gunakan.
http {
# Load Lua module
lua_package_path "/etc/nginx/lua/?.lua;;";
# Custom log format (Format Log Kustom)
log_format detailed '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'Request-Body: "$request_body" '
'Content-Type: "$http_content_type" '
'Duration: $request_time s';
# ... sisa blok http ...
}untuk loging pastikan juga melihat dokumentasi resmi disini
3. Deteksi Menggunakan Sigma Rule
Untuk mendeteksi kerentanan ini menggunakan Sigma, Anda dapat menggunakan aturan berikut.
Aturan ini mendeteksi upaya penyuntikan ekspresi JavaScript berbahaya ke dalam workflow n8n.
4. Memantau Eksekusi Perintah Mencurigakan (Post-Exploitation)
Selain aturan Sigma di atas, sangat penting untuk terus memantau kejadian pembuatan proses (process creation events) untuk mengungkap aktivitas penyerang setelah eksploitasi berhasil.
Hal ini krusial karena penyerang yang memiliki kredensial n8n yang valid dapat sepenuhnya menyalahgunakan RCE ini untuk melakukan berbagai tindakan berbahaya, seperti:
- Reverse Shell: Membuka koneksi balik untuk mendapatkan akses interaktif ke sistem.
- Malware & Persistensi: Mengunduh dan mengeksekusi payload berbahaya untuk menjaga akses tetap terbuka atau meningkatkan dampak serangan.
- Pengintaian (Reconnaissance): Menjalankan perintah untuk memetakan lingkungan server yang menampung aplikasi n8n.
Rekomendasi: Jangan hanya mengandalkan satu sinyal deteksi. Sebaliknya, korelasikan deteksi log web (dari Nginx/Proxy) dengan aturan pembuatan proses (process creation) untuk mengidentifikasi perilaku pasca-eksploitasi secara andal dan meningkatkan kepercayaan deteksi secara keseluruhan.