# Express.js body-parser DoS: CVE-2024-45590

> Kerentanan body-parser Express.js dengan tingkat keparahan tinggi memungkinkan serangan denial of service melalui payload URL-encoded yang dibuat.

**URL:** https://www.ciptadusa.com/blog/expressjs-body-parser-dos-cve-2024-45590  
**Type:** blog  
**Author:** PT Cipta Dua Saudara  
**Category:** Keamanan Aplikasi  
**Published:** 2026-05-30  
**Cover:** https://www.ciptadusa.com/media/defaults/blog-cover.svg  

## Article

# Denial of Service body-parser Express.js: CVE-2024-45590

## Ringkasan

Kerentanan denial of service (DoS) dengan tingkat keparahan tinggi ditemukan di middleware body-parser Express.js. Dilacak sebagai CVE-2024-45590, kerentanan ini memungkinkan penyerang jarak jauh merusak aplikasi Node.js dengan mengirimkan permintaan yang crafted saat URL encoding diaktifkan.

## Detail vulnerability

### Analisis Teknis

Kerentanan ada pada cara body-parser memproses data formulir yang dikodekan URL. Ketika opsi `urlencoded` diaktifkan (yang umum untuk menangani pengiriman formulir), payload berbahaya dapat memicu alokasi memori atau konsumsi CPU yang berlebihan.

### Komponen yang Terkena Dampak

- `body-parser` middleware (semua versi sebelum patch)
- Aplikasi Express.js menggunakan `express.urlencoded()` atau `bodyParser.urlencoded()`
- Semua rantai middleware Express.js termasuk body-parser

### Mekanisme Serangan

Penyerang mengeksploitasi kerentanan ini dengan:

1. Mengirim permintaan dengan data URL-encoded yang sangat bersarang
2. Menggunakan pasangan nilai kunci yang besar yang memicu penguraian berlebihan
3. Membuat payload yang menyebabkan waktu pemrosesan eksponensial

### Contoh Payload Serangan

```http
POST /api/endpoint HTTP/1.1
Content-Type: application/x-www-form-urlencoded

a[b][c][d][e][f][g][h][i][j]=value&a[b][c][d][e][f][g][h][i][k]=value...
```

## Dampak

### Tingkat Keparahan: Tinggi

- **Ketersediaan**: Tinggi - Aplikasi mogok total
- **Kerahasiaan**: Tidak ada
- **Integritas**: Tidak ada

### Lingkungan yang Terkena Dampak

- Server web produksi yang menangani data formulir
- Titik akhir API menerima payload yang dikodekan URL
- Layanan mikro dengan middleware body-parser

## Mitigasi

### Langkah cepat

1. **Perbarui body-parser** ke versi yang dipatch
2. **Perbarui Express.js** ke rilis terbaru (rilis keamanan September 2024)
3. **Menerapkan batas ukuran permintaan**:
   ```javascript
   app.use(express.urlencoded({ 
     extended: true,
     limit: '1mb'  // Set appropriate limit
   }));
   ```

### Pertahanan Secara Mendalam

```javascript
// Recommended configuration
const express = require('express');
const app = express();

// Set reasonable limits
app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ 
  extended: true,
  limit: '1mb',
  parameterLimit: 1000  // Limit number of parameters
}));

// Additional protection middleware
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100 // limit each IP to 100 requests per windowMs
});
app.use(limiter);
```

## Audit Keamanan Express.js 2024

Kerentanan ini diidentifikasi selama audit keamanan Express.js komprehensif yang dilakukan oleh Ada Logics pada bulan April-Mei 2024. Audit tersebut mengungkapkan beberapa masalah keamanan lainnya:

### Kerentanan Lainnya Ditemukan

- **Kerentanan pengaturan waktu di basic-auth-connect** (CVE-2024-47178)
- **XSS di pilarjs/kirim**
- **XSS dalam servis-statis**

### Dampak Audit

Tim Express.js telah:
- Merilis patch keamanan untuk semua kerentanan yang teridentifikasi
- Peningkatan infrastruktur pengujian keamanan
- Peningkatan dokumentasi keamanan
- Menetapkan proses peninjauan keamanan reguler

## Praktik Terbaik untuk Keamanan Express.js

### Konfigurasi Middleware

1. **Gunakan versi terbaru**: Selalu perbarui semua middleware
2. **Tetapkan batas yang sesuai**: Konfigurasikan ukuran permintaan dan batas parameter
3. **Aktifkan header keamanan**: Gunakan helmet.js untuk header HTTP
4. **Menerapkan pembatasan laju**: Cegah penyalahgunaan melalui pembatasan permintaan

### Penanganan Kesalahan

```javascript
// Secure error handling
app.use((err, req, res, next) => {
  // Don't leak error details in production
  const statusCode = err.statusCode || 500;
  const message = process.env.NODE_ENV === 'production' 
    ? 'Internal Server Error' 
    : err.message;
  
  res.status(statusCode).json({ error: message });
});
```

## Monitoring dan Deteksi

### Tanda-Tanda Eksploitasi

- Lonjakan penggunaan memori secara tiba-tiba
- Pemakaian CPU mencapai 100%
- Aplikasi mogok karena kesalahan tumpukan kehabisan memori
- Pola yang tidak biasa dalam log permintaan

### Pengaturan Monitoring

```javascript
// Basic monitoring
process.on('uncaughtException', (err) => {
  console.error('Uncaught Exception:', err);
  // Alert your monitoring system
  alertSecurityTeam(err);
});
```

## Penutup

CVE-2024-45590 menyoroti pentingnya pembaruan keamanan rutin dan konfigurasi middleware yang tepat dalam aplikasi Node.js. Dengan menerapkan patch dan menerapkan strategi pertahanan mendalam, developer dapat melindungi aplikasi mereka dari serangan denial of service.

## Referensi

- [Rilis Keamanan Express.js September 2024](https://expressjs.com/en/blog/2024-09-29-security-releases/)
- [Laporan Audit Keamanan Express.js](https://ostif.org/wp-content/uploads/2024/10/expressjs-2024-security-audit-report.pdf)
- [NVD - CVE-2024-45590](https://nvd.nist.gov/vuln/detail/CVE-2024-45590)

---

*Markdown version of https://www.ciptadusa.com/blog/expressjs-body-parser-dos-cve-2024-45590 — generated for AI agents and LLM crawlers.*
