- Qualys พบช่องโหว่ใน OpenSSH ที่ทำให้สามารถรันโค้ดจากระยะไกลได้ผ่าน SSH agent ที่ถูกส่งต่อมา
- การส่งต่อ SSH agent มักใช้ในงานอย่าง CI/CD เพื่อพยายามล็อกอินโดยใช้ข้อมูลยืนยันตัวตนที่อยู่บนเครื่องระยะไกล โดยไม่ต้องเก็บข้อมูลยืนยันตัวตนไว้โดยตรง
- ช่องโหว่เกิดขึ้นในส่วนที่ SSH agent อนุญาตการรองรับ PKCS11
- เพื่อรองรับ PKCS11 ระบบอนุญาตให้ผู้ใช้ระยะไกลโหลดและปิด shared library จากตำแหน่งที่เชื่อถือได้
- จากการทดสอบ shared library ที่ติดตั้งมาโดยค่าเริ่มต้นทั้งหมดบน Ubuntu Desktop พบว่าไลบรารีพื้นฐานโดยทั่วไปไม่ได้ถูกออกแบบมาให้ปิดได้ จึงเกิดข้อผิดพลาดเมื่อ
ssh-agent พยายามปิดไลบรารีเหล่านั้น
- ข้อผิดพลาดเหล่านี้ทำให้เกิด system signal บางอย่าง และเมื่อนำมาผสมกันก็สามารถรันโค้ดตามต้องการจากระยะไกลได้สำเร็จ
- OpenSSH แก้ไขโดยปิดการรองรับ PKCS11 จากระยะไกลแบบตรง ๆ และเปลี่ยนไปจัดการ shared library ด้วย whitelist
- เดิมทีสามารถโหลด shared library ใดก็ได้ที่อยู่ใต้โฟลเดอร์
lib
- หากใช้งานฟังก์ชันส่งต่อ SSH agent ควรปิดการรองรับ PKCS11 เมื่อไม่จำเป็น
3 ความคิดเห็น
ต้องปิดการตั้งค่านี้บนพีซีส่วนตัวหรือเปล่าครับ? หรือว่าเป็นการตั้งค่าฝั่งเซิร์ฟเวอร์…
หากคุณไม่เคยใช้
ssh-agent forwardingก็ดูเหมือนว่าจะไม่ได้รับผลกระทบอะไรเลยผมลองอ่านคำอธิบายรายละเอียดของช่องโหว่อย่างคร่าว ๆ แล้ว แต่ก็ยังไม่เข้าใจเลย...
ประมาณว่าเกี่ยวกับ
SIGBUS,SIGSEGVhandler อะไรสักอย่าง แล้วทำให้เกิดSIGTRAP, เก็บอะไรบางอย่างไว้ใน stack buffer แล้วชักนำให้กระโดดไปทางนั้น...เขาบอกว่าควบคุมทั้งหมดนั้นได้ด้วยการโหลด/ยกเลิกการโหลดไลบรารี แต่พูดตรง ๆ คือผมไม่ค่อยเข้าใจว่าหมายถึงอะไรครับ
ก็ได้แค่ประมาณว่า อ้อ เป็นแบบนั้นเอง... แค่นั้นครับ
ถ้าใครสนใจ มีเอกสารที่ละเอียดมาก น่าจะรวมตัวอย่างไว้ด้วย
แนะนำให้ลองอ่านดูครับ.