Skip to content
Tech

ทำไม package manager ของฉันยังคงสับสนระหว่าง package ภายในกับ package สาธารณะ?

80

โอกาส

องค์กรส่วนใหญ่เก็บ package ส่วนตัวไว้ใน registry ภายในควบคู่กับ dependency สาธารณะจาก npm หรือ PyPI เมื่อ build tool แก้ไขชื่อ อาจเลือกใช้เวอร์ชันสาธารณะโดยไม่แจ้งเตือนหากผู้โจมตีเผยแพร่ package ที่มีชื่อเดียวกันในเวอร์ชันที่สูงกว่า เนื่องจากไม่มี registry ใดบังคับใช้การเป็นเจ้าของ namespace แบบเข้ารหัสสำหรับ scope ส่วนตัว Microsoft บันทึกพบ npm package ที่เป็นอันตราย 33 รายการที่ใช้ประโยชน์จากช่องโหว่นี้อยู่จริงในเดือนพฤษภาคม 2026 โดยมุ่งเป้าไปที่ organizational scope ขององค์กรเก้าแห่ง Orca Security รายงานว่า 49 เปอร์เซ็นต์ขององค์กรมีสินทรัพย์อย่างน้อยหนึ่งรายการที่เสี่ยงต่อการโจมตีประเภทนี้ ยังไม่มี package ecosystem หลักใดที่ออกมาตรฐานที่ให้ build tool ปฏิเสธ package สาธารณะที่ทับซ้อน package ภายในที่ประกาศไว้

ทำไมถึงสำคัญ

การเป็นเจ้าของ namespace แบบเข้ารหัสในระดับ registry คือ primitive ที่ขาดหายไป ซึ่งสามารถปิดช่องโหว่การโจมตีห่วงโซ่อุปทานทั้งประเภทโดยไม่ต้องให้องค์กรเปลี่ยนแปลง build pipeline

วิธีที่ผมให้คะแนนโอกาส

คะแนนโอกาสเป็นมุมมองส่วนตัวของผม ไม่ใช่การวัดผล โดยดูว่ามันเจ็บปวดแค่ไหน บ่อยแค่ไหนที่มันกัดกิน และมีทางแก้อยู่น้อยเพียงใดในปัจจุบัน คะแนนสูงกว่าหมายความว่าผมคิดว่าคุ้มค่าแก่การสร้างมากกว่า

ความรุนแรง8/10

ความเจ็บปวดที่มันก่อขึ้นเมื่อปรากฏตัว

ความถี่7/10

ความถี่ที่คนจริงๆ เจอมัน

ช่องว่าง7/10

ความขาดแคลนของเครื่องมือที่ดีสำหรับมันในปัจจุบัน

ปัญหาอื่นที่น่าแก้ไข