7 คะแนน โดย kuroneko 2023-07-20 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
galadbran 2023-07-20

ต้องปิดการตั้งค่านี้บนพีซีส่วนตัวหรือเปล่าครับ? หรือว่าเป็นการตั้งค่าฝั่งเซิร์ฟเวอร์…

 
kuroneko 2023-07-21

หากคุณไม่เคยใช้ ssh-agent forwarding ก็ดูเหมือนว่าจะไม่ได้รับผลกระทบอะไรเลย

 
kuroneko 2023-07-20

ผมลองอ่านคำอธิบายรายละเอียดของช่องโหว่อย่างคร่าว ๆ แล้ว แต่ก็ยังไม่เข้าใจเลย...
ประมาณว่าเกี่ยวกับ SIGBUS, SIGSEGV handler อะไรสักอย่าง แล้วทำให้เกิด SIGTRAP, เก็บอะไรบางอย่างไว้ใน stack buffer แล้วชักนำให้กระโดดไปทางนั้น...

เขาบอกว่าควบคุมทั้งหมดนั้นได้ด้วยการโหลด/ยกเลิกการโหลดไลบรารี แต่พูดตรง ๆ คือผมไม่ค่อยเข้าใจว่าหมายถึงอะไรครับ
ก็ได้แค่ประมาณว่า อ้อ เป็นแบบนั้นเอง... แค่นั้นครับ

ถ้าใครสนใจ มีเอกสารที่ละเอียดมาก น่าจะรวมตัวอย่างไว้ด้วย
แนะนำให้ลองอ่านดูครับ.