FixVibe

// docs / security guides / ai-code scanner

فحص أمان للكود المُولَّد بالذكاء الاصطناعي: DAST لتطبيقات vibe-coded

يتم شحن التطبيقات المصممة باستخدام Cursor وClaude Code وLovable وBolt وv0 وReplit وWindsurf بشكل أسرع من أي جيل سابق من برامج الويب - كما أنها تأتي مع مجموعة يمكن التنبؤ بها من الثغرات الأمنية. تشرح هذه الصفحة سبب احتياج التطبيقات التي تم إنشاؤها AI- إلى فحص مختلف عن أدوات pentest التقليدية، وفئات الثغرات الأمنية التي يتم تمثيلها بشكل زائد، وكيف يختلف DAST عن SAST عندما تكون قاعدة التعليمات البرمجية تم إنشاؤها نصفًا آليًا، وما الذي يجب البحث عنه في الماسح الضوئي المصمم لحمل العمل هذا.

لماذا يحتاج الكود الذي تم إنشاؤه AI- إلى فحص أمني مختلف

AI يتم تدريب أدوات البرمجة على مستودعات مفتوحة المصدر على نطاق واسع. تنحرف بيانات التدريب هذه نحو make it work على make it secure. ويترتب على ذلك بعض الأنماط الهيكلية:

  • Autocomplete bias. يفوز أقرب استيراد مطابق. يؤدي لصق مقتطف Supabase الذي يستخدم المفتاح service_role في ملف واحد إلى جعل هذا المفتاح هو اقتراح الإكمال التلقائي في الملف التالي - حتى في مكونات React من جانب العميل حيث لا ينتمي إليها أبدًا.
  • No long-term context. لا يتذكر LLM آخر RLS تجاوزك أو تشريح حادثة فريقك. كل ملف تم إنشاؤه يكون جديدًا، وغالبًا ما يفتقد إلى الأنماط الدفاعية التي قد يحملها البشر عبر الملفات.
  • Speed as the rewarded metric. يشيد المستخدمون بالسرعة؛ LLM التدريب يعزز ذلك. يتفوق "إنشاء أسرع Next.js مصادقة" على "إنشاء مصادقة Next.js الأكثر أمانًا" على إشارات ردود الفعل الخاصة بزمن الوصول.
  • Training data gaps. تهيمن قواعد التعليمات البرمجية الأقدم على بيانات التدريب وتسبق إعدادات الأمان الافتراضية الحديثة (صارمة CSP، SameSite=Lax، HSTS، RLS). تعكس التعليمات البرمجية التي تم إنشاؤها أنماطًا كانت عادية في عام 2019 ولكنها غير آمنة اليوم.
  • Implicit platform trust. عندما يقوم Cursor بإنشاء تطبيق Vercel فإنه يفترض أن الإعدادات الافتراضية لـ Vercel آمنة. بعضها (تلقائي-HTTPS، ملفات تعريف الارتباط الموقعة). الكثير منها ليس كذلك (لا يوجد CSP افتراضيًا، مسموح به CORS، مسارات تصحيح الأخطاء الافتراضية Next.js).

عشر فئات من الثغرات الأمنية ممثلة بشكل زائد في التطبيقات المرمزة

عبر آلاف عمليات الفحص للتطبيقات التي تم إنشاؤها AI-، تظهر نفس فئات البحث بشكل غير متناسب:

  1. Exposed Supabase service-role keys. A service_role JWT (يبدأ eyJ) الملتزم بحزمة العميل يتجاوز كل سياسة RLS في المشروع. Cursor يكملها تلقائيًا على الجانب الخطأ من الحدود؛ السفن الرئيسية في /_next/static/....
  2. Missing Row-Level Security (RLS). يرى النموذج CREATE TABLE public.items ويستمر دون تمكين RLS. يمكن للمستخدمين المجهولين بعد ذلك قراءة أو كتابة أي صف عبر المفتاح المجهول العام. انظر baas.supabase-rls.
  3. Open Firebase / Firestore rules. غالبًا ما تقرأ ملفات القواعد التي تم إنشاؤها allow read, write: if true; أو تتخطى ملف القواعد بالكامل. تنتهي قواعد وضع الاختبار الافتراضية بعد 30 يومًا وتقفل قاعدة البيانات، ولكن فقط إذا لاحظ المطور ذلك.
  4. Hardcoded API keys in bundles. Stripe يتم تضمين المفاتيح المباشرة، وAnthropic sk-ant-*، وOpenAI sk-*، وGoogle AIza*، وAWS AKIA* في الحمولات النافعة JS عندما ينقضي نظام env-var. يقوم secrets.browser-storage بوضع علامة عليها على مستوى الصفحة المعروضة.
  5. Missing Content Security Policy. لا يوجد رأس استجابة Content-Security-Policy يعني أن كل نص مضمن XSS على بعد نقرة واحدة من الاستيلاء الكامل على الحساب. CSP مجردة؛ يتخطى Codegen ذلك بشكل روتيني. headers.security-headers يُبلغ عن الفجوة من خلال إرشادات الإصلاح الخاصة بالنظام الأساسي للنشر.
  6. Next.js middleware misplacement. باستخدام التخطيط src/، Next.js يلتقط فقط src/middleware.ts - يتم تجاهل مستوى الجذر middleware.ts بصمت. يبدو أن المصادقة لا تزال تعمل لأن الصفحات تستدعي requireAuth()، لكن الرؤوس وCSP وحدود المعدل لا تصل.
  7. IDOR via unsigned IDs. تثق المعالجات التي تم إنشاؤها GET /api/items/[id] في معلمة المسار ولا تتحقق من الملكية مطلقًا. يؤدي المشي في العدد الصحيح أو UUID إلى كشف بيانات كل مستأجر.
  8. Broken auth flows. رموز Magic-link بدون expires_at؛ التحقق JWT الذي يتخطى aud وexp؛ مكالمات من جانب العميل getSession() (والتي تقرأ ملف تعريف ارتباط لم يتم التحقق منه) بدلاً من getUser() من جانب الخادم.
  9. Debug endpoints in production. تم إنشاؤها /api/debug أو /api/health أو /api/__nextjs_original-stack-frame أو /.next/trace تتسرب المسارات الداخلية. discovery.platform-vercel يقوم باختبارها من خلال التحقق من صحة المحتوى لتجنب النتائج الإيجابية الخاطئة في SPA الاحتياطية.
  10. Plaintext sensitive fields. تم تخزين كلمات المرور وAPI والمفاتيح وPII كنص عادي في Postgres لأن الترحيل لم يصل إلى pgcrypto أو قبو خارجي.

