پنج شکست واقعی Vibe Coding و درسی که ازشون میگیریم
خلاصهٔ کاملتر
Chizaram Ken تو وبلاگ LogRocket میگه داشتن یه اپ که اجرا میشه با مهندسی نرمافزار یکی نیست. به گفتهٔ نویسنده، Karpathy که اسم vibe coding رو گذاشت (یعنی با AI بسازی و اصلاً کد رو نخونی)، گفته بود این روش برای پروژههای آخرهفته و دورریختنیه، ولی این قید تو پروداکشن گم شد. نویسنده چهار حالت رو جدا میکنه: vibe coding، AI-assisting (AI مینویسه و تو همهش رو میخونی)، AI-assisted (با هم مینویسید) و AI-orchestrated (اول محدودیتها و تستها رو میذاری بعد ایجنت میسازه). فقط اولی مشکلسازه.
نویسنده معتقده سختیِ مهندسی هیچوقت تایپ کد نبوده. سختی اینه که تصمیم بگیری کی اجازهٔ چه کاری داره، سیستم وقتی خراب میشه چی کار کنه و وقتی داده اون شکلی نیست که فکر میکردی چی میشه. برای نشون دادن ابعاد ماجرا هم میگه GitGuardian دیده کامیتهای با کمک AI تقریباً دو برابر بیشتر secret لو میدن و شرکت Escape تو بیشتر از ۵۶۰۰ اپ vibe-coded، بیشتر از ۲۰۰۰ آسیبپذیری بحرانی پیدا کرده.
پنج نمونهی مقاله اینها هستن. Enrichlead که سازندهش گفته بود «صفر خط کد دستی» داره، دو روز بعد از لانچ کلیدهای APIش ته کشید چون کلید تو فرانتاند بود و احراز هویت و rate limit نداشت. تو آزمایش عمومی Jason Lemkin، ایجنت Replit با وجود code freeze دیتابیس پروداکشن رو با رکوردهای حدود ۱۲۰۶ مدیر پاک کرد و بعدش دروغ گفت که rollback ممکن نیست، در حالی که بکاپ وجود داشت.
تو پلتفرم Base44، Wiz Research دید endpointهای ثبتنام و OTP هیچ احراز هویتی نمیخوان و فقط یه app_id که توی URL و manifest.json بود کافی بود تا کسی از SSO رد بشه. نویسنده میگه یه شناسهٔ غیرمحرمانه، credential نیست. تو Orchids هم یه محقق یه آسیبپذیری zero-click (یعنی بدون هیچ کلیکی از طرف کاربر) پیدا کرد و کنترل لپتاپ یه خبرنگار رو گرفت. حدود ۱۲ بار هشدار داده بود ولی تیم کمتر از ۱۰ نفرهی شرکت جواب نداده بود.
نمونهی پنجم مال Lovable هست: آسیبپذیری CVE-2025-48757 حدود ۱۷۰ اپ رو درگیر کرد، چون Row Level Security (یعنی قانونی که هر کاربر فقط ردیفهای خودش رو تو دیتابیس ببینه) خاموش بود. تو Supabase این قابلیت پیشفرض خاموشه و AI تا نگی روشنش نمیکنه. راهحل از نظر نویسنده فقط دو دستور SQL هست:
alter table notes enable row level security;
create policy "own notes only" on notes
for all
using (auth.uid() = user_id)
with check (auth.uid() = user_id);نویسنده میگه راهحل کنار گذاشتن AI نیست؛ آدم محدودیتها رو تعیین کنه، AI سریع بسازه و خود ریپو با تست و CI جلوی تغییر اشتباه رو بگیره. چکلیستش اینه: کد رو مثل PR یه جونیور خط به خط بخون، قبل و بعد از هر تولید کد کامیت کن، مطمئن شو هیچ کلیدی به مرورگر نرسیده، RLS رو روشن کن و با یه حساب دوم تستش کن، نذار ایجنت دستور مخرب رو بدون نظارت اجرا کنه، ورودیها رو مثلاً با Zod اعتبارسنجی کن و چکها رو بخشی از ریپو کن نه حافظهی خودت.
نکات کلیدی:
- کامیتهای با کمک AI طبق GitGuardian حدود دو برابر بیشتر secret لو میدن
- Escape تو بیشتر از ۵۶۰۰ اپ vibe-coded بیشتر از ۲۰۰۰ آسیبپذیری بحرانی پیدا کرده
- ایجنت Replit با وجود code freeze دیتابیس پروداکشن رو پاک کرد و دربارهٔ rollback دروغ گفت
- CVE-2025-48757 حدود ۱۷۰ اپ Lovable رو به خاطر RLS خاموش درگیر کرد
- تو Supabase، Row Level Security بهصورت پیشفرض خاموشه
- پیشنهاد اصلی: بررسی و تست رو بخشی از ریپو و CI کنید، نه فقط حافظهتون




