Qualys พบช่องโหว่ “Stack Clash” ซึ่งทำให้ได้สิทธิ์ root ใน UNIX System


Qualys แสดงความสามารถอีกครั้งด้วยการเปิดเผยช่องโหว่ที่ชือว่า "Stack Clash" ทำให้ user สามารถใช้ช่องโหว่ดังกล่าวเพิ่มสิทธิ์ของตัวเองให้กลายเป็นสิทธิ์สูงสุดหรือ root ได้

Qualys พบช่องโหว่ "Stack Clash" ซึ่งทำให้ได้สิทธิ์ root ใน UNIX System ได้ ทาง Qualys พบช่องโหว่นี้ตั้งแต่เมื่อเดือนที่แล้ว (06/2017) และได้แจ้งให้เหล่า vendor ต่างๆไปก่อนแล้ว เพื่อให้ทาง vendor เหล่านั้นออกมา patch แก้ไขได้ทัน

ช่องโหว่นี้กระทบทั้ง Linux, OpenBSD, NetBSD, FreeBSD, และ Solaris. Researchers ได้ทดสอบ Stack Clash ทั้งบน i386 และ amd64 platforms เรียบร้อยแล้ว

จริงๆช่องโหว่นี้ถูกพบตั้งแต่ปี 2005 แล้วก็มีการ patch ไปแล้ว, พอปี 2010 ก็เจออีกแล้วก็ออก patch มาเช่นเคย แต่สุดท้ายก็ยังมีเจออีกในปีนี้ (2017)

ปัญหาเกี่ยวกับ stack ซึ่งเป็นพื้นที่ของ memory ที่ application ใช้ในการรัน code ซึ่งยิ่ง Program โตมากขึ้น Stack ของ Application ก็จะโตไปเรื่อยๆเช่นกัน ซึ่งปัญหาของการโตของ stack มากไปแล้วใกล้กับ stack ของ Program ตัวอื่นมากเกินไป นั่นคือปัญหาที่เกิดทั้งใน 2005, 2010 และ 2017 ทำให้ security researcher เจอช่องทางที่จะทำให้ระบบปฎิบัติการสับสนแล้วทำให้ code ของ stack หนึ่งไปโผล่ใน stack อื่นได้ ซึ่ง Qualys ทำให้ PoC code ออกมา ที่จะทำให้กระโดดไปยัง low-level code จาก stack memory ของ Application ไปยัง application ทั่วไปได้ ทำให้ได้สิทธิ์ root

แต่อย่างไรก็แล้วแต่ การพบช่องโหว่นี้ยังเป็นแค่ Local Exploitation เท่านั้น ยังจำเป็นต้องเข้าถึงเครื่องให้ได้ก่อน ไม่ใช่ Remote Exploitation แต่อย่างใด

ตอนนี้ทาง RHEL ได้ออก patch มาแก้ไขแล้วครับ ส่วน Vendor เจ้าอื่นๆก็จะมีการปล่อย update ต่อไปเรื่อยๆครับ หากเราไม่สามารถจะทำการ update OS ได้ ให้เราทำการ set RLIMIT_STACK และ RLIMIT_AS ของ user ทั่วไปให้มีค่าต่ำๆใน /etc/limits.conf และ /etc/xinetd.conf ซึ่งแน่นอนว่าอาจทำให้โปรแกรมนั้นๆทำงานได้ช้าลงและบางครั้งอาจจะไม่สามารถใช้งานเลยก็เป็นได้ ดังนั้นแนะนำให้ทำการ patch จะดีกว่าครับ

ผลกระทบ: Privilege Escalation
ระบบที่ได้รับผลกระทบ: Linux, OpenBSD, NetBSD, FreeBSD, และ Solaris
วิธีการป้องกันและแก้ไข: Update หรือทำการ set RLIMIT_STACK, RLIMIT_AS ให้มีค่าต่ำๆ

ที่มา : blog.qualys.com