فایل‌های قفل (Lockfiles) Bun و امنیت زنجیره تأمین شما

فایل‌های قفل باینری یک مالیات امنیتی هستند؛ شما آن را بعداً، همراه با سود پرداخت می‌کنید.

Bun قبلاً وابستگی‌ها را در یک فایل باینری به نام bun.lockb ذخیره می‌کرد. این فایل سریع و کوچک بود، اما نمی‌شد آن را خواند. نمی‌شد در یک Pull Request تفاوت‌ها (diff) را مشاهده کرد و نمی‌شد فهمید چه چیزی تغییر کرده است.

وقتی نمی‌توانید تغییرات یک وابستگی را بازبینی کنید، هیچ سیاستی ندارید؛ فقط بر اساس حدس و گمان پیش می‌روید.

نسخه Bun v1.2 حالت پیش‌فرض را به یک فایل متنی به نام bun.lock تغییر می‌دهد. همین موضوع به تنهایی یک پیروزی بزرگ در حوزه امنیت است.

چرا فایل‌های قفل متنی اهمیت دارند

  • تفاوت‌های (diffs) معنادار – بازبین‌ها دقیقاً می‌بینند که کدام پکیج‌ها جابه‌جا شده یا تغییر کرده‌اند.
  • بررسی آسان سیاست‌ها – سیستم CI می‌تواند الگوهای ممنوعه یا ریجستری‌های (registries) غیرقابل اعتماد را اسکن کند.
  • جرم‌شناسی (Forensics) سریع‌تر – دستور git log دقیقاً همان کامیت (commit) را که باعث ورود یک پکیج مخرب شده است، نشان می‌دهد.

یک فایل قفل، یکپارچگی و بازتولیدپذیری (reproducibility) را تضمین می‌کند، اما راهکار قطعی نیست. این فایل نمی‌تواند جلوی یک نسخه مخرب که به صورت قانونی منتشر شده یا یک نگهدارنده (maintainer) نفوذیافته را بگیرد.

آنچه فایل قفل متنی اضافه می‌کند، قابلیت مشاهده (visibility) است. قابلیت مشاهده، اولین خط دفاعی شماست.

چگونه جریان کاری (workflow) Bun خود را ایمن کنید

  • در CI دستور bun install --frozen-lockfile را اجرا کنید. اگر فایل قفل نیاز به به‌روزرسانی داشته باشد، فرآیند ساخت (build) با خطا مواجه می‌شود.
  • در CI دستور bun install --lockfile-only را اجرا کنید. با این کار، بدون اجرای اسکریپت‌های سنگینِ نصب، فرآیند حل وابستگی‌ها (resolution) را اعتبارسنجی می‌کنید.
  • هرگونه فایل bun.lockb را فوراً به bun.lock مهاجرت دهید.
  • بازبینی انسانی را برای تغییرات فایل قفل الزامی کنید. مالکان (owners) مناسب را به CODEOWNERS اضافه کنید تا افراد مسئول، هر به‌روزرسانیِ وابستگی را مشاهده کنند.

از اعتماد کورکورانه به ابزار دست بردارید. در عوض، هر تغییر را تأیید کنید.

منبع: https://dev.to/kunal_d6a8fea2309e1571ee7/bun-lockfile-bunlockb-format-threat-model-ci-checks-2026-4i3b