CAI Technology
Menu ☰
aegis · · 8 min citire

OWASP API Top 10:2025 — checklist complet pentru API-uri RESTful

API-urile sunt diferite de aplicațiile web tradiționale. OWASP API Top 10:2025 enumeră categoriile cele mai critice de risc + cum le verificați.

CAI Technology · Ultima revizuire: 09.05.2026
OWASP API Top 10:2025 — checklist complet pentru API-uri RESTful

Pe scurt

API-urile (REST, GraphQL) sunt diferite de aplicațiile web tradiționale: nu au UI care ascunde implementarea, expun direct logica business, prelucrează volum mare de date, depind de autentificare token-based. OWASP API Security Top 10:2025 clasifică cele 10 categorii cele mai critice de risc în lumea API.

În 2026, ~70% din breach-urile semnificative implică o vulnerabilitate API (Akamai 2024 report). API-urile expun zilnic credit cards, medical records, location data, credentials — fără UI care să “ascundă” datele, totul e accesibil dacă endpoint-ul nu e protejat corect.

Acest checklist e pentru echipa de dev + security care construiește sau audită API-uri RESTful sau GraphQL.

OWASP API Top 10:2025 — lista completă

API1:2025 — Broken Object Level Authorization (BOLA / IDOR)

Cea mai frecventă vulnerabilitate API. Endpoint-ul /api/v1/users/12345/profile returnează profilul user-ului cu ID 12345 — dar nu verifică dacă utilizatorul autentificat are dreptul să vadă acel profil.

Atacator trimite ?id=12346, ?id=12347 etc. → enumerează toate profilurile.

Verificare: pentru fiecare endpoint cu ID în URL, verificați:

API2:2025 — Broken Authentication

Token-uri JWT predictibile, lipsă rate limiting pe /login, password reset cu link plain (fără TTL), session fixation, lipsă MFA pentru conturi sensibile.

Verificare: test cu hydra/burp suite pe endpoints /login, /reset, /refresh. Verificați TTL token, rate limit, MFA pentru admin.

API3:2025 — Broken Object Property Level Authorization (BOLA + Mass Assignment)

Endpoint PATCH /api/v1/users/12345 acceptă payload {role: "admin"} și actualizează direct DB. Utilizatorul își auto-promovează la admin.

Verificare: allowlist explicită câmpuri editabile per endpoint. Frameworks (Rails strong_params, Express express-validator) au pattern dedicat.

API4:2025 — Unrestricted Resource Consumption

Endpoint /api/v1/search?limit=999999 întoarce 999.999 rezultate. CPU + DB pe genunchi.

Verificare: limită hard pe pagination (limit ≤ 100), rate limiting per user/IP, timeout per request, queue prioritization.

API5:2025 — Broken Function Level Authorization (BFLA)

/api/v1/admin/users/12345/delete accesibil de utilizator cu rol user — nu doar admin. Privilege escalation.

Verificare: test sistematic toate endpoint-urile admin cu sesiune user. Folosiți role-based access control (RBAC) middleware nivel framework.

API6:2025 — Unrestricted Access to Sensitive Business Flows

/api/v1/cart/checkout acceptă reservation fără rate limit. Botul atacator face 10.000 reservation-uri pentru evenimente popular → DoS de business.

Verificare: identificați flow-uri business cheie + adăugați CAPTCHA / device fingerprinting / friction.

API7:2025 — Server Side Request Forgery (SSRF)

POST /api/v1/upload-from-url {"url": "http://evil.com/payload"} → server-ul vostru face GET la URL extern. Atacator trimite "url": "http://169.254.169.254/latest/meta-data/iam/credentials" → AWS metadata service → IAM credentials.

Verificare: allowlist domenii, deny localhost, 169.254.0.0/16 (cloud metadata), 10.0.0.0/8, 192.168.0.0/16 (intern).

API8:2025 — Security Misconfiguration

Verbose errors în production (stack trace cu DB schema), Access-Control-Allow-Origin: * cu Allow-Credentials: true, lipsă HSTS pe API endpoints, debug endpoints expuse.

Verificare: scan complet headers + response body pentru info disclosure.

API9:2025 — Improper Inventory Management

/api/v1/users deprecated dar încă activ; /api/v0/internal/admin rămas din testing; staging.api.firma.ro accesibil public cu date prod.

Verificare: inventar exhaustiv API-uri publice (incl. legacy + staging) + sunset clear pentru versiuni vechi.

API10:2025 — Unsafe Consumption of APIs

API-ul vostru consumă third-party API (Stripe, Twilio, etc.) și integrează datele în răspunsuri fără validare. Dacă third-party e compromis, payload-ul atacatorului ajunge la utilizatorii voștri.

Verificare: validate + sanitize toate datele venite din API-uri externe înainte de a le returna utilizatorilor.

Implementare audit API

Pas 1 — Inventarul endpoint-urilor

Listare completă endpoint-uri:

# OpenAPI / Swagger spec extraction
curl https://firma.ro/openapi.json | jq '.paths | keys'

# Discovery via crawl + Wayback
katana -u https://api.firma.ro -d 3
gau api.firma.ro

Pas 2 — Test fiecare endpoint cu sesiune utilizator + admin

Pentru fiecare combinație (endpoint, role):

  1. Test fără auth → trebuie 401 sau 403
  2. Test cu user role → verifică BOLA + BFLA
  3. Test cu admin role → verifică expected behavior

Pas 3 — Test schema validation

Trimiteți payload-uri malformed:

Pas 4 — Test rate limiting

# Bursting
for i in {1..1000}; do curl -X POST https://api.firma.ro/login -d 'user=admin&pass=test'; done

Așteptat: 429 Too Many Requests după N requests.

Pas 5 — Test SSRF

Pentru endpoint-uri cu input URL/file:

curl -X POST https://api.firma.ro/upload-from-url \
  -d '{"url": "http://169.254.169.254/latest/meta-data/"}'

Așteptat: 400 Bad Request sau filtru explicit.

Tools recomandate pentru API testing

ARTEMIS API Audit (în roadmap 2026)

ARTEMIS extinde catalog audit_type cu api dedicat OWASP API Top 10 — disponibil Q3 2026. Până atunci, audit manual cu Burp + ZAP recomandat.


🔗 Soluții complementare CAI Technology


tehnic@caitech.ro

Începem cu o conversație de 30 de minute.

Audit AI-readiness gratuit pentru companii peste 50 angajați. Răspundem în 24 de ore.