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).

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

The same finding classes show up disproportionately in AI-generated apps:

  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. يمكن للمستخدمين المجهولين بعد ذلك قراءة أو كتابة أي صف عبر المفتاح المجهول العام. انظر Supabase Row-Level Security.
  3. Open Firebase / Firestore rules. Generated rules files often read allow read, write: if true; or skip the rules file entirely. Test-mode rules let anyone read and overwrite data until someone replaces them.
  4. Hardcoded API keys in bundles. Stripe يتم تضمين المفاتيح المباشرة، وAnthropic sk-ant-*، وOpenAI sk-*، وGoogle AIza*، وAWS AKIA* في الحمولات النافعة JS عندما ينقضي نظام env-var. يقوم Secrets in JavaScript Bundles بوضع علامة عليها على مستوى الصفحة المعروضة.
  5. Missing Content Security Policy. لا يوجد رأس استجابة Content-Security-Policy يعني أن كل نص مضمن XSS على بعد نقرة واحدة من الاستيلاء الكامل على الحساب. CSP مجردة؛ يتخطى Codegen ذلك بشكل روتيني. HTTP 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. Generated /api/debug, /api/health, /api/__nextjs_original-stack-frame, or /.next/trace routes leak internals. FixVibe reports them only with evidence that they really are exposed (Vercel-Specific Exposure).
  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. Recognising real API-key formats — Stripe sk_live_, Anthropic sk-ant-, Supabase service-role keys — and telling a secret key from a publishable one. Generic pattern matching throws too many false positives.
  • Passive + active split. تعمل عمليات التحقق السلبية (العناوين، وملفات تعريف الارتباط، والأسرار، BaaS التكوين، DNS) بأمان ضد أي URL. تتطلب التحقيقات النشطة (SQLi، XSS، SSTI، IDOR المشي) حد ترخيص لأنها تطلق حمولات على نمط الهجوم.
  • Framework awareness. Recognising Next.js App Router vs Pages Router, Vite SPA rewrites, Vercel deployment-protection, Cloudflare Pages routing. A scanner that doesn't understand how these platforms answer unknown paths generates noise.
  • Rate-limit safety. Bounded request budgets per scan, and findings that require positive evidence — a blanket 403 from a WAF is not proof a file exists.
  • 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 230+ 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: عندما تفوز كل أداة

No single tool covers every workflow. For a sourced side-by-side of FixVibe, Burp Suite, ZAP, Snyk, Semgrep and Aikido, with a decision matrix, see choosing a security scanner for AI-built apps.

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

  • Start with FixVibe passive as a free baseline against any deploy preview — it usually finishes in under a minute. If nothing surfaces, you have a fast confidence signal.
  • 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 لمراجعة ما قبل الشحن المكونة من 51 عنصرًا، أو انتقل إلى How to secure an app built with AI coding tools للتعزيز خطوة بخطوة باستخدام مقتطفات التعليمات البرمجية.

// scan your app

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

Drop in a URL — FixVibe runs every passive check from this guide plus the rest of its 230+ passive checks, usually in under a minute. Free, no install, no card.

  • 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 · FixVibe