สำรวจความปลอดภัยของ SSL ของธนาคารออนไลน์ในประเทศไทย

by icez
29 November 2014 - 07:45

ในรอบปีที่ผ่านมาเราพบกับปัญหาความปลอดภัย และช่องโหว่ของระบบเข้ารหัสแบบ SSL จำนวนมาก อีกทั้งยังทั่วถึงกันแทบจะทุกระบบปฏิบัติการที่มีใช้งานกันอยู่ (Windows, iOS+OSX, SSLv3 ทุก OS, Heartbleed ใน OpenSSL) ทั้งที่ส่งผลโดยตรงต่อผู้ใช้ และส่งผลโดยตรงต่อผู้ดูแลระบบ ไม่นับปัญหาที่ “อาจ” มีผลกระทบต่อผู้ใช้งานจำนวนมาก และเมื่อการทำธุรกรรมทางการเงินผ่านอินเทอร์เน็ตได้รับความนิยมมากขึ้นเรื่อยๆ เราจึงควรทราบข้อมูลทางด้านความปลอดภัยของเว็บไซต์ระบบธนาคารออนไลน์ต่างๆ ที่เปิดให้ใช้งานอยู่ในประเทศไทยไว้บ้างครับ

อนึ่ง บทความนี้เขียนขึ้นโดยนักศึกษาฝึกงาน จากคณะวิศวกรรมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยขอนแก่น ประจำบริษัท INOX ดังรายชื่อด้านล่างนี้ โดยการควบคุมและตรวจสอบโดยผมเองครับ

  • นายวรวรรต พงษ์ศิริ
  • นายณราชัย กิตติสิทโธ

SSL/TLS คืออะไร

Secure Socket Layer / Transport Layer Security เป็นการทำงานเพื่อเข้ารหัสข้อมูลที่ใช้รับ-ส่งกันระหว่างเครื่องแม่ข่ายและลูกข่ายด้วยวิธีการตามที่ตกลงกันไว้ตาม cipher suite* ที่ทั้งสองฝ่ายยอมรับ โดย SSL รุ่นล่าสุดคือ 3.0 ก่อนที่จะถูกปรับปรุงขึ้นมาเป็นรุ่นใหม่ พร้อมเปลี่ยนชื่อเป็น TLS 1.0 ที่เทียบได้กับ SSL 3.1 และมีการพัฒนาต่อมาจนเป็น TLS 1.2 ในปัจจุบัน

Forward Secrecy คืออะไร สำคัญอย่างไร

Forward Secrecy คือกระบวนการรักษาความปลอดภัย “ในอนาคต” ของข้อมูลที่ถูกเข้ารหัสผ่านการเชื่อมต่อบน TLS โดยการสร้าง key pair สำหรับเข้า/ถอดรหัสใหม่ทุกการเชื่อมต่อโดยไม่อิงกับ private key เดิม และเมื่อการเชื่อมต่อนั้นสิ้นสุดลง key ก็จะไม่สามารถใช้งานได้ ทำให้แม้ว่า private key จะหลุดมาในอนาคต ก็ไม่สามารถนำมาใช้ถอดรหัสข้อมูลที่ถูกดักและเก็บเอาไว้ได้

ข้อมูลการรองรับ forward secrecy ของเบราว์เซอร์รุ่นเสถียรล่าสุดแต่ละรุ่น

เบราว์เซอร์รุ่นที่ “ไม่รองรับ” Forward Secrecy มีเพียง Internet Explorer บน Windows XP เท่านั้น ส่วนเบราว์เซอร์ยอดนิยมทุกตัวที่มีใช้กันในปัจจุบันต่างก็รองรับ Forward Secrecy ไม่ว่าจะด้วยวิธีใดก็ตามอย่างน้อย 1 วิธีหมดแล้วครับ (อ้างอิงจาก SSL Labs)

อะไรคือ cipher suite

Cipher suite คือชุดของรายการ "กระบวนการ" ในการยืนยันตัวตน การเข้ารหัส การตรวจสอบ และการรับรองการสื่อสารผ่านการเข้ารหัส ซึ่งทั้งไคลเอนต์และเซิร์ฟเวอร์แต่ละตัวก็จะมีการรองรับกระบวนการเหล่านี้ต่างกัน ทำให้จำเป็นต้องมีการตกลงกันว่าจะใช้ชุด cipher ไหนในการสื่อสารครั้งนั้นๆ บนโปรโตคอล SSL/TLS ผ่านกระบวนการ Handshake ในการเชื่อมต่อ

ข้อมูล SSL Certificate และการรองรับการเชื่อมต่อของแต่ละธนาคาร