DAST vs SAST: لماذا يهم كلاهما بالنسبة للتعليمات البرمجية التي تم إنشاؤها AI-

التحليل الثابت (SAST) والتحليل الديناميكي (DAST) هما مكملان وليسا بديلين. يعد التقسيم أكثر أهمية بالنسبة للتعليمات البرمجية التي تم إنشاؤها AI- أكثر من التعليمات البرمجية المكتوبة بخط اليد.

SAST يقرأ كود المصدر الموجود على القرص. فهو يلتقط الأسرار الموجودة في الملفات المصدر، واستدعاءات الوظائف الخطيرة، والأنماط المحفوفة بالمخاطر قبل تشغيل الإنشاء. لا يمكنه رؤية تكوين وقت التشغيل، أو متغيرات البيئة المنشورة، أو كيف قام المجمّع بتحويل التعليمات البرمجية الخاصة بك.

DAST يضرب التطبيق المنشور مثل المستخدم. فهو يرى الاستجابات المشحونة، ويعمل ضد حزمة الإنتاج، ويلتقط انحراف التكوين بين الريبو والنشر. يعثر على مفاتيح مضمنة في JavaScript منقولة والتي لم يسبق لـ SAST رؤيتها لأنها دخلت عبر مهمة process.env في وقت الإنشاء.

For AI-generated code, DAST is essential لأن السفن تختلف عما كتبه النموذج. التجميع، وهز الأشجار، والنقل، والبطانة المتغيرة للبيئة كلها تخلق أسطحًا جديدة. SAST على المصدر يمكن أن تفوت الأسرار المضمنة في الحزمة بالكامل. DAST يلتقط كلا الطبقتين. يتم تشغيل خط الأنابيب الناضج SAST في CI وDAST مقابل المعاينة المنشورة - هذا هو النمط FixVibe.

ما الذي تبحث عنه في الماسح الضوئي AI-code

تم تصميم معظم الماسحات الضوئية ذات الأغراض العامة DAST (Burp Suite، OWASP ZAP، Nessus) للتطبيقات المتجانسة وتدفقات المصادقة التقليدية. مسح Vercel + Supabase + Stripe AI- يحتاج التطبيق الذي تم إنشاؤه إلى:

  • BaaS coverage. اختبارات حقيقية مقابل Supabase RLS، Firebase / قواعد Firestore، وتكوين Clerk، وAWS Amplify، والأشكال JWT التي تنبعث منها تلك الخدمات. القواعد العامة OWASP لا تعرف ما يجب وضع علامة عليه.
  • JS bundle inspection. ضبط التعبير العادي لـ API- تنسيقات المفاتيح والرموز المميزة والأنماط الخاصة بالموفر (Stripe sk_live_، Anthropic sk-ant-، Supabase JWTs بدءًا من eyJ). إن استدلال الإنتروبيا العامة يلقي الكثير من الإيجابيات الكاذبة.
  • Passive + active split. تعمل عمليات التحقق السلبية (العناوين، وملفات تعريف الارتباط، والأسرار، BaaS التكوين، DNS) بأمان ضد أي URL. تتطلب التحقيقات النشطة (SQLi، XSS، SSTI، IDOR المشي) حد ترخيص لأنها تطلق حمولات على نمط الهجوم.
  • Framework awareness. التعرف على Next.js App Router مقابل Pages Router، Vite SPA إعادة الكتابة، Vercel حماية النشر، Cloudflare توجيه الصفحات. الماسح الضوئي الذي لا يميز Vite SPA الاحتياطي عن /_next/build-manifest.json الحقيقي يولد ضوضاء.
  • Rate-limit safety. ميزانيات طلب محدودة لكل عملية مسح، ومقارنة الاستجابة الأساسية لتجنب WAF- الإيجابيات الكاذبة المربكة، وخطوط الأساس العشوائية لمسبار المسار لاكتشاف عمليات النشر الشاملة 403.
  • Authorization gating for intrusive payloads. إرسال SQLi أو OS- حمولات الأوامر إلى مجال لا تملكه يعد أمرًا غير قانوني في معظم الولايات القضائية. يتطلب الماسح الضوئي الحقيقي DNS أو HTTP- التحقق من ملكية الملف قبل السماح لك بتشغيل الوضع النشط ضد الهدف.

