ระวังภัย ช่องโหว่ใน OpenSSL ผู้ไม่หวังดีสามารถขโมยข้อมูลใน Memory จากเครื่องของเหยื่อได้ (Heartbleed, CVE-2014-0160)
วันที่ประกาศ: 9 เมษายน 2557
ปรับปรุงล่าสุด: 19 เมษายน 2557
เรื่อง: ระวังภัย ช่องโหว่ใน OpenSSL ผู้ไม่หวังดีสามารถขโมยข้อมูลใน Memory จากเครื่องของเหยื่อได้ (Heartbleed, CVE-2014-0160)
ประเภทภัยคุกคาม: Other
ข้อมูลทั่วไป
OpenSSL เป็นไลบรารีสำหรับใช้ในการเข้ารหัสลับข้อมูลผ่านโพรโทคอล SSL และ TLS ซึ่งเป็นไลบรารีแบบ Open source ทำให้ผู้พัฒนาซอฟต์แวร์หลายรายนำไลบรารีดังกล่าวนี้ไปใช้ในซอฟต์แวร์ของตนเอง ตัวอย่างโปรแกรมที่ใช้งานไลบรารี OpenSSL เช่น ระบบปฏิบัติการ Linux, เว็บเซิร์ฟเวอร์, โปรแกรมแช็ท หรือโปรแกรมสำหรับเชื่อมต่อ VPN เป็นต้น
เมื่อวันที่ 7 เมษายน 2557 ทาง OpenSSL ได้แจ้งเตือนช่องโหว่ในซอฟต์แวร์ OpenSSL เวอร์ชัน 1.0.1 ถึง 1.0.1f [1] โดยช่องโหว่ดังกล่าวอยู่ในส่วนของการเชื่อมต่อ TLS/DTLS ในส่วนที่เป็น Heartbeat extension ที่เอาไว้ตรวจสอบว่าโฮสต์ที่เชื่อมต่ออยู่ด้วยนั้นยังทำงานอยู่หรือเปล่า [2]
เนื่องจากส่วน Heartbeat extension อนุญาตให้ระบบใดๆ ก็ตามสามารถส่ง Request เข้ามาเพื่อให้เครื่องปลายทางตอบกลับ แต่กระบวนการนี้มีความผิดพลาดในขั้นตอนการตรวจสอบข้อมูล ทำให้ในกรณีที่ Request ที่ส่งเข้ามามีการระบุความยาวของข้อมูลที่ส่งกลับมากกว่าขนาดของ Request เครื่องปลายทางจะไปอ่านข้อมูลจากหน่วยความจำของตัวเครื่องออกมา แล้วส่งข้อมูลดังกล่าวกลับไปให้ผู้ที่ร้องขอ [3]
ข้อมูลที่เครื่องปลายทางจะส่งกลับไปให้ผู้ที่ร้องขอเป็นข้อมูลขนาด 64 KB จากหน่วยความจำในตำแหน่งที่ใกล้เคียงกับข้อมูลที่โปรเซสของ OpenSSL ใช้งานอยู่ ซึ่งข้อมูลที่อยู่ในหน่วยความจำจะถูกเก็บแบบไม่มีการเข้ารหัสลับ และอาจมีข้อมูลสำคัญถูกเก็บอยู่ในตำแหน่งนี้ เช่น รหัสผ่าน หมายเลขบัตรเครดิต หรือ Private Key ของระบบที่ใช้งาน OpenSSL จึงทำให้มีโอกาสสูงที่ผู้ไม่หวังดีจะเชื่อมต่อเข้ามาเพื่อขโมยข้อมูลสำคัญออกไปจากหน่วยความจำของเครื่องปลายทางได้ [4]
ถึงแม้ว่าข้อมูลที่สามารถอ่านได้จากหน่วยความจำของเครื่องปลายทาง จะสามารถนำออกไปได้แค่ครั้งละไม่เกิน 64 KB แต่ผู้ไม่หวังดีก็สามารถที่จะส่ง Request เข้ามาเรื่อยๆ เพื่อดึงข้อมูลในส่วนที่เหลือและนำข้อมูลที่ได้ไปปะติดปะต่อให้เป็นข้อมูลเต็มๆ ได้
ผลกระทบ
ช่องโหว่นี้มีผลกระทบทั้งกับผู้ใช้ทั่วไปและผู้ให้บริการผ่านอินเทอร์เน็ต ซึ่งทั้งสองกลุ่มนี้มีโอกาสที่จะถูกขโมยข้อมูลสำคัญออกไปจากหน่วยความจำ
ตัวอย่างความเสียหายที่เกิดกับผู้ใช้ทั่วไป เช่น ผู้ใช้เปิดใช้งานโปรแกรมที่มีการเชื่อมต่อแบบ SSL/TLS ที่พัฒนาโดยใช้ไลบรารี OpenSSL เวอร์ชันที่มีช่องโหว่ หากผู้ใช้มีการเชื่อมต่อแบบ SSL ก็มีโอกาสที่จะถูกผู้ไม่หวังดีขโมยข้อมูลที่อยู่ในหน่วยความจำได้ ขึ้นอยู่กับว่าโปรแกรมที่ใช้งานนั้นคือโปรแกรมอะไร เช่น เว็บเบราว์เซอร์ โปรแกรมรับส่งอีเมล โปรแกรมแช็ท โปรแกรม Cloud storage หรือโปรแกรมเชื่อมต่อ VPN
ตัวอย่างความเสียหายที่เกิดกับผู้ให้บริการที่เปิดใช้งานเว็บเซิร์ฟเวอร์ที่ใช้การเชื่อมต่อแบบ SSL ก็มีโอกาสสูงที่จะถูกผู้ไม่หวังดีขโมยข้อมูลสำคัญออกไปจากหน่วยความจำ เช่น รหัสผ่านของผู้ที่เข้าใช้งานระบบ หรือ Private key ที่ใช้ในการเข้ารหัสลับข้อมูล ซึ่งหากผู้ไม่หวังดีได้ข้อมูลในส่วนนี้ไปก็อาจถอดรหัสลับทุกอย่างที่เคยมีการแลกเปลี่ยนผ่านเครื่องเซิร์ฟเวอร์ได้
ระบบที่ได้รับผลกระทบ
ซอฟต์แวร์ OpenSSL เวอร์ชันดังต่อไปนี้ [5]
- 1.0.1
- 1.0.1:beta1 ถึง 1.0.1:beta3
- 1.0.1a ถึง 1.0.1f
- 1.0.2-beta1
ผู้ให้บริการอ้างตาม list ของ cert/cc [6]
ข้อแนะนำในการป้องกันและแก้ไข
[สำหรับผู้ดูแลระบบ]
1. ผู้ดูแลระบบควรอัพเดทซอฟต์แวร์ OpenSSL ที่ใช้งานในทันที เมื่ออัพเดทซอฟต์แวร์เสร็จแล้วให้ตรวจสอบหมายเลขเวอร์ชันว่าซอฟต์แวร์ได้รับการอัพเดทแล้ว
สำหรับระบบปฏิบัติการที่บริหารจัดการด้วย DPKG เช่น Debian Ubuntu
dpkg -s openssl
สำหรับระบบปฏิบัติการที่บริหารจัดการด้วย RPM เช่น CentOS Redhat
rpm -q --info openssl
2. เปลี่ยน SSL Certificate ใหม่
อย่างไรก็ตาม เวอร์ชันล่าสุดของซอฟต์แวร์ OpenSSL ที่ได้รับการแก้ไขช่องโหว่นี้แล้วบนระบบปฏิบัติการ Linux นั้น อาจมีหมายเลขเวอร์ชันที่ดูเหมือนเป็นส่วนหนึ่งของเวอร์ชันที่ได้รับผลกระทบดังที่ระบุไว้ข้างต้น เช่น ซอฟต์แวร์ OpenSSL บนระบบปฏิบัติการ Debian เวอร์ชันที่ได้รับการแก้ไขช่องโหว่แล้วคือ 1.0.1e-2+deb7u5 หรือสูงกว่า และในแต่ละระบบปฏิบัติการอาจมีหมายเลขเวอร์ชันล่าสุดที่แตกต่างกันไป ดังนั้น ผู้ใช้จึงควรตรวจสอบจากเว็บไซต์ทางการของแต่ละระบบปฏิบัติการอีกครั้ง เช่น Debian [7], Ubuntu [8], Red Hat Enterprise Linux [9] และ FreeBSD [10]
3. ผู้ดูแลระบบสามารถตรวจสอบปัญหาของโหว่ดังกล่าว ผ่านบริการของไทยเซิร์ตจัดเตรียมไว้ https://al2014ad002.thaicert.or.th/
รูปที่ 1 หน้าจอแสดงบริการตรวจสอบช่องโหว่ที่ไทยเซิร์ตจัดเตรียมไว้
[สำหรับผู้ใข้งาน]
1. ผู้ใช้งานสามารถตรวจสอบปัญหาของโหว่ดังกล่าว ผ่านบริการของไทยเซิร์ตจัดเตรียมไว้ https://al2014ad002.thaicert.or.th/ หากพบว่าบริการที่กำลังจะเข้าใช้งานมีช่องโหว่ Heartbleed ให้หยุดการเข้าใช้งานระบบนั้นก่อนทันที
2. เปลี่ยนรหัสผ่านกับเว็บไซต์ที่เข้าใช้งานด้วยรหัสผ่านใหม่ รวมถึงรหัสผ่านสำหรับการเข้าใช้งานระบบที่ได้รับผลกระทบ อ้างตาม list ของ cert/cc [6] และในกรณีที่ใช้งานหลายเว็บไซต์หรือระบบ ให้เลือกเปลี่ยนรหัสผ่านที่แตกต่างกัน
3. เมื่อรู้ตัวว่าใช้งาน Wi-Fi สาธารณะให้ระมัดระวังการใช้งานหรือหลีกเลี่ยงเข้าเว็บไซต์ที่มีความสำคัญ เช่น เว็บไซต์ธนาคารออนไลน์ หรือเว็บไซต์อีเมล
4. ตรวจสอบประวัติการล็อกอินเข้าใช้งานระบบที่สำคัญเพื่อให้แน่ใจว่าไม่มีการล็อกอินจากบุคคลอื่น
5. ติดตามข่าวสารเกี่ยวกับปัญหาช่องโหว่ HeartBleed จากเว็บไซต์ที่น่าเชื่อถือหรือบนเว็บไซต์ไทยเซิร์ต
บริการตรวจสอบช่องโหว่ Heartbleed
ไทยเซิร์ตได้เปิดให้บริการตรวจสอบช่องโหว่ตามที่อ้างถึงในบทความนี้ โดยผู้ใช้งานสามารถตรวจสอบได้ตามลิงก์ต่อไปนี้ คลิกที่นี่
อ้างอิง
- https://wwwssl.org/news/secadv_20140407.txt
- https://tools.ietf.org/html/rfc6520
- //heartbleed.com
- //blog.existentialize.com/diagnosis-of-the-openssl-heartbleed-bug.html
- https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0160
- //www.kb.cert.org/vuls/byvendor?searchview&Query=FIELD+Reference=720951&SearchOrder=4
- //www.debian.org/security/2014/dsa-2896
- //www.ubuntu.com/usn/usn-2165-1
- https://rhn.redhat.com/errata/RHSA-2014-0376.html
- //www.freebsd.org/security/advisories/FreeBSD-SA-14:06ssl.asc