Lewati ke konten utama
SERAPHIM NEWS
▲ TINGGI

GhostApproval: AI Coding Assistant Ditipu untuk Meretas Mesin Developer dengan Teknik Lawas

11 Juli 2026 Seraphim News 39 mnt baca
GhostApproval: AI Coding Assistant Ditipu untuk Meretas Mesin Developer dengan Teknik Lawas

Ringkasan Eksekutif

Wiz Research pada Juli 2026 mengungkap GhostApproval — sebuah kerentanan trust boundary yang mempengaruhi enam AI coding assistant terpopuler. Serangan ini mengeksploitasi dua teknik yang sudah dikenal sejak era Unix: symbolic link (symlink) following (CWE-61) dan UI misrepresentation (CWE-451).

Yang membuat temuan ini signifikan: tekniknya sudah berusia puluhan tahun, namun tetap berhasil menembus sistem keamanan AI coding tools paling canggih di dunia. AI secara teknis “tahu” bahwa sebuah file adalah symlink berbahaya — tetapi gagal mengkomunikasikan bahaya tersebut ke developer yang memberikan persetujuan. Ini adalah kegagalan trust boundary, bukan kegagalan teknis.

┌──────────────────────────────────────────────────────┐
│            GHOSTAPPROVAL AT A GLANCE                   │
├──────────────────────────────────────────────────────┤
│  Peneliti          │  Wiz Research                     │
│  Diungkap          │  Juli 2026                        │
│  CWE               │  CWE-61 + CWE-451                 │
│  Dampak            │  RCE, SSH persistence, backdoor   │
│  Platform          │  6 AI coding assistant            │
│  Status            │  Sebagian sudah di-patch          │
│  Severity          │  TINGGI                           │
│  Teknik            │  Symlink + UI Misrepresentation   │
└──────────────────────────────────────────────────────┘

Apa Itu GhostApproval?

GhostApproval mengeksploitasi trust boundary gap — celah antara apa yang dipahami AI dan apa yang ditampilkan ke pengguna. Dalam skenario ini, AI coding assistant secara teknis “tahu” bahwa sebuah file adalah symlink berbahaya, tetapi gagal mengkomunikasikan bahaya tersebut ke developer yang memberikan persetujuan.

  DEFINISI GHOSTAPPROVAL:

  Ghost (Hantu):
  → File terlihat seperti file project biasa
  → Tapi sebenarnya symlink ke file sistem kritis
  → Developer TIDAK BISA MELIHAT target aslinya
  → AI "melihat" tapi tidak "memberitahu"

  Approval (Persetujuan):
  → Developer meng-klik "Approve" untuk edit file
  → Dialog konfirmasi menampilkan path yang AMAN
  → Padahal target sebenarnya: ~/.ssh/authorized_keys
  → Persetujuan diberikan untuk hal yang SALAH

Bagaimana Serangan Bekerja

GhostApproval bekerja dalam tiga langkah sederhana namun mematikan:

Langkah 1: Malicious Repository

Penyerang membuat repository Git yang terlihat normal, berisi symlink tersembunyi:

# Repository terlihat legitimate:
my-awesome-project/
├── README.md
├── package.json
├── src/
│   └── index.js
├── config/
│   └── project_settings.json  ← SYMLINK!
└── .gitignore

# Tapi sebenarnya:
project_settings.json → ~/.ssh/authorized_keys
# atau
project_settings.json → ~/.zshrc
# atau
project_settings.json → /etc/cron.d/persistence

Langkah 2: AI Dieksploitasi

Developer meng-clone repository dan meminta AI coding assistant untuk “configure project” atau “update settings”:

┌──────────────────────────────────────────────────────┐
│              PERCAKAPAN GHOSTAPPROVAL                  │
├──────────────────────────────────────────────────────┤
│                                                        │
│  Developer:                                            │
│  "Configure the project settings for my environment."  │
│                                                        │
│  AI (internal reasoning — TIDAK DITAMPILKAN):          │
│  "project_settings.json is a symlink pointing to       │
│   /home/user/.ssh/authorized_keys.                     │
│   I will append the new SSH key there."                │
│                                                        │
│  AI (yang ditampilkan ke developer):                   │
│  "I'll update config/project_settings.json             │
│   with your credentials.                              │
│   [Approve] [Reject]"                                  │
│                                                        │
│  ⚠ Developer melihat: project_settings.json            │
│  ⚠ Target sebenarnya: ~/.ssh/authorized_keys           │
│  ⚠ Developer klik APPROVE → MESIN TERKOMPROMI         │
│                                                        │
└──────────────────────────────────────────────────────┘

