รายงานการตรวจสอบ Homebrew
(blog.trailofbits.com)การตรวจสอบ Homebrew
- ภาพรวมของการตรวจสอบ Homebrew
- ตรวจสอบประเด็นด้านความปลอดภัยของ Homebrew ซึ่งรวมถึง Homebrew/brew และรีโพซิทอรีที่เกี่ยวข้องอีกสามแห่ง
- ปัญหาที่พบนั้นไม่ถึงขั้นวิกฤต แต่ผู้โจมตีอาจโหลดโค้ดที่สามารถรันได้ในจังหวะที่ไม่คาดคิด ทำให้ความถูกต้องสมบูรณ์ของ Homebrew เสียหายได้
- ดำเนินการด้วยการสนับสนุนจาก Open Tech Fund
Homebrew
-
แนะนำ Homebrew
- ตัวจัดการแพ็กเกจสำหรับ macOS และ Linux
- ถูกใช้อย่างแพร่หลายในหมู่นักพัฒนาซอฟต์แวร์ และรองรับการติดตั้งแพ็กเกจนับล้านครั้ง
- รวมถึงแพ็กเกจสำคัญอย่าง Golang, Node.js, OpenSSL เป็นต้น ดังนั้นความปลอดภัยของ Homebrew จึงสำคัญต่อความปลอดภัยของระบบนิเวศซอฟต์แวร์โดยรวม
-
ประวัติของ Homebrew
- นับตั้งแต่เริ่มต้นในปี 2009 ได้ผ่านการเปลี่ยนแปลงด้านสถาปัตยกรรมหลายครั้ง
- นำการติดตั้งแบบไบนารีบิลด์ (bottle) มาใช้เป็นกลไกการติดตั้งหลักแทนการบิลด์จากซอร์สบนเครื่อง
- รักษาความถูกต้องสมบูรณ์ของการบิลด์ผ่าน CI/CD
ขอบเขตการตรวจสอบ
- คำถามในการตรวจสอบ
- ผู้กระทำการในเครื่องสามารถรัน DSL ทางการได้โดยไม่ต้องใช้
brew installหรือไม่ - ผู้กระทำการในเครื่องสามารถประเมินผล DSL ทางการได้ด้วยเพียง
brew tapหรือไม่ - สามารถก่อให้เกิดความสับสนหรือการชนกันของเนมสเปซได้หรือไม่
- formula ทางการที่ติดตั้งในเครื่องสามารถข้ามกลไกการแยกการบิลด์ของ Homebrew ได้หรือไม่
- ผู้กระทำการ CI/CD สิทธิ์ต่ำสามารถยกระดับเป็นสิทธิ์สูงได้หรือไม่
- ผู้กระทำการ CI/CD สิทธิ์ต่ำสามารถทำให้การบิลด์ bottle ปนเปื้อนได้หรือไม่
- ผู้กระทำการ CI/CD สิทธิ์ต่ำสามารถคงอยู่ใน CI/CD ได้อย่างต่อเนื่องหรือไม่
- ผู้กระทำการในเครื่องสามารถรัน DSL ทางการได้โดยไม่ต้องใช้
สิ่งที่ค้นพบหลัก
brew
- สิ่งที่ค้นพบหลัก
- formula สามารถหลบหนี sandbox ได้ผ่านการแทรกสตริง
- สามารถก่อให้เกิด runtime confusion ได้ด้วยการใช้ฟังก์ชันแฮชที่ชนกันได้ง่าย (MD5)
- formula สามารถรวมทรัพยากรเครือข่ายที่ไม่ได้ระบุไว้ในการบิลด์ได้
- สามารถหลบหนี sandbox ได้ผ่าน socket pivot
- สามารถยกระดับสิทธิ์ได้ผ่านโทเค็น
sudo - สามารถติดตั้ง formula จาก URL ที่ไม่ใช่โลคัลได้
CI/CD ของ Homebrew
- สิ่งที่ค้นพบหลัก
- การใช้ทริกเกอร์
pull_request_targetทำให้ PR จากบุคคลที่สามสามารถรันโค้ดบนรีโพซิทอรีหลักของ Homebrew ได้ - สามารถแทรกเชลล์ได้ผ่านอินพุต
workflow_dispatch - การขาด sandboxing/การแยกที่เพียงพอระหว่างการแตกไฟล์อาร์ไคฟ์อาจนำไปสู่การยกระดับสิทธิ์
- การติดตั้ง formula จาก URL ที่ไม่ใช่โลคัลสามารถนำไปสู่การรันโค้ดตามอำเภอใจได้
- การใช้ทริกเกอร์
ประเด็นสำคัญ
-
ความท้าทายของการตรวจสอบระบบนิเวศตัวจัดการแพ็กเกจ
- เครื่องมือตัวจัดการแพ็กเกจถูกออกแบบมาให้ติดตั้งและรันโค้ดของบุคคลที่สามตามอำเภอใจโดยธรรมชาติ
- ในระบบนิเวศการแพ็กเกจอย่าง Homebrew รูปแบบแพ็กเกจ (formula) ก็คือโค้ดที่สามารถรันได้ด้วยตัวเอง
-
ความร่วมมือในการตรวจสอบ
- ทำงานร่วมอย่างใกล้ชิดกับผู้ดูแล Homebrew และ Homebrew PLC
- ขอขอบคุณ Patrick Linnane ผู้จัดการด้านความปลอดภัยของ Homebrew
สรุปโดย GN⁺
- Homebrew เป็นตัวจัดการแพ็กเกจที่ถูกใช้อย่างแพร่หลายบน macOS และ Linux
- ผลการตรวจสอบพบปัญหาด้านความปลอดภัย แม้จะไม่ถึงขั้นวิกฤต
- ความปลอดภัยของ Homebrew มีความสำคัญต่อความปลอดภัยของระบบนิเวศซอฟต์แวร์โดยรวม
- ด้วยธรรมชาติของเครื่องมือตัวจัดการแพ็กเกจที่สามารถรันโค้ดของบุคคลที่สามตามอำเภอใจได้ การตรวจสอบความปลอดภัยจึงมีความสำคัญ
- เครื่องมือตัวจัดการแพ็กเกจที่มีฟังก์ชันคล้ายกัน ได้แก่ apt, yum เป็นต้น
ยังไม่มีความคิดเห็น