รายการด้านล่างเป็นข้อมูล ณ วันที่ตรวจสอบ (28 พ.ย. 2557) ซึ่งอาจมีการเปลี่ยนแปลงได้ในอนาคตนะครับ

สำหรับ Certificate Hash Algorithm กรณีเป็น SHA-1 ที่อาจถูกปลอมแปลงได้ง่ายขึ้นเรื่อยๆ ซึ่งเป็นประเด็นจากข่าวเก่า (36853, 60213, 60406) ที่ทำให้ SETTRADE เปลี่ยนใบรับรองมาแล้ว และส่วนของ SSLv3 ทำการตรวจสอบว่าเปิดอยู่หรือไม่เนื่องจากช่องโหว่ POODLE ครับ บางธนาคารที่มีเครื่องหมาย * อยู่แสดงว่าเปิด แต่มีการปรับปรุงให้ไม่ได้รับผลกระทบจากช่องโหว่ POODLE ไปแล้ว

และหัวข้อ Forward Secrecy จะเป็นการทดสอบการรองรับการใช้ cipher suite ที่มีการใช้งาน DHE ด้วยการบังคับการเชื่อมต่อเข้าหาเซิร์ฟเวอร์ผ่านคำสั่ง openssl s_client ที่มีการระบุ cipher ไว้เฉพาะที่รองรับ Forward Secrecy เท่านั้น หากรองรับจะแสดงข้อมูล cipher ที่ใช้ได้ไว้ครับ

ธนาคารกรุงเทพ

  • URL หน้าล็อกอิน: https://ibanking.bangkokbank.com/SignOn.aspx
  • Certificate name: ibanking.bangkokbank.com
  • Issuer: VeriSign Class 3 Extended Validation SSL SGC CA
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.2
  • SSLv3 support: เปิด *
  • Forward Secrecy: ไม่รองรับ

ธนาคารกรุงไทย

  • URL หน้าล็อกอิน: https://www.ktbnetbank.com/consumer/
  • Certificate name: www.ktbnetbank.com
  • Issuer: VeriSign Class 3 Extended Validation SSL SGC CA
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.2 (ไม่รองรับ TLSv1.1)
  • SSLv3 support: เปิด *
  • Forward Secrecy: ไม่รองรับ

ธนาคาร กรุงศรีอยุธยา

  • URL หน้าล็อกอิน: https://www.krungsrionline.com/cgi-bin/bvisapi.dll/krungsri_ib/login/login.jsp
  • Certificate name: www.krungsrionline.com
  • Issuer: VeriSign Class 3 Extended Validation SSL SGC CA
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.0
  • SSLv3 support: เปิด *
  • Forward Secrecy: ไม่รองรับ

ธนาคาร กสิกรไทย

  • URL หน้าล็อกอิน: https://online.kasikornbankgroup.com/K-Online/login.jsp?lang=th
  • Certificate name: online.kasikornbankgroup.com
  • Issuer: Symantec Class 3 EV SSL CA - G3
  • Certificate Hash Algorithm: SHA-256
  • Protocol support: TLSv1.0
  • SSLv3 support: เปิด *
  • Forward Secrecy: ไม่รองรับ

ธนาคาร เกียรตินาคิน

  • URL หน้าล็อกอิน: https://ebanking.kiatnakin.co.th/Banking/pb/logon
  • Certificate name: ebanking.kiatnakin.co.th
  • Issuer: Symantec Class 3 EV SSL SGC CA - G2
  • Certificate Hash Algorithm: SHA -1
  • Protocol support: TLSv1.0
  • SSLv3 support: ปิด
  • Forward Secrecy: ไม่รองรับ

ธนาคาร ซีไอเอ็มบีไทย

  • URL หน้าล็อกอิน: https://www.ebanking.cimbthai.com/cash/logon.jsp
  • Certificate name: www.ebanking.cimbthai.com
  • Issuer: VeriSign Class 3 Extended Validation SSL CA
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.0
  • SSLv3 support: เปิด
  • Forward Secrecy: TLSv1/SSLv3, DHE-RSA-AES256-SHA

ธนาคาร ทหารไทย

  • URL หน้าล็อกอิน: https://www.tmbdirect.com/tmb/kdw#_frmIBPreLogin
  • Certificate name: www.tmbdirect.com
  • Issuer: Entrust Certification Authority - L1E
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.2
  • SSLv3 support: ปิด
  • Forward Secrecy: ไม่รองรับ

Me by TMB

  • URL หน้าล็อกอิน: https://secure.mebytmb.com/efs/servlet/efs/th_TH/jsp-ns/login.jsp
  • Certificate name: www.mebytmb.com
  • Issuer: Entrust Certification Authority - L1E
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.0
  • SSLv3 support: เปิด
  • Forward Secrecy: ไม่รองรับ

