พบช่องโหว่ในการ Parsing certificates บน OpenSSL ซึ่้งอาจส่งผลให้เกิด infinite-loop DoS

OpenSSL ออกแพตซ์อัปเดตด้านความปลอดภัยเพื่อแก้ไขช่องโหว่ในไลบรารีที่หากถูกโจมตีได้สำเร็จจะทำให้เกิด infinite-loop ซึ่งอาจเป็นเงื่อนไขที่ทำให้เกิด Denial of service ได้

Denial of service อาจดูไม่ใช่เรื่องที่ร้ายแรงมาก แต่ก็สามารถทำให้เกิดการหยุดชะงักของการดำเนินธุรกิจ หรือส่งผลกระทบในแง่ธุรกิจในระยะยาว และยังส่งผลเสียต่อชื่อเสียงแบรนด์ที่ได้รับผลกระทบอีกด้วย

โดยเฉพาะอย่างยิ่ง OpenSSL ซึ่งเป็นไลบรารี Open source ที่ใช้กันอย่างแพร่หลายโดยแพลตฟอร์มออนไลน์ขนาดใหญ่จำนวนมาก ดังนั้นช่องโหว่ใดๆที่เกิดขึ้นอาจส่งผลกระทบกับผู้ใช้งานเป็นจำนวนมาก

Certificates ที่เป็นต้นเหตุของการเกิด DoS

ในเคสนี้ ปัญหาของ OpenSSL เกิดจากการ Parsing certificates ** ที่มีรูปแบบไม่ถูกต้อง ในฟังก์ชัน BN_mod_sqrt() ส่งผลให้เกิดสิ่งที่เรียกว่า "infinite loop"

Certificates จะต้องประกอบไปด้วย elliptic curve public keys in compressed form หรือ elliptic curve parameters with a base point encoded in compressed form จึงจะทำให้เกิดผลกระทบจากช่องโหว่ดังกล่าว

“เนื่องจาก Certificates parsing เกิดขึ้นก่อนการตรวจสอบ Certificates signature นั่นหมายความว่ากระบวนการใดๆที่มีการ parse external certificates ก็อาจทำให้เป็นสาเหตุของการถูกโจมตีด้วยวิธีการ DoS ได้”

"นอกจากนี้ infinite loop สามารถเกิดขึ้นได้เมื่อมีการ parsing crafted private keys ได้เช่นเดียวกัน"

มีหลายสถานการณ์ที่การใช้งาน OpenSSL อาจเสี่ยงต่อช่องโหว่นี้
• TLS clients consuming server certificates
• TLS servers consuming clients certificates
• Hosting providers taking certificates or private keys from customers
• Certificates authorities parsing certification requests from subscribers
• Anything else which parse ASN.1 elliptic curve parameters

โดยช่องโหว่นี้มีเลข CVE-2022-0778 และส่งผลกระทบต่อ OpenSSL เวอร์ชัน 1.0.2 ถึง 1.0.2zc, 1.1.1 ถึง 1.1.1n และ 3.0 ถึง 3.0.1

Tavis Ormandy นักวิจัยด้านความปลอดภัยของ Google เป็นผู้ค้นพบช่องโหว่นี้ และแจ้งไปที่ OpenSSL เมื่อวันที่ 24 กุมภาพันธ์ 2022

ช่องโหว่ดังกล่าวได้รับการแก้ไขในเวอร์ชัน 1.1.1n และ 3.0.2 ในขณะที่ premium users ของเวอร์ชัน 1.0.2 จะได้รับการอัพเดทเป็นเวอร์ชัน 1.0.2zd เนื่องจากเวอร์ชัน 1.0.2 ไม่ได้ parse public keys ในระหว่างการ Parsing certificates การจะทำให้เกิด infinite loop จึงซับซ้อนกว่าเวอร์ชันอื่นๆ แต่ก็ยังเกิดขึ้นได้

เนื่องจาก OpenSSL เวอร์ชัน 1.0.2 End of Life ไปแล้ว จึงยังไม่ได้รับการแพตซ์ ดังนั้นผู้ใช้ที่ไม่ใช่ premium users ควรอัปเกรดข้ามเป็นเวอร์ชันที่ใหม่กว่าโดยเร็วที่สุด

ผู้ใช้ OpenSSL 1.0.2 ควรอัปเกรดเป็น 1.0.2zd (เฉพาะ premium users เท่านั้น)
ผู้ใช้ OpenSSL 1.1.1 ควรอัปเกรดเป็น 1.1.1n
ผู้ใช้ OpenSSL 3.0 ควรอัปเกรดเป็น 3.0.2

พบการโจมตีเกิดขึ้นแล้วหรือยัง?

แม้ว่า OpenSSL ไม่ได้บอกว่าช่องโหว่นี้ถูกใช้โดยผู้โจมตีแล้ว แต่ CSIRT หน่วยงานความปลอดภัยทางไซเบอร์แห่งชาติของอิตาลีได้ระบุว่าพบการโจมตีเป็นวงกว้างแล้วในปัจจุบัน

ทาง Bleeping Computer ได้ติดต่อทีม OpenSSL เพื่อขอคำชี้แจงในประเด็นนี้ และทาง OpenSSL ได้แจ้งว่าพวกเขายังไม่พบว่ามีการโจมตีเกิดขึ้นจริง

แต่ด้วยช่องโหว่ไม่ได้ซับซ้อนมาก และมีข้อมูลที่ถูกเผยแพร่ออกมาพอสมควร จึงอาจทำให้ผู้ไม่หวังดีสามารถทดสอบ และสร้างเครื่องมือในการโจมตีช่องโหว่ได้อย่างรวดเร็วในอนาคต

OpenSSL ให้ข้อมูลกับ Bleeping Computer เพิ่มเติมดังนี้:
“ช่องโหว่นี้สามารถใช้ในการโจมตีได้ไม่ยาก แต่ผลกระทบนั้นจำกัดอยู่ที่ DoS เท่านั้น สถานการณ์ที่อาจจะพบบ่อยในการใช้ประโยชน์จากช่องโหว่นี้จะเกิดจาก TLS Client ที่มีการเข้าถึง Malicious server ส่วน TLS server อาจได้รับผลกระทบหากมีการเปิดใช้งาน client authentication ด้วย configuration ที่ไม่เหมาะสม และมี malicious client ที่พยายามเชื่อมต่อกับเซิร์ฟเวอร์ แต่เป็นการยากที่จะคาดเดาว่าจะมีการนำไปปรับใช้เป็นเครื่องมือในการโจมตีเป็นวงกว้างมากถึงระดับใด ”

ที่มา : bleepingcomputer