Peretasan AI
Sumber Daya Keamanan AI

Pengembangan AI yang Aman

Complete developer guide to building secure AI applications - from input validation to deployment

Updated: August 2026

Prinsip Keamanan

1. Pertahanan Mendalam

Implement multiple layers of security controls. No single control should be relied upon exclusively.

2. Hak Istimewa Terkecil

Berikan izin minimum yang diperlukan kepada pengguna, API, dan komponen AI.

3. Gagal Aman

Ketika kesalahan terjadi, defaultnya adalah status aman, bukan status permisif.

4. Zero Trust

Never trust, always verify. Validate at every boundary, including internal systems.

Validasi Input

All user input must be validated and sanitized before processing. This is your first line of defense against prompt injection and other attacks.

Kelas Validasi Input

```python
import re
from typing import Optional, List

class InputValidator:
    # Known injection patterns
    INJECTION_PATTERNS = [
        r"ignore\s+(previous|prior|all)\s+(instructions|rules)",
        r"(forget|disregard)\s+(your|all)\s+(instructions|rules)",
        r"you\s+are\s+(now|still)\s+(dan|do\s+anything)",
        r"system\s+prompt:",
        r"{{.*}}",
        r"\[INST\]|\[/INST\]|<\|end\|>",
    ]
    
    # Encoding patterns
    ENCODING_PATTERNS = [
        r"base64:",  # Base64 prefix
        r"\\x[0-9a-fA-F]{2}",  # Hex encoding
        r"%[0-9a-fA-F]{2}",  # URL encoding
    ]
    
    def validate(self, user_input: str) -> dict:
        """Validate user input for potential attacks."""
        issues = []
        
        # Length check
        if len(user_input) > 10000:
            issues.append("Input exceeds maximum length")
        
        # Check for injection patterns
        for pattern in self.INJECTION_PATTERNS:
            if re.search(pattern, user_input, re.IGNORECASE):
                issues.append(f"Suspicious pattern detected: {pattern}")
        
        # Check for encoding attempts
        for pattern in self.ENCODED_PATTERNS:
            if re.search(pattern, user_input):
                issues.append(f"Encoded content detected")
        
        # Check for high entropy (possible encoding)
        unique_chars = len(set(user_input))
        if len(user_input) > 50 and unique_chars / len(user_input) < 0.3:
            issues.append("High entropy detected - possible encoding")
        
        return {
            "valid": len(issues) == 0,
            "issues": issues,
            "sanitized": self._sanitize(user_input)
        }
    
    def _sanitize(self, user_input: str) -> str:
        """Basic sanitization."""
        # Remove control characters
        sanitized = re.sub(r'[\x00-\x1F\x7F]', '', user_input)
        return sanitized.strip()
```

Daftar Periksa Validasi

  • Validasi pada batas aplikasi
  • Periksa panjang masukan
  • Pencocokan pola untuk injeksi
  • Mendeteksi upaya pengkodean
  • Ketik validasi
  • Sanitasi sebelum pemrosesan
  • Kegagalan validasi log
  • Pembatasan tingkat

Penanganan Keluaran

LLM outputs must be validated and sanitized before being presented to users or passed to other systems.

Pemfilteran Konten

  • Periksa paparan data sensitif
  • Verifikasi tidak ada perintah sistem yang bocor
  • Validasi format keluaran
  • Periksa konten yang disuntikkan

Deteksi PII

  • Pindai informasi pribadi
  • Menyembunyikan atau menyunting data sensitif
  • Mencatat upaya pemaparan PII
  • Pemberitahuan pengguna saat terdeteksi

Validasi Format

  • Validasi keluaran JSON
  • Periksa struktur yang diharapkan
  • Verifikasi nilai yang diizinkan
  • Sanitasi HTML jika berlaku

Contoh Penangan Keluaran

```python
import re
import json

class OutputHandler:
    PII_PATTERNS = {
        "ssn": r"\b\d{3}-\d{2}-\d{4}\b",
        "email": r"\b[\w.-]+@[\w.-]+\.\w+\b",
        "phone": r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b",
    }
    
    def process_output(self, raw_output: str) -> dict:
        """Process and validate LLM output."""
        result = {
            "original": raw_output,
            "cleaned": raw_output,
            "warnings": [],
            "blocked": False
        }
        
        # Check for system prompt leakage
        if "system prompt" in raw_output.lower():
            result["warnings"].append("System prompt reference detected")
        
        # Scan for PII
        for pii_type, pattern in self.PII_PATTERNS.items():
            matches = re.findall(pattern, raw_output)
            if matches:
                result["warnings"].append(f"{pii_type} detected in output")
                # Optionally mask
                result["cleaned"] = re.sub(pattern, "[REDACTED]", result["cleaned"])
        
        return result
```