ธนาคารไทยพาณิชย์

  • URL หน้าล็อกอิน: https://www.scbeasy.com/v1.4/site/presignon/index.asp
  • Certificate name: www.scbeasy.com
  • Issuer: Entrust Certification Authority - L1E
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.2
  • SSLv3 support: เปิด *
  • Forward Secrecy: ไม่รองรับ

ธนาคารไทยพาณิชย์ (Mobile)

  • URL หน้าล็อกอิน: https://m.scbeasy.com/login.aspx
  • Certificate name: m.scbeasy.com
  • Issuer: Entrust Certification Authority - L1E
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.2
  • SSLv3 support: เปิด *
  • Forward Secrecy: ไม่รองรับ

ธนาคารธนชาต

  • URL หน้าล็อกอิน: https://retailib.thanachartbank.co.th/retail/Login.do?action=form&lang=th_TH
  • Certificate name: retailib.thanachartbank.co.th
  • Issuer: Entrust Certification Authority - L1E
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.0
  • SSLv3 support: ปิด
  • Forward Secrecy: ไม่รองรับ

ธนาคารยูโอบี

  • URL หน้าล็อกอิน: https://pib.uobthailand.com/PIBLogin/appmanager/Login/Public?lang=en_TH
  • Certificate name: pib.uobthailand.com
  • Issuer: VeriSign Class 3 International Server CA - G3
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.0
  • SSLv3 support: ปิด !
  • Forward Secrecy: ไม่รองรับ

ธนาคารแลนด์แอนด์เฮาส์

  • URL หน้าล็อกอิน: https://www.lhbankspeedy.com//intro/intro_th.html
  • Certificate name: www.lhbankspeedy.com
  • Issuer: VeriSign Class 3 Extended Validation SSL SGC CA
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.2 (ไม่รองรับ TLSv1.1)
  • SSLv3 support: เปิด *
  • Forward Secrecy: ไม่รองรับ

ธนาคาร สแตนดาร์ดชาร์เตอร์ด (ไทย)

  • URL หน้าล็อกอิน: https://online-banking.standardchartered.co.th/Init/IBank?ser=100&act=110&cntryCode=TH&preflanguage=thn
  • Certificate name: online-banking.standardchartered.co.th
  • Issuer: Cybertrust Public SureServer SV CA
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.2
  • SSLv3 support: ปิด !
  • Forward Secrecy: ไม่รองรับ

ธนาคารออมสิน

  • URL หน้าล็อกอิน: https://ib.gsb.or.th/retail/security/commonLogin.jsp
  • Certificate name: ib.gsb.or.th
  • Issuer: VeriSign Class 3 Extended Validation SSL SGC CA
  • Certificate Hash Algorithm: SHA-1
  • Protocol support: TLSv1.0
  • SSLv3 support: เปิด
  • Forward Secrecy: TLSv1/SSLv3, DHE-RSA-AES256-SHA

ตารางข้อมูล cipher ของแต่ละธนาคาร แยกตามเบราว์เซอร์

ข้อมูลสรุปการทดสอบจาก SSL Labs แสดงข้อมูล cipher ที่เบราว์เซอร์น่าจะเลือกใช้สำหรับแต่ละเว็บไซต์ของธนาคาร ณ วันที่ 28 พฤศจิกายน 2557 ครับ

ความเสี่ยงและปัญหาความปลอดภัยของ RC4 (+ เหตุผลที่ยังใช้ RC4 กัน)

กระบวนการเข้ารหัส RC4 ถูกออกแบบมาตั้งแต่ปี 1987 หรือกว่า 27 ปีมาแล้ว โดยเน้นความง่ายและความรวดเร็วในกระบวนการเข้ารหัส (เพื่อให้เข้ากับพลังประมวลผลของอุปกรณ์ในยุคนั้น) ซึ่งมีการพิสูจน์โดยนักวิจัยจำนวนหนึ่งแสดงให้เห็นถึงปัญหาความปลอดภัยที่อาจทำให้ถอดรหัสข้อมูลออกมาได้ (เช่นที่เคยเจอในการเข้ารหัสเครือข่ายไร้สายแบบ WEP ที่มีการใช้งาน RC4 อยู่) ซึ่งมีการนำเสนอถึงการโจมตี RC4 เมื่อเดือนมีนาคมปี 2013 โดยการใช้ข้อมูลเชิงสถิติในการถอดรหัสการเข้ารหัส TLS ที่นิยมใช้ในการสื่อสารเว็บแบบเข้ารหัสทุกวันนี้ (อ้างอิงจาก งานวิจัย ผ่าน Wikipedia:RC4)

