TP CHÍ KHOA HỌC ĐẠI HỌC ĐÀ LẠT Tp 7, S 2, 2017 231246 231
MỘT SỐ VẤN ĐỀ AN TOÀN CHO CÁC ỨNG DỤNG
TRÊN NỀN WEB
Nguyn S Hòaa, Li Th Nhungb, Đặng Thanh Hic*
aKhoa Công ngh Thông tin và Truyn thông, Tờng Đại hc Khoa hc T nhiên,
Đại hc Quc gia Hà Ni, Hà Ni, Vit Nam
bKhoa Khoa học Cơ bản, Trường Đại hc Điều dưỡng Nam Định, Nam Định, Vit Nam
cKhoa Công ngh Thông tin, Trường Đại hc Đà Lạt, Lâm Đồng, Vit Nam
Lch s bài báo
Nhận ngày 10 tháng 03 năm 2017 | Chỉnh sửa ngày 04 tháng 05 năm 2017
Chp nhận đăng ngày 19 tháng 05 năm 2017
Tóm tắt
Internet đã đang phát triển cùng mnh m, kết nối hơn 30% dân s thế gii, với hơn
2.2 t người dùng. Lợi ích Internet đem lại cũng đi kèm với các rủi ro: Năm 2015 toàn
thế gii thit hại hơn 445 tỷ USD, Vit nam thit hi khong 8700 t VNĐ do các sự c v
tn công mng; 5226 trang web của các quan doanh nghip ti Vit Nam b tn công.
Nguyên nhân chính đó là sự tiến b ca k tn công, s ra đời ca nhng công ngh mi, và
cũng s thiết lp ca nhng h thống ngày nay cũng ngày càng phức tp khó qun
hết ri ro. vy, vic nghiên cứu đánh giá những nguy tính rủi ro cao đối vi các ng
dng da trên nn web là nhu cu cp thiết đối với các cơ quan, t chức đang triển khai ng
dng web trên Internet. Trong bài báo y, chúng tôi s phân tích nhng l hng ph biến
nht ca các ng dng trên nn web và khuyến ngh các phương pháp để kim tra phát hin.
T khóa: An toàn ng dng web; Bo mt; ng dng web.
1. GII THIU
Internet đã và đang phát triển vô cùng mnh m, kết nối hơn 30% dân số thế gii,
với hơn 2.2 t người dùng. Vic kinh doanh truyn thng dần được thay thế bng các giao
dịch đin t hay thương mại đin t (TMĐT) mà phần ln da vào các ng dng trên nn
web. Theo báo cáo năm 2015 của B Công thương, TMĐT ca Việt Nam trong năm 2015
đã tăng 37% so với năm 2014, đạt khong 4.07 t USD, chiếm khong 2.8% tng mc
bán l hàng hóa doanh thu dch v tiêu dùng c nước. Theo báo cáo ca eMarketer,
doanh thu TMĐT bán l ca M năm 2015 ước đạt khong 355 t USD, chiếm khong
7.4% tng doanh thu bán l ca nước này. Doanh thu bán l trc tuyến TMĐT của Trung
* Tác gi liên h: Email: haidt@dlu.edu.vn
232 TP CHÍ KHOA HỌC ĐẠI HỌC ĐÀ LẠT [ĐẶC SAN CÔNG NGH THÔNG TIN]
Quc tính đến tháng 9/2015 ước đạt 672 t USD, tăng 42.1% so vi cùng k năm 2014
chiếm khong 15.9% tng doanh thu bán l. Còn ti Hàn Quc, doanh thu bán l
TMĐT của th trưng này trong năm 2015 là 38.86 t USD, chiếm 11.2% tng doanh thu
bán lẻ. Liên quan đến d báo v quy ca th trường TMĐT thi gian ti, hi cui
tháng 1/2016, đại din lãnh đo Hip hội TMĐT Việt Nam (VECOM) đã cho biết, cui
năm 2015, hãng nghiên cứu th trường Ken Research đã đưa ra dự đoán quy thị trưng
bán l Việt Nam năm 2019 sẽ đạt 7.5 t USD.
Song song vi các li ích Internet mang li, cũng nhng ri ro như: m
2015 toàn thế gii thit hại hơn 445 tỷ USD, Vit nam thit hi khong 8700 t VNĐ do
các s c v tn công mng; 5226 trang web của các cơ quan doanh nghiệp ti Vit Nam
b tn công. Nguyên nhân chính đó sự tiến bộ của kẻ tấn công, sự ra đời của những
công nghệ mới, cũng sự thiết lập của những hệ thống ngày nay cũng ngày càng phức
tạp và khó quản lí hết rủi ro. Vì vậy, việc nghiên cứu đánh giá những nguy cơ có tính rủi
ro cao đối với các ứng dụng dựa trên nền web là nhu cầu cấp thiết đối với các cơ quan, tổ
chức đang triển khai ứng dụng web trên Internet. Trong bài báo này, chúng tôi sẽ phân
tích những lỗ hổng phổ biến nhất của các ứng dụng trên nền web khuyến nghị các
phương pháp để kiểm tra phát hiện.
2. NHNG LỖI THƯỜNG GP TRONG CÁC NG DNG WEB
Khi mt ng dng web (có th Website hoc WebApp) được trin khai trên
Internet, tr thành mc tiêu phá hoi ca nhng k tn công mun tìm khai thác
nhng l hng bo mt xut hin trong ng dụng. Dưới đây là những l hng bo mt mà
người phát trin các ng dng web cn tránh khi phát trin ng dng.
2.1. Tn công li truy vn SQL
Theo Data (2016), tn công li truy vn SQL s dng chui lnh ngôn ng truy
vn có cấu trúc (SQL) để truy vn trc tiếp cơ sở d liu. ng dụng thường s dng lnh
SQL để xác thực người dùng vi ng dng xác nhn vai trò và mức độ truy cập, lưu gi
ly thông tin cho ng dụng người dùng, các đường dn ti ngun d liu. S
dng li truy vn SQL, nhng k tn công th s dng mt ng dng web d b tn
Nguyễn Sĩ Hòa, Lại Th Nhung và Đặng Thanh Hi 233
thương để tránh các bin pháp bo mật thông thường và truy cp trc tiếp đến d liu có
giá tr.
do tn công li truy vn SQL làm vic là do ng dng không xác nhận đu vào
mt cách phù hợp trước khi qua nó đến lnh SQL. Tn công li truy vn SQL có th vào
qua thanh địa chỉ, trong trường ng dng và qua câu truy vn và tìm kiếm. Tn công SQL
th cho phép k tn công: Đăng nhập vào ng dng không cn cung cp chng
nhn hp l; Thc hin nhng câu truy vn d liệu trong sở d liu ng dng
thường không truy cập đến nhng d liệu đó; Thay đổi nội dung sở d liu hoc th
vào các sở d liu; S dng mi quan h tin cậy được thiết lp gia các thành phn
ng dụng web để truy cập các sở d liu khác. d: Tn các ng dụng Web, các
trang web thường có các ô nhập văn bản để người dùng nhập thông tin vào cho các câu
lệnh SQL thực hiện trên Server để truy vấn dữ liệu. Thông tin vào quyết định cách ứng
dụng xử . Tuy nhn, kng phải trình ng dụng nào ng đầy đủ chế, chính
ch đảm bảo an toàn. Lợi dụng lỗi van toàn của các ứng dụng chưa được kiểm soát
hết, kẻ tấn công có thể chèn vào các ô nhập văn bản các đoạn mã độc thay vì các thông
tin chuẩn mực để ứng dụng xử lý. Chẳng hạn, mộtu lệnh SQL với thông tin đầu vào
từ ô nhập văn bản như sau:
String query = "SELECT * FROM accounts WHERE custID='" +
request.getParameter("id") +"'";
Exec(query);
Câu lệnh trên đơn thuần ch đưa ra các thông tin v tài khon ca mt người
dùng vi mã là id. Tuy nhiên k tn công có th thay thế tham s ‘id’ cần nhp vào bng
chui sau: or ‘1’=’1.
Câu lnh truy vn trên Server tr thành:
String query = "SELECT * FROM accounts WHEREcustID='" +
request.getParameter ("‘ or ‘1’=’1") +"'";
Exec(query);
Việc này thay đổi ý nghĩa của câu truy vn là tr li giá tr ca tt c các tài khon
trong s d liu thay ch ca một người dùng. Trong trường hp xu nht, k tn
234 TP CHÍ KHOA HỌC ĐẠI HỌC ĐÀ LẠT [ĐẶC SAN CÔNG NGH THÔNG TIN]
công có th s dng các thông tin đánh cắp được để thc thi nhng th tục lưu tr trong
cơ sở d liu và giúp chiếm quyền điều khiển cơ sở d liu.
2.2. Thc thi mã script xu
Theo Data (2016) thì thc thi scrip xấu được biết vi tên Cross-Site
Scripting (XSS) da trên vic mã hóa thiếu nhng kí t đặc bit (ví d như >, <) trên các
trang Web. Li dụng điều này, k tn th chèn một đoạn script trong đầu vào chng
hạn “<script src=’http://evil.com’; ></script>. Vi cách làm này, khi truy cập đến trang
web nào, trang web đó s ti mt tp tin dng script t mt trang web bên ngoài s
gi cookies hoc d liu cc b ca người s dng đến k tn công.
Để ngăn chặn XSS, người phát trin ng dng web cn phi hóa tt c ni
dung xut hin trên mt trang web. C th, người phát trin cn hóa không ch ni
dung, cn hóa c URL các thuc tính. Nhiu nn tng (framework) phát trin
web h tr sn mt phần tính năng hóa này. Trong ASP.NET MVC, Razor View
Engine s t động mã hóa tt c văn bản và giá tr thông qua vic s dng Model và các
hàm HTML Helpers. nhng ch không h tr kh năng hóa, người phát trin th
s dng hàm html.Encode. Đối vi giá tr url và các thuc tính, người phát trin cn phi
t gi các hàm url.Encode html.AttributeEncode để hóa. Mc vy, hóa
HTML không đủ để bảo đảm trang web an toàn trước tn công XSS. K tn công
th chèn các script vào ni dung ca Javascript có trên trang web. Vì vậy, chúng ta cũng
phi mã hóa ni dung có trong script (Hình 1).
Hình 1. S dng hàm
html.Encode
@section scripts {
@if (ViewBag.UserName != null) {
<scripttype="text/javascript">
$(function () {
var msg = 'Welcome, @Ajax.JavaScriptStringEncode(ViewBag.UserName)!';
$("#welcome-message").html(msg).hide().show('slow');
});
</script> }}
Nguyễn Sĩ Hòa, Lại Th Nhung và Đặng Thanh Hi 235
Trong ASP.Net MVC, chúng ta th s dng hàm Ajax.JavaScriptString Encode
để hóa nhng chuỗi được s dng trong Javascript tương tự như sử dng html.Encode,
ví d được th hiện như trong Hình 1.
Mt giải pháp khác để hóa HTML Javascript s dụng thư vin
AntiXSS.AntiXSS giúp thay thế mã hóa ngầm định (default encoder) được s dng trong
ASP.Net và do đó chịu trách nhim mã hóa ni dng khi s dng các hàm Encode Helper
được nói trên. Riêng đối vi hóa Javascript, thay s dng hàm
Ajax.JavaScriptStringEncode, người phát trin cn s dng hàm Encoder.JavaScript
Encode như trong Hình 2.
Hình 2. S dng hàm
Encoder.JavaScriptEncode
2.3. Tn công gi mo yêu cu
Tn công gi mo yêu cu Cross-Site Request Forgery (CSRF, XSRF) (Veracode,
2017) hay nói cách khác làm sai lch bn cht ca mt yêu cu (request) người
dùng (hay chính xác hơn là các trình duyt) không th nhn biết được. Ví d, gi s trên
mt trang web có s dng th img để ti hình ảnh như sau:
![””/](”/picture.jpg” alt=””/)
Vì một lý do nào đó (do bị hack hay do s nhm ln ca người phát trin) th img
có th b biến đổi thành:
@using Microsoft.Security.Application
@section scripts {
@if (ViewBag.UserName != null)
{
<scripttype="text/javascript">
$(function () {
var msg = 'Welcome, @Encoder.JavaScriptEncode(ViewBag.UserName, false)!';
$("#welcome-message").html(msg).hide().show('slow');
});
</script> }}