รั่วตัวเดียว ฉิบหายกันทั้งแผ่นดินกับ “Heartbleed”

heartbleedเมื่อวันที่ 7 เมษายน 2014 ทีมวิศวกรความปลอดภัย (Security Engineer) คุณ Riku, Antti and Matti แห่ง บริษัท Codenomicon และ คุณ Neel Mehta แห่งทีม Google Security ได้ค้นพบบั๊กในซอฟต์แวร์ OpenSSL และได้แจ้งไปยังทีมงานผู้พัฒนา OpenSSL บั๊กตัวนี้อาจจะจะส่งผลกระทบอย่างร้ายแรงในวงการ Security เลยทีเดียว วันนี้ก็เลยเขียน Blog รวบรวมข้อมูลและสรุปข้อมูลเอาไว้ เพื่อประโยชน์ต่อตัวเองและคนอื่นๆ หากใครสนใจเข้ามาอ่านดูละกัน จะพยายามอธิบายด้วยภาษากลางๆ (ล่ะมั้ง?)

ภัยร้ายในครั้งนี้เกิดจากบั๊ก (Bug) หรือข้อผิดพลาดในเชิงซอฟต์แวร์ ของซอฟต์แวร์ที่มีชื่อว่า OpenSSL ซึ่งทำหน้าที่ในการจัดการ Private/Public Key ที่ใช้ในการเข้าและถอดรหัสข้อมูลต่างๆ มีซอฟต์แวร์หลายๆ ตัวที่มีการทำงานในส่วนของการเข้าและถอดรหัสซึ่งก็ใช้ซอฟต์แวร์ตัวนี้ทั้งนั้น

สิ่งที่เกิดขึ้นคืออะไร?

A magnifying glass is held in front of a computer screen in this picture illustration taken in Berlin

บั๊กที่เกิดขึ้นนี้ จะทำให้ใครก็ได้สามารถเข้ามาอ่านข้อมูลในหน่วยความจำของโปรแกรม OpenSSL บนเครื่องเซิร์ฟเวอร์ ทำให้สามารถที่จะอ่านข้อมูลในส่วนของ Secret Key ของเซิร์ฟเวอร์ที่ถือว่าเป็นกุญแจลับในการถอดรหัสข้อมูลที่ถูกเข้ารหัสอยู่ได้ เพราะในวงการอินเตอร์เน็ต ในเรื่องของความปลอดภัยนั้น เรามักจะใช้สิ่งที่เรียกว่า SSL/TLS เป็นมาตรฐานหลักในการควบคุมความปลอดภัยของข้อมูล บริการต่างๆไม่ว่าจะเป็น เว็บไซต์, บริการอีเมล, การแชต (IM), หรือ VPS ส่วนใหญ่ ต่างก็ใช้วิธีการเข้ารหัสข้อมูลด้วย SSL/TLS ด้วยกันทั้งสิ้น

สำหรับ OpenSSL ที่มีบั๊กตัวนี้ คือเวอร์ชั่น 1.0.1 ที่ออกมาในปี 2012 โดย OpenSSL เวอร์ชั่นนี้ได้ถูกติดตั้งไว้เป็นมาตรฐานบนระบบปฏิบัติการ Linux เช่น

  • Debian Wheezy (stable), OpenSSL 1.0.1e-2+deb7u4
  • Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11
  • CentOS 6.5, OpenSSL 1.0.1e-15
  • Fedora 18, OpenSSL 1.0.1e-4
  • OpenBSD 5.3 (OpenSSL 1.0.1c 10 May 2012) and 5.4 (OpenSSL 1.0.1c 10 May 2012)
  • FreeBSD 10.0 – OpenSSL 1.0.1e 11 Feb 2013
  • NetBSD 5.0.2 (OpenSSL 1.0.1e)
  • OpenSUSE 12.2 (OpenSSL 1.0.1c)

