Thử nghiệm bảo mật của web và ứng dụng của một số ngân hàng tại VN
mrpaint
4 năm trướcBình luận: 180Lượt xem: 66.654
Thử nghiệm bảo mật của web và ứng dụng của một số ngân hàng tại VN
Nhân dịp vấn đề an toàn giao dịch ngân hàng trực tuyến đang nóng, mình làm một vài bài thử nghiệm với các dịch vụ của 5 ngân hàng lớn trong nước: BIDV, Vietcombank, ACB, Techcombank, Sacombank và 2 ngân hàng nước ngoài là Citibank và HSBC. Mình sẽ chạy một số bài test về bảo mật trên cả web lẫn ứng dụng di động chính chủ do các ngân hàng này phát hành, cũng như kiểm tra các cách mà họ mã hóa dữ liệu và bảo vệ đường truyền thông tin giữa người dùng với máy chủ.

Các bài test được tiến hành bao gồm
  1. Trang web
    • TLS: phải bật
    • SSL Server Test: phải từ A trở lên
    • HPKP: phải sử dụng
    • hoặc phải mã hóa tên và mật khẩu bằng Javascript trước khi đăng nhập
  2. Ứng dụng di động: lúc đầu mình tính kiểm tra riêng Android và iOS nhưng thực tế thấy ứng dụng mỗi ngân hàng ở hai nền tảng khá giống nhau nên gom lại chung cho gọn
Giải thích một số khái niệm cơ bản:

Mã hóa: biến một dữ liệu bình thường, ví dụ duyluandethuong, thành một chuỗi các kí tự, ví dụ bfruifJfrieYFGUR13fnyfi. Có kiểu hai chiều (giải mã được) và một chiều (không giải mã được) thường dùng nhất là trong quá trình đăng nhập nhằm kiểm tra password.

TLS (Transport Layer Security): là người kế nhiệm cho giao thức bảo mật SSL trước đây nhưng đôi khi cũng được gọi chung là SSL hoặc SSL / TLS. Đây là giao thức dùng để mã hóa dữ liệu trong quá trình truyền thông tin. Mục đích của TLS là nhằm đảm bảo an toàn cho dữ liệu, theo lý thuyết thì không có bên thứ ba nào có thể lấy trộm hay chỉnh sửa dữ liệu khi nó đang được gửi đi. Nếu có lấy được thì nó cũng chỉ là dữ liệu đang được mã hóa và không thể sử dụng được. TLS đang được triển khai trong rất nhiều trang web, trình gửi file, email, ứng dụng chat, gọi thoại...

Man In The Middle (người trung gian): là dạng tấn công mà tin tặc sẽ đứng giữa hai điểm gửi nhận dữ liệu và bí mật chuyển các dữ liệu đó đi đường khác trong nỗ lực đánh cắp thông tin. Tin tặc cũng có thể nhận gói dữ liệu, chỉnh sửa lại theo kiểu có hại trước khi đưa dữ liệu về cho điểm nhận.

Giới thiệu về các bài kiểm tra

TLS
cần có chứng chỉ, trước đây còn có rào cản về chi phí để duy trì chứng chỉ đó (giá tham khảo trên trang web GoDaddy vào khoảng 70$ đến vài trăm đô tùy loại, check vào tháng 7/2016). Tuy nhiên gần đây đã có chứng chỉ miễn phí từ các dịch vụ ví dụ như Let's Encrypt nên không còn lý do gì nữa để không làm việc này. TLS là bước cơ bản nhất để bảo mật thông tin giữa ngân hàng và người sử dụng.

SSL Server Test là bài kiểm tra máy chủ web bao gồm phần mềm, cấu hình TLS và chứng chỉ. Bài kiểm tra này sẽ cho điểm trang web, tối đa là điểm A. Điểm càng cao càng tốt. Mình sử dụng dịch vụ test miễn phí của trang Qualys SSL Labs.

HPKP (Public Key Pinning Extension for HTTP) là một phần mở rộng cho HTTP cho phép các trang web bảo vệ mình khỏi các cuộc tấn công dạng MITM (man in the middle / người trung gian). Cách tấn công này nôm na là kẻ tấn công can thiệp vào giữa kết nối của người dùng và ngân hàng sau đó bí mật ngăn chặn và thay đổi thông tin qua lại giữa hai bên. HPKP vẫn còn khá mới và chưa được hỗ trợ rộng khắp, người dùng cần sử dụng phiên bản khá mới của các trình duyệt để được bảo vệ (ví dụ: Chrome 46, Firefox 35 trở lên).

Certificate/Public Key Pinning có ý tưởng gần giống HPKP nhưng thay vì thực hiện kiểm tra ở trình duyệt thì mỗi ứng dụng tự kiểm tra khi kết nối với máy chủ. Lợi điểm của việc này là không phụ thuộc nhiều vào app / web ở phía người dùng. Do ứng dụng được phát hành bởi chính ngân hàng nên đội phát triển có thể nắm rõ máy chủ ngân hàng sử dụng chứng chỉ gì, phát hành bởi đơn vị nào, từ đó thực hiện Pinning đảm bảo thông tin của người sử dụng không bị lộ với bên thứ ba.

