Bun Lockfiles และความปลอดภัยของ Supply Chain ของคุณ

Binary lockfiles เปรียบเสมือนภาษีด้านความปลอดภัย—ที่คุณต้องจ่ายคืนในภายหลังพร้อมดอกเบี้ย

แต่ก่อน Bun จะเก็บ dependencies ไว้ในไฟล์ไบนารีที่ชื่อว่า bun.lockb ซึ่งแม้จะรวดเร็วและมีขนาดเล็ก แต่คุณก็ไม่สามารถอ่านมันได้ คุณไม่สามารถทำ diff ใน pull request และไม่สามารถมองเห็นได้ว่ามีอะไรเปลี่ยนแปลงไปบ้าง

เมื่อคุณไม่สามารถตรวจสอบการเปลี่ยนแปลงของ dependency ได้ คุณก็ไม่มีนโยบายที่ชัดเจน—มีเพียงแค่ความรู้สึกเท่านั้น

Bun v1.2 ได้เปลี่ยนค่าเริ่มต้นมาเป็น bun.lock แบบข้อความ (text-based) ซึ่งเพียงแค่นี้ก็ถือเป็นชัยชนะครั้งใหญ่ในด้านความปลอดภัยแล้ว

ทำไม lockfile แบบข้อความถึงมีความสำคัญ

  • Meaningful diffs – ผู้ตรวจสอบ (reviewers) จะเห็นได้อย่างชัดเจนว่าแพ็กเกจไหนมีการเคลื่อนย้ายหรือเปลี่ยนแปลง
  • Easy policy checks – CI สามารถสแกนหาแพทเทิร์นที่ถูกสั่งห้ามหรือ registry ที่ไม่น่าเชื่อถือได้
  • Faster forensicsgit log จะแสดง commit ที่นำแพ็กเกจอันตรายเข้ามาได้อย่างแม่นยำ

Lockfile ช่วยรับประกันความถูกต้อง (integrity) และความสามารถในการทำซ้ำ (reproducibility) แต่ไม่ใช่ยาสารพัดนึก มันไม่สามารถหยุดยั้งเวอร์ชันอันตรายที่ถูกเผยแพร่อย่างถูกต้องตามกฎ หรือผู้ดูแล (maintainer) ที่ถูกแฮ็กได้

สิ่งที่ text lockfile เพิ่มเข้ามาคือความสามารถในการมองเห็น (visibility) และความสามารถในการมองเห็นนี่เองคือด่านป้องกันแรกของคุณ

วิธีรักษาความปลอดภัยให้กับ Bun workflow ของคุณ

  • รัน bun install --frozen-lockfile ใน CI โดยการ build จะล้มเหลวหาก lockfile จำเป็นต้องได้รับการอัปเดต
  • รัน bun install --lockfile-only ใน CI เพื่อตรวจสอบการหาความสัมพันธ์ (resolution) โดยไม่ต้องรันสคริปต์การติดตั้งที่หนักเครื่อง
  • เปลี่ยนไฟล์ bun.lockb ทั้งหมดให้เป็น bun.lock ทันที
  • กำหนดให้ต้องมีการตรวจสอบโดยมนุษย์สำหรับการเปลี่ยนแปลง lockfile โดยเพิ่มเจ้าของที่เหมาะสมลงใน CODEOWNERS เพื่อให้ผู้ที่เกี่ยวข้องได้เห็นทุกการอัปเดตของ dependency

เลิกเชื่อใจเครื่องมืออย่างหลับหูหลับตา แต่จงตรวจสอบทุกการเปลี่ยนแปลงแทน

ที่มา: https://dev.to/kunal_d6a8fea2309e1571ee7/bun-lockfile-bunlockb-format-threat-model-ci-checks-2026-4i3b