โดยสถานของซอฟต์แวร์ OpenSSL จะเป็นดังนี้

  • OpenSSL 1.0.1 รวมทั้ง 1.0.1f  มีปัญหา
  • OpenSSL 1.0.1g ไม่มีปัญหา
  • OpenSSL 1.0.0 ไม่มีปัญหา
  • OpenSSL 0.9.8 ไม่มีปัญหา

ล่าสุด ได้มีการออก OpenSSL 1.0.1g (รุ่นล่าสุด) ซึ่งแก้ปัญหาความปลอดภัยตัวนี้ไปเรียบร้อยแล้ว

ทำไมถึงเรียกว่า Heartbleed Bug ?

สำหรับบั๊กของ OpenSSL นี้ ที่เป็นส่วนประกอบของ TLS/DTLS (transport layer security protocols) Heartbeat extension (ส่วนเสริม) เมื่อโดยเจาะเข้ามาก็สามารถดึงข้อมูลในหน่วยความจำที่เซิร์ฟเวอร์รับส่งให้กับไคลเอนต์ได้ จึงเป็นการตั้งชื่อล้อกันกับส่วนนี้ (Bleed แปลได้ว่า ตกเลือด เอาเลือดออก เลือดไหล)

ความร้ายแรงของสิ่งนี้

เนื่องจากเป็นบั๊กที่ส่งผลกระทบในวงกว้างอย่างมาก เพราะสามารถที่จะขโมย Key ที่ใช้ในการเข้ารหัสได้ ก็ย่อมขโมยข้อมูลที่ถูกเข้ารหัสเอาไว้ได้เช่นกัน ดังนั้นถือว่ามีความร้ายแรงเป็นอย่างมากในเชิงซอฟต์แวร์ โดยนักวิศวกรความปลอดภัยได้จัดอันดับเป็นความร้ายแรงระดับ Grave ซึ่งถือว่ามีความร้ายแรงระดับสูงมาก เป็นรองแค่ระดับ Critical เท่านั้น

ผลกระทบที่เกิดขึ้น

heartbleed_bug_internet-373642
บั๊กตัวนี้ ถึงแม้จะผู้เปิดเผยอย่างเป็นทางการในวันที่ 7 เมษายน ที่ผ่านมา พร้อมกันการเร่งออกซอฟร์แวร์ OpenSSL เวอร์ชั่นใหม่ เพื่อแก้ปัญหาตัวนี้ไปแล้ว แต่เราก็ไม่สามารถบอกได้ว่า มีผู้ไม่หวังดีคนไหนที่รู้ถึงช่องโหว่ตัวนี้ก่อน และนำไปใช้ในทางที่ไม่เหมาะสมมาตั้งแต่ก่อนหน้านี้หรือไม่ ในวงการความปลอดภัย เราจะเรียกกันว่า Day 0 Exploit  หรือการโจมตีตั้งแต่วันที่ 0 โดยไม่ให้โอกาสอีกฝั่งที่จะรับมือได้ ความเสี่ยงตรงนี้ ถือเป็นความเสี่ยงร้ายแรงที่ข้อมูลที่เก็บอยู่บนเซิร์ฟเวอร์จะถูกดึงออกไปแล้วนั้นเอง โดยในตอนนี้ก็ได้มีผู้ที่ได้รับผลกระทบหลายรายแล้ว

ถามว่า เว็บไซต์เหล่านี้นั้นเกิดผลกระทบอย่างไร? อธิบายก็คือ ในการที่เราเรียกใช้บริการเว็บไซต์ต่างๆเหล่านั้น เบื้องหลังการทำงานของเว็บไซต์จะมีการ เข้ารหัส/ถอดรหัส ข้อมูล โดยการใช้เจ้า OpenSSL ตัวนี้แหละ ดังนั้นในขณะที่เจ้า OpenSSL มันทำงานอยู่ ก็จะเก็บข้อมูลต่างๆ ของผู้ใช้ ไม่ว่าจะเป็น Key ต่างๆ หรือข้อมูลต่างๆ เอาไว้ในหน่วยความจำของโปรแกรมตัวนี้ และหากในขณะนั้น มีใครใช้ช่องโหว่นี้ในการเจาะเข้ามาในระบบเซิร์ฟเวอร์ของบริการเหล่านั้น ก็สามารถที่จะขโมยข้อมูลของเราไปได้นั่นเอง

