macOS Git ตัวติดเครื่องยังไว้ใจใบรับรอง eMudhra ที่ถูกเพิกถอน
พบเครื่องมือ Git ที่มากับ macOS ยังคงเชื่อถือใบรับรอง eMudhra ที่มีความเสี่ยง เสี่ยงทำให้ระบบ CI แอบยอมรับตัวตนที่ถูกเพิกถอนโดยไม่รู้ตัว

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- macOS ใช้งาน Git ที่พึ่งพาใบรับรองจาก system keychain แทน OpenSSL
- ใบรับรอง eMudhra ที่ถูกเพิกถอนอาจยังหลงเหลือและผ่านการตรวจสอบได้
- มีคำสั่ง Terminal และ Script สำหรับตรวจสอบพร้อมลบใบรับรองออกทันที
- สามารถเพิ่มขั้นตอนตรวจเช็กความปลอดภัยนี้ลงใน GitHub Actions CI ได้
เครื่องมือ Git ที่ติดตั้งมาพร้อมกับระบบปฏิบัติการ macOS ในเส้นทาง /usr/bin/git มีพฤติกรรมในการอ่านใบรับรองความปลอดภัยจาก system keychain โดยตรง แทนที่จะใช้ค่าเริ่มต้นของ OpenSSL ส่งผลให้ใบรับรองที่ถูกเพิกถอนไปแล้วยังคงสามารถใช้ยืนยันตัวตนได้สำเร็จ หากมันยังคงถูกเก็บรักษาไว้ภายใน login keychain หรือ system keychain ของเครื่องคอมพิวเตอร์
ปัญหาดังกล่าวทำให้ระบบการสร้างโปรแกรมอัตโนมัติหรือ CI อาจยอมรับตัวตนที่ถูกเพิกถอนไปแล้วได้อย่างเงียบเชียบ โดยที่นักพัฒนาไม่รู้ตัว เพื่อเป็นการตรวจสอบว่าเครื่องของคุณกำลังประสบปัญหานี้อยู่หรือไม่ สามารถรันคำสั่ง Terminal เพื่อค้นหาใบรับรอง eMudhra ที่ยังคงได้รับความไว้วางใจได้ทันที
การที่ Git บน macOS เลือกอ้างอิงใบรับรองจาก Keychain ของระบบปฏิบัติการแทนที่จะใช้ OpenSSL Store แบบมาตรฐาน ถือเป็นจุดต่างสำคัญที่นักพัฒนาสาย macOS ต้องระวัง เพราะการอัปเดตระบบหรือการจัดการคีย์เชนแบบเดิมอาจทำให้ใบรับรองที่ถูกยกเลิกสิทธิ์ไปแล้วยังคงถูกใช้งานต่อในระดับเครื่องได้โดยไม่มีการแจ้งเตือน ซึ่งกระทบต่อความปลอดภัยของซอร์สโค้ดในระยะยาว
หากต้องการตรวจสอบสถานะของระบบ ให้เปิด Terminal แล้วรันคำสั่งชุดนี้เพื่อแสดงรายชื่อใบรับรอง:
- รันคำสั่ง
security find-certificate -a -p /Library/Keychains/System.keychain | openssl x509 -noout -subject -issuer 2>/dev/null | grep -i emudhraเพื่อสแกนหาใบรับรอง - ถ้าผลลัพธ์ว่างเปล่า แปลว่าคีย์เชนในระบบของคุณสะอาดเรียบร้อยดี
- ถ้าปรากฏข้อความหนึ่งบรรทัดหรือมากกว่า แสดงว่ายังมีใบรับรองที่มีความเสี่ยงหลงเหลืออยู่

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ในกรณีที่พบใบรับรองตกค้าง คุณสามารถใช้คำสั่ง security เพื่อทำการลบใบรับรองเหล่านั้นออกทีละรายการผ่านค่า SHA-256 fingerprint โดยใช้วิธีรวบรวมค่าลายนิ้วมือดิจิทัลมาก่อน แล้วจึงรันลูปคำสั่งลบออกให้หมดจดจาก /Library/Keychains/System.keychain พร้อมกับใส่สิทธิ์ sudo หากพบปัญหาติดขัดเรื่องสิทธิ์การเข้าถึง
หลังจากดำเนินการลบเรียบร้อยแล้ว ให้ทำการรันคำสั่งตรวจสอบซ้ำอีกครั้ง ซึ่งผลลัพธ์ที่ได้ควรจะว่างเปล่า นอกจากนี้ยังสามารถทดสอบการทำงานของ Git โดยตรงกับเครือข่ายภายนอกได้ด้วยคำสั่ง git ls-remote https://github.com เพื่อดูว่ามีข้อผิดพลาดเกี่ยวกับใบรับรองปรากฏขึ้นมาอีกหรือไม่
สำหรับทีมพัฒนาที่ใช้งานระบบ CI ของผู้ให้บริการภายนอก ซึ่งมักจะใช้ macOS image ที่ถูกสร้างไว้ล่วงหน้าและอาจยังมีใบรับรองเก่าติดอยู่ ควรเพิ่มขั้นตอนการตรวจสอบอัตโนมัติเข้าไปในไปป์ไลน์ เช่น การสร้างไฟล์ workflow ของ GitHub Actions เพื่อเช็กจำนวนใบรับรอง eMudhra และให้ระบบสั่งยกเลิกการสร้างทันทีหากพบว่ามีใบรับรองดังกล่าวกลับเข้ามาในระบบอีกครั้ง
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น