پرش به محتوای اصلی
پرش به محتوای مقاله

Deptrust: سدی در برابر نصب بسته‌های آسیب‌پذیر توسط عامل‌های هوش مصنوعی

·۱۲ تیر ۱۴۰۵۷ دقیقه مطالعه
ابزار CLI بررسی آسیب‌پذیری بسته‌ها در npm، PyPI، Go و سایر رجیستری‌ها، به‌صورت محلی و سرور MCP
ابزار CLI بررسی آسیب‌پذیری بسته‌ها در npm، PyPI، Go و سایر رجیستری‌ها، به‌صورت محلی و سرور MCP
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

ایجاد یک لایه بازبینی امنیتی بلادرنگ (Real-time) در پروتکل MCP که اجازه نمی‌دهد عامل‌های AI بدون چک کردن دیتابیس‌های CVE، بسته‌ای را نصب کنند.

تصور کنید یک عامل هوش مصنوعی برای تسریع در توسعه، نسخه‌ای از یک کتابخانه را پیشنهاد دهد که حفره‌های امنیتی بحرانی دارد یا حتی شماره نسخه‌ای را توهم بزند که اصلاً وجود ندارد. برای پایان دادن به این خطاهای تکراری و ناامیدی ناشی از استفاده مداوم عامل‌ها از نسخه‌های منسوخ، ابزار Deptrust در ۱ ژوئیه ۲۰۲۶ منتشر شد. این سرور MCP مشکل را با مجبور کردن عامل‌ها به بازبینی هر وابستگی در برابر پایگاه‌های دادهٔ آسیب‌پذیری در لحظه (Real-time)، پیش از نوشتن حتی یک خط کدِ نصب، حل می‌کند.

توسعه مدرن بر شبکه‌ای پراکنده از مخازن کد متکی است. در حالی که یک برنامه‌نویس انسان ممکن است هشدارهای امنیتی را چک کند، یک عامل (Agent) — شبیه دستیاری که فقط کتاب‌های قدیمی را خوانده و از تغییرات امروز خبر ندارد — معمولاً به داده‌های آموزشی خود تکیه می‌کند که در زمان خاصی منجمد شده‌اند. این شکاف باعث ایجاد یک ریسک امنیتی عظیم می‌شود، جایی که عامل‌ها به‌طور ناخواسته آسیب‌پذیری‌های CVE را وارد محیط‌های عملیاتی (Production) می‌کنند.

تصور کنید عاملی نسخه‌ای قدیمی از یک کتابخانه را پیشنهاد دهد چون در مجموعه داده‌های آموزشی‌اش برجسته بوده است، در حالی که نمی‌داند یک باگ بحرانی «اجرای کد از راه دور» (RCE) شش ماه پیش اصلاح شده است. Deptrust مانند یک نگهبان امنیتی عمل می‌کند که بین قصدِ عامل و نصب واقعی بسته قرار می‌گیرد. این ابزار به‌صورت محلی و در قالب یک رابط خط فرمان (CLI) و سرور پروتکل زمینهٔ مدل (MCP) — که مثل یک مترجم استاندارد، ابزارهای خارجی را به مدل‌های زبانی معرفی می‌کند — اجرا می‌شود. طبق مستندات این پروژه، Deptrust مستقیماً با APIهای عمومی مخازن و OSV ارتباط برقرار می‌کند و هیچ سرویس میزبانی‌شده‌ای (Hosted Service) وجود ندارد که کاربر مجبور به اعتماد یا پیکربندی آن باشد.

پوشش گسترده اکوسیستم‌ها

به نقل از مستندات github.com، این ابزار برای پوشش جامع، طیف وسیعی از اکوسیستم‌ها را پشتیبانی می‌کند تا اطمینان حاصل شود هیچ وابستگی‌ای نادیده گرفته نمی‌شود. همان‌طور که ذکر شد، این ابزار به جای تکیه بر سرویس‌های ابری، مستقیماً APIهای عمومی رجیستری‌ها و OSV را فراخوانی می‌کند. محیط‌های تحت پوشش عبارت‌اند از:

  • JavaScript/TypeScript: npm (شامل بسته‌های scoped مانند @clidey/ux)
  • Python: PyPI
  • Rust: crates.io / Cargo
  • Go: Go modules
  • Ruby: RubyGems
  • .NET: NuGet
  • Java: Maven (با استفاده از نام‌های بسته به فرمت groupId:artifactId)
  • PHP: Packagist / Composer (با استفاده از نام‌های بسته به فرمت vendor/package)
  • Dart: pub.dev
  • iOS: CocoaPods
  • Elixir: Hex.pm
  • Haskell: Hackage
  • CI/CD: GitHub Actions (با استفاده از نام‌های بسته owner/repo و نسخه‌هایی بر اساس تگ‌ها، ارجاع‌های شاخه یا SHAهای کامیت)