อันตรายสราดดด!!!!!

ตัวอย่าง Exploit ที่ใช้ในการโจมตี เอาไว้ดูเล่นๆ เพื่อศึกษา (นายคงไม่คิดเอาไปรันเล่นหรอกใช่ไหม!!!)

OpenSSL TLS Heartbeat Extension - Memory Disclosure

 

การแก้ไขปัญหา

เนื่องจากว่า เราไม่สามารถรู้ได้ว่า เซิร์ฟเวอร์ของผู้ให้บริการที่เราใช้บริการอยู่นั้นได้ถูกดูดข้อมูลไปหรือเปล่า ดังนั้น ซึ่งถามว่าเราจะป้องกันข้อมูลเก่าของเราได้ไหม? อันนี้ต้องบอกเลยครับว่า โอกาสไม่รอดมีสูง 555+ ดังนั้น ทำใจกับข้อมูลที่สำคัญอย่าง “รหัสผ่านตัวเก่า” ที่ใช้อยู่ไปได้เลย ทางเว็บ LastPass ซึ่งเป็นเว็บให้บริการจัดเก็บข้อมูลรหัสผ่าน ได้เปิด Tools ให้ใช้กันเพื่อตรวจสอบเว็บไซต์ต่างๆ ว่าเสี่ยงต่อการถูกโจมตีด้วยช่องโหว่ตัวนี้หรือไม่

 https://lastpass.com/heartbleed/

ซึ่งสามารถ เช็คกันได้ การทำงานคร่าวๆ คือมันจะเข้าไปเช็คตัว Web Server ของเว็บไซต์ที่เรากรอกลงไป ว่าใช้ตัวไหน เวอร์ชั่นไหน และมีความเสี่ยงที่จะใช้งานเจ้า OpenSSL หรือไม่ ยกตัวอย่างเช่น ใส่เว็บนี้เข้าไป

2014-04-11 01_01_41คือมีโอกาสสูงสัดๆ นั้นเอง ก๊าบบบ….. ลองอีกเว็บ

2014-04-11 01_03_06เนื่องจากทางเว็บไซต์นั้น ได้มีการ Gen Private Key / Public Key จากโปรแกรม OpenSSL ซึ่งเอาไปใช้ในการขอ SSL Certificate หรือก็คือการทำ https นั่นเอง เมื่อเรา Gen ออกมาไว้แล้ว และถ้าเราใช้ซอฟร์แวร์ OpenSSL ตัวที่มีปัญหา (หรืออัพเดทมาเรื่อยๆ แล้วคงอยู่ที่เวอร์ชั่น 1.0.1) ก็อาจจะซวย โดนใครเล่นพิเรน มาเจาะเพื่อเอาข้อมูลที่อยู่ในหน่วยความจำไปได้ ดังนั้น ในการแก้ไขคือ…

เจ้าของเว็บไซต์ & เจ้าของเซิร์ฟเวอร์

หากเว็บของคุณมีการใช้บริการจำพวก https ก็จะต้อง Generate เจ้า Key ขึ้นมาใหม่ และนำไปเข้ากระบวนการขอ SSL Certificate เสียใหม่ (ขอใหม่ได้ เปลี่ยน Private Key และ Key ต่างๆ ใหม่ทั้งหมด) เพราะ Key ตัวเดิมที่เคยใช้ อาจจะหลุดไปอยู่ในมือแฮกเกอร์แล้วก็ได้ แต่ถ้าคิดว่า มันคงไม่หลุดหรอก ไม่น่าจะมีใครเข้ามาเจาะ ในช่วงเวลาที่ผ่านมา (มั่นใจว่ายังไม่โดนแฮค) ก็รีบอัพเดทซอฟต์แวร์ OpenSSL ให้เป็นเวอร์ชั่นล่าสุด (1.0.1g) เพื่อที่ว่าจะปลอดภัย อย่างน้อยก็หายห่วง ว่าแฮกเกอร์จะไม่สามารถใช้ช่องโหว่งดังกล่าวเจาะเข้ามาได้อีก (เอกสาร Fix Patch OpenSSL Security Advisory)