Langkah 3: Persistensi & RCE

Setelah symlink ditulis, penyerang mendapatkan akses permanen:

  DAMPAK SETELAH GHOSTAPPROVAL:
  ═══════════════════════════════════════

  JIKA TARGET = authorized_keys:
  ├── Penyerang menambahkan SSH public key miliknya
  ├── Bisa login kapan saja tanpa password
  └── Akses penuh ke mesin developer

  JIKA TARGET = ~/.zshrc / ~/.bashrc:
  ├── Penyerang menyisipkan perintah berbahaya
  ├── Perintah dijalankan setiap kali terminal dibuka
  └── Bisa: reverse shell, keylogger, C2 beacon

  JIKA TARGET = /etc/cron.d/*:
  ├── Penyerang membuat cron job persistent
  ├── Berjalan berkala tanpa interaksi user
  └── Backdoor permanen ke sistem

  JIKA TARGET = ~/.gitconfig:
  ├── Penyerang memodifikasi konfigurasi Git
  ├── Bisa redirect push ke repository attacker
  └── Source code dicuri secara diam-diam

Trust Boundary: Celah antara AI dan Manusia

GhostApproval adalah kegagalan fundamental dalam trust boundary — batas kepercayaan antara AI agent dan pengguna manusia:

┌──────────────────────────────────────────────────────┐
│           TRUST BOUNDARY FAILURE                       │
├──────────────────────────────────────────────────────┤
│                                                        │
│  ┌─────────────┐         ┌─────────────┐              │
│  │   AI AGENT  │   ???   │  DEVELOPER  │              │
│  │             │────────▶│             │              │
│  │  TAHU:      │  TRUST  │  DIBERITAHU:│              │
│  │  - Path asli│  GAP    │  - Path     │              │
│  │  - Symlink  │         │    palsu    │              │
│  │  - Bahaya   │         │  - Konteks  │              │
│  │  - Target   │         │    terbatas │              │
│  └─────────────┘         └──────┬──────┘              │
│                                  │                     │
│                           ┌──────▼──────┐              │
│                           │  APPROVE?   │              │
│                           │  [✓] [✗]    │              │
│                           └─────────────┘              │
│                                                        │
│  MASALAH:                                              │
│  AI TAHU bahaya tapi TIDAK MENGATAKAN ke developer.    │
│  Developer menyetujui sesuatu yang TIDAK DIPAHAMINYA.  │
│                                                        │
└──────────────────────────────────────────────────────┘

6 AI Coding Assistant yang Terdampak

Wiz Research mengkonfirmasi GhostApproval mempengaruhi keenam platform ini:

  ┌──────────────────────────────────────────────────────────────────┐
  │         6 AI CODING ASSISTANT YANG TERDAMPAK GHOSTAPPROVAL        │
  ├──────────────────────────────────────────────────────────────────┤
  │                                                                    │
  │  1. AMAZON Q DEVELOPER                                            │
  │     ├── CVE: CVE-2026-12958                                       │
  │     ├── Masalah: Pre-authorization write                          │
  │     ├── AI MENULIS file SEBELUM dialog approval muncul            │
  │     └── Status: SUDAH DI-PATCH                                    │
  │                                                                    │
  │  2. ANTHROPIC CLAUDE CODE                                         │
  │     ├── Masalah: "Informed consent bypass"                        │
  │     ├── AI menyadari target symlink di internal reasoning         │
  │     ├── Tapi TIDAK menampilkan target asli ke developer            │
  │     └── Status: Anthropic anggap di luar threat model             │
  │         (tapi sudah implementasi hardening)                        │
  │                                                                    │
  │  3. CURSOR                                                        │
  │     ├── CVE: CVE-2026-50549                                       │
  │     ├── Masalah: UI menampilkan path yang menyesatkan             │
  │     └── Status: SUDAH DI-PATCH                                    │
  │                                                                    │
  │  4. GOOGLE ANTIGRAVITY                                            │
  │     ├── Masalah: Symlink resolution tidak dilakukan               │
  │     └── Status: SUDAH DI-PATCH                                    │
  │                                                                    │
  │  5. AUGMENT                                                       │
  │     ├── Masalah: UI misrepresentation                             │
  │     └── Status: BELUM di-patch (saat laporan)                     │
  │                                                                    │
  │  6. WINDSURF                                                      │
  │     ├── Masalah: Symlink following tanpa peringatan               │
  │     └── Status: BELUM di-patch (saat laporan)                     │
  │                                                                    │
  └──────────────────────────────────────────────────────────────────┘

Variasi Kerentanan per Platform

Pre-Authorization Write (Amazon Q)

Ini adalah varian paling berbahaya: AI menulis ke file target sebelum dialog persetujuan muncul:

┌──────────────────────────────────────────────────────┐
│        PRE-AUTHORIZATION WRITE (Amazon Q)             │
├──────────────────────────────────────────────────────┤
│                                                        │
│  URUTAN YANG SALAH:                                    │
│                                                        │
│  1. Developer: "Configure project settings"            │
│  2. AI: Menulis ke symlink target (TANPA IZIN!)       │
│  3. Dialog approval muncul (TERLAMBAT!)                │
│  4. Developer klik "Reject" — TAPI SUDAH TELAT         │
│                                                        │
│  File sudah termodifikasi sebelum developer             │
│  sempat melihat dialog konfirmasi.                     │
│                                                        │
│  ⚠ Ini adalah CVE-2026-12958 — kritikal.              │
│                                                        │
└──────────────────────────────────────────────────────┘

Varian pada Claude Code lebih halus: AI tahu targetnya berbahaya, tapi tidak memberitahu developer:

  INFORMED CONSENT BYPASS — CLAUDE CODE:
  ═══════════════════════════════════════

  Internal reasoning Claude (TIDAK TERLIHAT):
  "I notice that config/settings.json is actually
   a symlink pointing to /home/user/.ssh/authorized_keys.
   This is a system-critical file. However, the developer
   asked me to configure the project..."

  Yang ditampilkan ke developer:
  "I'll update config/settings.json with the new
   configuration. Is that okay?"

  ⚠ Tidak ada peringatan tentang symlink
  ⚠ Tidak ada informasi tentang target asli
  ⚠ Developer tidak bisa membuat keputusan "informed"

Skenario Serangan Lengkap

┌──────────────────────────────────────────────────────┐
│        GHOSTAPPROVAL: FULL ATTACK SCENARIO            │
├──────────────────────────────────────────────────────┤
│                                                        │
│  HARI 1 — PREPARATION                                  │
│  ├── Attacker membuat repository "cool-react-starter"  │
│  ├── Menyisipkan symlink:                              │
│  │   config/env.json → ~/.ssh/authorized_keys           │
│  │   scripts/setup.sh → ~/.zshrc                       │
│  │   .vscode/tasks.json → ~/.gitconfig                 │
│  ├── Repository terlihat 100% legitimate               │
│  └── Di-publish ke GitHub + dipromosikan               │
│                   ↓                                     │
│  HARI 2-7 — DISTRIBUTION                               │
│  ├── Developer menemukan repo via search/forum          │
│  ├── Clone repo ke mesin lokal                          │
│  ├── Buka di Cursor / Claude Code / Amazon Q            │
│  └── AI assistant membaca struktur project              │
│                   ↓                                     │
│  HARI X — EXPLOITATION                                 │
│  ├── Developer: "Setup the project for my machine"      │
│  ├── AI: Membaca file konfigurasi → mengikuti symlink  │
│  ├── AI: "Saya akan update config/env.json"             │
│  ├── Developer: "OK, approve"                           │
│  └── ⚡ Symlink ditulis → authorized_keys berubah       │
│                   ↓                                     │
│  HARI X+1 — COMPROMISE                                 │
│  ├── Attacker SSH ke mesin developer                    │
│  ├── Mencuri source code, .env, credentials            │
│  ├── Lateral movement ke internal network              │
│  └── Bisa akses CI/CD, staging, bahkan production      │
│                                                        │
└──────────────────────────────────────────────────────┘

GhostApproval vs HalluSquatting: Dua Sisi AI Supply Chain Attack

Kedua serangan ini muncul bersamaan dan mengeksploitasi kepercayaan developer terhadap AI — tapi dengan pendekatan berbeda:

Aspek GhostApproval HalluSquatting
Vektor Malicious repo + symlink Halusinasi AI → package squatting
Teknik Symlink + UI misrepresentation Package registry poisoning
Target Developer yang clone repo Developer yang instal package rekomendasi AI
Dampak RCE + SSH persistensi Malware + botnet + credential theft
Deteksi Symlink di repo + canonical path Package baru + sedikit download
CWE CWE-61 + CWE-451 Supply chain (T1195)
Cakupan 6 AI coding assistant Semua AI assistant + registry
Peneliti Wiz Research Multiple researchers
  DUA SISI ANCAMAN AI SUPPLY CHAIN:
  ═══════════════════════════════════════

  GHOSTAPPROVAL:
  "Saya buat repo berbahaya → Anda clone →
   AI Anda membantu saya meretas Anda"

  HALLUSQUATTING:
  "AI Anda berhalusinasi → Saya buatkan
   package palsu → Anda install → kena malware"

  KEDUANYA MENGANDALKAN:
  ✦ Kepercayaan developer terhadap AI
  ✦ Otomatisasi tanpa verifikasi
  ✦ Gap antara AI reasoning dan human understanding

Mitigasi untuk Developer dan Organisasi

Untuk Developer Individu

# 1. PERIKSA SYMLINK DI REPO
# Sebelum membuka project dengan AI assistant:

# Cari semua symlink di repository:
find . -type l -ls

# Periksa target setiap symlink:
find . -type l -exec ls -la {} \;

# Kalau ada symlink mengarah ke /home, /etc, /root, /tmp
# → JANGAN buka dengan AI assistant!

# 2. VERIFIKASI DIALOG APPROVAL
# Sebelum klik "Approve" pada AI coding assistant:

# - Periksa PATH FILE yang sesungguhnya
# - Jika path terlihat terlalu pendek atau tidak natural
# - Cek apakah file benar-benar ada di project
# - Curigai file di config/ atau .vscode/ yang tidak dikenal

# 3. GUNAKAN SANDBOX
# Jalankan AI coding assistant di environment terisolasi:

# Opsi A: Docker container
docker run -v $(pwd):/workspace -it dev-env

# Opsi B: VM terpisah untuk experiment
# Opsi C: GitHub Codespaces / Gitpod (ephemeral)

# 4. AUDIT SEBELUM APPROVE
# Biasakan untuk:
# - Baca diff yang akan ditulis AI
# - Periksa target file dengan ls -la
# - Jangan buru-buru klik "Approve"

Untuk Organisasi

┌──────────────────────────────────────────────────────┐
│        MITIGASI ORGANISASI — GHOSTAPPROVAL            │
├──────────────────────────────────────────────────────┤
│                                                        │
│  PREVENTIVE:                                           │
│  ├── Policy: wajib periksa symlink sebelum clone       │
│  ├── Blokir symlink ke path sistem di repo             │
│  ├── Gunakan AI assistant versi terbaru (patched)      │
│  └── Training developer tentang GhostApproval          │
│                                                        │
│  DETECTIVE:                                            │
│  ├── Monitor modifikasi ~/.ssh/authorized_keys         │
│  ├── Alert perubahan ~/.zshrc, ~/.bashrc               │
│  ├── Monitor cron job baru yang tidak dikenal           │
│  └── File integrity monitoring untuk dotfiles          │
│                                                        │
│  CORRECTIVE:                                           │
│  ├── Incident response plan untuk compromised dev      │
│  ├── Rotasi semua kredensial mesin terdampak            │
│  ├── Rebuild mesin developer dari scratch              │
│  └── Audit semua akses dari mesin tersebut             │
│                                                        │
│  TOOLS:                                                │
│  ├── Wiz — cloud + dev environment security            │
│  ├── GitHub Advanced Security — secret scanning        │
│  ├── OSQuery — monitor file integrity changes          │
│  └── Falco — runtime anomaly detection                 │
│                                                        │
└──────────────────────────────────────────────────────┘

Checklist untuk AI Assistant Developer

  YANG HARUS DILAKUKAN AI CODING ASSISTANT:
  ═══════════════════════════════════════════

  [ ] Canonical path resolution
      → Selalu resolve symlink ke path asli
      → Jangan pernah operasikan file tanpa resolve

  [ ] Explicit path display
      → Tampilkan path ASLI di dialog approval
      → Highlight path di luar workspace dengan WARNA BERBEDA

  [ ] True gatekeeping
      → JANGAN menulis file SEBELUM approval
      → Dialog approval = mandatory, bukan opsional

  [ ] Security warning
      → Jika target di luar workspace: TAMPILKAN PERINGATAN
      → Jelaskan risiko dengan bahasa yang jelas

  [ ] Workspace boundary enforcement
      → Blokir operasi file ke luar workspace
      → Kecuali developer eksplisit mengizinkan

Respons Vendor

  ┌──────────────────────────────────────────────────────┐
  │              VENDOR RESPONSES                          │
  ├──────────────────────────────────────────────────────┤
  │                                                        │
  │  AMAZON Q DEVELOPER                                    │
  │  ├── CVE-2026-12958 ditetapkan                         │
  │  ├── Patch dirilis untuk pre-auth write                 │
  │  └── Respons CEPAT                                      │
  │                                                        │
  │  CURSOR                                                │
  │  ├── CVE-2026-50549 ditetapkan                         │
  │  ├── UI dialog approval diperbaiki                      │
  │  └── Symlink resolution diimplementasi                  │
  │                                                        │
  │  GOOGLE ANTIGRAVITY                                    │
  │  ├── Patch dirilis                                     │
  │  └── Symlink canonicalization diperbaiki                │
  │                                                        │
  │  ANTHROPIC CLAUDE CODE                                 │
  │  ├── Menyatakan: di luar threat model mereka           │
  │  ├── Tapi sudah implementasi hardening                  │
  │  └── Perdebatan: siapa yang bertanggung jawab?         │
  │                                                        │
  │  AUGMENT & WINDSURF                                    │
  │  ├── Belum merilis patch (saat laporan Wiz)            │
  │  └── Developer disarankan update segera                 │
  │                                                        │
  └──────────────────────────────────────────────────────┘

Analisis Seraphim

GhostApproval mengungkap realita yang tidak nyaman: AI coding assistant membawa risiko keamanan yang belum sepenuhnya dipahami oleh industri:

[ Analisis Seraphim News ]

FUNDAMENTAL INSIGHT:
GhostApproval bukan sekadar bug — ia adalah MANIFESTASI dari
masalah filosofis dalam human-AI interaction:

AI TAHU lebih banyak dari yang DITAMPILKAN ke manusia.
Human MEMBERI PERSETUJUAN berdasarkan informasi TIDAK LENGKAP.
Ini adalah ASYMMETRIC INFORMATION PROBLEM.

MENGAPA INI PENTING:
1. Teknik yang digunakan SUDAH BERUSIA PULUHAN TAHUN
   Symlink following adalah kerentanan klasik Unix.
   Fakta bahwa AI tools terbaru masih rentan menunjukkan
   bahwa SECURITY BASICS terabaikan dalam AI race.

2. TRUST BOUNDARY TIDAK TERDEFINISI DENGAN BAIK
   Di mana batas antara "AI membantu" dan "AI berbahaya"?
   Siapa yang bertanggung jawab: AI vendor atau developer?
   Claude Code bilang "di luar threat model" — benarkah?

3. APPROVAL UI ADALAH ILUSI KEAMANAN
   Dialog "Approve/Reject" tidak bermakna jika developer
   tidak diberi informasi lengkap. Ini adalah SECURITY
   THEATER — terlihat aman tapi sebenarnya tidak.

PREDICTION:
GhostApproval baru awal. Seiring AI agent menjadi lebih
otonom (Agentic AI), trust boundary gap akan semakin
melebar. AI yang bisa menjalankan command, mengakses
file system, dan berinteraksi dengan network adalah
ancaman yang belum terpetakan sepenuhnya.

CALL TO ACTION:
✦ AI assistant vendor: IMPLEMENTASI canonical path resolution
✦ Developer: JANGAN blind-trust AI approval dialog
✦ Security industry: BUAT framework keamanan AI agent
✦ Regulator: PERTIMBANGKAN mandatory security standard
  untuk AI coding tools

Severity Assessment

Faktor Nilai
CVSS Score 7.8 (HIGH)
Attack Vector Local (via repository clone)
Attack Complexity LOW
Privileges Required None (hanya perlu AI assistant)
User Interaction Required (klik Approve)
Scope Changed (dari workspace → sistem)
Confidentiality Impact High
Integrity Impact High
Availability Impact Medium
Exploitability HIGH (teknik sederhana, mudah direproduksi)

Sumber

  • Wiz Research — “GhostApproval: A Trust Boundary Gap in AI Coding Assistants” (Juli 2026)
  • SecurityWeek — “AI Coding Tools Tricked Into Hacking Developer Machine via Decades-Old Technique”
  • CVE-2026-12958 (Amazon Q Developer)
  • CVE-2026-50549 (Cursor)
  • CWE-61: UNIX Symbolic Link Following
  • CWE-451: User Interface Misrepresentation of Critical Information
  • OWASP — LLM Application Security Top 10
  • MITRE ATT&CK — Trust Boundary Bypass

Recommended Intelligence Reading