นักพัฒนาถูกบล็อกจาก Lodash หลังพยายามเพิ่มการปรับปรุงด้านความปลอดภัย

ทีมชุมชน BigGo
นักพัฒนาถูกบล็อกจาก Lodash หลังพยายามเพิ่มการปรับปรุงด้านความปลอดภัย

ความพยายามของนักพัฒนาในการปรับปรุงความปลอดภัยของ supply chain สำหรับแพ็กเกจ JavaScript ที่ได้รับความนิยมมากที่สุดแพ็กเกจหนึ่งได้จุดประกายการถกเถียงเกี่ยวกับแนวทางการมีส่วนร่วมในโอเพ่นซอร์สและการตอบสนองของผู้ดูแลโปรเจ็กต์ เหตุการณ์นี้เน้นย้ำถึงความตึงเครียดที่เพิ่มขึ้นระหว่างผู้มีส่วนร่วมที่เน้นความปลอดภัยกับผู้ดูแลโปรเจ็กต์ที่ต้องรับมือกับการมีส่วนร่วมแบบอัตโนมัติและคุณภาพต่ำที่เพิ่มขึ้น

การปรับปรุงความปลอดภัยที่กลับกลายเป็นปัญหา

นักพัฒนาได้พยายามเพิ่ม package provenance ให้กับ lodash ซึ่งเป็นไลบรารีอรรถประโยชน์ JavaScript ที่ใช้กันอย่างแพร่หลายและมีการดาวน์โหลดหลายสิบล้านครั้งต่อสัปดาห์ Package provenance สร้างคำแถลงที่ลงนามในระหว่างกระบวนการสร้าง ช่วยตรวจจับแพ็กเกจที่เป็นอันตรายซึ่งข้าม CI/CD workflows ที่เหมาะสม แม้ว่า lodash จะมีความนิยมสูง แต่ก็ไม่ได้รับการอัปเดตมานานกว่าห้าปีและขาดฟีเจอร์ความปลอดภัยพื้นฐานนี้

ผู้มีส่วนร่วมได้ใช้เวลาหลายชั่วโมงในการ reverse-engineer กระบวนการสร้างของ lodash และสร้าง GitHub Actions workflow ที่ใช้งานได้สำเร็จ อย่างไรก็ตาม หลังจากเปิดและปิด pull request ที่ยังไม่พร้อมอย่างรวดเร็ว พวกเขาก็พบว่าตัวเองถูกบล็อกจาก repository อย่างสมบูรณ์ - ไม่สามารถสร้าง issues, ติดตาม repo หรือมีส่วนร่วมในทางใดก็ได้

Package provenance: ฟีเจอร์ความปลอดภัยที่สร้างหลักฐานทางการเข้ารหัสของวิธีการและสถานที่ที่แพ็กเกจซอฟต์แวร์ถูกสร้างขึ้น ช่วยให้ผู้ใช้ตรวจสอบความถูกต้องได้

สถานะโปรเจกต์ Lodash

  • ไม่มีการปล่อยเวอร์ชันใหม่มานานกว่า 5 ปี
  • มีการดาวน์โหลดหลายสิบล้านครั้งต่อสัปดาห์
  • Main branch: ไม่มีการ commit มา 9 เดือน
  • ไม่มี CI/CD workflow สำหรับการเผยแพร่
  • อยู่ในอันดับ 10 อันดับแรกของแพ็กเกจ npm ที่ไม่มี provenance

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

การบล็อกนี้ได้แบ่งแยกชุมชนโอเพ่นซอร์ส บางคนมองว่าเป็นการตอบสนองที่เกินเหตุต่อความพยายามปรับปรุงความปลอดภัยที่แท้จริง คนอื่นๆ โต้แย้งว่าการกระโดดเข้าไปเปลี่ยนแปลงกระบวนการสร้างที่สำคัญโดยไม่มีการหารือล่วงหน้าทำให้เกิดสัญญาณเตือน โดยเฉพาะอย่างยิ่งเมื่อพิจารณาจากการเพิ่มขึ้นของการมีส่วนร่วมที่สร้างโดย AI ที่มุ่งเป้าไปยัง repositories ที่ได้รับความนิยม

คนที่ฉันไม่รู้จักและไม่มีประวัติการมีส่วนร่วมในโปรเจ็กต์ของฉันแล้วกระโดดเข้าไปยุ่งกับ packaging, distribution, provenance ทันทีจะทำให้ฉันตั้งคำถามกับความตั้งใจของพวกเขาจริงๆ

ช่วงเวลาที่เกิดขึ้นใน Hacktoberfest - กิจกรรมที่ยาวนานหนึ่งเดือนเพื่อส่งเสริมการมีส่วนร่วมในโอเพ่นซอร์ส - อาจมีส่วนทำให้ผู้ดูแลระแวดระวังเกี่ยวกับการมีส่วนร่วมแบบอัตโนมัติหรือผิวเผิน

การใช้งาน Package Provenance

  • มีเพียง 2 จาก 10 แพ็กเกจ npm ยอดนิยมเท่านั้นที่ใช้ provenance
  • แพ็กเกจ TypeScript ยังขาด provenance แม้จะเป็นที่นิยม
  • การใช้งานต้องการเพียงแค่ flags ง่าย ๆ ใน npm publish: --provenance --access public
  • ช่วยตรวจจับแพ็กเกจที่หลีกเลี่ยงการตรวจสอบความปลอดภัยของ CI/CD

ความท้าทายที่กว้างขึ้นของการดูแลโอเพ่นซอร์ส

เหตุการณ์นี้สะท้อนปัญหาที่ใหญ่กว่าที่โปรเจ็กต์โอเพ่นซอร์สยอดนิยมกำลังเผชิญ ผู้ดูแลต้องดิ้นรนเพื่อสร้างสมดุลระหว่างการต้อนรับผู้มีส่วนร่วมที่แท้จริงในขณะที่กรองการส่งคุณภาพต่ำ, สแปมที่สร้างโดย AI และการเปลี่ยนแปลงที่อาจเป็นอันตราย ผู้ดูแล lodash ได้ประกาศล้มละลายด้าน issue ในปี 2023 โดยปิด issues ที่เปิดอยู่จำนวนมากเพื่อเริ่มต้นใหม่

การขาดการสื่อสารทำให้ปัญหารุนแรงขึ้น หากไม่มีคำอธิบายสำหรับการบล็อก ผู้มีส่วนร่วมไม่สามารถเรียนรู้จากความผิดพลาดหรือชี้แจงความตั้งใจได้ สิ่งนี้สร้างวงจรที่นักพัฒนาที่มีเจตนาดีกลายเป็นท้อแท้ในขณะที่ผู้ดูแลรู้สึกถูกครอบงำด้วยความสนใจที่ไม่พึงประสงค์

นักพัฒนาได้ปรับแนวทางของตนแล้ว โดยวางแผนที่จะเปิด discussion issues ก่อนส่งการเปลี่ยนแปลงโค้ดเพื่อวัดความสนใจของผู้ดูแล แม้ว่าเป้าหมายการปรับปรุงความปลอดภัยจะยังคงถูกต้อง แต่ประสบการณ์นี้แสดงให้เห็นว่าแม้แต่การมีส่วนร่วมที่เป็นประโยชน์ก็ต้องการการแนะนำอย่างระมัดระวังในภูมิทัศน์โอเพ่นซอร์สที่ซับซ้อนในปัจจุบัน

อ้างอิง: On Being Blocked From Contributing to lodash