مکانیزم بازبینی امنیتی

Deptrust به‌طور موازی از OSV (Open Source Vulnerabilities) و پایگاه داده GitHub Advisory (شامل هشدارهای بازبینی‌شده و هشدارهای مربوط به بدافزارها) استعلام می‌گیرد. این ابزار تنها به دنبال CVEها نیست، بلکه سیگنال‌های ریسک برای رویدادهای غیر CVE نیز صادر می‌کند. برای مثال، هر نسخه‌ای که در ۷۲ ساعت گذشته منتشر شده باشد، برای بازبینی علامت‌گذاری می‌شود تا از پذیرش کورکورانه نسخه‌های جدید و تست‌نشده توسط عامل‌ها جلوگیری شود.

سیستم توصیه‌ این ابزار بر اساس شدت ریسک به شرح زیر است:

  • بحرانی/بالا (Critical/High): مسدودسازی فوری (توصیه: block).
  • متوسط/نامشخص (Medium/Unknown): نیاز به بازبینی دستی (توصیه: review).
  • پایین/بدون ریسک (Low/None): اجازه نصب (توصیه: allow).

باید توجه داشت که توصیه «allow» به این معناست که هیچ آسیب‌پذیری شناخته‌شده‌ای که منجر به مسدودسازی شود در منابع داده‌های عمومی یافت نشده است؛ این به معنای اثبات امنیت کامل بسته نیست. اگر deptrust بتواند متادیتای رجیستری را پیدا کند اما هیچ ارائه‌دهنده آسیب‌پذیری پیکربندی‌شده‌ای از آن اکوسیستم پشتیبانی نکند، به جای اینکه بسته را امن تلقی کند، وضعیت را «نامشخص» (unknown) اعلام می‌کند.

پوشش ارائه‌دهندگان و داده‌ها

پوشش ارائه‌دهندگان بسته به اکوسیستم متفاوت است. این ابزار ردیابی می‌کند که کدام ارائه‌دهندگان واقعاً مورد استعلام قرار گرفته‌اند و کدام‌ها نادیده گرفته شده‌اند. خروجی JSON شامل فیلدهای checked_providers (ارائه‌دهندگان بررسی شده)، skipped_providers (ارائه‌دهندگان نادیده گرفته شده) و یک فیلد advisory_coverage (با مقادیر full، partial، none یا error) به همراه دلیل مربوطه در advisory_coverage_reason است.

تفکیک پوشش به این صورت است:

  • پوشش کامل (OSV و GitHub DB): شامل npm، PyPI، Cargo، Go modules، RubyGems، NuGet، Maven، Packagist، pub.dev، Hex.pm و GitHub Actions.
  • پوشش جزئی: شامل CocoaPods (در OSV: خیر، در GitHub DB: بله) و Hackage (در OSV: بله، در GitHub DB: خیر).

یکپارچگی با MCP برای عامل‌های هوش مصنوعی

به عنوان یک سرور MCP، Deptrust ابزارهای ساختاریافته‌ای را فراهم می‌کند که عامل‌ها می‌توانند به‌طور خودکار فراخوانی کنند. ابزار check_package یک پاسخ JSON فشرده شامل امتیاز ریسک و توصیه برمی‌گرداند. این خروجی فشرده برای صرفه‌جویی در پنجرهٔ زمینه (Context Window) — که مثل میز کاری است و فضای محدودی برای یادداشت‌ها دارد — آرایه کامل آسیب‌پذیری‌ها و جزئیات هشدارها را حذف می‌کند. اگر عامل با توصیه «block» مواجه شود، دستور می‌گیرد تا از ابزار suggest_safe_version برای یافتن جدیدترین نسخه امن استفاده کند.