ในกรณีของ CentOS นั้น (หรือ Linux อีกหลายๆ ตัว) จะใช้วิธีการ Backport Security Patch ซึ่งเลขเวอร์ชั่นจะไม่เปลี่ยน กล่าวง่วงๆ คือ เลขเวอร์ชั่นทั้ง เมเจอร์ ไมเนอร์ จะเปลี่ยนก็ต่อเมื่อมีการเปลี่ยนแปลงฟีเจอร์หรืออะไรสำคัญๆ แต่ถ้าเป็นการแก้ไขบั๊กในเรื่องของความปลอดภัยเฉยๆ จะมีการเติมเลขต่อท้ายไปแทน ดังนั้นเวอร์ชั่นล่าสุดของ CentOs จะเป็น 1.0.1e-16 ซึ่งเทียบได้กับรุ่น 1.0.1g ที่ออกมาแก้ไขบั๊คดังกล่าวเรียบเรียบแล้ว

แต่ถ้าตรวจสอบแล้วรุ่นปัจจุบันยังเป็น 1.0.1e-15 ก็ติดบั๊กอยู่นะจ้า

2014-04-11 15_03_11-SuperPuTTY - Alive.in.th _ 27.254.46.211

ผู้ใช้งานทั่วไป

heartbleed-openssl-bug

อย่างที่อธิบายไปด้านบน ถึงเรื่องของ Day 0 Exploit เราจึงการันตีไม่ได้ว่า ช่องโหว่นี้จะถูกขายออกไปยังตลาดมืด โดยแฮคเกอร์ที่ค้นพบเจอก่อน ผู้เชียวชาญ 4 คน ด้านบนที่กล่าวไปหรือไม่ ต้องบอกว่า 4 คนที่บอกไปตอนหัวเรื่อง คุณ Riku, Antti and Matti แห่ง บริษัท Codenomicon และ คุณ Neel Mehta แห่งทีม Google Security ที่เจอช่องโหว่นั้น เมื่อเจอ เค้าก็แจ้งไปยังทีม OpenSSL ทันทีเพื่อแก้ไข แต่ถ้าคนที่เจอก่อน ไม่ได้เป็น 4 คนนี้ แต่เป็นแฮกเกอร์สายมืด และเค้าได้ขายช่องโหว่นี้ในตลาดมืด และมีแฮคเกอร์เลวๆ แอบเจาะเข้าไปในเซิร์ฟเวอร์ของบริการเจ้าดังๆ ล่ะ ซึ่งตอนนี้ ก็ได้มีข้อมูลอัพเดทมาว่า เว็บไซต์หลายๆ เจ้าเหล่านี้มีความเสี่ยงที่จะถูกขโมยข้อมูลไปแล้ว

  • Facebook – ยังไม่พบหลักฐานการแฮ็กผ่านบั๊กนี้ แต่แนะนำให้ผู้ใช้เปลี่ยนรหัสผ่าน
  • Tumblr – ยังไม่พบหลักฐาน แนะนำให้เปลี่ยนรหัสผ่าน
  • Google – กูเกิลบอกว่าได้รับผลกระทบในบริการบางตัว เช่น Gmail, YouTube, Play, Apps, App Engine ส่วน Chrome, Chrome OS ไม่ได้รับผลกระทบ
  • Yahoo! (รวม Yahoo Mail)
  • Amazon Web Services
  • GoDaddy
  • Dropbox
  • LastPass
  • SoundCloud

