اگر امروز کدهای زیرساختی یا اسکریپتهای Bash خود را بدون بررسی امنیتی دقیق منتشر میکنید، احتمالاً در حال باز گذاشتن درهای پشتی برای مهاجمان هستید. گیتهاب با عرضه عمومی AI Scan، حالا این نقاط کور را با قدرت هوش مصنوعی میبندد.
در ۱۵ اکتبر ۲۰۲۶، گیتهاب (GitHub) قابلیت AI Scan را برای درخواستهای ادغام (Pull Requests) بهصورت عمومی منتشر کرد. این ابزار اکنون میتواند شناسایی خودکار آسیبپذیریها را برای زبانهای PHP، Shell/Bash، Terraform (HCL)، Dockerfiles، JSP برای جاوا و Blazor برای C# به ارمغان بیاورد.
برای سالها، توسعهدهندگان برای تحلیلهای عمیق امنیتی به CodeQL متکی بودند، اما CodeQL شکافهای قابل توجهی در زمینه زیرساخت-بهعنوان-کد (IaC) و زبانهای اسکریپتی داشت. این بهروزرسانی این حفرهها را پر میکند. اکنون یک درخواست ادغام واحد که همزمان یک کنترلر PHP، یک اسکریپت استقرار (Deploy Script) و یک ماژول Terraform را تغییر میدهد، میتواند یک گزارش امنیتی جامع برای هر سه فایل دریافت کند.

این عرضه در زمانی رخ میدهد که عاملهای (Agents) کدنویسی مبتنی بر هوش مصنوعی از حالت تکمیل خودکار ساده به سمت نگهداری خودکار و خودمختار کد حرکت میکنند. گیتهاب با ادغام AI Scan مستقیماً در جریان کاری درخواستهای ادغام، تلاش میکند امنیت را به مراحل ابتدایی توسعه منتقل کند (Shift Left) تا باگها پیش از آنکه هرگز به شاخه اصلی (Main Branch) برسند، شکار شوند. این روند اتوماسیون در حوزههای دیگر نیز مشاهده میشود، جایی که تأیید خودکار قراردادهای هوشمند در حال جایگزینی بازبینیهای دستی کد است تا خطاهای انسانی کاهش یابد.
زمینه و خط زمانی (Context and Timeline)
ایده شناساییهای مبتنی بر هوش مصنوعی جدید نیست. گیتهاب اولین بار این قابلیتها را در ماه مارس معرفی کرد و گزارش داد که تستهای داخلی در عرض ۳۰ روز، بیش از ۱۷۰,۰۰۰ مورد یافته (Finding) را پردازش کردهاند. این برنامه در آن زمان توسط رسانه heise نیز پوشش داده شده بود.
این ویژگی طی یک عرضه مرحلهبندی شده پیش رفت. ابتدا در ۱۴ ژوئیه وارد پیشنمایش عمومی شد که در ابتدا داشتن لایسنس Copilot را الزامی میکرد. سپس در ۱۶ سپتامبر، گیتهاب الزام مربوط به تنظیمات پیشفرض CodeQL را حذف کرد.
با انتشار نهایی (GA) در ۱۵ اکتبر، دسترسی بهطور قابل توجهی گسترش یافت. AI Scan اکنون برای مخازن عمومی که متعلق به حسابهای شخصی یا سازمانها هستند، در دسترس است. در حالی که مخازن خصوصی و داخلی سازمانها همچنان به GitHub Code Security یا GitHub Advanced Security نیاز دارند، اما مانع لایسنس برای مخازن عمومی برداشته شده است.
پوشش گسترده و قابلیتها
ابزار AI Scan برای عملکرد خود نیازی به سیستم Build ندارد. این ابزار بهطور خودکار هنگام باز شدن یک درخواست ادغام و پس از هر کامیت بعدی فعال میشود. طبق تغییرات (Changelog) گیتهاب، این ابزار چندین دسته بحرانی از آسیبپذیریها را شناسایی میکند:
- تزریق رشته (String Injection) و SSRF
- رمزنگاری ضعیف و افشای دادههای حساس
- اختلال در کنترل دسترسی و شکستهای احراز هویت
- تنظیمات نادرست امنیتی و ریسکهای زنجیره تأمین
بهعنوان مثال در PHP، این ابزار بهطور خاص تزریقهای کلاسیک رشته را هدف قرار میدهد؛ جایی که ورودی کاربر مستقیماً در کوئریهای SQL الحاق میشود (مثلاً: "SELECT * FROM users WHERE id = $id") بهجای استفاده از دستورات پارامتریک (Parameterized Statements).
یافتهها در کنار نتایج CodeQL در تبهای "Conversation" و "Files changed" ظاهر میشوند و بهطور صریح با برچسب "AI" به همراه یک توضیح و پیشنهادهای اصلاحی علامتگذاری شدهاند. با این حال، مستندات هشدار میدهند که این یافتهها ممکن است شامل مثبتهای کاذب (False Positives) باشند.
جریان کاری اصلاح خودکار عاملمحور (Agentic Autofix)
در کنار اسکنر، گیتهاب قابلیت اصلاح خودکار عاملمحور را برای هشدارهای اسکن کد راهاندازی کرد. این قابلیت، دکمه رایگان قبلی "Generate Fix" را با گزینه "Assign to Copilot" جایگزین میکند.