برای کاربرانی که از Claude Code یا Codex استفاده می‌کنند، این ابزار از طریق stdio ثبت می‌شود. این یکپارچگی در کنار قابلیت‌های پیشرفته‌ای مانند پیوند عامل‌ها به رابط‌های کاربری پویا، محیط توسعه را به شدت هوشمندتر می‌کند. پس از پیکربندی، عامل‌ها پیش از پیشنهاد هر به‌روزرسانی، به‌طور خودکار بسته‌ها را چک می‌کنند و دیگر نیازی نیست برنامه‌نویس مدام به AI یادآوری کند که امنیت را بررسی کند.

جزئیات ابزارهای MCP

  • check_package: بررسی یک نسخه خاص از بسته (یا عبارت "latest") و بازگرداندن آسیب‌پذیری‌ها و توصیه امنیتی. اگر نسخه دقیقی وجود نداشته باشد، آخرین نسخه صریح را پیشنهاد می‌دهد. همچنین یک دستور full_response_command (مثلاً deptrust check --json npm vite 7.0.0) ارائه می‌دهد تا اگر کاربر جزئیات کامل هشدارها را خواست، از آن استفاده کند.
  • suggest_safe_version: ابتدا آخرین نسخه را بررسی می‌کند. اگر اجازه نصب داده نشود، ابتدا نسخه‌های اصلاح‌شده (Fixed) گزارش شده توسط ارائه‌دهندگان و سپس نسخه‌های قدیمی‌تر شناخته‌شده را بررسی کرده و جدیدترین نسخه‌ای که توصیه «allow» دارد را برمی‌گرداند.
  • compare_versions: مقایسه نسخه فعلی و نسخه هدف، شامل شناسایی آسیب‌پذیری‌های برطرف‌شده (Resolved) و آسیب‌پذیری‌های اضافه‌شده.

نصب و نحوه استفاده

کاربران می‌توانند ابزار را از طریق دستور npx @clidey/deptrust install یا pnpx @clidey/deptrust@latest install نصب کنند. نصب‌کننده پیش‌فرض به‌صورت تعاملی است، درباره یکپارچگی با عامل‌ها سؤال می‌پرسد و پیش از تأیید نهایی، مسیرهای نصب در سطح کاربر را چاپ می‌کند. برای نصب باینری به‌صورت غیرتعاملی، از پرچم --yes استفاده شود. برای حذف باینری، مهارت‌ها و ورودی‌های MCP، از دستور npx @clidey/deptrust uninstall استفاده کنید.

مسیرهای دیگر نصب عبارت‌اند از:

  • Homebrew: دستور brew install clidey/tap/deptrust (یا ابتدا brew tap clidey/tap).
  • Go: دستور go install github.com/clidey/deptrust/cmd/deptrust@latest.

در محیط CLI، دستوراتی مثل deptrust check npm lodash 4.17.20 امتیاز ریسک (مثلاً ۸۰) و توصیه به مسدودسازی به دلیل آسیب‌پذیری‌های شناخته‌شده را نمایش می‌دهند. در مورد GitHub Actions، استفاده از SHAهای کامل کامیت‌ها به عنوان نسخه «پین‌شده» تلقی می‌شود، اما تگ‌های کلی (مثل v4) یا ارجاع‌های شاخه (مثل main) سیگنال بازبینی صادر می‌کنند چون محتوای آن‌ها می‌تواند تغییر کند.

پیکربندی عامل‌ها

برای ثبت تمام یکپارچگی‌ها بدون پرسش‌های راهنما، دستور npx @clidey/deptrust install --all به کار می‌رود. این دستور باینری را نصب کرده، MCP Codex را (در صورت موجود بودن CLI) ثبت می‌کند، مهارت جایگزین (fallback skill) Codex را نصب کرده و MCP Claude Code را (در صورت موجود بودن CLI) فعال می‌کند. نصب‌های محدودتر با استفاده از پرچم‌های --codex-mcp یا --claude-code-mcp امکان‌پذیر است.

تنظیم دستی MCP نیازمند مسیر مطلق باینری است. برای مثال، ساختار JSON پیکربندی به این شکل است:
{"mcpServers": {"deptrust": {"command": "/absolute/path/to/deptrust", "args": ["mcp"]}}}