ทั้งนี้ ก็มีบริการที่ออกมายืนยันว่าไม่ได้รับผลกระทบนี้แน่ๆ (เพราะไม่ได้ใช้ OpenSSL หรือไม่ได้ใช้เวอร์ชั่นที่มีปัญหา)

  • LinkedIn, Slideshare
  • Amazon (ไม่รวม AWS)
  • Microsoft (รวม Hotmail/Outlook)
  • AOL
  • eBay
  • PayPal
  • Evernote

บริการที่ยังไม่ยืนยัน

  • Apple
  • Twitter

ทั้งนี้ ก่อนหน้านี้เคยมีการพบช่องโหว่ goto fail; บน Safari ของ Apple แต่อันนั้นเป็นบั๊กในระดับ User แต่อันนี้เป็นการโจมตีไปยังผู้ให้บริการโดยตรง คือ โจมตีไปที่เซิร์ฟเวอร์ ไม่ได้โจมตีไปที่เครื่องของผู้ใช้ตรงๆ แบบบั๊กนั้น แต่ปลายทาง คือการเจาะเข้าไปเอา Key คล้ายๆ กัน

ดังนั้น จากนี้กล่าวมา ข้อแนะนำคือ หลังจากเว็บไซต์ที่มีความเสี่ยง ยืนยันว่า มีการอัพเดท OpenSSL เรียบร้อยแล้ว (ซึ่งตอนนี้คงอัพเดทกันหมดแล้ว) เราก็ควรที่จะเข้าไปเปลี่ยนรหัสผ่านเสีย อย่างน้อย หากแฮคเกอร์สามารถถอดรหัสข้อมูลรหัสผ่านของเราไปได้ แต่ก็ไม่สามารถนำ “รหัสผ่านเก่า” ของเรามาใช้ได้ ก็ถือว่าเราก็ปลอดภัยไปในระดับนึง…. คือ Facebook, Google Account หรือ บลาๆ จะไม่โดนแฮกนั้นเอง… ดังนั้น

จากการประเมินของผู้เชี่ยวชาญเห็นว่า มีโอกาสประมาณ 66% จากทุกเว็บไซต์บนอินเตอร์เน็ต ที่จะได้รับผลกระทบจากช่องโหว่นี้ โดยบั๊กนี้จะทำให้ข้อมูล อาทิ ชื่อ รหัสผ่าน หรือข้อมูลอื่นๆ ที่ได้รับการป้องกันไว้จากผู้ดูแลถูกขโมยออกไปได้ ทั้งนี้ ผู้ดูแลเว็บไซต์หลายๆ เจ้าก็ได้พยายามส่งอีเมลไปยังกลุ่มผู้ใช้งานถึงปัญหาในครั้งนี้บ้างแล้ว ดังนั้นแล้วก็…

เปลี่ยนพาสเวิร์ดซะ เปลี่ยนทั้งแผ่นดินจ้า…

 

ที่มา และแหล่งอ้างอิง (หากต้องการศึกษาเพิ่มเติม)

0 Total Views 0 Views Today

4 thoughts on “รั่วตัวเดียว ฉิบหายกันทั้งแผ่นดินกับ “Heartbleed”

  1. Pingback: รวมข้อมูลเวอร์ชั่นของ OpenSSL ที่อัพเดทแก้ไขบั๊กแล้ว | Bongbank Blog

  2. I’ve been exploring for a little for any high quality articles or
    blog posts in this sort of house . Exploring in Yahoo
    I finally stumbled upon this web site. Reading this information So i’m glad to exhibit that I’ve a very good
    uncanny feeling I discovered exactly what I needed. I most for sure will make sure to
    don?t put out of your mind this web site and give it
    a glance on a constant basis.

  3. Pingback: 1081009 | รวมเวอร์ชั่นของ OpenSSL บน Linux ที่มีปัญหาและที่อัพเดทแก้ไขบั๊ก Heartbleed แล้ว | ร้อยแปดพันเก้า.com 1081009

Leave a Reply

Your email address will not be published.