Langsung ke konten
Guide

OWASP 10 Teratas untuk aplikasi agen: apa yang perlu diubah oleh pengembang API

| 10 min read

Daftar 10 teratas aplikasi agen OWASP berisiko kehilangan keamanan API Anda yang ada. Lima perbaikan yang dapat dikirimkan pengembang API minggu ini, dengan kode.

Shield icon on dark background representing application security framework
Photo by FLY:D on Unsplash

API Anda memiliki pembatasan laju, pemeriksaan BOLA, dan validasi masukan. Agen AI melewati ketiganya merangkai enam titik akhir resmi ke jalur eskalasi hak istimewa yang tidak pernah dipertimbangkan oleh model ancaman Anda. 520 insiden penyalahgunaan alat pada pelaporan awal tahun 2026 menegaskan bahwa hal ini tidak bersifat teoretis.

OWASP merilis 10 Aplikasi Agen Teratas pada tahun 2026, yang dibuat oleh 100+ peneliti keamanan dari Cisco, Microsoft, Google, dan komunitas yang lebih luas. Daftar ini menargetkan ancaman baru: otonom Agen AI yang memanggil API Anda, menyimpan memori, dan mengambil keputusan tanpa persetujuan manusia.

Yang asli 10 Teratas Keamanan API OWASP berasumsi manusia mengklik tombol dan memicu satu permintaan. Daftar agen mengasumsikan mesin menjalankan 50 permintaan dalam sebuah rantai, masing-masing diinformasikan oleh respons sebelumnya, tanpa ada manusia dalam lingkaran tersebut. API yang sama, berbeda profil penyerang.

Panduan ini mencakup lima risiko agen OWASP yang dapat diperbaiki oleh pengembang API di lapisan API kode kerja yang dapat Anda kirimkan minggu ini.

Lapisan tindakan agen: mengapa API Anda menjadi permukaan serangan

API telah berkembang menjadi apa yang sekarang disebut oleh para peneliti keamanan sebagai "lapisan tindakan agen". Setiap alat an Agen AI menggunakan, baik memesan inventaris, menanyakan database, atau mengirim pemberitahuan, memetakan ke panggilan API. Agen tidak berinteraksi dengan UI. Ia membaca spesifikasi OpenAPI Anda, menemukan titik akhir, dan memanggil mereka secara berurutan.

48,9% organisasi tidak memiliki visibilitas terhadap lalu lintas mesin-ke-mesin. Itu berarti setengah dari seluruh API infrastruktur tidak dapat membedakan pengguna manusia dari agen otonom. Jika Anda tidak bisa mengatakannya perbedaannya, Anda tidak dapat menerapkan aturan yang berbeda.

10 Besar Agen OWASP mencakup: Agensi Berlebihan, Injeksi Cepat, Kerentanan Rantai Pasokan, Keracunan Memori, Penyalahgunaan Alat dan Peningkatan Hak Istimewa, Kegagalan Bertingkat, Penanganan Output yang Tidak Aman, Logging Tidak Memadai, Kebocoran Data, dan Sandboxing Tidak Memadai. Panduan ini berfokus pada lima risiko Anda memperbaikinya di lapisan API.

1. Agensi yang berlebihan: agen memanggil titik akhir yang seharusnya tidak mereka lakukan

Agen dukungan pelanggan perlu membaca status pesanan. Anda memberinya kunci API dengan akses ke seluruh file Anda API. Agen menemukan bahwa mereka juga dapat membatalkan pesanan, mengeluarkan pengembalian dana, dan menghapus akun. Berlebihan agensi berarti agen memiliki izin di luar tugasnya.

Ini adalah agen yang setara dengan OWASP API5 (otorisasi tingkat fungsi rusak), tetapi serangannya vektornya berbeda. Penyerang manusia menemukan titik akhir admin melalui kode sumber atau tebakan URL. Agen menemukannya melalui spesifikasi OpenAPI atau manifes alat Anda. Agen tidak perlu menebak-nebak; Anda menyerahkan menu lengkapnya.