برای Codex: codex mcp add deptrust -- /absolute/path/to/deptrust mcp
برای Claude Code: claude mcp add --transport stdio deptrust -- /absolute/path/to/deptrust mcp

عیب‌یابی و استفاده بدون MCP

اگر تمایلی به استفاده از MCP ندارید، می‌توانید «مهارت» (Skill) bundled شده برای Codex را از طریق npx @clidey/deptrust skills install نصب کنید. این کار باعث می‌شود Codex پیش از نصب یا پیشنهاد بسته‌ها در تمام اکوسیستم‌های پشتیبانی‌شده، CLI deptrust را فراخوانی کند.

مراحل رایج عیب‌یابی:

  • پیدا نشدن باینری (Binary not found): دستور export PATH="$HOME/.local/bin:$PATH" را اجرا کنید.
  • خطای سرور MCP: اطمینان حاصل کنید که در پیکربندی از مسیر مطلق باینری استفاده شده است.
  • نتایج نامشخص (Unknown): اگر بررسی یک بسته نتیجه «unknown» داد، آن را امن تلقی نکنید؛ این یعنی ارائه‌دهنده نتوانسته پاسخ کاملی ارائه دهد.

این تغییر، کدنویسی با کمک هوش مصنوعی را از مدل «اعتماد پیش‌فرض» به گردش‌کار «تأیید سپس نصب» منتقل می‌کند. با ادغام بررسی‌های امنیتی در ابزارهای عامل، هزینه نگهداری وابستگی‌های امن به‌شدت کاهش می‌یابد.

برای توسعه‌دهنده، این به معنای وصله‌های اضطراری کمتر و کاهش بدهی فنی ایجاد شده توسط لیست‌های وابستگی تولیدشده توسط AI است. این ابزار، هوش مصنوعی را از یک ریسک امنیتی احتمالی به ابزاری تبدیل می‌کند که فعالانه استانداردهای امنیتی را اجرا می‌کند.

برای شروع، می‌توانید Deptrust را در پیکربندی MCP خود ادغام کنید یا از CLI برای بازبینی وابستگی‌های فعلی پروژه خود استفاده کنید.

گام بعدی شما

  • اگر از Claude Code استفاده می‌کنید، Deptrust را به عنوان MCP Server اضافه کنید تا از نصب ناخواسته نسخه‌های آسیب‌پذیر جلوگیری شود.
  • وابستگی‌های فعلی پروژه خود را با دستور deptrust check در CLI بازبینی کنید.
  • در تنظیمات عامل خود، دستور دهید که در صورت دریافت توصیه block، حتماً از suggest_safe_version استفاده کند.

اما تأمین امنیت در لایه کد تنها بخشی از ماجراست؛ برای درک چگونگی مقابله با حملات تزریق پرامپت در ابزارهای Agentic، تحلیل ما درباره حفاظ‌های امنیتی را بخوانید.

چرا این موضوع مهم است؟

این ابزار با حذف اعتماد کورکورانه به داده‌های منجمد مدل‌ها، ریسک ورود آسیب‌پذیری‌های شناخته‌شده به محیط Production را به‌شدت کاهش می‌دهد. اعتبار این سیستم بر پایه اتصال مستقیم به پایگاه‌های داده مرجع مانند OSV است که تخصص امنیتی را به جریان خودکار توسعه اضافه می‌کند.

تأثیر برای ایران

برنامه‌نویسان ایرانی که از ابزارهای Agentic برای تسریع توسعه استفاده می‌کنند، می‌توانند با نصب محلی این ابزار، بدون نیاز به سرویس‌های ابری، امنیت وابستگی‌های پروژه خود را ارتقا دهند.

·نگاه ما
تحریریه دات‌هوش

انتقال مسئولیت بازبینی امنیتی از انسان به ابزارهای میان‌افزاری (Middleware) مانند Deptrust، نشان‌دهنده بلوغ مدل‌های عامل‌محور است. این رویکرد ثابت می‌کند که راهکار مقابله با توهمات مدل‌ها در حوزه فنی، نه لزوماً بزرگ‌تر کردن مدل، بلکه تجهیز آن‌ها به ابزارهای تأیید (Verification) در لحظه است. در واقع، ما از عصر «تولید کد» به عصر «تولید و اعتبارسنجی کد» وارد می‌شویم.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.