Trong trường hợp không sử dụng Pinning thì ứng dụng cần phải mã hóa tất cả các thông tin nhạy cảm như tên, mật khẩu đăng nhập theo cả hai hướng (gửi lên / nhận về) để bảo vệ người sử dụng.

Kết quả: Mỗi bước kiểm tra có thể có kết quả là
  • PASS: đạt, yêu
  • BAD: yêu cầu nên có mà không sử dụng
  • FAIL: yêu cầu phải có mà không sử dụng
Kết quả kiểm tra

Trang web
Web.png

Ứng dụng di động
App.png
Ghi chú: không thử mã hóa vì đã áp dụng pinning, không thấy được các request

Kết luận

Như vậy là chỉ có 1 trang web qua được bài kiểm tra (Sacombank) và cả 7 trang đều không xài HPKP. Như đã nói ở trên, đây là chức năng khá mới và đa số người dùng cũng chưa sử dụng trình duyệt phiên bản đủ mới để hưởng lợi từ việc này. Trên thế giới cũng còn nhiều trang web tài chính chưa bắt đầu sử dụng HPKP (ví dụ như PayPal, HSBC US).

Về ứng dụng di động, 2 ứng dụng không qua được bài kiểm tra (ACB, Techcombank) và 1 ứng dụng duy nhất có sử dụng kỹ thuật Pinning là BIDV. Ứng dụng HSBC và Citibank là do mình rảnh quá test thêm, anh em tham khảo chơi.

Một số ghi chú thêm

Trang web của ACB bị điểm B vì nhiều lý do tuy nhiên nặng nhất là do cấu hình chưa an toàn (chi tiết xem thêm trang tổng hợp về ACB tại SSL Labs).
ACB_web.png

Thông báo lỗi của app BIDV và HSBC khi bị tấn công​

Thong_bao_loi.jpg


Kết luận chung cuộc
  1. Sacombank: chưa áp dụng các công nghệ mới nhất nhưng vẫn an toàn
  2. BIDV, Vietcombank: ứng dụng của 2 ngân hàng này an toàn hơn web của họ
  3. ACB, Techcombank: về chót. Nên hạn chế sử dụng nếu đang kết nối qua mạng công cộng (wifi quán cà phê, wifi không bảo mật).
Bài này đã được thay đổi do lỗi khi chạy thử web của BIDV dẫn đến thay đổi thứ tự bảng tổng kết cuối cùng (kết quả cũ là BIDV số 1, kết quả cập nhật là Sacombank vượt lên!).

Tham khảo thêm: Blog của mình, ảnh minh họa: Gemalto
bao_mat_ngan_hang_tinhte.vn.jpg
Wow hay quá, lần đầu em mới biết mấy cái này, vậy mà xưa giờ cứ ngồi cafe onlinebanking Goài! Cám ơn mấy anh

