اگر اکنون کدهای تولیدشده توسط هوش مصنوعی را بدون بازبینی دقیق مستقر میکنید، احتمالاً در حال وارد کردن بمبهای ساعتی به محیط Production هستید. واقعیت این است که مدلهای زبانی برای «کار کردن» کد بهینه شدهاند، نه برای «امن بودن» یا «کامل بودن» ساختاری.
این وضعیت منجر به پدیدهای شده که تحلیلگران آن را Vibe Coding (کدنویسی بر اساس حس) مینامند؛ یعنی ارسال کدهایی به محیط عملیاتی که ظاهر آنها درست است اما منطق داخلیشان حفرهدار است. طبق گزارشی در dev.to که در ۲۰ ژوئن ۲۰۲۶ منتشر شد، ابزار VibeGuard برای شناسایی دقیق همین میانبرهای ساختاری طراحی شده است؛ میانبرهایی که مدلهای زبانی هنگام اولویت دادن به زیبایی و ظاهر کد بر امنیت، از آنها استفاده میکنند. همانطور که در تحلیلهای پیشین ما دربارهی توهمات مدلهای زبانی اشاره کردیم، مدلها تمایل دارند برای حفظ ظاهرِ «تمیز» کد، بخشهای حیاتی اما پیچیده را با توابع توخالی جایگزین کنند.
بیشتر برنامهنویسان فعلاً به ابزارهایی مثل Bandit یا Semgrep تکیه میکنند، اما این ابزارها برای کدهایی که انسان نوشته طراحی شدهاند. مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — از دادههای قدیمی یاد میگیرد و بهدلیل همین، بهطور مداوم الگوهای خطرناکی مثل تزریق SQL یا آسیبپذیریهای پیمایش مسیر (Path Traversal) را بازتولید میکند. تصور کنید برنامهنویسی تابعی را که در ظاهر بسیار تمیز به نظر میرسد در محیط عملیاتی قرار میدهد، اما بعداً متوجه میشود که هوش مصنوعی صرفاً یک «Stub» یا بدنه توخالی نوشته است که پیام موفقیت برمیگرداند، بدون اینکه در واقعیت هیچ دادهای را در دیتابیس ذخیره کند.
الگوی شکست هوش مصنوعی
کدهای تولیدی AI اغلب ظاهر «تمیز» را بر امنیت ترجیح میدهند. برای مثال، مدلها مکرراً از درونیابی f-string در پرسوجوهای SQL استفاده میکنند (مانند query = f"SELECT * FROM users WHERE id = {user_id}") که مستقیماً منجر به تزریق SQL میشود. به همین ترتیب در مدیریت فایلها، آنها اغلب از os.path.join به گونهای استفاده میکنند که اگر نام فایلی مانند "../../etc/passwd" ارسال شود، اجازه پیمایش مسیر (Path Traversal) را میدهد.
بر اساس مستندات فنی، VibeGuard یک اسکنر قطعی بر پایه AST (درخت نحو انتزاعی) است که از ۴۸ الگوی شناسایی برای یافتن این شکستها استفاده میکند. این ابزار از ۹ زبان برنامهنویسی از جمله پایتون، جاوااسکریپت، TypeScript، Go، روبی، جاوا، PHP، کاتلین و C/C++ پشتیبانی میکند و شناساییها را به دو دسته اصلی تقسیم کرده است:
الگوهای امنیتی (۳۳ مورد)
- تزریق دستورات (Command Injection) و SQL
- پیمایش مسیر (Path Traversal) و SSRF
- XSS و رمزهای سختافزاری (Hardcoded Secrets)
- استفاده از رمزنگاری ضعیف و فراخوانیهای خطرناک eval/exec
الگوهای Vibe-Coding (۱۵ مورد)
- STUB_SKELETON: جایگذارهای توخالی که توسط LLM رها شدهاند (مثلاً
def process(data): return {}). - MISSING_WRITE: توابعی که ادعای ذخیره داده دارند اما فاقد دستورات INSERT هستند (مثلاً بازگرداندن
{"status": "saved"}بدون نوشتن در دیتابیس). - FAKE_ASYNC: توابع نامتقارنی (Async) که از کلمه کلیدی await استفاده نمیکنند.
- DEAD_CALL_RESULT: ماژولهایی که فراخوانی میشوند اما مقادیر بازگشتیشان نادیده گرفته میشود.
- HARDCODED_TABLE: جایگزینی جستوجوهای دیتابیس با دیکشنریهای استاتیک و غولآسا.
- INPUT_OUTPUT_DISCONNECTED: پارامترهایی که هیچ تأثیری بر مقدار بازگشتی تابع ندارند.
- MOCK_PATTERN: حضور کتابخانههای تست مانند
unittest.mockدر کدهای محیط عملیاتی.
در یک تست واقعی، VibeGuard یک دستیار کدنویسی متنباز محبوب با بیش از ۲۵ هزار ستاره را بررسی کرد. این ابزار در عرض تنها ۳ ثانیه، یک آسیبپذیری تزریق دستور در سطح BLOCK در فایل agent.py (خط ۱۲۲۲) را شناسایی کرد که از subprocess.Popen(cmd, shell=True) استفاده میکرد؛ حفرهای که هر دو ابزار Bandit و Semgrep بهطور کامل نادیده گرفته بودند. نکته کلیدی این است که VibeGuard در خط لوله (Pipeline) خود از هیچ مدل زبانی استفاده نمیکند تا تضمین شود ورودی یکسان همیشه خروجی یکسانی دارد.
این تغییر، گذاری از «لینتینگ عمومی» به «حسابرسی امنیتی آگاه از AI» است. برای برنامهنویس، این یعنی دیگر «حس خوب» (Vibe) کد سیگنال اصلی نیست، بلکه یکپارچگی ساختاری در برابر حالتهای شکست شناختهشدهی مدلها سنجیده میشود. این ابزار بهطور مؤثر شکافی را میپوشاند که در آن اعتمادبهنفس بالای مدل، خطاهای منطقی بحرانی را میپوشاند.
گام بعدی شما
- اگر از GitHub Actions استفاده میکنید، میتوانید اکشن
Moonsehwan/aina-vibeguard-action@v1را در خط لوله CI/CD خود ادغام کنید تا PRهایی که حاوی تزریق SQL یا بدنههای توخالی هستند، مسدود شوند. - از لایهی رایگان (۵۰ اسکن در روز) برای بررسی سریع فایلهای حساس خود استفاده کنید. شایان ذکر است که قابلیتهای نسخه Pro تا تاریخ ۲۴ ژوئن بهصورت رایگان در دسترس هستند.
- برنامهنویسان همچنین میتوانند با استفاده از دستور
curlبه API میزبانیشده در Railway با کلید تستvg_free_testصحت کدهای تولیدشده توسط AI را بهسرعت تست کنند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو