- vet เป็นเครื่องมือ CLI ที่ช่วย เปลี่ยนการรันสคริปต์ติดตั้งระยะไกลแบบ
curl | bash ให้ปลอดภัยขึ้นเป็นกระบวนการ "ดาวน์โหลด→ตรวจสอบ→อนุมัติให้รัน"
- มีฟีเจอร์ป้องกันหลายชั้น เช่น การตรวจดูความเปลี่ยนแปลงของสคริปต์ (diff), การ lint (วิเคราะห์แบบสถิต) ด้วย shellcheck และการอนุมัติด้วยตนเองก่อนรันจริง
- ใช้คำสั่งเดียว (
vet https://example.com/install.sh) เพื่อตรวจสอบ ความเสี่ยงที่อาจเกิดขึ้น การถูกแก้ไขดัดแปลง การพิมพ์ผิด และช่องโหว่ โดยอัตโนมัติก่อนรันสคริปต์ระยะไกล
- การติดตั้งตัวมันเองก็รองรับทั้งแบบ "ดาวน์โหลดแล้วตรวจสอบ" และแบบ
curl | sh อีกทั้งยังสามารถตรวจดูโค้ดติดตั้งของ vet ได้โดยตรง
- เป็นโซลูชันที่เชื่อถือได้ซึ่งช่วยป้องกัน ความเสี่ยงด้านความปลอดภัยในสภาพแวดล้อมพัฒนา/ปฏิบัติการ พร้อมคงไว้ทั้งความอัตโนมัติและความสะดวก
ปัญหา: การรันสคริปต์ติดตั้งระยะไกลโดยไม่รอบคอบ
- โอเพนซอร์สและเครื่องมือจำนวนมากแนะนำวิธีติดตั้งด้วยสคริปต์ระยะไกล เช่น
curl -sSL https://example.com/install.sh | bash
- วิธีนี้มี ความเสี่ยงด้านความปลอดภัยร้ายแรง เช่น การรันโค้ดอันตรายหรือการรันไฟล์ที่ดาวน์โหลดมาไม่ครบ อันเกิดจากการถูกแก้ไขสคริปต์ การถูกแฮ็กเซิร์ฟเวอร์ หรือข้อผิดพลาดของเครือข่าย
โซลูชันของ vet: การรันแบบอินเทอร์แอ็กทีฟที่ปลอดภัย
วิธีติดตั้ง
วิธีที่แนะนำและปลอดภัยกว่า (ดาวน์โหลด → ตรวจสอบ → รัน)
- 1. ดาวน์โหลดสคริปต์ติดตั้ง:
- 2. ตรวจดูโค้ดของสคริปต์ที่ดาวน์โหลดมาด้วยตนเอง (เช่น less, vim):
less install_vet.sh
- 3. หลังตรวจสอบแล้วค่อยรันเอง:
sh install_vet.sh
ติดตั้งแบบรวดเร็ว (คำสั่งบรรทัดเดียวบนพื้นฐานของความเชื่อถือ)
คุณสมบัติและข้อดีของ vet
- ตรวจจับความเปลี่ยนแปลง (diff): เปรียบเทียบกับสคริปต์ที่เคยรันก่อนหน้าเพื่อดูว่าส่วนใดเปลี่ยนไป
- lint อัตโนมัติ (เชื่อมต่อกับ shellcheck): ตรวจหาช่องโหว่ การพิมพ์ผิด และโค้ดน่าสงสัยในสคริปต์เชลล์โดยอัตโนมัติ
- การยืนยันก่อนรันอย่างชัดเจน (Confirm): ควบคุมการรันจริงได้ด้วยการคลิกหรือกรอกยืนยันหนึ่งครั้ง
- บันทึกสคริปต์และจัดการประวัติอัตโนมัติ: ติดตามสคริปต์ติดตั้งที่ใช้บ่อยได้อย่างปลอดภัย
- รับประกันความปลอดภัยในการติดตั้ง/อัปเดตภายในด้วย
บทสรุป
- vet คือ ทางเลือกที่ปลอดภัยสำหรับ
curl | bash ที่ทั้งนักพัฒนาและผู้ดูแลระบบควรมี ช่วยให้ได้ทั้งระบบติดตั้งอัตโนมัติและความปลอดภัย
- "อย่ารันทันทีแบบไม่คิด ตรวจสอบด้วย vet ก่อนแล้วค่อยรัน!"
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
# shellcheck disable=เข้าไปในสคริปต์อันตรายจะเป็นอย่างไร# shellcheck disable=ที่น่ากังวลก็ยังตรวจจับได้ผ่าน diff และการเปลี่ยนแปลงนั้นเองก็คือสัญญาณเตือนVET_TOKENและในอนาคตอาจรวมถึงการเชื่อมต่อกับ secret manager อย่าง HashiCorp Vault ถ้าสนใจอยากฟังความเห็นใน GitHub issue ขอบคุณสำหรับฟีดแบ็กlessหรือถ้ามีbatติดตั้งอยู่ก็จะใช้ pager ที่ไฮไลต์สวยกว่า) และจะไม่เปิดใน editor เพื่อป้องกันการแก้ไขโดยไม่ตั้งใจ ถ้า ShellCheck พบปัญหา ก็จะแสดงผลในเทอร์มินัลแบบมีสีทันที แล้วถามผู้ใช้ตรง ๆ ว่าจะตรวจต่อหรือไม่ในรูปแบบ [y/N] ตัวอย่าง: ขอบคุณสำหรับข้อเสนอแนะดี ๆwget -qO- https://getvet.shเซิร์ฟเวอร์จะตอบกลับมาเป็นtext/html) กลับกัน อยากแนะนำให้ดึง install.sh โดยตรงมากกว่า และสำหรับคำขอฟีดแบ็ก ก็แนะนำทริก bash ว่า “ลองทำแบบนี้ดู”: วิธีนี้จะให้ bash ขออนุญาตทุกครั้งก่อนจะรันอะไรสักอย่าง สคริปต์ยาว ๆ อาจน่ารำคาญ จึงอาจปรับแต่งให้มี whitelist สำหรับคำสั่งที่คิดว่าปลอดภัย หรือมีตัวเลือก “remember” ได้ ส่วนเรื่อง sudo มัลแวร์อาจใช้วิธีรัน sudo กับคำสั่งที่ดูไม่มีพิษภัยก่อนเพื่อแคช credential เอาไว้ แล้วค่อยรันคำสั่ง sudo อีกทีในภายหลังโดยไม่มีการเตือนใด ๆ ดังนั้นการใช้sudo -kเพื่อล้าง session cache ก่อนรันโปรแกรมที่ไม่รู้จักจึงปลอดภัยกว่า