منهج FixVibe: المسح المبني على الأدلة، والحمل الإيجابي الكاذب المنخفض

FixVibe is a DAST built specifically for AI-generated web apps. The passive phase runs 200+ checks on the rendered page (headers, CSP, cookies, leaked secrets, BaaS misconfiguration, tech fingerprinting, DNS, attack-surface discovery). The active phase adds payload-firing probes (SQLi, XSS, SSTI, CORS, redirects, IDOR walking, CSRF, account enumeration, blind-SSRF) gated behind verified-domain ownership. Repo scans add code-phase checks against connected GitHub repositories. Every finding includes evidence, a CWE link, a remediation recipe, and either a coding-agent prompt or operator steps depending on who can actually apply the fix. The scan engine is open in the changelog — every new check, accuracy improvement, and false-positive fix is logged publicly.

FixVibe vs Burp Suite وZAP وNessus: عندما تفوز كل أداة

لا توجد أداة واحدة تغطي كل سير العمل. الإطار الصادق للمكان الذي يناسب FixVibe:

Aspectجناح التجشؤ / OWASP ZAPنيسوس / كواليسFixVibe
Setupالوكيل اليدوي + تكوين المتصفحتثبيت وكيل الشبكةالصق URL، قم بتسجيل الدخول
حان الوقت للعثور الأولدقائق إلى ساعاتساعات إلى أيامثواني إلى دقائق
BaaS فحص التكوينلا يوجد دعم من الدرجة الأولىNoSupabase RLS، Firebase القواعد، كاتب، JWT الأشكال
JS كشف سر الحزمةريكس الإنتروبيا العامةNoPro الأنماط الخاصة بـvider + فحص تخزين المتصفح
AI- الوعي بإطار العمل المشفرUnawareUnawareNext.js، فايت، Vercel، Cloudflare الصفحات، Supabase
بوابة ترخيص المسح النشطالانضباط النطاق اليدويالانضباط النطاق اليدويمطلوب: DNS أو HTTP- التحقق من مجال الملف
الدرجة الأولى API + MCPAPI موجودAPI موجودREST + MCP الخادم لكلود / Cursor / Continue

حيث تكمل الأدوات بعضها البعض

  • Start with FixVibe passive كخط أساسي مجاني مدته 30 ثانية مقابل أي معاينة للنشر. إذا لم يظهر أي شيء، فلديك إشارة ثقة سريعة.
  • Move to FixVibe active على مجال تم التحقق منه عندما تريد تغطية نشطة كاملة (SQLi/SSTI/IDOR/etc.) للبنية الأساسية الخاصة بك.
  • Layer SAST (Semgrep، CodeQL، Snyk) على الكود المصدري في CI. SAST يلتقط ما لا يستطيع وقت التشغيل رؤيته — الأنماط الخطرة في مسارات التعليمات البرمجية التي لا تصل إلى النشر مطلقًا.
  • Reach for Burp Suite عندما تحتاج إلى سلاسل هجوم مخصصة (تجاوزات مصادقة محددة، سيناريوهات IDOR المعقدة، والعيوب في منطق الأعمال). التجشؤ هو أعمق طاولة عمل يدوية متاحة؛ FixVibe هو أسرع خط أساس آلي.

الخطوات التالية

Continue مع Vibe coding security checklist لمراجعة ما قبل الشحن المكونة من 44 عنصرًا، أو انتقل إلى How to secure an app built with AI coding tools للتعزيز خطوة بخطوة باستخدام مقتطفات التعليمات البرمجية.

// scan your app

كفّ عن القراءة. ابدأ بإيجاد الثغرات في تطبيقك.

أدخل URL — FixVibe يُجري كل فحص سلبي من هذا الدليل بالإضافة إلى أكثر من 200 فحص آخر في أقل من دقيقة. Free، بدون تثبيت، بدون بطاقة.

  • Free الطبقة — 3 عمليات مسح/شهر، بدون بطاقة.
  • عمليات الفحص السلبي ضد أي URL — لا حاجة للتحقق من المجال.
  • تم ضبطه على Cursor، Claude Code، Lovable، Bolt، v0، Replit.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
فحص أمان للكود المُولَّد بالذكاء الاصطناعي: DAST لتطبيقات vibe-coded — Docs · FixVibe