(mình vô link nguồn đọc thấy nhiều thông tin hơn bài ở đây và có vẻ dễ hiểu hơn 1 xíu, anh em nào chưa thấy hiểu thì có thể tham khảo thử nhé)
Cái chỗ SSL của BIDV không kiểm tra đc vậy nên xếp loại ntn nhỉ ?
Kiểm tra giùm ứng dụng của Agribank và Vietinbank cái ad!!!
@baggio021084 @mrpaint haahah 2 ngân hàng nhìu ng xài mà
@baggio021084 chuẩn rồi, 2 cái này nhiều ng dùng thì ko thấy có
@sonlazio TPBank nữa anh, lần trước chống được tin tặc nữa mà 😁
bạn có thể test thử SHB được không
ACB và HSBC Việt Nam là nghe có vẻ hiện đại và chuyên nghiệp mà kém nhỉ? Mình phải cẩn thận mới được.
P/s: Đợt này Tinh Tế làm xấu mặt một vài ngân hàng rồi!
@Stone Breaker Xấu mặt là sao bác
Những Thông tin này cực kỳ hữu ích để người dùng biết, và bản thân lãnh đạo ngân hàng nếu đọc được cũng biết để khắc phục. Vì có khi họ được báo cáo là A nhưng thực tế là C mà họ không biết
@Airblade14 Đợt này phòng it có vẻ bận rộn ah
@Airblade14 khách quan, công khai minh bạch có j mà xấu mặt, nếu ngân hàng thấy dc thì chỉnh sửa thôi.
bài này quá hay mà.
@Stone Breaker kinh thặc 😁
Pinning certificate là cái nhãm nhí nhất, cũng đi test, man in the middle chỉ cần SSL là chống được rồi, mã hoá Username với password với SSL làm gì, nếu đã không trust được máy tính của mình thì có mã hoá cũng như không, bài viết không có chút giá trị lại gây hoang mang dư luận.
@iloveIphone2009 Xưa mình hay viết bài lắm (trên https://saylinux.wordpress.com ), dạo này không có thời gian, với tự cảm thấy trình độ mình có hạn viết người đọc khó hiểu, nên bớt viết bài rồi. Xưa rảnh rỗi cũng nghiên cứu được vài lỗi bảo mật nho nhỏ của viettel, fpt, mobifone (đám mobifone đền mình có 300K cho lỗi đó mình không thèm lấy) ở nước ngoài chắc ít nhất là cả ngàn đô rồi.
@Duy Luân Vậy thì số bạn quá nhọ thôi chứ sao bác... Đã dính malware hay keylog hay đại loại 1 trong 5 loại virut ns chung thì bác xác định thôi nếu biết thì cài lại win còn k biết thì ìnfomation là của ng ta hết 😃
@iloveIphone2009 Bạn nên phân biệt việc che giấu thông tin với việc phát biểu vô trách nhiệm, không nghĩ đến hậu quả trong khi bản thân chưa hiểu rõ ràng sự việc. Đừng xúc phạm người khác bằng sự mù quáng của mình!
@BabyGenius Đó là tôi nói chung...
Tôi và ông ko rãnh để vớ vẫn nữa,trc khi nói tôi xúc phạm,đọc lại xem thằng cha góp ý thế nào...
Mù cái dek gì...giỏi sao ko làm,người ta làm thì nhận xét kiểu đó...Ở ngoài thì nên cẩn thận chút...Dù mình giỏi hay mình đúng thì cũng phải nói cho đàng hoàng...
Stop nhe ba đía!
Đang sài Techcombank và ACB, nhọ quá
Bác pentest cái agribank ấy, cái đó mới đầy tiền
Cái quan trọng nhất là phải cso số điện thoại của mình để lấy code mỗi lần giao dịch, cái này quan trọng nhất. Mấy cái khác không quan trọng lắm.
@bakabon Với lỗi bảo mật không bao giờ fixed (SS7) thì gửi mã xác thực qua mạng di động chưa bao giờ là an toàn.
@bakabon Dính đến tiền thì không gì là không quan trọng cả bạn à, nếu không quan trọng thì ngân hàng chẳng cần bảo mật làm gì. Nếu không sợ mất tiền bạn thử share username & pass xem
@bakabon Đó là bảo mật chính thống. Qua các step mà ngân hàng quản lý được ! Còn đã hack thì nó thay sdt nó vào chứ nó để số bác à :p
@sonlazio các có cách chiếm đoạt số điện thoại bằng 1 số lỗ hổng của nhà mạng!
p/s: một dân tổng đài chia sẻ
Mấy cái kiểm tra này hình như chỉ là cơ bản thôi.
View attachment 3354226

KLQ nhưng bác nào biết giúp em cái.
Hôm bữa tự dưng có 1 giao dịch lạ như hình.
Em gọi lên ngân hàng họ nó ko tra được.
Thank 20160725_120850.jpg
@thangemar Đúng là trc em có mua hộ bạn em, nhưng lâu lắm rồi. để e kiểm tra lại,cảm ơn bác nhiều
@spsp cái này của bác kết nối với paypal mua gì hoặc chạy quảng cáo
@spsp Cái này nhiều người đã report trên mạng rồi bác. Bác contact google play support team để trace xem nhé, NH ko làm gì đc đâu.
https://support.google.com/googleplay/answer/6179357?ref_topic=3364672
@spsp chắc bác mua app hay vật dụng trong game rồi.
Hay và hữu ích quá. Mod kiểm tra giúp mình TienPhongBank với được không? 😁 Hi vọng bạn vẫn đang rảnh. Cảm ơn bạn :D
Không liên quan đến bảo mật, nhưng xài VCB thấy họ rất quan tâm đến trải nghiệm người dùng, khi gõ mã giao dịch thì phần kí tự chỉ gồm những phím có thể gõ bằng tay trái, tay trái giữ nguyên, tay phải đặt bên numpad là ko cần nhìn bàn phím vẫn gõ dc. dù 1 điểm rất nhỏ (hầu như ko ai nhận ra) nhưng cho thấy họ quan tâm đến trải nghiệm người dùng. rất đáng khen.
vậy thì để bảo mật hơn thì phải như thế nào vậy bác @mrpaint ???
@vinhphucng25 Ngân hàng nào thấy tin tưởng và an toàn thì gửi tiền vào, nhưng ngân hàng còn lại gửi ít đủ để chi tiêu thôi.
Đọc đc gói tin nhưng không biết format thì cũng ko làm đc gì. Chỉ trừ khi không format gói tin thôi.
Sax BIDV trùm bị lỗi web, nhiều khi điên vs nó vì chuyển khoản ko đc, hóa ra vì nó bảo mật mạnh nhất ak 😆)
Cảm ơn bài viết hay của chủ topic.
  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2020 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019