ในรอบปีที่ผ่านมาเราพบกับปัญหาความปลอดภัย และช่องโหว่ของระบบเข้ารหัสแบบ 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 ขึ้นไปหมดแล้วด้วยครับ
ข้อมูลอ้างอิง
Comments
ผมนี่อึ้งจนน้ำตาจะไหลเลยครับ แต่เป็น TSLv1.0, SSLv3 ซะงั้น
เหมือน uob จะเปลี่ยนเวปแล้วนะครับเป็น https://pib.uobthailand.com/PIBLogin/appmanager/Login/Public?lang=th_TH
ขอลบ ผิดพลาดทางเทคนิคครับ
น่าจะเช็ค URL ของหน้าที่ทำงานจริง(เช่นตอนโอนเงิน) ด้วยนะครับ หน้าล็อกอินอย่างเดียวจะพอหรอ เพราะบางธนาคารใช้คนละdomain name ตอนทำรายการ certificate ก็เป็นคนละตัวกัน
Ooh
เจอธนาคารไหนแยก domain name ก็แจ้งมาได้เลยครับ
ธนาคารสีเขียวๆนึกชื่อไม่ออก
Ooh
บอกแบบนี้คงไม่มีใครตามไปดูให้นะครับ
lewcpe.com, @wasonliw
ขอบคุณสำหรับบทความครับ
แต่ธนาคารออมสินดูยอดเงินได้อย่างเดียวทำธุรกรรมไม่ได้
โอนเงินได้ไงครับ โอนเข้าบัญชีอื่นของตัวเอง orz
แต่นั่นมันเมื่อปีสองปีก่อนครับ ตอนนี้โอนเข้าบัญชีคนอื่น หรือโอนข้ามธนาคารได้แล้ว จ่ายเงิน เติมเงิน ซื้อสลากได้แล้วนะครับ
ที่ไหนเจาะผ่านบ้างครับ อิอิ
รายงาน SSL นี้ ผมว่าจุดมุ่งหมายของคนเขียนไม่ได้มุ่งหมายถึงการเจาะระบบ แต่หมายถึงการดักฟังข้อมูลที่ส่ง-รับระหว่างเครื่องแม่ข่ายและลูกข่ายเป็นสำคัญครับ
ดีคริปชั่น ได้อ่ะน่า
ไม่เกี่ยวกับ SSL .... KrungsriAsset ยังคงใช้พาสเวิร์ดเป็นตัวเลข 4 ตัว..... ใช้ชีวิตอย่างพะวง แม้จะมี SSL ก็ตาม.
Warun.in.th
ตรง SSLv3 บางธนาคารปิดแล้วมีอัศเจรีย์บางธนาคารไม่มี มีความหมายไหมครับ?
ผมลืมใส่เฉยๆ ครับ แหะๆ
เมื่อไรจะมี 2 step
เท่าที่รู้ตอนนี้มี UOB, BBL และ TMB ครับ ลองถามๆ ดู
+2048
kbank พอมี OTP ตอนทำธุรกรรมอยู่ครับ ยังถือว่าโอเค
HSBC แจก FOB ด้วย แต่ขายกิจการส่วนรายย่อยทิ้งไปแล้ว :P
สนใจ AccessMatrix™ ป่าวครัช อิอิ
ตอนที่มีข่าวเกี่ยวกับความปลอดภัยและมีเครื่องมือทดสอบ ส่วนตัวจะตรวจสอบระบบของธนาคารที่ตัวเองใช้งานอยู่ก่อนเลย ถ้าเจอก็แจ้งธนาคาร อย่างตอน Heartbleed นี่ ธนาคารออมสินไม่ผ่านระบบทดสอบเลยนะ พอแจ้งไปแล้วก็แก้ไขได้รวดเร็วดี
ป.ล. รายชื่อธนาคารในประเทศไทย ใช้ของธนาคารแห่งประเทศไทยจะน่าเชื่อถือว่านะครับ
ขอบพระคุณครับ
ขอความรู้หน่อยครับ
เวลาจ่ายเงินผ่านบัตรแบบ online หลายๆธนาคาร ตอนจะยืนยันการจ่ายกับขอ OTP มันเหมือนจะเป็นหน้าของธนาคารกรุงเทพ ทำไม่ถึงเป็นอย่างนั้นครับ
เข้าใจว่าหมายถึง vbv ที่เป็นของธนาคารเจ้าของบัตรครับ
ขอบคุณครับ
ที่เคยลองก็มีแต่วีซ่า ซะด้วย
ด้วยความหวังดีครับ
การเอาข้อมูลช่องโหว่มาเปิดเผยต่อสาธารณะ ถือว่ามีความเสี่ยงต่อการโดนฟ้องร้องได้นะครับ
การจะตรวจสอบแบบนี้ ตามหลักแล้วเจ้าของต้องอนุญาตเสียก่อน นั่นหมายความว่า เจ้าของต้องเป็นผู้ว่าจ้าง หรือผู้ตรวจสอบจะต้องทำการขออนุญาตกับเจ้าของให้เรียบร้อยและมีหลักฐานอย่างชัดเจนครับ
ปล ผมไม่ได้อ่าน comment ข้างบน อาจจะมีคนทักเรื่องนี้ก่อนแล้วก็ได้
ปล2 ข้อมูลชุดนี้มีประโยชน์มากครับ
ถ้ามีการฟ้องร้องด้วยข้อมูลที่เปิดเป็นสาธารณะ (ใครเข้าถึงก็ได้) แบบนี้คงเป็นการตีความกฎหมายที่กว้างอย่างประหลาดล่ะครับ รายงานแบบนี้ไม่ได้ใช้ช่องโหว่ที่ต้องตรวจสอบอย่างเจาะจงอย่างเช่น XSS หรือ Code Injection อะไร ข้อมูลที่ได้มาจาก การ handshake ปกติจาก client ใดๆ
ถ้าตีความว่ารายงานแบบนี้ถูกฟ้องได้ เว็บอย่าง SSLLabs คงอยู่ไม่ได้ล่ะครับ เพราะตรวจแทบทั้งโลกเลย
lewcpe.com, @wasonliw
ผมเห็นแต่ข้อมูลการใช้งาน ยังไม่เห็นข้อมูลช่องโหว่งตรงไหน
ข้อมูลของทุกธนาคาร เป็นข้อมูลสาธารณะครับ ทุกคนที่เล่นเน็ท สามารถเข้าถึง และดูได้ครับ