وقتی یک هشدار به کوپایلت واگذار میشود، عامل کدنویسی Copilot کل پایگاه کد را — و نه فقط فایل آسیبدیده را — بررسی میکند تا یک راهکار پیشنهاد دهد. سپس این عامل، CodeQL را مجدداً اجرا میکند تا تأیید کند که هشدار بسته شده است و در نهایت یک درخواست ادغام پیشنویس (Draft PR) حاوی خلاصه و مراحل اعتبارسنجی باز میکند. با این حال، قدرت این عاملها میتواند دو لبه داشته باشد؛ همانطور که اخیراً گزارش شد عاملهای OpenAI توانستند با سوءاستفاده از یک بازی گوگل، دادههای تجاری سازمان ملل را استخراج کنند.
جزئیات کلیدی مکانیزم اصلاح خودکار عبارت است از:
- دستهبندی (Batching): کاربران میتوانند تا ۲۵ هشدار را انتخاب کنند تا کوپایلت آنها را بهطور همزمان در یک PR واحد اصلاح کند.
- محدوده (Scope): این قابلیت فقط روی هشدارهای مربوط به شاخه پیشفرض کار میکند.
- اتوماسیون: هشدارها را میتوان از طریق اسکریپت و با استفاده از نقطه انتهایی (Endpoint) "Update a code scanning alert" و تنظیم مقدار assignees به
["copilot-swe-agent[bot]"]واگذار کرد. - یکپارچگی با CLI: این عملیات را میتوان از طریق GitHub CLI اجرا کرد:
gh api -X PATCH repos/OWNER/REPO/code-scanning/alerts/42 -f 'assignees[]=copilot-swe-agent[bot]'.
هزینه «بدون نیاز به لایسنس»
اگرچه گیتهاب بیان میکند که برای مخازن عمومی لایسنس Copilot لازم نیست، اما این سرویس رایگان نیست. AI Scan و اصلاحات عاملمحور، «اعتبارات هوش مصنوعی امنیت کد» (Code Security AI Credits) را مصرف میکنند، حتی زمانی که مخزن عمومی باشد.
هر اعتبار AI معادل ۰.۰۱ دلار است. برای کسانی که پلنهای موجود دارند، اعتبارها در سطح موجودیت پرداخت (Billing Entity) تجمیع میشوند:
- Copilot Business: شامل ۱۹۰۰ اعتبار به ازای هر کاربر در ماه.
- Copilot Enterprise: شامل ۳۹۰۰ اعتبار به ازای هر کاربر در ماه.
پس از اتمام این سهمیهها، استفاده بهصورت متری (Metered) محاسبه میشود. اگر یک حساب هیچ صندلی (Seat) کوپایلت نداشته باشد، هیچ اعتبار رایگانی وجود ندارد و تمام مصرف از ابتدا متری است. شایان ذکر است که پیشنهادات کلاسیک Copilot Autofix اعتباری مصرف نمیکنند، اما اصلاحات جدید عاملمحور هم اعتبار AI و هم دقایق GitHub Actions را مصرف میکنند.
محدودیتهای بحرانی
با وجود وضعیت GA، ابزار AI Scan مرزهای سختگیرانهای دارد. یافتهها صرفاً توصیهای (Advisory) هستند؛ در حال حاضر نمیتوان از آنها در Rulesetها برای مسدود کردن ادغامها (Merge) یا شکست دادن بررسیهای اسکن کد استفاده کرد.
سایر محدودیتهای قابل توجه عبارتند از:
- قانون فورک (Fork Rule): درخواستهای ادغام حاصل از فورکها و مواردی که توسط Dependabot باز میشوند، اسکن نمیشوند. این یک شکاف بزرگ برای پروژههای متنباز است که اکثر مشارکتها از طریق فورکها انجام میشود.
- عدم اسکن کامل: این ابزار فقط PRها را اسکن میکند. کدهای قدیمی (Legacy) تا زمانی که فایلی در یک PR تغییر نکند، خوانده نمیشوند.
- پرامپتها: این ابزار فایلهای
copilot-instructions.mdیاCLAUDE.mdرا نادیده میگیرد و از پرامپتهای داخلی خود استفاده میکند. - محدودیتهای اعتبارسنجی: اصلاح خودکار عاملمحور بر اساس اصل «تلاش حداکثری» (Best-effort) کار میکند. این ابزار فقط میتواند اصلاحات را برای مجموعه کوئریهای پیشفرض CodeQL تأیید کند و نمیتواند اصلاحات مربوط به کوئریهای سفارشی CodeQL یا هشدارهای ابزارهای شخص ثالث را اعتبارسنجی کند.

