الفرق الحمراء — الهجومخبير70mL19
أمن واجهات البرمجة (APIs)
أهم 10 ثغرات في الـ APIs بحسب OWASP
#BOLA#OAuth#GraphQL#REST
لماذا أمن الـ API هو سطح الهجوم الأهم اليوم؟
تشبيه — شرح مبسط
الموقع التقليدي مثل بنك بشبّاك واحد يخدم الزبائن. الـ API الحديث مثل بنك بألف باب خلفي للموظفين، الموبايل، الشركاء، الشركات الأخرى. نسيت إغلاق باب واحد = مصيبة. أكثر من 70% من حركة الويب الآن APIs.
OWASP API Security Top 10 (2023)
- API1 — BOLA (Broken Object Level Auth): نسخة الـ IDOR على API. أكثر الثغرات شيوعاً.
- API2 — Broken Authentication: ضعف JWT، تخمين tokens.
- API3 — Broken Object Property Level Auth: مستخدم يعدّل حقولاً ليس مسموحاً له بها (mass assignment).
- API4 — Unrestricted Resource Consumption: لا rate limit → DoS أو brute force.
- API5 — Broken Function Level Auth: المستخدم العادي يصل لـ
/admin/*. - API6 — Unrestricted Access to Sensitive Business Flows: شراء آلاف العناصر بسعر تخفيض.
- API7 — Server Side Request Forgery (SSRF).
- API8 — Security Misconfiguration: CORS مفتوح، debug endpoints.
- API9 — Improper Inventory Management: APIs قديمة (v1) منسية و مستخدمة.
- API10 — Unsafe Consumption of 3rd-party APIs.
BOLA — أكثر الثغرات شيوعاً
HTTP
# طلب شرعي
GET /api/v1/users/1042/orders
Authorization: Bearer eyJ...
# تغيير المعرّف فقط
GET /api/v1/users/1043/orders
Authorization: Bearer eyJ... ← نفس التوكن
# لو نجح: BOLA — السيرفر لم يفحص الملكيةالدفاع
في كل endpoint يجب أن يكون:
WHERE owner_id = current_user.id. لا تعتمد فقط على الـ ID في الـ URL. استخدم UUIDs لتقليل التخمين.GraphQL — سطح هجوم خاص
- Introspection — كشف كل الـ schema (عطّله في الإنتاج).
- Query depth attacks — query عميق يستهلك الـ CPU.
- Field duplication / aliasing — لاختراق rate limits.
- Batching attacks — تجربة كل كلمات السر في طلب واحد.
- SQL/NoSQL injection داخل الـ resolvers.
graphql attack
# Introspection للكشف
{ __schema { types { name fields { name } } } }
# Batching brute-force
[
{ "query": "mutation { login(u: \"admin\", p: \"a\") }" },
{ "query": "mutation { login(u: \"admin\", p: \"b\") }" },
...
]أدوات: graphql-cop, InQL, clairvoyance, GraphQLmap.
OAuth 2.0 / OIDC — الأخطاء الشائعة
- Implicit flow — مهجور، لا تستخدمه.
- Missing PKCE في الموبايل و SPAs.
- redirect_uri غير محدد بدقة → سرقة code.
- State parameter مفقود → CSRF.
- قبول tokens من أي issuer.
- عدم التحقق من
audداخل الـ JWT.
الأمان الحديث
استخدم Authorization Code + PKCE دائماً، حتى للـ SPAs. خزّن tokens في HttpOnly cookies، لا في localStorage.
Rate Limiting و DoS
- على مستوى الـ user, IP, و endpoint منفصلين.
- استخدم token bucket أو sliding window.
- أبطئ الـ login بعد 3 محاولات (exponential backoff).
- راقب API spike anomalies في الـ SIEM.
- أدوات: Cloudflare Rate Limiting, AWS WAF rate-based rules, Redis-cell, envoy ratelimit.
API Discovery و Inventory
لا يمكنك حماية ما لا تعرفه. الـ shadow APIs و zombie APIs أكبر مخاطر اليوم.
- Salt Security, Noname, 42Crunch, Akamai API Security.
- توليد OpenAPI specs تلقائياً من الـ traffic.
- مراجعة دورية للـ deprecated endpoints.
اختبار الـ APIs
tools
# Discovery
kiterunner scan https://api.target.com -A=apiroutes-241121
arjun -u https://api.target.com/users -m GET # parameter discovery
# Fuzzing
ffuf -u "https://api.target.com/v1/FUZZ" -w api-wordlist.txt -mc 200,401,403
postman / Insomnia / Hoppscotch
# Authn / Authz testing
ZAP API scanner
mindmap-style: Burp + Autorize plugin
graphw00f # GraphQL fingerprinting
clairvoyance # GraphQL schema recovery without introspection
# Continuous
Schemathesis (property-based)
Stoplight + Spectral (lint OpenAPI)مبادئ تصميم آمن
- Never trust the client — فحص كل شيء على السيرفر.
- صلاحيات على مستوى كل field، لا فقط الـ object.
- استخدم scopes ضيقة و short-lived tokens.
- إصدار (versioning) واضح + خطة hijack للـ deprecation.
- كل response يحوي Content-Type صحيح + headers أمنية.
- سجّل كل authn/authz failures في الـ SIEM.
- Pagination بحدود قصوى لمنع dump كامل.