Checkpoint؛ اسکن امنیتی اپ لاراول با یک دستور
خلاصهٔ کاملتر
Checkpoint یه وابستگی توسعه (dev dependency) برای لاراوله که اپت رو از نظر مشکلات امنیتی اسکن میکنه و نتیجه رو با یه دستور آرتیزان گزارش میده. در مجموع ۲۶ چک جدا اجرا میکنه و اگه چیزی fail شه کد خروجی غیرصفر برمیگردونه، پس میتونه جلوی دیپلوی بشینه. service providerش هم auto-discover میشه و چیزی برای ثبت دستی نداره.
composer require --dev andreapollastri/checkpoint
php artisan checkpoint:scanاین ۲۶ چک چند گروهن. سمت وابستگیها، Checkpoint به composer audit و npm audit وصل میشه تا CVEهای شناختهشده رو پیدا کنه، پکیجهایی که همین چند روز اخیر منتشر شدن (یه نشونهی رایج بدافزار) رو فلگ میکنه و دنبال ورودیهای مشکوک توی autoloader میگرده.
سمت کد منبع، با تطبیق الگو دنبال همون ساختارهاییه که معمولاً آسیبپذیری میارن: کوئری خام با درج متغیر، خروجی escapeنشدهی Blade، تزریق دستور از طریق توابعی مثل exec و shell_exec، پیمایش مسیر، SSRF، deserialization ناامن و ریدایرکت باز. یه گروه سوم هم پیکربندی و بهداشت اپ رو چک میکنه: نبود محافظت CSRF، در معرض بودن mass-assignment، تنظیمات کوکی و سشن، قوانین CORS، غیرفعال بودن بررسی TLS، باقیموندن dd() و dump()، هش ضعیف و فایل .env با دسترسی world-readable. هر یافته با شدت PASS، WARN یا FAIL و یه هش پایدار ۱۲ کاراکتری چاپ میشه.
اجراش هم انعطاف داره: با --only میتونی فقط چکهای خاصی رو بزنی و با --skip چکهای پرسروصدا رو کنار بذاری. برای pipeline هم --json خروجی ماشینی میده و اگه چکی fail شه با کد 1 خارج میشه. با publish کردن config/checkpoint.php میشه هر چک رو خاموش/روشن کرد و آستانهی تازگی پکیجها رو تنظیم کرد؛ یافتههایی هم که بررسی و پذیرفتی، با اضافهکردن هششون به آرایهی suppressed دیگه fail نمیشن بدون اینکه کل چک ساکت شه.
نکتهی مهمی که مستندات روش تأکید داره فراتر از خود Checkpointه: composer install، npm install و حتی خود اسکن رو داخل یه کانتینر Docker اجرا کن، نه مستقیم روی دستگاهت. چون پکیجهای مخرب payload خودشون رو موقع اسکریپتهای post-install اجرا میکنن، یعنی قبل از اینکه هر اسکنری فرصت بررسی پیدا کنه. بهعلاوه Checkpoint یه اسکنر ایستاست؛ الگو رو میگیره ولی اثباتپذیری اکسپلویت رو ثابت نمیکنه و بهتره کنار pin کردن وابستگیها و بازبینی دستی استفاده شه.
نکات کلیدی:
- با یک دستور checkpoint:scan، ۲۶ چک امنیتی روی اپ لاراول اجرا میشه
- چکها از audit وابستگی و CVE تا الگوهای تزریق و بهداشت پیکربندی رو پوشش میدن
- کد خروجی غیرصفر اجازه میده توی CI جلوی دیپلوی بشینه
- با --only، --skip، --json و آرایهی suppressed قابل تنظیمه
- توصیهی کلیدی: نصب و اسکن رو داخل Docker انجام بده تا payloadهای post-install به دستگاهت نرسن




