Recent

4/recentposts

Monday 20 May 2019

NHỮNG THÁCH THỨC BẢO MẬT KHI TRIỂN KHAI ỨNG DỤNG WEB/DI ĐỘNG


Nhớ lại năm 2002, khi trò chuyện với CTO vùng của Manulife Asia, anh này chia sẻ, chỉ trong một đêm anh đã bạc trắng tóc vì lo lắng. Anh nói, Manulife HongKong mới vừa đưa vào sử dụng phiên bản mới của hệ thống ứng dụng Agency Portal và Customer Portal, hệ thống này cho phép Đại lý và khách hàng có thêm nhiều tính năng giao dịch trực truyến với công ty. Điều này đồng nghĩa với việc hệ thống bảo mật của công ty cũng phải đảm bảo để thông tin, dữ liệu của công ty và khách hàng không bị tấn công hoặc bị rò rỉ ra ngoài. Mặc dù anh CTO này chuẩn bị rất kỹ trước khi đưa các ứng dụng này vào thực tế, tuy nhiên vẫn có khả năng vẫn còn lỗ hổng bảo mật mà hacker có thể lợi dụng để tấn công. Do đó vấn đề bảo mật cho các ứng dụng chạy trên internet rất quan trọng cho bất kỳ doanh nghiệp nào.
Trong cuộc chạy đua số hóa, các doanh nghiệp ở Viêt Nam đang đẩy mạnh các ứng dụng web và di động để nâng cao dịch vụ hỗ trợ bán hàng và dịch vụ khách hàng. Do mong muốn đưa các ứng dụng này vào thực tế kinh doanh càng nhanh càng tốt nên việc chuẩn bị đầy đủ các quy trình kiểm soát bảo mật thường xảy ra thiếu sót.
Thứ nhất, đa số các thiết bị bảo mật của các doanh nghiệp hiện tại đã cũ, không còn phù hợp với tình hình an ninh mạng hiện tại, trừ khi doanh nghiệp vừa mới đầu tư mua mới các thiết bị này. Chẳng hạn như thiết bị tường lửa truyền thống vẫn còn được sử dụng, trong khi nó không thể đảm bảo an toàn cho hệ thống của công ty bạn như các thiết bị tường lửa thế hệ mới (NGFW).
Thứ hai, việc trang bị thiết bị tường lửa cho ứng dụng web (WAF) cũng chưa được chú trọng và đầy đủ. Hoặc đôi khi quá tự tin vào hệ thống tường lửa thế hệ mới (NGFW) vừa được trang bị nên không chú ý rằng NGFW không đủ chức năng để bảo vệ các ứng dụng trên Internet. Hơn nữa việc đầu tư các thiết bị tường lửa cũng khá đắt nên không phải công ty nào ban giám đốc cũng sẵn sàng đầu tư để mua các thiết bị này.
Thứ ba, các ứng dụng web/di động được đưa vào sử dụng quá nhanh chóng nên chưa được đầu tư kiểm tra PENTEST đầy đủ, thường là không được kiểm tra PENTEST. Nếu có thì chỉ là tự dùng một số công cụ/phần mềm để kiểm tra lỗ hổng bảo mật, chưa thuê công ty bảo mật chuyên nghiệp để thực hiện PENTEST, có thể vì chi phí cho PENTEST khá cao hoặc đội ngũ bảo mật của công ty không chú trọng hoặc không biết rõ về yêu cầu PENTEST.
Thứ tư, đội ngũ CNTT thường thiếu người chuyên trách về bảo mật và thường là nhân viên quản trị mạng hoặc quản trị hệ thống kiêm nhiệm công việc này do thiếu ngân sách cho nhân lực. Do đó việc có nhân viên chuyên trách về bảo mật cho ứng dụng web/di động là điều khá xa xỉ. Hơn nữa, đội ngũ lập trình ít được đào tạo về bảo mật trong lập trình nên ít khi họ chú ý đến vấn đề bảo mật trong quá trình lập trình, họ chỉ chú trong sao cho công việc hoàn thành đúng tiến độ và chạy đúng theo yêu cầu của người sử dụng. Ngoài ra, đội ngũ chuyên trách về kiến trúc và thiết kế hệ thống cũng bị thiếu, thường thì cũng kiêm nhiệm.
Thứ năm, Người sử dụng cuối không được đào tạo bài bản hoặc không được cảnh báo về nguy cơ bảo mật nên họ rất dễ mắc sai lầm khi giao dịch trên Internet nên họ chính là lỗ hổng bảo mật lớn nhất đối với vấn đề an ninh mạng của công ty.
Thứ sáu, chính sách hoặc quy trình bảo mật chưa được xây dựng đầy đủ nên không ngăn chặn được các nguy cơ về an ninh mạng hoặc nhân viên thực thi sai quy trình bảo mật hoặc đội ngũ giám sát bảo mật không đủ mạnh để kiểm soát các vấn đề an ninh mạng.
Do đó để giải mã được các khó khăn và thách thức trên, chúng ta cần kiểm tra và thực hiện các bước căn bản sau trước khi đưa ứng dụng web/di động vào hoạt động chính thức:
1.     Trình bày rõ cho ban giám đốc về các nguy cơ an ninh mạng của công ty, tình trạng hiện tại của hệ thống và giải pháp khắc phục, ngăn ngừa các nguy cơ đó nhằm lên kế hoạch và xin ngân sách đầu tư cho an ninh và bảo mật cho toàn hệ thống của công ty.
2.     Nên thay các thiết bị tường lửa truyền thống bằng thiết bị tường lửa thế hệ mới (NGFW) có hệ thống ngăn ngừa/phát hiện xâm nhập (IPS/IDS) vì thiết bị tường lửa truyền thống chỉ có thể đóng cổng không cần thiết, áp dụng quy tắc định tuyến cho các gói tin và chống lại những tấn công từ chối dịch vụ, nhưng không thể phát hiện những gì bên trong gói tin để phát hiện phần mềm độc hại, xác định các hoạt động của hacker hoặc giúp quản lý người dùng cuối đang làm những gì trên Internet. Về cơ bản, một khi một cổng được mở (như cổng 80 cho lưu thông Internet) thì bất cứ gói tin nào cũng có thể đi qua thông qua sự ngụy trang như lưu thông hợp pháp. Thiết bị tường lửa truyền thống chỉ cung cấp sự bảo vệ chủ yếu tại lớp 3 (tầng mạng) và lớp 4 (tầng vận chuyển) của mô hình OSI. Trong khi đó thiết bị tường lửa thế hệ mới còn có thể dựa trên việc xác thực người dùng (User-ID), xác thực dựa trên ứng dụng (App-ID) và xác thực thông qua nội dung (Content-ID) giúp cho người quản trị dễ dàng nhận dạng các ứng dụng, nội dung bên trong luồng dữ liệu cùng với các mức độ nguy hiểm từ đó có thể ngăn chặn kịp thời, có khả năng xác định rõ các mối nguy cơ đe dọa xuất phát từ người sử dụng nào. Để đảm bảo an toàn, cần có ít nhất hai lớp tường lửa với hai thương hiệu khác nhau (ví dụ 1 lớp tường lửa Palo Alto và lớp tường lửa khác là Checkpoint) nhằm gây khó khăn cho hacker nếu 1 lớp tường lửa bị tấn công.
3.     Tuy nhiên, 2 lớp tường lửa thế hệ mới này chưa đủ bởi vì các tường lửa mạng và các hệ thống ngăn ngừa/phát hiện xâm nhập (IPS/IDS) không cung cấp đầy đủ bảo vệ cho các ứng dụng web/di động trên Internet, các ứng dụng kinh doanh nội bộ quan trọng và các dịch vụ Web. Bức tường lửa ứng dụng web (WAF) là một thiết bị an ninh có nhiệm vụ chính là bảo vệ các web portal và ứng dụng web bằng cách kiểm tra ngữ nghĩa XML/ SOAP/REST dựa trên ứng dụng của các luồng lưu thông trên mạng và cũng kiểm tra HTTP/HTTPS cho các cuộc tấn công điển hình ở lớp 7 (tầng ứng dụng) bao gồm OWASP 10 lỗ hổng hàng đầu - chẳng hạn như SQL Injections, Buffer Overflow, Cross-Site Scripting (XSS), File Inclusion, Cookie Poisoning, Schema Poisoning, Defacements, v.v.v.. WAF có khả năng thực thi các chính sách bảo mật dựa trên các dấu hiệu tấn công, các giao thức tiêu chuẩn và các lưu lượng truy cập ứng dụng web bất thường. Đây là điều mà các tường lửa mạng khác không làm được. Xem sự khác nhau WAF, IPS/IDS và NGFW đối với bảo mật ứng dụng web/di động ở hình 1 bên dưới
4.     Chúng ta đã có 2 lớp tường lửa thế hệ mới và WAF, nhưng vẫn chưa đủ. Cần phải kiểm tra lỗ hổng an ninh của toàn bộ hệ thống mạng, máy chủ, ứng dụng web/di động, và chính sách bảo mật, v.v.v…. Do đó, cần phải tiến hành PENTEST hộp đen (black-box: người kiểm tra biết rất ít hoặc không có thông tin gì về hệ thống mạng trước khi kiểm tra) hoặc hộp trắng (white-box: người kiểm tra được công bố thông tin đầy đủ về hệ thống mạng trước khi thử nghiệm thâm nhập, bao gồm địa chỉ IP, mã nguồn, các giao thức mạng và sơ đồ mạng) hoặc hộp xám (gray-box: người kiểm tra sẽ được cung cấp chi tiết từng phần về cơ sở hạ tầng mạng). PENTEST hộp đen sẽ kích thích các kết quả chính xác hơn, vì người kiểm tra không có thông tin về mạng của bạn nên sẽ cung cấp cho bạn những dấu hiệu thực tế nhất của các mối đe dọa tiềm năng vào mạng của bạn. Tuy nhiên, PENTEST hộp đen không thể quét mạng toàn bộ mạng của bạn để tìm triệt để các lỗ hổng an ninh như là hộp trắng. Do đó, nếu là tôi, tôi sẽ chọn PENTEST hộp trắng và hộp đen cho doanh nghiệp của mình. Chúng ta nên thuê công ty bên ngoài để thực hiện PENTEST ít nhất một năm một lần hoặc khi có thay đổi lớn trong có sở hạ tầng bởi vì các công ty bên ngoài có thể thực hiện một số kiểm tra đòi hỏi kiến ​​thức sâu rộng trên nền tảng mà đội ngũ CNTT của bạn có thể không biết rõ, hoặc những kiểm tra mà đội ngũ CNTT của bạn không có khả năng thực hiện vì số lý do khác. Trước tiên, thuê công ty bên ngoài sẽ tránh được việc bỏ lỡ các lỗ hổng bảo mật tiềm tàng do bạn quá quen và quá biết rõ chi tiết về hệ thống mạng hoặc ứng dụng của mình nên chủ quan. Thứ hai, thuê công ty bên ngoài giúp bạn có thể nhận được một góc độ khác nhau từ một loạt PENTEST, họ sẽ cung cấp cho bạn các kỹ năng và phương pháp tiếp cận riêng của họ vào việc PENTEST cho bạn, giúp bạn đánh giá lại các chính sách bảo mật. Nói chung, với nhiều cách nhìn nhận và kiểm tra khác nhau trên hệ thống của bạn, bạn có thể tìm thấy nhiều vấn đề bảo mật tiềm tàng hơn, thay vì chỉ có nhìn nhận duy nhất từ đội ngũ của bạn. Hơn nữa, bạn không nên chỉ dựa vào PENTEST từ công ty bên ngoài, mà nên tự kiểm tra hệ thống của mình ít nhất 1 tháng 1 lần để phát hiện ngay các lỗ hổng bảo mật để có giải pháp khắc phục tức thì. Các công cụ kiểm tra sau có thể giúp đội ngũ CNTT phân tích tổng hợp và báo cáo về lỗ hổng bảo mật như INSIGHT Core từ Core Security và Nexpose/Metasploit Pro từ Rapid 7, UltimateLAMP, LAMPSecurity, Damn Vulnerable Web Application (DVWA), OWASP WebGoat, và Mutillidae từ Adrian Crenshaw. Để kiểm tra các ứng dụng di động, có thể sử dụng OWASP iGoat, GoatDroid và ExploitMe Mobile Labs cho iPhone và Android.
5.     Đào tạo an ninh mạng và hệ thống là việc không thể thiếu đội ngũ CNTT của bạn, bao gồm đào tạo nội bộ và gửi bên ngoài thậm chí đào tạo ở nước ngoài. Việc đào tạo này sẽ giúp doanh nghiệp tránh được phần nào những lỗ hổng của các hệ điều hành; lối trong kiến trúc, cấu hình và thiết kế mạng; lối trong cấu hình, thiết kế và lập trình ứng dụng; hoặc rủi ro từ hành vi của người dùng cuối, từ chính sách bảo mật không đủ hoặc không tốt. Hơn nữa việc đào tạo những kiến thức căn bản về bảo mật cho toàn bộ người sử dụng cũng là vấn đề cấp thiết, vì họ là những người thực hiện gia dịch chính trên Internet. Có kiến thức căn bản này sẽ giúp họ tránh được những rủi ro có thể xảy ra khi sử dụng ứng dụng trên Internet.
6.     Việc đánh giá rủi ro hệ thống CNTT và chính sách bảo mật phải được tiến hành bởi CISO ít nhất 6 tháng 1 lần, và phải được báo cáo cụ thể cho ban giám đốc của công ty hoặc bộ phận Quản lý rủi ro của vùng. Sau đó phải có kế hoạch giảm thiểu nhưng rủi ro đó.
Ngày nay, các ứng dụng web và di động ngày càng phổ biến nên xu hướng tấn công vào các ứng dụng này ngày càng nhiều. Các kỹ thuật tấn công được sử dụng chủ yếu là SQL Injections, Buffer Overflow, Cross-Site Scripting (XSS). Các lỗ hổng trong ứng dụng web và di động chủ yếu xảy ra do người lập trình không kiểm tra kỹ các lỗ hổng bảo mật cho ứng dụng web/di động. Việc viết đoạn mã để không bị mắc lỗi bảo mật nhất thường khó thực hiện, bởi các lý do sau: i) các nhóm trình thường không có hoặc thiếu đội ngũ chuyên trách về việc kiểm tra và sửa lỗi bảo mật mã nguồn ứng dụng; ii) đôi khi áp lực phải hoàn thành ứng dụng web hoặc di dộng trong thời gian ngắn khiến cho các ứng dụng web/di động được đưa vào vận hành mà không qua các khâu kiểm thử; iii) việc dùng các phầm mềm miễn phí kiểm tra lỗi ứng dụng web/di động cũng không tìm ra hết các lỗi. Do vậy, việc bảo mật một ứng dụng web và di động đó là một quá trình phòng thủ theo chiều sâu bao gồm các khâu phát triển, vận hành, xây dựng cơ sở hạ tầng bảo vệ tốt và có một đội ngũ chuyên trách vấn đề bảo mật riêng cho web và di động. Và điều quan trọng cuối cùng là phải thực hiện PENTEST cả trước và sau khi đưa ứng dụng web và di động vào sử dụng.


  Phan Hoài Nam – CIO Vietinbank Aviva

Share:

0 comments:

Post a Comment

Search This Blog

Blog Archive

Unordered List