Топ-10 OWASP для агентских приложений: что нужно изменить разработчикам API
Список 10 лучших агентских приложений OWASP может привести к тому, что существующие нарушения безопасности API будут нарушены. На этой неделе разработчики API могут выпустить пять исправлений вместе с кодом.
Ваш API имеет ограничение скорости, проверки BOLA и проверку ввода. Агент ИИ обходит все три объединение шести авторизованных конечных точек в путь повышения привилегий, который ваша модель угроз никогда не учитывала. 520 случаев неправильного использования инструментов, зарегистрированных в начале 2026 года, подтверждают, что это не теория.
OWASP опубликовала список 10 лучших агентских приложений в 2026 году, составленный более чем 100 исследователями безопасности из Cisco, Microsoft, Google и более широкое сообщество. Список нацелен на новую поверхность угрозы: автономную Агенты ИИ, которые вызывают ваши API, сохраняют память и принимают решения без одобрения человека.
Оригинал Топ-10 безопасности API OWASP предполагает человек нажимает кнопку и запускает один запрос. В агентском списке предполагается, что машина отправляет 50 запросов. в цепочке, каждый из которых получает информацию от предыдущего ответа, без участия человека. Те же API, разные профиль злоумышленника.
В этом руководстве рассматриваются пять агентных рисков OWASP, которые разработчики API могут устранить на уровне API. рабочий код, который вы можете отправить на этой неделе.
Уровень агентного действия: почему ваши API являются поверхностью атаки
API-интерфейсы превратились в то, что исследователи безопасности теперь называют «уровнем агентских действий». Каждый инструмент Использование агента ИИ при заказе инвентаря, запросе к базе данных или отправке уведомления сопоставляется с API-вызов. Агент не взаимодействует с пользовательским интерфейсом. Он читает вашу спецификацию OpenAPI, обнаруживает конечные точки и вызывает их последовательно.
48,9% организаций не имеют возможности контролировать межмашинный трафик. Это означает, что половина всех API инфраструктура не может отличить пользователя-человека от автономного агента. Если вы не можете сказать разница, вы не можете применять разные правила.
В топ-10 агентов OWASP входят: чрезмерное агентирование, быстрое внедрение, уязвимости цепочки поставок, Отравление памяти, неправильное использование инструментов и повышение привилегий, каскадные сбои, небезопасная обработка вывода, Недостаточное ведение журнала, утечка данных и неадекватная песочница. В этом руководстве основное внимание уделяется пяти рискам. вы исправляете на уровне API.
1. Чрезмерная свобода действий: агенты звонят на конечные точки, которые им не следует делать.
Сотруднику службы поддержки необходимо прочитать статус заказа. Вы даете ему ключ API с доступом ко всей вашей API. Агент обнаруживает, что он также может отменять заказы, возвращать средства и удалять учетные записи. Чрезмерный агентство означает, что у агента есть разрешения, выходящие за рамки его задач.
Это агентский эквивалент OWASP API5 (нарушенная авторизация на уровне функций), но атака вектор другой. Злоумышленник обнаруживает конечные точки администратора с помощью исходного кода или угадывания URL-адресов. Агент обнаруживает их через вашу спецификацию OpenAPI или манифест инструмента. Агенту не нужно гадать; вы передали ему полное меню.
Исправлено: ключи API с ограниченной областью действия и списки разрешенных конечных точек.
Создайте один ключ API для каждого агента. Каждый ключ соответствует явному списку разрешенных конечных точек. Отклонить любой запрос за пределами этого списка.
// 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}\
Чтобы перед обработкой убедиться, что JWT агента имеет правильную область, проверьте утверждения токена.
/v1/jwt/decode конечная точка декодирует любой JWT без ключа подписи, поэтому вы можете
аудит содержимого токена во время разработки и в вашем конвейере CI:
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"
}'
Ответ:
{
"success": true,
"data": {
"header": {
"alg": "RS256",
"typ": "JWT"
},
"payload": {
"sub": "agent-order-bot",
"scope": "orders.read",
"iat": 1749564800,
"exp": 1749568000
}
}
}
The scope в претензии говорится orders.read. Если этот агент позвонит
POST /api/orders/:id/cancel, ваше промежуточное программное обеспечение должно отклонить запрос до того, как он достигнет
ваш обработчик.
2. Неправильное использование инструментов и повышение привилегий: агенты связывают вызовы API в цепочку
В ранних отчетах было зарегистрировано 520 инцидентов неправильного использования инструмента, что делает его наиболее распространенной агентной угрозой. шаблон: агент вызывает конечную точку А, извлекает данные из ответа, затем использует эти данные для вызова конечная точка B таким образом, которого разработчик никогда не ожидал.
Пример: Агент интеграции Stripe имеет доступ к GET /api/customers/:id
и POST /api/refunds. Агент читает историю платежей клиента, определяет
транзакцию с наибольшей стоимостью и возвращает деньги самому себе. Каждый отдельный звонок проходит авторизацию.
Цепочка — это эксплойт.
Исправлено: ограничения скорости для каждого агента и отслеживание глубины цепочки.
Стандартное ограничение скорости учитывает запросы по IP-адресу или по ключу API. Агентское ограничение ставок добавляет два аспекта:
- Ограничения для каждого инструмента: Ограничить количество раз, сколько раз один агент может вызывать определенную конечную точку в пределах окна.
- Ограничения по глубине цепи: Отслеживайте, сколько последовательных вызовов API выполняет агент за один сеанс, и отключайте их при определенном пороге.
| Тип ограничения скорости | Что он ловит | Кому это нужно |
|---|---|---|
| По IP | DDoS, подброс учетных данных | Каждый API |
| Для каждого API-ключа | Злоупотребления отдельными потребителями | Каждый API |
| Для каждого агента для каждого инструмента | Агент вызывает одну конечную точку в цикле | API, используемые агентами |
| Глубина цепи | Многоступенчатое повышение привилегий | API, используемые агентами |
Требовать от агентов отправки X-Agent-Session заголовок. Отслеживайте количество звонков за сеанс. Когда
количество превышает ваш порог, верните 429 с четким сообщением об ошибке.
3. Недостаточное ведение журнала: нет видимости вызовов API агента.
48,9% организаций не видят межмашинного трафика. Когда агент использует ваш API, вы нужно ответить: какой агент? Какие конечные точки? В каком порядке? В каком временном окне? Стандартные журналы доступа показывать IP-адреса и временные метки. Они не показывают личность агента или последовательность вызовов.
В списке агентов OWASP недостаточное ведение журналов помечается как главный риск, поскольку атаки агентов выглядят как разрешенный трафик. Каждый отдельный запрос проходит авторизацию. Эксплойт живет в шаблоне по всему несколько запросов.
Исправлено: требовать заголовки атрибуции и регистрировать цепочки вызовов.
Добавьте три обязательных заголовка для потребителей агентов:
X-Agent-ID: уникальный идентификатор агента (привязанный к его ключу API)X-Agent-Session: идентификатор текущей задачи или разговораUser-Agent: структура и версия агента (например,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();
}
Это промежуточное программное обеспечение регистрирует каждый запрос в виде структурированного JSON, который передается в любой SIEM или агрегатор журналов.
Он также обеспечивает глубину цепочки, отслеживая последовательные вызовы за сеанс. Когда вы расследуете инцидент,
вы можете восстановить полную цепочку, отфильтровав sessionId.
4. Небезопасная обработка вывода: агенты доверяют ответам API без проверки.
Агент вызывает ваш API, получает ответ в формате JSON и передает его на следующий шаг в своей цепочке. Если ответ содержит неожиданные поля, неправильные типы или внедренный контент, агент распространяет проблему ниже по течению. Это агентский эквивалент OWASP API10 (небезопасное использование API), усиленный тот факт, что агенты обрабатывают ответы автоматически, без проверки человеком.
Пример: Конкурент компрометирует сторонний API ценообразования. Агент доставит товар
цены, получает ответ с манипулируемой price поле установлено на 0,01 и размещает заказ
по этой цене. Ни один человек никогда не видел ответа.
Исправление: проверяйте каждый ответ по схеме JSON.
Начните с создания схемы на основе заведомо хорошего ответа. /v1/schema/json-to-jsonschema
Конечная точка создает схему JSON из любого образца JSON:
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 }
]
}
}'
Ответ:
{
"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" }
}
}
}
}
}
}
}
Затем проверьте каждый ответ, который получает ваш агент, на соответствие этой схеме. /v1/schema/validate
Конечная точка проверяет объект JSON на соответствие любой схеме JSON и возвращает определенные ошибки:
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"
}
}'
Ответ:
{
"success": true,
"data": {
"valid": false,
"errors": [
{
"path": "",
"message": "must NOT have additional properties: internalNote"
}
]
}
}
Проверка поймана internalNote, поле, которому не место в ответе. Если API
начинает возвращать неожиданные поля, ваш агент прекращает обработку вместо передачи испорченных данных вниз по течению.
Вот полный шаблон с использованием 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. Уязвимости цепочки поставок: определения скомпрометированных инструментов
Агенты ИИ обнаруживают инструменты через серверы MCP, спецификации OpenAPI и манифесты инструментов. Если злоумышленник модифицирует определения инструмента, агент вызывает другую конечную точку, отправляет данные на другой сервер или выполняет с другими параметрами, чем задумал разработчик.
Пример: Вы используете сервер MCP с открытым исходным кодом, который определяет 30 инструментов. Злоумышленник представляет
запрос на включение, который изменяет URL-адрес API одного инструмента с api.stripe.com к
api.str1pe.com. Изменение проходит проверку кода, поскольку оно представляет собой один символ. Ваш агент
теперь отправляет платежные данные на сервер злоумышленника.
Исправлено: определения инструментов хеширования и проверка во время выполнения.
Хешируйте каждое определение инструмента во время развертывания. Прежде чем ваш агент зарегистрирует инструмент во время выполнения, еще раз хэшируйте его.
и сравните. /v1/hash конечная точка генерирует хеш SHA-256 любой строки:
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"
}'
Ответ:
{
"success": true,
"data": {
"hash": "a3f2b8c1d4e5f67890abcdef1234567890abcdef1234567890abcdef12345678",
"algorithm": "sha256"
}
}
Вот полный рабочий процесс проверки целостности с использованием 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}\`
);
}
}
Запустите этап генерации хеша в конвейере CI. Храните файл хэшей вместе с вашим развертыванием. артефакт. Во время выполнения каждый инструмент проверяется перед регистрацией. Один измененный персонаж в любом определение инструмента вызывает серьезный сбой.
Топ-10 агентов OWASP и топ-10 API Security: сравнение
Оба списка дополняют друг друга. Вот как пять агентных рисков соотносятся с ближайшим к ним API безопасности. аналоги и что меняется:
| Агентический риск | Ближайший риск безопасности API | Что изменится для агентов |
|---|---|---|
| Чрезмерное агентство | API5 сломанная функция аутентификации | Агенты обнаруживают все конечные точки по спецификациям; ключи области действия для каждого агента |
| Неправильное использование инструмента | Потребление ресурсов API4 | Агенты звонят по цепочке для эскалации; добавить ограничения глубины цепочки |
| Недостаточное ведение журнала | Нет прямого эквивалента | Вызовы агентов выглядят как авторизованный трафик; добавить заголовки атрибуции |
| Небезопасный вывод | API10 Небезопасное потребление | Агенты обрабатывают ответы без проверки человеком; добавить проверку схемы |
| Цепочка поставок | Нет прямого эквивалента | Скомпрометированный инструмент перенаправляет трафик агента; добавить хеши целостности |
Контрольный список поставки: пять исправлений безопасности агентного API
Каждое исправление независимо. Выберите один, отправьте его и переходите к следующему.
| Исправить | Что делать | Конечная точка Ботой |
|---|---|---|
| Ключи API с ограниченной областью действия | Один ключ на каждого агента; конечные точки белого списка для каждого ключа | /v1/jwt/decode |
| Ограничения ставок для каждого агента | Отслеживайте глубину цепочки для каждого инструмента и сеанса | |
| Заголовки атрибуции | Требовать X-Agent-ID, X-Agent-Session; структурированный журнал в формате JSON | |
| Проверка ответа | Создать схему на основе хорошего ответа; проверить все ответы агента | /v1/schema/validate, /v1/schema/json-to-jsonschema |
| Целостность инструмента | Определения инструмента хеширования при развертывании; проверять во время выполнения | /v1/hash |
Что будет дальше
Полный список 10 лучших агентских приложений OWASP доступен по адресу owasp.org. Cisco, Microsoft и Google анонсировали инициативы по агентной безопасности на RSAC 2026, так что ожидайте инструменты и стандарты для быстрого продвижения до конца года.
Пять оставшихся рисков в списке (быстрое внедрение, отравление памяти, каскадные сбои, Утечки и неадекватная песочница) требуют исправлений на уровне структуры агента, а не на уровне API. Если вы запускаете структуру агента, прочитайте полный документ OWASP. Если вы используете API, перечисленные выше пять исправлений: ваша отправная точка.
Начните с ключей API с ограниченной областью действия. Это единственное изменение блокирует большую часть чрезмерного вмешательства и злоупотребления инструментами. сценарии. Затем добавьте заголовки атрибуции, чтобы вы могли видеть, что делают ваши агенты. Остальное следует из видимость.
FAQ
- Чем список 10 лучших агентских приложений OWASP отличается от списка 10 лучших приложений OWASP API по безопасности?
- В рейтинге API Security Top 10 (2023 г.) рассматриваются риски, исходящие от потребителей-людей: нарушение авторизации, недостатки аутентификации, чрезмерный доступ к данным. В рейтинге «10 лучших агентских приложений» (2026 г.) рассматриваются риски, связанные с автономными агентами искусственного интеллекта, которые связывают вызовы API, сохраняют память между сеансами и принимают решения без контроля человека. Оба списка применимы к API, но агентный список нацелен на шаблоны межмашинного взаимодействия, которые оригинал никогда не предполагал.
- Что такое чрезмерная агентность в агентных приложениях?
- Чрезмерная свобода действий возникает, когда ИИ-агент имеет доступ к конечным точкам API или действиям, выходящим за рамки того, что требуется для его задачи. Например, агент службы поддержки клиентов, имеющий доступ к конечным точкам выставления счетов, возврата средств и удаления учетной записи, может объединить эти звонки, чтобы выйти далеко за рамки ответов на вопросы. Исправление — это ключи API с ограниченной областью действия, которые ограничивают каждого агента конкретными конечными точками, которые ему нужны.
- Нужно ли мне перестраивать свой API для обеспечения агентной безопасности?
- Нет. Перестраиваться не нужно. Пять исправлений, описанных в этом руководстве, ключи API с ограниченной областью действия, ограничения скорости для каждого инструмента, заголовки атрибуции запросов, проверка схемы ответа и проверки целостности определения инструмента, являются дополнениями к существующему API. Вы можете отправить каждый отдельно.
- Почему неправильное использование инструментов является наиболее распространенной угрозой для агентских приложений?
- Неправомерное использование инструментов и повышение привилегий зафиксировали 520 инцидентов в ранних отчетах, поскольку агенты связывают вызовы API способами, которые разработчики даже не предполагали. Один агент может вызвать конечную точку чтения, проанализировать ответ, а затем вызвать конечную точку записи, используя данные первого вызова для повышения привилегий. Большинство API не имеют механизма для обнаружения или блокировки многошаговых цепочек из одного сеанса агента.
- Как приписать запросы API конкретным агентам ИИ?
- Добавьте необходимый заголовок X-Agent-ID в свой API. Каждый агент получает уникальный идентификатор, привязанный к его ключу API с областью действия. Регистрируйте как ключ API, так и идентификатор агента при каждом запросе. Это дает вам полный контрольный журнал того, какой агент вызывал какую конечную точку, когда и в какой последовательности.
Начните разработку с botoi
150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.