ในบางระบบ Linux ผู้โจมตีสามารถได้รับสิทธิ์ root ได้โดยการป้อนรหัสผ่านที่มีความยาวมากกว่า 256 ไบต์
ช่องโหว่ดังกล่าวส่งผลกระทบต่อระบบ Linux บางตัวที่ใช้ musl libc แทน GNU C library และต้องเป็นระบบที่รัน OpenSSH’s secure shell daemon โดยไม่มี Pluggable Authentication Modules (PAM) และเปิดใช้งานการยืนยันด้วยรหัสผ่าน
หากเงื่อนไขเหล่านี้ครบถ้วน และมีบัญชีอื่นที่มีค่า hash ของรหัสผ่านที่ถูกต้อง บัญชีที่ไม่ควรรับรหัสผ่าน เช่น root, ผู้ใช้แบบ key-only deployment และผู้ใช้ LDAP อาจถูกเข้าถึงได้ด้วยการป้อนรหัสผ่านที่มีความยาวระหว่าง 257 ถึง 1,024 อักชัน
จุดเริ่มต้นของ *sshole
ในอดีต Bill Joy ได้พัฒนา BSD Unix ซึ่งไฟล์รหัสผ่านมีอักคเซ็นต์ดอกจันในรายการ /etc/passwd สำหรับผู้ใช้ daemon
ปัจจุบันรหัสผ่านมักอยู่ใน /etc/shadow และมีข้อมูลที่ถูก hash เพื่อตรวจสอบรหัสผ่านตัวอักษรที่ผู้ใช้ป้อน แต่ Kültekin ชี้ว่าการใช้ดอกจันนั้นไม่ใช่การป้องกันที่สมบูรณ์แบบ และ musl ได้เพิ่มการ hash ด้วย SHA-512 ซึ่งจะช้าลงตามความยาวของรหัสผ่าน ซึ่งอาจนำไปสู่ Denial of Service หากมีการโจมตีด้วยรหัสผ่านที่ยาวมาก
ไม่มีข้อบ่งชี้ว่าระบบที่เปราะบางถูกใช้ประโยชน์ แต่ Kültekin ได้รวมคำสั่ง CLI ง่ายๆ ในงานเขียนของเขาเพื่อตรวจสอบว่าบัญชีใดบนเครื่องที่ละเอียดอ่อนอาจมีการตั้งรหัสผ่านเมื่อเร็วๆ นี้
ศัพท์ที่ควรรู้
- musl libc – เป็นไลบรารี C ที่ใช้แทน GNU C library ในระบบปฏิบัติการ Linux บางตัว
- root – คือสิทธิ์ผู้ดูแลระบบสูงสุดในระบบปฏิบัติการ Unix/Linux
- OpenSSH’s secure shell daemon – คือโปรแกรมที่ใช้สำหรับการเชื่อมต่อระยะไกลและปลอดภัยผ่าน SSH
- Pluggable Authentication Modules (PAM) – คือโมดูลที่ใช้จัดการกระบวนการยืนยันตัวตนในระบบ Linux
- SHA-512 – คืออัลกอริทึมการเข้ารหัสที่ใช้ในการสร้างค่า hash ของรหัสผ่าน
ที่มา: The Register