Serangan jailbreak dan prompt injection pada Large Language Model (LLM) sering kali lolos dari deteksi statis berbasis kata kunci. Memindahkan pertahanan ke layer AI Gateway (reverse proxy) memberikan kontrol terpusat untuk memutus eksploitasi sebelum model downstream memproses payload berbahaya atau menghasilkan data sensitif.

Observasi Anomali: Token Spike dan Guardrail Error Rate

Penyerang umumnya menggunakan teknik multi-turn persuasion, payload splitting, atau base64 encoding yang menghasilkan pola lalu lintas berbeda dari pengguna biasa. Deteksi pada gateway berfokus pada dua metrik utama:

  • Prompt Token Spike: Lonjakan drastis pada rasio prompt_tokens terhadap completion_tokens. Prompt eksplorasi red-teaming sering memuat instruksi sistem buatan yang panjang.
  • Guardrail Trigger Rate: Peningkatan persentase respons 422 Unprocessable Entity atau content filter flags dari upstream model atau layer inspeksi lokal dalam jendela waktu geser (sliding window).

Contoh implementasi middleware inspeksi metrik pada gateway berbasis Node.js/Express:

import Redis from 'ioredis';

const redis = new Redis(process.env.REDIS_URL);
const TOKEN_SPIKE_THRESHOLD = 3500; // token per request
const WINDOW_SECONDS = 60;
const MAX_VIOLATIONS = 5;

export async function anomalyDetector(req, res, next) {
  const clientIp = req.ip;
  const estimatedTokens = Math.ceil(JSON.stringify(req.body.messages || '').length / 4);

  if (estimatedTokens > TOKEN_SPIKE_THRESHOLD) {
    const key = `anomaly:${clientIp}`;
    const violations = await redis.incr(key);
    
    if (violations === 1) {
      await redis.expire(key, WINDOW_SECONDS);
    }

    if (violations >= MAX_VIOLATIONS) {
      // Tandai client untuk pemutusan sementara
      await redis.set(`blocklist:${clientIp}`, 'jailbreak_attempt', 'EX', 3600);
      return res.status(429).json({
        error: 'Tingkat anomali prompt melampaui ambang batas keamanan.'
      });
    }
  }

  next();
}

Implementasi Circuit Breaker dan Kill Switch Otomatis

Ketika serangan terdistribusi memicu pelanggaran massal, sistem membutuhkan mekanisme pemutus sirkuit (circuit breaker) untuk melindungi model upstream dari biaya komputasi ekstrem dan kebocoran data.

State pattern circuit breaker pada gateway mencakup tiga status:

  1. CLOSED: Permintaan diteruskan secara normal ke LLM upstream.
  2. OPEN: Gateway langsung menolak permintaan dengan kode HTTP 503 Service Unavailable atau mengalihkan ke model berbobot rendah (fallback kaku berbasis aturan non-LLM).
  3. HALF-OPEN: Gateway mengizinkan persentase kecil lalu lintas untuk menguji apakah anomali telah mereda.
class GatewayCircuitBreaker {
  constructor(failureThreshold = 10, cooldownMs = 30000) {
    this.failureThreshold = failureThreshold;
    this.cooldownMs = cooldownMs;
    this.state = 'CLOSED';
    this.consecutiveFailures = 0;
    this.nextAttempt = Date.now();
  }

  recordGuardrailTrigger() {
    this.consecutiveFailures += 1;
    if (this.consecutiveFailures >= this.failureThreshold) {
      this.state = 'OPEN';
      this.nextAttempt = Date.now() + this.cooldownMs;
    }
  }

  recordSuccess() {
    this.consecutiveFailures = 0;
    this.state = 'CLOSED';
  }

  canExecute() {
    if (this.state === 'CLOSED') return true;
    if (this.state === 'OPEN') {
      if (Date.now() > this.nextAttempt) {
        this.state = 'HALF-OPEN';
        return true;
      }
      return false;
    }
    return true; // HALF-OPEN
  }
}

Prosedur Rollback Konfigurasi Guardrail

Pembaruan regex filter atau model klasifikasi input acap kali menyebabkan false positive tinggi atau celah baru. Terapkan konfigurasi berbasis version control terpisah dari artefak aplikasi.

  • Pisahkan Konfigurasi Aturan: Simpan filter injection (seperti aturan WAF atau rule OpenPolicyAgent) dalam format serialisasi terpisah (YAML/JSON) yang divalidasi skema.
  • Rollback Seketika: Jika error rate meningkat pasca-rilis rule, eksekusi pembaruan pointer konfigurasi pada etcd/Consul atau reload Nginx/Envoy tanpa merestart pod gateway:
# Contoh eksekusi rollback aturan gateway via hot-reload
curl -X POST http://127.0.0.1:9901/runtime_modify?ruleset.version=v1.4.2
nginx -s reload

Prosedur Postmortem dan Update Dataset Evaluasi

Setiap payload yang memicu insiden harus dialirkan ke siklus perbaikan berkelanjutan tanpa mengekspos data pengguna ke model eksternal secara langsung.

  1. Sanitasi Log: Ekstrak input prompt yang melanggar batas, lakukan masking terhadap identitas pengguna (PII) menggunakan hashing token.
  2. Konversi ke Test Case: Masukkan payload ke format evaluasi red-teaming internal (misalnya promptfoo atau runner evaluasi berbasis pytest).
  3. Validasi CI/CD Pra-Rilis: Pasang aturan evaluasi baru pada pipeline CI. Gateway versi berikutnya harus memblokir variasi payload tersebut dengan ambang kemiripan vektor minimal 85% sebelum artefak dideploy ke produksi.