Recent

4/recentposts

Thứ Hai, 20 tháng 5, 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 nhận xét:

Đăng nhận xét

Search This Blog

Được tạo bởi Blogger.

Unordered List