تحلیل تحریریه
این حرکت نشاندهنده تغییر دیدگاه گیتهاب نسبت به «دروازه امنیتی» است. با توصیهای کردن ابزار و متری کردن هزینه، آنها با امنیت هوش مصنوعی بهمثابه یک دستیار بازبین برخورد میکنند، نه یک دیوار آتش سختگیرانه. تصمیم به دریافت هزینه برای اسکن مخازن عمومی از طریق اعتبارها — بهجای ارائه یک سطح رایگان — نشان میدهد که هزینه پردازشی اسکنهای عاملمحور همچنان بالا است.
برای یک توسعهدهنده معمولی، ارزش واقعی در پوشش «کدهای چسب» (Glue Code) مانند Bash و Terraform است. این فایلها اغلب ضعیفترین حلقه در زنجیره امنیت هستند اما بهندرت مورد همان سختگیریهایی قرار میگیرند که کدهای جاوا یا پایتون تجربه میکنند. با این حال، ماهیت «تلاش حداکثری» اصلاحات خودکار به این معناست که بازبینی انسانی همچنان تنها safeguard واقعی است. یک PR پیشنویس سبز رنگ ثابت میکند که هشدار بسته شده است، نه اینکه تغییرات لزوماً درست باشند.
برای پیادهسازی ایمن این قابلیت، سازمانها باید پیش از فعالسازی، یک بودجه سختگیرانه برای اعتبارات Code Security AI تعیین کنند. فعال کردن آن در سطح سازمان، قابلیت را برای تمام مخازن واجد شرایط بهطور همزمان اعمال میکند و PRهای واجد شرایط میتوانند پیش از آنکه مدیر مخزن بتواند آن را غیرفعال کند، اعتبار مصرف کنند. بدون بودجه، اسکنها روی اعتبارات متری ادامه مییابند؛ اما تحت یک بودجه سخت بدون مالک، اسکن ممکن است در اواسط ماه بدون اطلاع قبلی متوقف شود.
منتظر ادغام نهایی AI Scan در الزامات ادغام (Merge Requirements) باشید، که در آن صورت این ابزار از یک پیشنهاد مفید به یک مانع امنیتی اجباری تبدیل خواهد شد.
اگر این مطلب مفید بود، توجه داشته باشید که اولین زبان شاخص AI Scan، زبان PHP است. تزریق رشته زمانی بسیار راحتتر بازبینی میشود که هر فراخوانی SQL بهجای پخش شدن در کنترلرها، پشت یک آداپتور واحد باشد. کتاب من، Decoupled PHP، درباره ساختاردهی اپلیکیشنهای PHP به این روش است. علاوه بر این، برای کسانی که از چندین عامل کدنویسی استفاده میکنند، من Hermes IDE را (در گیتهاب) ساختهام؛ یک IDE رایگان و با سورس باز برای macOS، ویندوز و لینوکس.




گفتگو