อย่างไรก็ตาม เหตุผลที่ RC4 ยังคงได้รับความนิยมค่อนข้างมากแม้จะพบปัญหาความปลอดภัยที่ค่อนข้างร้ายแรง เป็นผลเนื่องมาจากพบช่องโหว่สำคัญในกระบวนการเข้ารหัสของ AES, DES และ 3DES ด้วยวิธีการแบบ CBC ที่ชื่อว่า BEAST attack บน TLS 1.0 ซึ่งในขณะนั้นมีเพียง RC4 เท่านั้นที่เป็น cipher ที่แทบทุกไคลเอนต์รองรับ และทนทานต่อการโจมตีแบบดังกล่าวอยู่ ซึ่งปัจจุบันช่องโหว่ดังกล่าวถูกแก้ไขไปใน TLS 1.1 (ออกมาเมื่อปี 2006) ขึ้นไปเรียบร้อยแล้ว จึงมีคำแนะนำจากหลายๆ แหล่งให้ปิดการใช้งาน หรือลดความสำคัญของ RC4 ในระบบใหม่ๆ แล้วครับ

สรุป

  • ธนาคารในไทยส่วนใหญ่จะยังคงไม่รองรับ Forward Secrecy (น่าแปลกใจว่าธนาคารออมสินรองรับ !) แต่ด้วยนโยบายการควบคุมความปลอดภัยของธนาคารออนไลน์ของธนาคารแห่งประเทศไทยส่วนใหญ่ ก็ยังคงความมั่นใจในการรักษาความปลอดภัยของ Private Key ที่ใช้ในการเข้ารหัสข้อมูลได้ระดับหนึ่ง ในช่วงไม่เกิน 2-3 ปีถัดจากนี้ ซึ่งการโจมตี SSL ยังจำเป็นต้องใช้ต้นทุนที่ค่อนข้างสูงอยู่
  • ธนาคารส่วนใหญ่ยังคงเปิด RC4 และ SSL 3.0 รวมถึงยังไม่ได้ทำการเปลี่ยนใบรับรองเป็น SHA-2 แต่ก็มีแนวโน้มที่จะดำเนินการเพื่ออุดช่องโหว่ต่างๆ เหล่านี้ให้เห็นอยู่อย่างชัดเจน เช่นธนาคารกสิกรไทย ที่เมื่อช่วงต้นเดือนที่ทำการตรวจสอบครั้งแรก ยังใช้ใบรับรองแบบ SHA-1 อยู่ แต่เมื่อมีการตรวจสอบซ้ำก่อนเผยแพร่บทความนี้ได้มีการเปลี่ยนใบรับรองเป็น SHA-256 เรียบร้อยแล้ว
  • หลายธนาคารที่เคยเปิดใช้งาน SSLv3 มีการปิดการใช้งาน SSLv3 หรือปรับปรุงให้ SSLv3 ที่ยังเปิดอยู่มีความทนทานต่อการโจมตีแบบ POODLE แล้ว

ช่วงระหว่างนี้ เรายังคงต้องกังวลกับปัญหาหน้าเว็บหลอกลวง (fraud/social engineering) มากกว่าการโจมตีด้วยช่องโหว่ทางเทคโนโลยีเหล่านี้มากกว่าไปได้อีกระยะหนึ่งครับ

ข้อเสนอแนะ

กระบวนการเร่งด่วน ณ ตอนนี้คงเป็นเรื่องการปิดใช้งาน SSLv3 เพื่อป้องกันการโจมตีระบบด้วยช่องโหว่ POODLE ที่ยังคงเหลือบางธนาคารยังไม่ได้ปิดหรือปรับปรุงครับ และหลังจากนี้ที่บริการธุรกรรมออนไลน์ทั้งหมด (ไม่ใช่เฉพาะธนาคารออนไลน์) ควรทำคงเป็นการเปิดใช้งาน Forward Secrecy, ลดความสำคัญของการใช้ RC4 ลง, ผลักดันให้มีการใช้งาน TLSv1.2 มากขึ้น ซึ่งส่วนของ RC4 นั้น จากสถิติของ CloudFlare พบว่ายังคงมีไคลเอนต์อีกเพียงประมาณ 0.0009% เท่านั้นที่ไม่รองรับกระบวนการเข้ารหัสที่ไม่ใช่ RC4 ครับ และไคลเอนต์ส่วนใหญ่ (ยกเว้น IE6 บน Windows XP) ก็รองรับการใช้งาน TLS 1.0 ขึ้นไปหมดแล้วด้วยครับ

ข้อมูลอ้างอิง

Blognone Jobs Premium