Perbaikan: cakupan kunci API dan daftar titik akhir yang diizinkan

Buat satu kunci API per agen. Setiap kunci dipetakan ke daftar eksplisit titik akhir yang diizinkan. Tolak apa pun permintaan di luar daftar itu.

// Scoped API key configuration per agent
const agentPermissions = {
  "agent-order-bot": {
    allowedEndpoints: [
      "GET /api/orders/:id",
      "GET /api/orders/:id/status"
    ],
    rateLimit: { requests: 20, windowSeconds: 60 },
    maxChainDepth: 3
  },
  "agent-support-bot": {
    allowedEndpoints: [
      "GET /api/orders/:id",
      "POST /api/tickets",
      "GET /api/tickets/:id"
    ],
    rateLimit: { requests: 10, windowSeconds: 60 },
    maxChainDepth: 5
  }
};

// Middleware: check agent scope before processing
function enforceAgentScope(req, res, next) {
  const agentId = req.headers["x-agent-id"];
  const permissions = agentPermissions[agentId];

  if (!permissions) {
    return res.status(403).json({ error: "Unknown agent" });
  }

  const route = \`\${req.method} \${req.route.path}\

Untuk memverifikasi bahwa JWT agen memiliki cakupan yang benar sebelum diproses, periksa klaim token. Itu /v1/jwt/decode titik akhir menerjemahkan JWT apa pun tanpa memerlukan kunci penandatanganan, sehingga Anda bisa mengaudit konten token selama pengembangan dan dalam saluran CI Anda:

curl -s -X POST https://api.botoi.com/v1/jwt/decode \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZ2VudC1vcmRlci1ib3QiLCJzY29wZSI6Im9yZGVycy5yZWFkIiwiaWF0IjoxNzQ5NTY0ODAwLCJleHAiOjE3NDk1NjgwMDB9.signature"
  }'

Tanggapan:

{
  "success": true,
  "data": {
    "header": {
      "alg": "RS256",
      "typ": "JWT"
    },
    "payload": {
      "sub": "agent-order-bot",
      "scope": "orders.read",
      "iat": 1749564800,
      "exp": 1749568000
    }
  }
}

Itu scope klaim mengatakan orders.read. Jika agen ini menelepon POST /api/orders/:id/cancel, middleware Anda harus menolak permintaan tersebut sebelum mencapainya pawangmu.

2. Penyalahgunaan alat dan peningkatan hak istimewa: agen yang merangkai panggilan API

Penyalahgunaan alat mencatat 520 insiden pada pelaporan awal, menjadikannya ancaman agen yang paling umum. Itu pola: agen memanggil titik akhir A, mengekstrak data dari respons, lalu menggunakan data tersebut untuk memanggil titik akhir B dengan cara yang tidak pernah diantisipasi oleh pengembang.

Contoh: Agen integrasi Stripe memiliki akses ke GET /api/customers/:id Dan POST /api/refunds. Agen membaca riwayat pembayaran pelanggan, mengidentifikasi transaksi bernilai tertinggi, dan mengeluarkan pengembalian dana untuk dirinya sendiri. Setiap panggilan individu melewati otorisasi. Rantai adalah eksploitasinya.

Solusi: batas tarif per agen dan pelacakan kedalaman rantai

Pembatasan tarif standar menghitung permintaan per IP atau per kunci API. Pembatasan tarif agen menambahkan dua dimensi:

  • Batasan per alat: Batasi berapa kali satu agen dapat memanggil titik akhir tertentu dalam satu jendela
  • Batas kedalaman rantai: Lacak berapa banyak panggilan API berurutan yang dilakukan agen dalam satu sesi dan hentikan pada ambang batas yang ditentukan
Jenis batas tarif Apa yang ditangkapnya Siapa yang membutuhkannya
Per-IP DDoS, isian kredensial Setiap API
Per-kunci API Konsumen individu yang kasar Setiap API
Per-agen-per-alat Agen memanggil satu titik akhir dalam satu lingkaran API yang dikonsumsi oleh agen
Kedalaman rantai Peningkatan hak istimewa multi-langkah API yang dikonsumsi oleh agen

Mewajibkan agen untuk mengirim X-Agent-Session tajuk. Lacak jumlah panggilan per sesi. Ketika hitungan melebihi ambang batas Anda, kembalikan 429 dengan pesan kesalahan yang jelas.

3. Pencatatan log tidak memadai: tidak ada visibilitas terhadap panggilan API agen

48,9% organisasi tidak mengetahui lalu lintas mesin-ke-mesin. Saat agen mengeksploitasi API Anda, Anda perlu menjawab: agen yang mana? Titik akhir yang mana? Dalam urutan apa? Pada jendela jam berapa? Log akses standar tampilkan alamat IP dan stempel waktu. Mereka tidak menunjukkan identitas agen atau urutan panggilan.

Daftar agen OWASP menandai pencatatan log yang tidak memadai sebagai risiko utama karena serangan agen terlihat seperti itu lalu lintas resmi. Setiap permintaan individu melewati autentikasi. Eksploitasinya hidup dalam pola yang melintang beberapa permintaan.

Perbaiki: memerlukan header atribusi dan mencatat rantai panggilan

Tambahkan tiga header yang diperlukan untuk konsumen agen:

  • X-Agent-ID: pengidentifikasi unik untuk agen (terkait dengan kunci API-nya)
  • X-Agent-Session: pengidentifikasi untuk tugas atau percakapan saat ini
  • User-Agent: kerangka kerja dan versi agen (mis., LangChain/0.3.1)
// Middleware: log every agent request with attribution
function agentAuditLog(req, res, next) {
  const logEntry = {
    timestamp: new Date().toISOString(),
    agentId: req.headers["x-agent-id"] || "unknown",
    apiKey: req.headers["x-api-key"]?.slice(-8) || "none",
    method: req.method,
    path: req.path,
    sessionId: req.headers["x-agent-session"] || "none",
    ip: req.ip,
    userAgent: req.headers["user-agent"]
  };

  // Structured JSON log for your SIEM
  console.log(JSON.stringify(logEntry));

  // Track chain depth per session
  const session = req.headers["x-agent-session"];
  if (session) {
    const depth = chainTracker.increment(session);
    if (depth > MAX_CHAIN_DEPTH) {
      return res.status(429).json({
        error: "Agent chain depth exceeded",
        maxDepth: MAX_CHAIN_DEPTH,
        currentDepth: depth
      });
    }
  }

  next();
}

Middleware ini mencatat setiap permintaan sebagai JSON terstruktur, yang dimasukkan ke dalam SIEM atau agregator log apa pun. Ini juga menerapkan kedalaman rantai dengan melacak panggilan berurutan per sesi. Saat Anda menyelidiki suatu kejadian, Anda dapat merekonstruksi rantai penuh dengan memfilter sessionId.

4. Penanganan keluaran tidak aman: agen mempercayai respons API tanpa validasi

Agen memanggil API Anda, menerima respons JSON, dan meneruskannya ke langkah berikutnya dalam rangkaiannya. Jika respons berisi bidang yang tidak diharapkan, jenis yang salah, atau konten yang dimasukkan, agen akan menyebarkan masalah hilir. Ini setara dengan OWASP API10 (konsumsi API yang tidak aman), yang diperkuat oleh fakta bahwa agen memproses tanggapan secara otomatis tanpa tinjauan manusia.

Contoh: Pesaing mengkompromikan API penetapan harga pihak ketiga. Agen mengambil produk harga, menerima respon dengan dimanipulasi price bidang diatur ke 0,01, dan melakukan pemesanan dengan harga itu. Tidak ada manusia yang pernah melihat tanggapannya.

Perbaiki: validasi setiap respons terhadap Skema JSON

Mulailah dengan membuat skema dari respons yang diketahui baik. Itu /v1/schema/json-to-jsonschema titik akhir menghasilkan Skema JSON dari sampel JSON apa pun:

curl -s -X POST https://api.botoi.com/v1/schema/json-to-jsonschema \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "json": {
      "orderId": "ord_12345",
      "status": "shipped",
      "total": 49.99,
      "items": [
        { "sku": "WIDGET-A", "quantity": 2 }
      ]
    }
  }'

Tanggapan:

{
  "success": true,
  "data": {
    "schema": {
      "type": "object",
      "properties": {
        "orderId": { "type": "string" },
        "status": { "type": "string" },
        "total": { "type": "number" },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "sku": { "type": "string" },
              "quantity": { "type": "integer" }
            }
          }
        }
      }
    }
  }
}

Kemudian validasi setiap respons yang diterima agen Anda terhadap skema tersebut. Itu /v1/schema/validate titik akhir memeriksa objek JSON terhadap Skema JSON apa pun dan mengembalikan kesalahan tertentu:

curl -s -X POST https://api.botoi.com/v1/schema/validate \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "schema": {
      "type": "object",
      "required": ["orderId", "status", "total"],
      "properties": {
        "orderId": { "type": "string" },
        "status": { "type": "string", "enum": ["pending", "shipped", "delivered"] },
        "total": { "type": "number", "minimum": 0 }
      },
      "additionalProperties": false
    },
    "data": {
      "orderId": "ord_12345",
      "status": "shipped",
      "total": 49.99,
      "internalNote": "rush order"
    }
  }'

Tanggapan:

{
  "success": true,
  "data": {
    "valid": false,
    "errors": [
      {
        "path": "",
        "message": "must NOT have additional properties: internalNote"
      }
    ]
  }
}

Validasi tertangkap internalNote, bidang yang tidak termasuk dalam respons. Jika API mulai mengembalikan bidang yang tidak terduga, agen Anda berhenti memproses alih-alih meneruskan data yang tercemar ke hilir.

Berikut pola lengkap menggunakan Botoi Node.js SDK:

import Botoi from "botoi";

const botoi = new Botoi({ apiKey: process.env.BOTOI_API_KEY });

// Step 1: generate a schema from a known-good response
const schemaResult = await botoi.schema.jsonToJsonschema({
  json: knownGoodResponse
});
const responseSchema = schemaResult.data.schema;

// Step 2: validate every agent-received response against that schema
async function validateAgentResponse(response) {
  const validation = await botoi.schema.validate({
    schema: responseSchema,
    data: response
  });

  if (!validation.data.valid) {
    console.error("Response failed validation:", validation.data.errors);
    throw new Error("Untrusted response rejected by schema validation");
  }

  return response;
}

5. Kerentanan rantai pasokan: definisi alat yang dikompromikan

Agen AI menemukan alat melalui server MCP, spesifikasi OpenAPI, dan manifes alat. Jika penyerang memodifikasi definisi alat, agen memanggil titik akhir yang berbeda, mengirimkan data ke server yang berbeda, atau mengeksekusi dengan parameter berbeda dari yang diinginkan pengembang.

Contoh: Anda menggunakan server MCP sumber terbuka yang mendefinisikan 30 alat. Seorang penyerang mengajukan permintaan tarik yang mengubah URL API salah satu alat api.stripe.com ke api.str1pe.com. Perubahan lolos peninjauan kode karena hanya berupa karakter tunggal. Agen Anda sekarang mengirimkan data pembayaran ke server penyerang.

Perbaiki: definisi alat hash dan verifikasi saat runtime

Hash setiap definisi alat pada waktu penerapan. Sebelum agen Anda mendaftarkan alat pada waktu proses, lakukan hashing lagi dan bandingkan. Itu /v1/hash titik akhir menghasilkan hash SHA-256 dari string apa pun:

curl -s -X POST https://api.botoi.com/v1/hash \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -d '{
    "text": "{\\"name\\":\\"get_order_status\\",\\"description\\":\\"Retrieve current order status by order ID\\",\\"parameters\\":{\\"orderId\\":\\"string\\"}}",
    "algorithm": "sha256"
  }'

Tanggapan:

{
  "success": true,
  "data": {
    "hash": "a3f2b8c1d4e5f67890abcdef1234567890abcdef1234567890abcdef12345678",
    "algorithm": "sha256"
  }
}

Berikut alur kerja pemeriksaan integritas penuh menggunakan Botoi SDK:

import Botoi from "botoi";
import fs from "fs";

const botoi = new Botoi({ apiKey: process.env.BOTOI_API_KEY });

// Hash every tool definition at deploy time
const toolDefs = JSON.parse(fs.readFileSync("./mcp-tools.json", "utf-8"));
const hashes = {};

for (const tool of toolDefs) {
  const result = await botoi.hash.sha256({
    text: JSON.stringify(tool)
  });
  hashes[tool.name] = result.data.hash;
}

fs.writeFileSync("./tool-hashes.json", JSON.stringify(hashes, null, 2));

// At runtime, verify before registering any tool
async function verifyToolIntegrity(tool) {
  const result = await botoi.hash.sha256({
    text: JSON.stringify(tool)
  });
  const expected = hashes[tool.name];

  if (result.data.hash !== expected) {
    throw new Error(
      \`Tool "\${tool.name}" failed integrity check. \\n\` +
      \`Expected: \${expected}\\n\` +
      \`Got: \${result.data.hash}\`
    );
  }
}

Jalankan langkah pembuatan hash di alur CI Anda. Simpan file hash bersama penerapan Anda artefak. Saat runtime, setiap alat diverifikasi sebelum pendaftaran. Satu karakter yang berubah dalam hal apa pun definisi alat memicu kegagalan besar.

10 teratas agen OWASP vs 10 teratas Keamanan API: perbandingan

Kedua daftar tersebut saling melengkapi. Berikut cara lima risiko agen dipetakan ke Keamanan API terdekatnya rekanan dan perubahan apa:

Risiko agenik Risiko Keamanan API terdekat Perubahan apa yang terjadi pada agen
Agensi yang Berlebihan Auth Fungsi Rusak API5 Agen menemukan semua titik akhir dari spesifikasi; kunci cakupan per agen
Penyalahgunaan Alat Konsumsi Sumber Daya API4 Panggilan berantai agen untuk meningkat; tambahkan batas kedalaman rantai
Pencatatan Tidak Memadai Tidak ada padanan langsung Panggilan agen terlihat seperti lalu lintas resmi; tambahkan header atribusi
Keluaran Tidak Aman API10 Konsumsi Tidak Aman Agen memproses tanggapan tanpa tinjauan manusia; tambahkan validasi skema
Rantai Pasokan Tidak ada padanan langsung Alat yang disusupi menghilangkan lalu lintas agen pengalihan; tambahkan hash integritas

Daftar periksa pengiriman: lima perbaikan untuk keamanan API agen

Setiap perbaikan bersifat independen. Pilih satu, kirimkan, lanjutkan ke yang berikutnya.

Memperbaiki Apa yang harus dilakukan Titik akhir Botoi
Kunci API tercakup Satu kunci per agen; titik akhir daftar yang diizinkan per kunci /v1/jwt/decode
Batas tarif per agen Lacak kedalaman rantai per alat dan per sesi
Header atribusi Memerlukan X-Agent-ID, X-Agent-Session; log JSON terstruktur
Validasi respons Hasilkan skema dari respons yang baik; memvalidasi semua respons agen /v1/schema/validate, /v1/schema/json-to-jsonschema
Integritas alat Defisit alat hash saat diterapkan; verifikasi saat runtime /v1/hash

Apa yang terjadi selanjutnya

10 Teratas OWASP untuk Aplikasi Agenik selengkapnya ada di owasp.org. Cisco, Microsoft, dan Google semuanya mengumumkan inisiatif keamanan agen di RSAC 2026, seperti yang diharapkan perkakas dan standar untuk bergerak cepat sepanjang sisa tahun ini.

Lima risiko yang tersisa dalam daftar (Prompt Injection, Memory Poisoning, Cascading Failures, Data Kebocoran, dan Sandboxing yang Tidak Memadai) memerlukan perbaikan pada lapisan kerangka agen, bukan pada lapisan API. Jika Anda menjalankan kerangka agen, baca dokumen OWASP selengkapnya. Jika Anda menjalankan API, lima perbaikan di atas adalah titik awal Anda.

Mulailah dengan kunci API yang dicakup. Perubahan tunggal tersebut menghalangi sebagian besar tindakan berlebihan dan penyalahgunaan alat skenario. Kemudian tambahkan header atribusi sehingga Anda dapat melihat apa yang dilakukan agen Anda. Sisanya mengikuti dari visibilitas.

FAQ

Apa perbedaan 10 Besar Aplikasi Agen OWASP dengan 10 Besar Keamanan API OWASP?
API Security Top 10 (2023) mengatasi risiko dari konsumen manusia: otorisasi yang rusak, kelemahan autentikasi, paparan data yang berlebihan. 10 Aplikasi Agen Teratas (2026) mengatasi risiko dari agen AI otonom yang menyambungkan panggilan API, menyimpan memori di seluruh sesi, dan membuat keputusan tanpa pengawasan manusia. Kedua daftar tersebut berlaku untuk API, namun daftar agen menargetkan pola mesin-ke-mesin yang tidak pernah diantisipasi sebelumnya.
Apa yang dimaksud dengan keagenan berlebihan dalam aplikasi agen?
Agensi yang berlebihan terjadi ketika agen AI memiliki akses ke titik akhir API atau tindakan di luar tugas yang diperlukan. Misalnya, agen dukungan pelanggan dengan akses ke titik akhir penagihan, pengembalian dana, dan penghapusan akun dapat menyambungkan panggilan tersebut untuk meningkatkan lebih dari sekadar menjawab pertanyaan. Perbaikannya adalah cakupan kunci API yang membatasi setiap agen ke titik akhir tepat yang dibutuhkannya.
Apakah saya perlu membangun kembali API saya untuk keamanan agen?
Tidak. Anda tidak perlu membangun kembali. Lima perbaikan yang tercakup dalam panduan ini, kunci API tercakup, batas kapasitas per alat, header atribusi permintaan, validasi skema respons, dan pemeriksaan integritas definisi alat, merupakan tambahan pada API Anda yang sudah ada. Anda dapat mengirimkan masing-masing secara mandiri.
Mengapa penyalahgunaan alat merupakan ancaman aplikasi agen yang paling umum?
Penyalahgunaan alat dan peningkatan hak istimewa mencatat 520 insiden dalam pelaporan awal karena agen menghubungkan panggilan API dengan cara yang tidak pernah diinginkan oleh pengembang. Agen tunggal dapat memanggil titik akhir baca, mengurai respons, lalu memanggil titik akhir tulis menggunakan data dari panggilan pertama untuk meningkatkan hak istimewa. Kebanyakan API tidak memiliki mekanisme untuk mendeteksi atau memblokir rantai multi-langkah dari satu sesi agen.
Bagaimana cara mengatribusikan permintaan API ke agen AI tertentu?
Tambahkan header X-Agent-ID yang diperlukan ke API Anda. Setiap agen mendapatkan pengidentifikasi unik yang terkait dengan kunci API cakupannya. Catat kunci API dan ID agen pada setiap permintaan. Ini memberi Anda jejak audit lengkap tentang agen mana yang memanggil titik akhir mana, kapan, dan dalam urutan apa.

Mulai membangun dengan botoi

150+ endpoint API untuk pencarian, pemrosesan teks, pembuatan gambar, dan utilitas developer. Paket gratis, tanpa kartu kredit.