Keamanan API

Otentikasi

  • Gunakan manajemen kunci API yang kuat
  • Terapkan OAuth 2.0 jika memungkinkan
  • Validasi token JWT
  • Rotasi kunci API

Otorisasi

  • Kontrol akses berbasis peran (RBAC)
  • Pelingkupan kunci API
  • Batas laju per pengguna
  • Isolasi penyewa

Pembatasan Kecepatan

  • Batasan berbasis token
  • Batas berbasis permintaan
  • Pengendalian biaya
  • Pembatasan berjenjang

Daftar Periksa Keamanan API

  • Gunakan HTTPS saja
  • Terapkan pembatasan tingkat
  • Validasi semua masukan
  • Sanitasi semua keluaran
  • Gunakan kunci API, bukan tertanam
  • Terapkan penandatanganan permintaan
  • Mencatat akses API
  • Terapkan CORS dengan benar

Otentikasi & Otorisasi

Otentikasi Pengguna

  • Kebijakan kata sandi yang kuat
  • Dukungan MFA
  • Manajemen sesi
  • Kedaluwarsa token

Otentikasi API

  • Manajemen kunci API
  • Cakupan OAuth
  • Validasi JWT
  • Rotasi kunci

Otorisasi

  • Implementasi RBAC
  • Pemeriksaan izin
  • Akses tingkat sumber daya
  • Pencatatan audit

Keamanan Data

Klasifikasi Data

  • Identifikasi data sensitif
  • Kategorikan berdasarkan sensitivitas
  • Terapkan kontrol berdasarkan kategori
  • Audit rutin

Enkripsi

  • TLS dalam transit
  • AES saat istirahat
  • Manajemen kunci
  • Rotasi kunci

Penanganan PII

  • Deteksi
  • Minimisasi
  • Manajemen izin
  • Hak untuk menghapus

Logging & Pemantauan

Apa yang Harus Dicatat

Peristiwa Keamanan

  • Upaya autentikasi
  • Kegagalan otorisasi
  • Batas nilai terlampaui
  • Pola yang mencurigakan

Peristiwa Khusus AI

  • Upaya injeksi cepat
  • Akses cepat sistem
  • Pemanggilan alat
  • Akses data melalui AI

Acara Operasional

  • Panggilan API
  • Kesalahan dan pengecualian
  • Metrik kinerja
  • Pelacakan biaya

Memantau Praktik Terbaik

  • Peringatan real-time untuk peristiwa keamanan
  • Dasbor untuk metrik keamanan
  • Deteksi anomali otomatis
  • Integrasi dengan SIEM
  • Peninjauan log rutin
  • Kebijakan retensi

Kerentanan Umum

1. IDOR dalam Fitur AI

Referensi Objek Langsung yang Tidak Aman saat AI mengakses sumber daya

Contoh

User asks AI to "read file X" and AI has access without proper authorization checks.

2. SSRF melalui LLM

Pemalsuan Permintaan Sisi Server melalui panggilan alat AI

Contoh

Prompt menipu AI agar membuat permintaan ke layanan internal.

3. Bypass Otentikasi

Autentikasi yang lemah atau hilang untuk titik akhir AI

Contoh

Titik akhir API AI tanpa pemeriksaan autentikasi yang tepat.

4. Eksposur DB Vektor

Database vektor tidak terlindungi dengan penyematan sensitif

Contoh

DB vektor yang dapat diakses publik dengan sensitif tertanam data.

Kepatuhan

GDPR (EU)

  • Dasar pemrosesan yang sah
  • Minimisasi data
  • Hak untuk mengakses/menghapus
  • Portabilitas data

CCPA (California)

  • Hak untuk mengetahui
  • Hak untuk menghapus
  • Hak untuk tidak ikut serta
  • Non-diskriminasi

Khusus AI

  • Persyaratan UU AI UE
  • Penilaian risiko AI
  • Kewajiban transparansi
  • Pengawasan manusia
AH
AI Hacking Team

The AI Hacking team researches and documents AI/LLM security vulnerabilities, red teaming techniques, and defensive strategies. Our guides are based on real-world pentesting experience and continuous monitoring of the AI security landscape.

Stay Ahead of AI Security

Get the latest AI/LLM security research, OWASP updates, and new vulnerabilities delivered straight to your inbox.