Mặc dù vậy, các nhà phát triển ứng dụng Web hiện nay vẫn chưa thực sự quan tâmđến vấn đề an ninh và bảo mật cho Website của mình, dù các cuộc tấn công vào ứngdụng Web có nguy cơ ảnh hưởn
Trang 1ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
NGUYỄN HỮU HIẾU
XÂY DỰNG HỆ THỐNG HỖ TRỢ ĐÁNH GIÁ AN TOÀN WEBSITE
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 60.48.01
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, tháng 12 năm 2014
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG - HCM
Cán bộ hướng dẫn khoa học : TS Nguyễn Đức Thái
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 1 : TS Vũ Đức Lung
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Cán bộ chấm nhận xét 2 : TS Nguyễn Hứa Phùng
(Ghi rõ họ, tên, học hàm, học vị và chữ ký) Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 08 tháng 01 năm 2015 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ) 1 TS Nguyễn Văn Minh Mẫn (CT)
2 TS Huỳnh Tường Nguyên (TK)
3 TS Vũ Đức Lung (PB1)
4 TS Nguyễn Hứa Phùng (PB2)
5 TS Trần Ngọc Minh (UV)
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA KH & KT MÁY TÍNH
Trang 3ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Nguyễn Hữu Hiếu MSHV : 12073119
Ngày, tháng, năm sinh: 09/09/1989 Nơi sinh: Long An
Chuyên ngành: Khoa học máy tính Mã số: 60.48.01
I TÊN ĐỀ TÀI: Xây dựng hệ thống hỗ trợ đánh giá an toàn website
II NHIỆM VỤ VÀ NỘI DUNG:
− Tìm hiểu các loại lỗ hổng trong website
− Xây dựng hệ thống hỗ trợ đánh giá an toàn website
III NGÀY GIAO NHIỆM VỤ: 20/01/2014
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 21/11/2014
V CÁN BỘ HƯỚNG DẪN: TS Nguyễn Đức Thái
Tp HCM, ngày tháng năm 20 CÁN BỘ HƯỚNG DẪN
(Họ tên và chữ ký) TRƯỞNG KHOA KH & KT MÁY TÍNH (Họ tên và chữ ký)
Trang 4LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn chân thành tới Thầy Nguyễn Đức Thái Trong suốtquá trình thực hiện luận văn, Thầy đã luôn quan tâm theo sát và hỗ trợ tôi Những lờiđộng viên và hướng dẫn tận tình của Thầy là nguồn động lực lớn nhất cho tôi hoànthành luận văn này
Tôi xin gửi lời cảm ơn đến quý Thầy, Cô ở Khoa Khoa Học và Kỹ thuật Máy Tính Trường Đại Học Bách Khoa, cùng với tri thức và tâm huyết của mình đã truyền đạtvốn kiến thức quý báu trong suốt thời gian tôi học tập tại trường
-Tôi cũng xin gửi lời cám ơn đến hai sinh viên Phạm Ngọc Chương và Nguyễn TrungKhánh đã hỗ trợ và chia sẻ trong suốt quá trình tôi thực hiện luận văn này
Và cuối cùng, tôi xin gửi lời cám ơn sâu sắc đến gia đình, bạn bè và những người thân
đã luôn là chỗ dựa tinh thần vững chắc, cổ vũ cho tôi trong suốt quá trình học tập,nghiên cứu
TP Hồ Chí Minh, tháng 11/2013
Nguyễn Hữu Hiếu
Trang 5TÓM TẮT LUẬN VĂN
Sự phát triển của Internet dẫn đến sự ra đời ngày càng nhiều các ứng dụng web vàngày càng trở nên phổ biến trong cuộc sống, như các ứng dụng diễn đàn, mạng xã hội,mua sắm trực tuyến, các cơ quan nhà nước, chính phủ, Cùng với sự phát triển như
vũ bão đó là sự phát triển của tội phạm, các cuộc tấn công xuất hiện ngày càng nhiềunhắm vào các cơ quan, doanh nghiệp làm tê liệt hệ thống, gây thiệt hại nghiêm trọngđến các cơ quan tổ chức Quan trọng hơn hết, các website của cơ quan chính phủ, Bộngành ở Việt Nam trở thành mục tiêu tấn công gây ảnh hưởng không ít đến các hoạtđộng của nhà nước
Luận văn tập trung vào nghiên cứu và phát triển một giải pháp cho việc kiểm tra vàphát hiện các lỗ hổng bảo mật có thể có trong ứng dụng Web, hỗ trợ các chuyên giatrong lĩnh vực bảo mật và người phát triển ứng dụng web phát hiện ra các lỗ hổngtrước khi đưa ứng dụng phục vụ người dùng để tránh bị kẻ xấu khai thác
Mặt khác, luận văn cũng hiện thực một công cụ có khả năng phát hiện một loại tấncông, có tên gọi là Clickjacking, đang phổ biến trên thế giới
Trang 6With the evolution of the Internet, Web applications have become popular in ourlife, such as forums, social networks, to connect people together, online shopping,e-commerce applications, government organizations, Along with this fast growth,the number of internet crimes also increases, more and more attacks are causing ofsystems failures, and serious damage that aimed to many agencies or organizations.Most importantly, the government agencies, ministries websites in Viet Nam have be-come the target of these attacks that affects many Internet activities in the country,and also the operation of the government
In this thesis, we propose a solution that will be used in the process of testing and tecting most of general vulnerabilities what can be found in the web applications, thistool will help users and developers to detect vulnerabilities to prevent the exploitation
de-of attackers
Trang 7LỜI CAM ĐOAN
Tôi xin cam đoan rằng, ngoài những tài liệu tham khảo và các tài liệu khác như đãchú thích nguồn gốc đính kèm thì toàn bộ nội dung trong báo cáo này đều là kết quảnghiên cứu của chính tôi và do tôi tự soạn thảo
Nếu có bất cứ sai phạm nào so với lời cam kết, tôi xin chịu các hình thức xử lý theoquy định
Nguyễn Hữu Hiếu
Trang 8Mục lục
LỜI CẢM ƠN i
TÓM TẮT LUẬN VĂN ii
ABSTRACT iii
LỜI CAM ĐOAN iv
1 MỞ ĐẦU 1
1.1 Tổng quan 1
1.2 Giới thiệu đề tài 2
1.3 Tính cấp thiết của đề tài 2
1.4 Mục tiêu 5
1.5 Tính khả thi của đề tài 6
1.6 Cấu trúc luận văn 6
2 CÁC CÔNG TRÌNH LIÊN QUAN 7
2.1 Những công trình liên quan sử dụng phương pháp kiểm thử hộp đen 7 2.2 Những công trình liên quan sử dụng phương pháp kiểm thử hộp trắng 9 2.3 Đánh giá 10
3 CƠ SỞ LÝ THUYẾT 11
3.1 Giới thiệu các tiêu chuẩn của OWASP 16
3.2 Các phương pháp kiểm tra lỗ hổng bảo mật cho ứng dụng Web 19
3.2.1 Phương pháp kiểm thử hộp đen 19
3.2.2 Phương pháp kiểm thử hộp trắng 20
4 XÂY DỰNG HỆ THỐNG ĐÁNH GIÁ AN TOÀN WEBSITE 21
4.1 Mục tiêu 21
4.2 Yêu cầu 22
Trang 94.3 Lược đồ Use Case 23
4.4 Các lược đồ Activity 26
4.5 Mô hình hệ thống 30
4.6 Các định dạng dữ liệu 31
4.6.1 Định dạng dữ liệu của cơ sở dữ liệu lưu trữ lỗ hổng 32
4.6.2 Định dạng dữ liệu của kết quả đầu ra 33
4.6.3 Cấu hình cho công cụ tích hợp 35
4.6.4 Dữ liệu dùng ánh xạ tên lỗ hổng 36
4.7 Giao diện chương trình được hiện thực 37
4.8 Tích hợp công cụ mới vào hệ thống 45
4.9 Đánh giá kết quả 47
4.9.1 Ứng dụng web dùng trong quá trình đánh giá 47
4.9.2 So sánh, đánh giá các công cụ 47
4.9.3 Kết quả 49
5 CÔNG CỤ PHÁT HIỆN TẤN CÔNG CLICKJACKING 51
5.1 Giới thiệu 51
5.2 Phương pháp phát hiện tấn công 53
5.3 Hiện thực công cụ 55
5.4 Kiểm thử kết quả 55
6 TỔNG KẾT 57
6.1 Kết luận 57
6.2 Hướng phát triển 58
Trang 10Danh mục hình
1 Danh sách các website ở Việt Nam bị tấn công tính đến ngày 15/11/2014
(Nguồn: h-zone.org) 4
2 Lược đồ Use Case cho hệ thống hỗ trợ đánh giá an toàn website 24
3 Lược đồ activity cho tính năng kiểm tra lỗ hổng 26
4 Lược đồ activity cho tính năng quản lý công cụ tích hợp 28
5 Lược đồ activity cho tính năng quản lý cơ sở dữ liệu lỗ hổng 29
6 Mô hình hệ thống 30
7 Giao diện chương trình được hiện thực 37
8 Hình ảnh của chương trình đang trong giai đoạn thực hiện kiểm tra 40
9 Giao diện quản lý cơ sở dữ liệu lỗ hổng 41
10 Giao diện quản lý các ánh xạ tên lỗ hổng 42
11 Giao diện quản lý các công cụ tích hợp 43
12 Giao diện hiển thị kết quả của quá trình kiểm tra lỗ hổng 44
13 Giao diện hiển thị các thông tin liên quan đến lỗ hổng 45
14 Biểu đồ mô tả thời gian quét ứng dụng lỗi Wackopicko của các công cụ 49 15 Mô tả tấn công Clickjacking 52
16 Giải thuật phát hiện phần tử iframe ẩn trong một trang web 54
17 Mô hình công cụ phát hiện tấn công Clickjacking 55
Trang 11Danh mục bảng
1 Bảng so sánh một số công cụ kiểm tra lỗ hổng bảo mật hộp đen 8
2 Mô tả định dạng dữ liệu của cơ sở dữ liệu lưu trữ lỗ hổng 33
3 Mô tả định dạng dữ liệu của kết quả đầu ra 34
4 Mô tả định dạng của tập tin cấu hình cho công cụ tích hợp 36
5 Danh sách các công cụ được sử dụng trong quá trình đánh giá với luận văn 48
6 Số lượng lỗ hổng phát hiện bởi công cụ 49
7 Tổng kết kết quả kiểm tra của các công cụ 50
8 Kết quả kiểm thử tấn công Clickjacking trên một số trang web 56
Trang 12CHƯƠNG 1 MỞ ĐẦU
1.1 Tổng quan
Ngày nay, với sự phát triển mạnh mẽ của Internet, các ứng dụng chạy trên nền Web
ra đời ngày càng nhiều và càng trở nên phổ biến trong cuộc sống, như các ứng dụngmua sắm, đấu giá, ngân hàng điện tử, diễn đàn, mạng xã hội, các cơ quan tuyên truyềnnhà nước, chính phủ,… Các ứng dụng Web này có thể được truy cập từ người dùng ởkhắp mọi nơi trên thế giới và luôn sẵn sàng đáp ứng 24/7
Đi kèm với sự bùng nổ của các ứng dụng Web cũng là sự phát triển của tội phạm, cáccuộc tấn công vào ứng dụng Web ngày càng trở nên phổ biến, với mục tiêu lấy đi cácthông tin quan trọng, nhạy cảm của ứng dụng, nhiều cuộc tấn công gây nên tê liệt hệthống, ảnh hưởng đến người tiêu dùng và hoạt động của công ty, tổ chức, gây thiệthại nghiêm trọng Trước tình hình đó, các lỗ hổng trong ứng dụng Web ngày càng trởthành mối đe dọa đối với người dùng cũng như các đơn vị chủ quản
Trong những năm gần đây, các công cụ tấn công ứng dụng Web ngày càng được pháttriển và tối ưu hóa nhằm mục đích gây hại, điển hình là sự phát triển mạnh mẽ củacác bộ công cụ Go1 Pack Exploit Kit, Blackhole toolkit, Sakura toolkit, Redkit,…Theo thống kê của tổ chức Symantec [23], công cụ Sakura toolkit không có mặt trongTop 10 công cụ tấn công năm 2011, nhưng trong năm 2012 chiếm 22%, và năm 2013chiếm 14% trong tổng số tấn công, công cụ khai thác Go1 Pack Exploit Kit đứng đầutrong năm 2013 với 23% trong tổng số tấn công được ghi nhận
Bên cạnh sự phát triển của các công cụ tấn công, các lỗ hổng bảo mật trong ứng dụngWeb xuất hiện ngày càng nhiều Theo thống kê của tổ chức Symantec [23], trong năm
2011 có 4.989 lỗ hổng được báo cáo, năm 2012 có 5.291 lỗ hổng được báo cáo, vàđến năm 2013 thì con số này là 6.787 Bên cạnh các lỗ hổng bảo mật Web được tạo ra
do sơ suất của người lập trình như không kiểm tra các dữ liệu đầu vào, xử lý các câutruy vấn dữ liệu không đúng cách, các lỗ hổng của trình duyệt web, lỗ hổng của cácplugin được cài đặt vào trình duyệt, phần mềm được cài đặt ở Web Server cũng gây
Trang 13ra ảnh hưởng gián tiếp đến sự bảo mật của ứng dụng web, từ đó cho phép kẻ tấn công
có khả năng tiếp cận những thông tin bí mật, thậm chí chiếm quyền đều khiển cả hệthống
Mặc dù vậy, các nhà phát triển ứng dụng Web hiện nay vẫn chưa thực sự quan tâmđến vấn đề an ninh và bảo mật cho Website của mình, dù các cuộc tấn công vào ứngdụng Web có nguy cơ ảnh hưởng đến lợi ích của cả công ty, tập đoàn, như rò rỉ thôngtin nhạy cảm của cá nhân, tổ chức, kế hoạch hoạt động kinh doanh,…
1.2 Giới thiệu đề tài
Đề tài ”Xây dựng hệ thống hỗ trợ đánh giá an toàn Website” tập trung vào nghiêncứu và phát triển một giải pháp cho việc kiểm tra và phát hiện các lỗ hổng bảo mật
có thể có trong ứng dụng Web Dựa vào các thông tin được đưa ra bởi chương trình,các chuyên gia và nhà phát triển ứng dụng web có thể hiểu và loại bỏ các nguy cơ tấncông chúng trước khi đưa ứng dụng ra thị trường phục vụ người dùng
Giải pháp được đề ra trong là xây dựng một ứng dụng có thể nhận biết được các loại
lỗ hổng bên trong mã nguồn ứng dụng Web, thông tin về các loại lỗ hổng này và cácphương pháp loại bỏ lỗ hổng ra khỏi ứng dụng, với các chức năng hỗ trợ người dùngnhư sau:
− Nhận biết và phân loại các loại hỗ hổng, thông tin và hướng khắc phục
− Có khả năng cập nhật thông tin các loại lỗ hổng mới
− Cho phép tận dụng và tích hợp các ứng dụng phát hiện lỗ hổng trong ứng dụngWeb sẵn có trên thị trường để tăng sức mạnh của hệ thống
− Tổng hợp kết quả của việc sử dụng các loại ứng dụng phát hiện lỗ hổng khácnhau để đưa ra kết quả chính xác nhất cho người sử dụng
1.3 Tính cấp thiết của đề tài
Xuất phát từ nhu cầu thực tế ở Việt Nam, ứng dụng Web ra đời ngày càng nhiều, phục
Trang 14thông tin của chính phủ, Nhưng vấn đề về bảo mật cho các ứng dụng Web này vẫnchưa được quan tâm một cách thích đáng Cụ thể, theo khảo sát của Trung tâm ứngcứu khẩn cấp máy tính Việt Nam (VNCERT) - Hiệp hội an toàn thông tin (VNISA)
đã đưa ra chỉ số an toàn thông tin của Việt Nam trong năm 2013 là 37,5% (năm 2012
là 26%), thấp hơn rất nhiều so với Hàn Quốc (62%) Dù chỉ số an toàn thông tin củaViệt Nam có khả quan, nhưng chưa đạt tới mức trung bình
Quan trọng hơn hết, các website của cơ quan chính phủ, Bộ ngành ở Việt Nam trởthành mục tiêu tấn công, lấy cắp dữ liệu, hay phá hoại gây ảnh hưởng không ít đếncác hoạt động của nhà nước Nguồn tin theo dữ liệu của tổ chức zone-h (Zone-H -Unrestricted Information - A global view to the world with a stress on the ITsec.), tổchức chuyên thống kê các website bị tấn công trên toàn cầu, website đặt tại địa chỉh-zone.org, có hơn 25.000 website có tên miền vn được cảnh báo bị tấn công, thống
kê dữ liệu tính đến ngày 15/11/2014
Trang 15Hình 1: Danh sách các website ở Việt Nam bị tấn công tính đến ngày 15/11/2014
Trang 16nghiệp, cơ quan nhà nước, Đồng thời với cơ sở dữ liệu của chương trình được xâydựng cũng có thể được dùng làm tài liệu tham khảo nghiên cứu và phát triển sau này.
1.4 Mục tiêu
Luận văn gồm 2 mục tiêu chính:
− Xây dựng một ứng dụng chính (VulScanner) có khả năng tích hợp các công cụphát hiện các lỗ hổng bảo mật dựa trên mã nguồn của ứng dụng Web có sẵntrên thị trường dưới dạng phần mềm tích hợp, tổng hợp và sắp xếp kết quả từcác công cụ có sẵn theo một tiêu chuẩn chung để có thể đưa ra một bản báo cáođánh giá tình hình bảo mật của ứng dụng Web cần kiểm tra
− Xây dựng công cụ có khả năng phát hiện tấn công Clickjacking trong ứng dụngweb, và tích hợp công cụ này vào ứng dụng chính
Để thực hiện các mục tiêu yêu cầu phía trên, tác giả đã đề ra phương pháp thực hiệncho luận văn như sau:
− Tìm hiểu và xây dựng ứng dụng chính bằng ngôn ngữ C#, sử dụng nền tảng.NET Framework 4.5 Phần hiển thị kết quả cho người dùng được hiện thựcbằng Web (hiển thị thông tin kết quả trên trình duyệt), đồng thời hỗ trợ xuất kếtquả ra file xml để có thể tích hợp được vào các hệ thống khác khi có nhu cầu
− Tìm hiểu và xây dựng cơ sở dữ liệu lỗ hổng bảo mật của ứng dụng Web (lưu trữdưới dạng file xml), cho phép cập nhật thông tin lỗ hổng mới, đồng thời có thểdùng làm tài liệu nghiên cứu và học tập
− Tìm hiểu và hiện thực một công cụ có khả năng phát hiện tấn công Clickjacking[19] trong trang web và tích hợp vào hệ thống chính Ứng dụng này có khả năngphát hiện các frame ẩn trong trang web mà các kẻ tấn công có thể lợi dụng lừangười dùng nhấp chuột vào đó để thực hiện hành vi trên một trang web khác
Trang 171.5 Tính khả thi của đề tài
Với sự phát triển của các phương pháp phát hiện lỗ hổng trong ứng dụng Web hiệnnay, việc hiện thực một hệ thống có khả năng phát hiện các loại lỗ hổng trong mãnguồn ứng dụng Web là khá dễ dàng Vấn đề còn lại là việc tìm hiểu các loại lỗ hổng,phân loại chúng và đề xuất hướng giải quyết cho người sử dụng
Sản phẩm là một phần mềm có thể cài đặt trên máy tính cá nhân, không quá phức tạp
và có thể tính toán cho ra kết quả trong thời gian chấp nhận được
Với những lý do trên cộng với lợi thế đã có nhiều phần mềm quét lỗi bảo mật đã đượcthiết kế trước đây trên thế giới (miễn phí và trả phí), đề tài cho ra một sản phẩm cótính ứng dụng cao trong thực tế cũng như phát triển thêm sau này do có khả năng tíchhợp được nhiều công cụ mới để làm phong phú thêm cho khả năng nhận diện lỗ hổngbảo mật của hệ thống
1.6 Cấu trúc luận văn
Sau phần giới thiệu đề tài ở chương 1, những chương tiếp theo của luận văn được tổchức như sau: chương 2 trình bày các kiến thức nền tảng liên quan đến đề tài như các
lỗ hổng bảo mật, giới thiệu về các tiêu chuẩn của OWASP, các phương pháp kiểm tra
lỗ hổng bảo mật của ứng dụng web đã và đang được sử dụng trên thế giới Chương 3của luận văn sẽ giới thiệu một số công trình liên quan đến đề tài, các ứng dụng kiểmtra lỗ hổng cho ứng dụng Web, các ưu, nhược điểm của chúng Trong chương 4 trìnhbày thiết kế và hiện thực hệ thống theo hướng dễ sử dụng và dễ dàng tích hợp cáccông cụ kiểm tra lỗ hổng bảo mật khác, thiết kế cơ sở dữ liệu lưu trữ thông tin của các
lỗ hổng bảo mật dùng để tham khảo, các giải pháp sử dụng để tạo ra sự thuận lợi chongười dùng cũng như khả năng mở rộng cho hệ thống sau này, Một phương phápgiúp phát hiện tấn công Clickjacking có thể có trong trang web và cách hiện thực công
cụ để có thể tích hợp vào hệ thống chính được giới thiệu trong chương 5 Và cuối cùng
là phần tổng kết các kết quả của luận văn, các ưu điểm, nhược điểm của sản phẩm và
đề xuất hướng phát triển tiếp theo cho đề tài ở chương 6
Trang 18CHƯƠNG 2 CÁC CÔNG TRÌNH LIÊN QUAN
2.1 Những công trình liên quan sử dụng phương pháp kiểm thử hộp đen
Dưới đây là một số các phần mềm điển hình được xây dựng theo phương pháp kiểmthử hộp đen [4, 13, 16]:
− N-Stalker Scanner: đây là một công cụ kiểm tra bảo mật cho ứng dụng web,ngoài ra cũng cung cấp giải pháp tốt hơn cho quá trình phát triển ứng dụng webbằng cách cho phép người dùng tạo ra các chính sách trong quá trình quét Công
cụ này có tính tự động cao, và có khả năng vừa quét lỗ hổng vừa thu thập dữliệu từ website độc lập
− Acunetix WVS (Web Vulnerability Scanner): công cụ Acunetix WVS là chươngtrình tự động kiểm tra các ứng dụng web để tìm kiếm các lỗ hổng bảo mật nhưSQL Injection, hay Cross-Site Scripting, tự động kiểm tra phương thức xácthực vào trang web, tự động kiểm tra bằng cách thu thập thông tin (crawl) tất cảcác liên kết trong website và cả các liên kết bị hạn chế trong tập tin robots.txt,sau đó chương trình sẽ tự động phát động các cuộc tấn công vào trang web, xácđịnh những vị trí có thể nhập liệu kết hợp với những dữ liệu khác nhau đượcthiết kế sẵn để làm cho trang web hiển thị những thông tin nhạy cảm
− WebInspect (HP): một công cụ thương mại hỗ trợ tìm kiếm lỗ hổng trên ứngdụng web, khả năng phát hiện lỗ hổng Session management CSRF (Cross-siteRequest Forgery) Giúp server kiểm tra cấu hình đã bảo mật hay chưa, và cókhả năng thực hiện một vài dạng tấn công như Cross-site Scripting, DirectoryTraversal,
− Rational Appscan (IBM): công cụ thương mại cho phép kiểm tra những ứngdụng được phát triển trên nền web, dễ dàng kiểm tra và phát hiện lỗ hổng App-Scan thực hiện kiểm tra nhiều lỗ hổng bảo mật, như Cross-Site Scripting, HTTP
Trang 19Response Spliting, , có khả năng phát hiện các Backdoor và Trojan [24] đanghoạt động trên máy chủ.
− Cenzic Hailstorm Professional: công cụ thương mại hỗ trợ tìm kiếm lỗ hổng trênứng dụng web Cũng như các công cụ đã được đề cập ở trên, công cụ này chophép người dùng có thể tùy biến các chính sách trong quá trình quét lỗ hổng
− OWASP WebScarab: một công cụ miễn phí giúp phát hiện lỗ hổng trong ứngdụng web Công cụ này chủ yếu dựa vào dữ liệu nhập của người dùng (các scriptkiểm tra được xây dựng sẵn, chỉnh sửa các yêu cầu HTTP, ) để thực hiện việckiểm tra bảo mật Công cụ này chủ yếu được sử dụng bởi những người biết lậptrình ứng dụng web, hay có kiến thức tốt về giao thức HTTP, mức độ tự độnghóa quá trình tìm kiếm lỗ hổng không cao
− Burp Suite: cũng là một công cụ miễn phí hỗ trợ phát hiện lỗ hổng trong ứngdụng web Giống như WebScarab, công cụ này cũng phụ thuộc phần lớn vài dữliệu nhập của người dùng, nên đòi hỏi người dùng phải là người có khả nănglập trình, mức độ tự động hóa kém hơn WebScarab, và không có chức năng lưuriêng kết quả kiểm tra và kết quả thu thập thông tin của trang web
Bảng 1 so sánh một số công cụ kiểm tra lỗ hổng bảo mật được thiết kế sử dụng phươngpháp kiểm thử hộp đen [18]
Security
testing tool
Level of automation
scan and crawl resultsseparately Freeware Commercial
Trang 202.2 Những công trình liên quan sử dụng phương pháp kiểm thử hộp trắng
Các chương trình kiểm tra lỗ hổng bảo mật hiện thực bằng phương pháp kiểm thử hộptrắng thường chỉ hỗ trợ việc kiểm tra mã nguồn ứng dụng Web được viết bằng mộthay một số ngôn ngữ cụ thể nào đó Dưới đây là danh sách một số các chương trìnhthông dụng [12, 9]:
− YASCA: chương trình kiểm tra lỗ hổng bảo mật mã nguồn mở, được thiết kếlinh hoạt, có tích hợp tính năng dò tìm lỗ hổng bảo mật dựa vào các mẫu có sẵndùng ”grep”, đồng thời tích hợp các công cụ khác như FindBugs, PMD, Tuynhiên, hiện nay phần mềm này hầu như không còn cập nhật lên phiên bản mới
− FindBugs: được phát triển bởi đại học Maryland, có thể phát hiện các lỗi XSS
và SQL Injection cho ứng dụng web viết bằng ngôn ngữ Java
− Pixy: chỉ phát hiện lỗi XSS và SQL Injection Chương trình Pixy nhận đầu vào
là mã nguồn ứng dụng web viết bằng ngôn ngữ PHP, cho kết quả là danh sáchcác lỗ hổng có thể có, kèm với thông tin về lỗ hổng
− CodeScan (CodeScan Labs): kiểm tra, phát hiện lỗ hổng ứng dụng web dùngASP, PHP, ASP.NET
− OWASP LAPSE+: hỗ trợ kiểm tra các ứng dụng web dùng ngôn ngữ Java nhằmtìm kiếm các lỗ hổng bảo mật phổ biến trong ứng dụng web
− PMD: phần mềm mã nguồn mở, phát hiện lỗ hổng trong constructor, dead code
và duplicate code, báo cáo chủ yếu về các thói quen xấu trong coding
− RIPS: phân tích phát hiện lỗ hổng trong mã nguồn, ngôn ngữ hỗ trợ: PHP
− PHPLint: kiểm tra phát hiện lỗi trong cú pháp, các biến không sử dụng, hỗ trợkiểm tra mã nguồn ứng dụng web viết bằng PHP
− PHPVH: chương trình kiểm tra lỗ hổng viết bằng ngôn ngữ C# có khả năng phântích phát hiện lỗ hổng trong mã nguồn ứng dụng Web viết bằng ngôn ngữ PHP
Trang 212.3 Đánh giá
Hầu hết các công cụ kiểm tra lỗ hổng trên web hiện nay là bản thương mại, một số ít
là miễn phí như OWASP WebScarab Vấn đề là các công cụ phân tích tự động chỉ cóthể thực thi một bộ quy tắc nhất định có trước để tìm lỗi bảo mật tổng quát, không thểhiểu được ngữ cảnh, nghiệp vụ cũng như logic của ứng dụng
Các công cụ kiểm tra lỗ hổng dạng hộp đen còn đòi hỏi sự can thiệp của con người,mức độ tự động hóa không cao, đòi hỏi người sử dụng phải biết lập trình, trong khicác công cụ kiểm tra lỗ hổng dạng hộp trắng chỉ hỗ trợ một hay một số ngôn ngữ đặcthù, chỉ có thế mạnh riêng ở một ngôn ngữ và khả năng phát hiện một số lỗ hổng nào
đó tùy thuộc vào các mẫu lỗ hổng cố định được lập trình sẵn
Đa số không phát hiện được các lỗi trong việc xác thực, phân quyền, quản lý phiên(session), bảo mật các dữ liệu nhạy cảm của người dùng, logic nghiệp vụ, do tínhphức tạp của chúng Các công cụ phân tích hầu hết chưa cho phép sự can thiệp củacon người vào quá trình kiểm tra để rà soát mã nguồn ứng dụng bằng tay
Các công cụ kiểm tra lỗ hổng hiện nay đều cho ra kết quả rời rạc, không thống nhấtnhau theo một chuẩn chung, dẫn đến tình trạng cùng một lỗ hổng bảo mật nhưng đượcgọi bằng nhiều tên khác nhau, gây ra khó hiểu cho người sử dụng Các công cụ nàycũng riêng lẻ và không cho phép tích hợp vào nhau (ngoại trừ YASCA, tuy nhiên việctích hợp một phần mềm kiểm tra lỗ hổng vào công cụ YASCA cũng không phải là mộtviệc đơn giản)
Trang 22CHƯƠNG 3 CƠ SỞ LÝ THUYẾT
Các lỗ hổng trong ứng dụng Web bao gồm các loại chính:
− Lỗ hổng tạo ra do việc kiểm tra sơ sài tính hợp lệ của các dữ liệu đầu vào [1, 8,15], vấn đề mã hóa các thông tin quan trọng như cookie, mật khẩu,
− Lỗ hổng tạo ra do sai sót khi thiết kế trang Web, xử lý các lỗi không đầy đủ cũngnhư không hợp lý
Luận văn tập trung vào việc nghiên cứu phát hiện các lỗ hổng trong trang web dựavào các sai sót của ứng dụng khi kiểm tra dữ liệu đầu vào của người dùng Theo đó,
kẻ tấn công có thể chèn các dữ liệu độc hại, hay làm sai lệch nội dung các trường dữliệu truyền giữa máy chủ Web (Server) và trình duyệt (Client) Bên dưới là một số lỗhổng được tạo ra do việc cố tình làm sai lệch nội dung dữ liệu nhập vào từ phía ngườidùng:
Thay đổi các tham số, trường dữ liệu ẩn trên các thành phần nhận dữ liệu từ người dùng
Đa số các trang Web nhận và xử lý dữ liệu đầu vào từ các HTML Form, các dữ liệunày được gởi đi cùng với yêu cầu HTTP Tuy nhiên, các tham số này hoàn toàn có thểđược sửa đổi ở trình duyệt trên máy người dùng Nên nếu cơ chế kiểm tra dữ liệu vàxác thực không đầy đủ thì sẽ tạo ra lỗ hổng cho trang web
Thay đổi các tham số trong URL
Các trang web sử dụng tham số trong một phần của URL được gởi bằng trình duyệt sửdụng phương thức HTTP GET, các tham số được truyền đi như một phần của URL vàhiển thị trên thanh địa chỉ của trình duyệt khi người dùng gởi yêu cầu Do đó, ngườidùng hoàn tòan có thể chỉnh sửa dữ liệu trong thanh địa chỉ của trình duyệt và tạo ra
lỗ hổng nếu ứng dụng Web xử lý không tốt
Thay đổi nội dung Cookie
Cookie là một tập tin dữ liệu nhỏ lưu ở máy tính của người duyệt web và được gởi
Trang 23lại Web Server trong những lần yêu cầu (request) tiếp theo Thông tin chứa bên trongCookie được thiết lập tùy theo người xây dựng ứng dụng quy định (thông tin giỏ hàng,giá cả, hay thậm chí các thông tin nhạy cảm của người dùng như tên đăng nhập, mậtkhẩu, quyền của người dùng trong hệ thống, ) Các thông tin này hoàn toàn có thể bịthay đổi và gây hại nếu ứng dụng web không có cơ chế kiểm duyệt phù hợp [10, 7, 14].
Tấn công bằng cách tiêm nhiễm câu truy vấn SQL (Structured Query Language Injection)
SQL Injection là một phương pháp tấn công dùng để lấy thông tin trái phép, sửa chữahay xóa thông tin trong các bảng dữ liệu quan hệ thông qua ứng dụng web Đây là lỗhổng gây ra khi ứng dụng cho phép kẻ tấn công có khả năng tiêm nhiễm dữ liệu đểảnh hưởng đến câu truy vấn SQL được thực thi trong ứng dụng [2, 6]
Ví dụ: Giả sử một ứng dụng web cho phép người dùng nhập dữ liệu tên, mật khẩu đểđăng nhập sử dụng đoạn mã PHP như bên dưới:
<?php
$query = "SELECT * FROM users WHERE
users= ' {$_POST['username']} ' AND
password= ' {$_POST['password']} ' ";
mysql_query($query);
echo $query;
?>
Khi người dùng nhập vào tên đăng nhập/mật khẩu là bob/passw thì ứng dụng sẽ tiến
hành tạo ra và thực hiện câu truy vấn:
SELECT * FROM users WHERE users=’bob’ AND password=’passw’
Nhưng nếu người dùng cố tình nhập vào chuỗi dữ liệu ’ OR ’1’=’1 thì ứng dụng sẽ
tiến hành thực hiện câu truy vấn:
SELECT * FROM users WHERE user='bob' AND password='' OR '1'='1'
Trang 24Câu truy vấn này luôn trả về kết quả là một hay nhiều dòng (record) dữ liệu nên sẽqua mặt được cơ chế xác thực người dùng của ứng dụng Web.
Tấn công bằng cách chèn mã nguy hiểm vào trang web (XSS)
XSS, viết tắt của Cross-Site Scripting, là một loại lỗ hổng cho phép kẻ tấn công chèncác đoạn mã bất hợp pháp vào trang web, mà sau đó các đoạn mã này sẽ được thôngdịch và thực thi trên trình duyệt của người dùng [3, 11] Web Server nhận và xử lýthông tin từ Client bằng các request thông qua phương thức GET/POST Các đoạn mãbất hợp pháp có thể sẽ được gởi kèm cùng với dữ liệu để có thể được lưu trữ và thựcthi trên trình duyệt của một người dùng khác Ví dụ một đoạn mã javascript có thểđược gởi kèm cùng với dữ liệu:
<script>alert (‘This site has malicious code’) ;</script>
Nếu kẻ tấn công có khả năng chèn đoạn mã JavaScript như trên vào trang web thì cácđoạn mã bất hợp pháp đó hoàn toàn có thể được thực thi trên máy một người dùngkhác, các đoạn mã bất hợp pháp được thiết kế theo nhiều cách khác nhau để có thểtrộm thông tin từ người dùng như thông tin cookie [7], hoặc chuyển hướng người dùngđến một trang web lừa đảo khác,
Hình thức tấn tấn công truy cập đến những tập tin, thư mục không được phép (Directory Traversal)
Directory Traversal là một tấn công xảy ra khi kẻ tấn công có khả năng truy cập hoặcthực thi vào một thư mục, tập tin bị hạn chế trên Web server Trong đó, kẻ tấn công sửdụng yêu cầu HTTP để qua mặt cơ chế bảo mật của Web Server và ứng dụng Web [8]
Trang 25Kẻ tấn công có thể lợi dụng điều này để xem nội dung một tập tin bí mật:
showSe-cret.php chứa trên Web Server như sau:
www.mysite.com/getFile? / /secrets/showSecrets.php
Yêu cầu này sẽ trả về nội dung của tập tin showSecrets.php nằm ở đường dẫn:
/export/home/user/secrets/showSecrets.php
Cách tấn công này có thể được lợi dụng để kẻ gian xem hết tất cả toàn bộ các tập tin
mã nguồn của website, hay đọc những thông tin cấu hình của ứng dụng web như cácthông tin kết nối các Web service, thông tin kết nối cơ sở dữ liệu,
Dò lỗ hổng dựa vào các thông báo lỗi của ứng dụng web (Improper Error dling)
Han-Kẻ tấn công cố tình nhập vào dữ liệu lỗi cho ứng dụng Web với mục đích nhận đượcthông báo lỗi, từ đó có thể dựa vào chúng để đoán biết và qua mặt được nguyên tắcvận hành của ứng dụng Web [8]
Các thông báo có thể chỉ ra những thông tin quan trọng của Server, ví dụ: khi người
Trang 26file ”file not found”.
Khi người dùng gởi yêu cầu đến một tập tin không được phép, sẽ nhận được thôngbáo ”access denied”, như vậy kẻ tấn công có thể biết được là tập tin này tồn tại trênserver và dựa vào đó thực hiện các tấn công khác nhắm vào tập tin này
Tấn công dựa vào các thông báo lỗi của hệ thống (Information Leakage)
Lỗ hổng này cho phép kẻ tấn công nhìn thấy được những thông tin được đưa ra bởi
hệ thống, những thông tin dùng cho việc gỡ rối (debug) chương trình [1]
Dựa vào cấu hình của hệ thống, các thông tin này có thể được xuất hiện ở màn hìnhđiều khiển (console), lưu vào log file,… Trong một số trường hợp các thông báo lỗinày vô tình chỉ cho kẻ tấn công biết được hình thức tấn công nào có thể được áp dụngvới ứng dụng web
Ví dụ: Một thông báo lỗi database như bên dưới có thể chứng tỏ ứng dụng Web có lỗ
hổng có thể sử dụng hình thức tấn công SQL Injection:
Warning: mysql_pconnect(): Access denied for user:
'root@localhost' (Using password: N1nj4) in data/includes/database.inc on line 4
/usr/local/www/wi-Tấn công dựa vào việc tiêm nhiễm các lệnh thực thi trên máy chủ (Command Injection)
Hình thức tấn công này tương tự như SQL Injection, khi dữ liệu đầu vào được sử dụngnhư là một phần của tham số trong các hàm thao tác với tài nguyên hệ thống hoặc tiếntrình như fopen(), exec(),… Kẻ tấn công có thể chèn thêm các lệnh thực thi khác trên
hệ thống nếu các dữ liệu này không được kiểm tra kỹ lưỡng [15]
Ví dụ như một trang web có đoạn lệnh cho phép thay đổi mật khẩu của người dùngđăng nhập hệ thống như sau:
exec(“htpasswd.exe –b htpasswd”.”{$_POST[‘user’]}
{ $_POST[‘pass’]}”)
Trang 27Kẻ tấn công có thể gửi yêu cầu với giá trị của hai biến user và pass lần lượt là ;NET
USER foo /ADD và chuỗi rỗng Khi đó lệnh được thực thi sẽ là:
htpasswd.exe -b htpasswd; NET USER FOO /ADD
Việc thực thi lệnhh này dẫn đến việc tạo một người dùng mới với các quyền đăng nhập
hệ thống, kẻ tấn công sau đó có thể tiến hành đăng nhập và thực hiện cac khai tháckhác trong hệ thống
Các hình thức tấn công khác
Ngoài các hình thức tấn công được trình bày như trên, ứng dụng Web còn có khả năng
bị tấn công theo nhiều cách khác như chiếm quyền điều khiển phiên làm việc, khaithác các lỗ hổng logic có thể gây ra sự quá tải cho máy chủ hoặc tràn vùng nhớ, khaithác các thông tin không được bảo vệ trên đường truyền,…
3.1 Giới thiệu các tiêu chuẩn của OWASP
OWASP là từ viết tắt của Open Web Application Security Project (dự án mở về bảomật ứng dụng Web), đây là một dựa án miễn phí và mở (free and open) nhằm cungcấp cho các công ty, tổ chức [17]
− Các công cụ và các tiêu chuẩn về an toàn thông tin
− Sách về kiểm tra bảo mật ứng dụng, lập trình an toàn và các bài viết về kiểmđịnh mã nguồn
− Thư viện và các tiêu chuẩn điều khiển anh ninh
− Những nghiên cứu mới nhất
− Những buổi hội thảo toàn cầu
Tổ chức OWASP hàng năm đưa ra danh sách “Top 10 rủi ro an ninh của ứng dụngWeb” một cách ngắn gọn và súc tích, trong đó trình bày về các nguy cơ bảo mật củaứng dụng Web đáng chú ý nhất năm, và thảo luận về những nhân tố hình thành lỗ hổng
Trang 28và hậu quả, từ đó phân loại các cấp độ rủi ro, từ đó hướng dẫn cách khắc phục nhữngvấn đề được nói đến cũng như đưa ra các nguồn thông tin khác để tham khảo.
Việc tham khảo các bản báo cáo hàng năm cũng như danh sách các lỗ hổng củaOWASP giúp các nhà phát triển ứng dụng nắm bắt được tình hình an ninh thông tinhiện tại cũng như cách ứng phó với các lỗ hổng thông thường Do vậy việc hiểu vàphân loại các lỗ hổng khi tìm được trong ứng dụng tìm lỗ hổng bảo mật Web sẽ giùpcho người dùng có thêm thông tin rất nhiều về loại lỗ hổng, cách khác phục, và mức
độ nguy hiểm khi bị tấn công
OWASP Top 10 rủi ro an ninh ứng dụng năm 2013, được xếp hạng theo mức độ rủi
ro, từ A1 đến A10
A1 – Nhóm khai thác lỗ hổng bằng cách tiêm nhiễm mã (Injection)
Xảy ra trong các ứng dụng sử dụng SQL, LDAP khi những dữ liệu không xác thựcđược gởi đến hệ thống thông dịch/biên dịch như một phần của mã lệnh Những dữliệu này của kẻ tấn công có thể lừa hệ thống biên dịch thực hiện những mã lệnh độchại hoặc giúp kẻ tấn công xâm nhập đến những dữ liệu quan trọng một cách trái phép
A2 – Nhóm khai thác lỗ hổng của quá trình kiểm tra danh tính và quản lý phiên làm vệc (Broken Authentication and Session Management)
Những đoạn chương trình kiểm tra danh tính và quản lý phiên làm việc của người sửdụng thường hay được làm qua loa không đúng cách Điều này giúp kẻ thâm nhập
có thể ăn cắp mật mã, khóa, mã của các phiên làm việc session token hoặc tận dụngnhững lỗ hổng khác để giả mạo danh tính các người dùng khác trong hệ thống
A3 – Nhóm khai thác lỗ hổng cho phép kẻ tấn công chèn mã độc tực thi vào trình duyệt nạn nhân (Cross-Site Scripting)
Xảy ra khi một ứng dụng tiếp nhận những dữ liệu không đáng tin cậy và gửi chúngđến cho trình duyệt web mà không qua xử lý và kiểm duyệt XSS cho phép kẻ tấncông thực hiện mã độc trên trình duyệt của người bị tấn công và có thể lợi dụng ăncắp phiên truy cập để mạo danh hoặc hủy hoại trang web hoặc lừa người sử dụng đến
Trang 29những trang web chứa mã độc khác có lợi cho kẻ tấn công,
A4 – Nhóm khai thác dựa trên tham chiếu đến đối tượng (Insecure Direct Object References)
Xảy ra khi người phát triển để lộ một tham chiếu đến những đối tượng trong hệ thốngnhư các tập tin, thư mục hay chìa khóa dữ liệu Nếu chúng ta không có một hệ thốngkiểm tra truy cập, kẻ tấn công có thể lợi dụng những tham chiếu này để truy cập dữliệu một cách trái phép
A5 – Nhóm khai thác dựa trên những cấu hình không đùng về bảo mật (Security Misconfiguration)
Một cơ chế an ninh tốt cần phải định nghĩa những hiệu chỉnh về an ninh và triển khai
nó cho các ứng dụng, khuôn mẫu, máy chủ ứng dụng, máy chủ web, máy chủ dữ liệu
và các ứng dụng nền tảng Tất cả những thiết lập nên được định nghĩa, thực hiện vàbảo trì bởi vì rất nhiều thứ không được triển khai với thiết lập an toàn mặc định Cáchiệu chỉnh cũng bao gồm cập nhật phần mềm và những thư viện được sử dụng bởiứng dụng
A6 – Nhóm khai thác dựa trên việc lộ những thông tin nhạy cảm (Sensitive Data Exposure)
Nhiều ứng dụng Web không bảo vệ những thông tin nhạy cảm, như thông tin thẻ tíndụng, mã số thuế, thông tin xác thực, Kẻ tấn công có thể trộm hoặc sửa những thôngtin được mã hóa yếu để thực hiện hành vi lừa đảo, trộm thẻ tín dụng,
A7 – Nhóm khai thác dựa trên việc phân quyền (Missing Function Level Access Control)
Hầu hết các ứng dụng Web thực hiện phân quyền trước khi thực thi một chức năngnào đó Nếu ứng dụng Web không xác nhận, kẻ tấn công có thể giả mạo yêu cầu đểtruy cập vào các tính năng không được phép
A8 - Nhóm khai thác lỗ hổng dựa trên những yêu cầu giả mạo (Cross-Site quest Forgery)
Trang 30Re-những yêu cầu giao thức web (HTTP) tới một trang web bị lỗi, bao gồm cookie củaphiên truy cập và những thông tin tự động khác như thông tin đăng nhập Cách thứcnày cho phép kẻ tấn công buộc trình duyệt web tạo ra những yêu cầu cho ứng dụnglỗi mà ứng dụng này không thể biết đây là những yêu cầu giả mạo của kẻ tấn công.
A9 - Nhóm khai thác lỗ hổng dùng những lỗ hổng đã biết (Using Components with Known Vulnerabilities)
Các thành phần như thư viện, framework, module phần mềm, luôn chạy với quyền đầy
đủ Nếu một thành phần có lỗ hổng được khai thác, có thể làm cho dữ liệu nghiêmtrọng bị tổn thất
A10 – Nhóm khai thác lỗ hổng dựa trên tính năng chuyển hướng người dùng đến những tài nguyên không hợp lệ (Unvalidated Redirects and Forwards
Ứng dụng Web thường xuyên phải chuyển hướng người dùng đến những trang Webkhác, và dùng dữ liệu không tin cậy để xác định đường dẫn đích Nếu như không kiểmtra chặt chẽ, kẻ tấn công có thể chuyển hướng nạn nhân đến những trang Web lừa đảohoặc có chứa phần mềm độc hại
3.2 Các phương pháp kiểm tra lỗ hổng bảo mật cho ứng dụng Web
Các phương pháp phát hiện lỗ hổng bảo mật trong ứng dụng Web chủ yếu được phânvào hai nhóm chính, đó là phương pháp kiểm thử hộp đen và phương pháp kiểm thửhộp trắng
3.2.1 Phương pháp kiểm thử hộp đen
Phương pháp kiểm thử hộp đen (hay còn gọi là phương pháp phân tích động), làphương pháp phân tích ứng dụng Web từ phía người dùng dựa trên sự phân tích quátrình thực thi của ứng dụng, với giả định rằng mã nguồn của ứng dụng không có sẵn[5] Quá trình phân tích lỗ hổng của phương pháp phân tích động chủ yếu chia thànhhai giai đoạn: giai đoạn thứ nhất là thu thập thông tin (crawl) ứng dụng web, mục tiêucủa giai đoạn này là duyệt qua toàn bộ ứng dụng web và xác định toàn bộ các liên kếtcùng với các vector đầu vào tương ứng, các tham số GET và POST Trong giai đoạn
Trang 31thứ hai, khi chương trình đã xác định được toàn bộ các đầu vào của ứng dụng, chươngtrình sẽ bắt đầu tiêm nhiễm các giá trị đặc biệt và quan sát kết quả trả về Điểm quantrọng trong phương pháp phân tích tĩnh là thu thập thông tin của ứng dụng web càngsâu càng tốt Nếu không nó sẽ không thể kiểm tra hết toàn bộ các vector đầu vào.Nhược điểm chính của phương pháp phân tích động là không đảm bảo được sẽ xemxét tất cả các đường thi hành của ứng dụng Tuy nhiên, việc phân tích động với quyềntruy cập vào các quá trình thực hiện bên trong của ứng dụng Web có khả năng đượcchính xác hơn.
3.2.2 Phương pháp kiểm thử hộp trắng
Phương pháp kiểm thử hộp trắng (hay còn gọi là phương pháp phân tích tĩnh), phântích ứng dụng Web từ phía máy chủ, dựa trên việc phân tích mã nguồn ứng dụng vàcác tập tin cấu hình, với giả định rằng mã nguồn của ứng dụng có sẵn Phương phápnày tạo cơ hội để phân tích ứng dụng kỹ hơn vì không phải thực hiện các hành vi củamột ứng dụng mà tiếp cận mã nguồn của ứng dụng [3] Trong phương pháp này, mãnguồn được phân tích để phát hiện ra những phần trùng với các mẫu lỗ hổng đã đượcbiết trước [10] Nhược điểm chính của phương pháp phân tích tĩnh là tính nhạy cảmtrước các mẫu thử giả, mỗi công cụ chỉ có thể phân tích một số ngôn ngữ hạn chế nào
đó, và vì ứng dụng web được kiểm tra không được thực thi, nên kết quả phân tích cóthể chứa nhiều kết quả sai Tuy nhiên phương pháp phân tích tĩnh có thể xem xét tất
cả các đường thi hành có thể xảy ra bên trong ứng dụng Web
Việc đánh giá mức độ an ninh của ứng dụng Web thường kết hợp cả hai kỹ thuật nêutrên Việc chọn phương pháp đánh giá cần phải dựa trên điều kiện thực tế Ví dụ,trường hợp ứng dụng có mã nguồn thương mại, thì việc tìm lỗ hổng bằng cách truycập vào mã nguồn ứng dụng là không khả thi Ngược lại, vì nhiều lý do khác nhau mà
ta không thể tiến hành kiểm tra lỗ hổng bảo mật trong một hệ thống đang được triểnkhai, thì việc dùng phương pháp phân tích tĩnh sẽ được xem xét lựa chọn Trong đềtài này, tác giả sẽ tạo ra một hệ thống mà trong đó có thể tích hợp được các ứng dụngkiểm tra lỗ hổng bảo mật khác, kể cả kiểm tra hộp trắng và hộp đen
Trang 32CHƯƠNG 4 XÂY DỰNG HỆ THỐNG ĐÁNH GIÁ AN
TOÀN WEBSITE
4.1 Mục tiêu
Việc thực hiện đề tài sẽ hướng đến việc hiện thực VulScanner, một ứng dụng hỗ trợquá trình đánh giá an toàn website chủ yếu dựa trên việc phân tích mã nguồn của ứngdụng Công cụ được thiết kế như một phần lõi trung tâm có khả năng tích hợp, tậndụng kết quả của nhiều công cụ khác nhau để kết hợp dò tìm các lỗ hổng bảo mậttrong ứng dụng web, gom nhóm các lỗ hổng bảo mật theo tiêu chuẩn OWASP, đưa
ra đánh giá mức độ nguy hiểm của từng lỗ hổng và đề nghị giải pháp khắc phục chongười sử dụng dựa vào các thông tin về các lỗ hổng được lưu trữ trong cơ sở dữ liệu.VulScanner ra đời có thể được cập nhật liên tục bằng cách tích hợp vào những công
cụ mới khác để mở rộng khả năng của chương trình
Tiêu chí lựa chọn các công cụ phân tích mã nguồn có thể tích hợp vào ứng dụng:
− Công cụ được tích hợp là các công cụ được sử dụng miễn phí một phần hoặctoàn bộ, được phát triển cho phép người dùng phát hiện những lỗ hổng trongứng dụng web, được sử dụng một cách tự do và miễn phí bản quyền, nhà pháttriển cho phép người dùng sử dụng hoặc tích hợp vào phần mềm khác để chạy
mà không gặp rắc rối về vấn đề bản quyền sau này
− Công cụ có chức năng xuất kết quả ra màn hình giao diện hoặc xuất kết quả racác tập tin có cấu trúc (dạng XML [25]) để chương trình có thể dễ dàng bắt lấythông tin kết quả trích xuất và tổng hợp theo một định dạng chung nhất định.Định dạng kết quả xuất ra của chương trình phải rõ ràng, thống nhất theo mộtđịnh dạng chung cho tất cả các lỗ hổng mà chương trình tìm được
− Phần mềm có độ tin cậy cao, được đề cập trong các bài báo khoa học, được kiểmđịnh cho ra chất lượng của kết quả tốt, thông tin về lỗ hổng có độ chính xác cao,đáng tin cậy Các thông tin kết quả hiển thị rõ ràng, chính xác để người dùng
Trang 33có thể nhanh chóng nắm bắt được, như có đầy đủ thông tin lỗ hổng, nằm ở filenào, dòng thứ mấy của mã nguồn, mức độ nguy hiểm, các thông tin cơ bản về
lỗ hổng,
− Công cụ được cập nhật tương đối thường xuyên Do tính chất phát triển nhanhchóng trong lĩnh vực bảo mật hiện nay, các lỗ hổng ngày càng xuất hiện phongphú và đa dạng, nên một công cụ thường xuyên được cập nhật cũng là một tiêuchí quan trọng trong việc xem xét tích hợp vào hệ thống Hệ thống tạo ra có thểđược cập nhật liên tục và tận dụng được những kết quả của các chương trình cósẵn
4.2 Yêu cầu
VulScanner được xây dựng trên dựa trên những yêu cầu sau đây:
− Quá trình tích hợp công cụ vào hệ thống phải đơn giản, không quá phức tạp đểmột công cụ mới hoàn toàn có thể hoạt động trơn tru trong hệ thống Thời giantích hợp nhanh, số lượng mã viết ít
− Cơ sở dữ liệu các lỗ hổng được xây dựng đầy đủ, có tính năng thêm mới, sửa,xóa dữ liệu một cách đơn giản tạo ra sự tiện lợi cho việc cập nhật dữ liệu mớisau này
− Người dùng có khả năng quản lý, cái nhìn tổng quan về tất cả những thành phầncủa hệ thống, các công cụ nào đã được tích hợp, thông tin của các công cụ đónhư tên, đường dẫn file thực thi, các tham số truyền vào khi chạy, các thông tinphụ như nhà phát triển, phiên bản, Người sử dụng có thể chỉnh sửa các thôngtin này nếu cần mà không cần phải biên dịch lại toàn bộ chương trình
− Thông tin hiển thị trong quá trình kiểm tra lỗ hổng phải rõ ràng, chương trìnhđang chạy được bao nhiêu phần trăm, đang kiểm tra đến file nào trong thư mục
mã nguồn được chọn, hỗ trợ tùy chọn xem màn hình kết quả ngay khi chươngtrình hoàn tất quá trình kiểm tra, lưu lại thông tin các đường dẫn, các liên kết
Trang 34được đã được kiểm tra dưới dạng nhật kí để người dùng có thể xem lại nếu cầnthiết.
− Hỗ trợ người dùng giao diện để xem kết quả được tổng hợp bởi chương trình,người dùng có thể xem thông tin các lỗ hổng được tìm kiếm bởi toàn bộ cáccông cụ được tích hợp hay một công cụ cụ thể nào đó, hỗ trợ các tính năng sắpxếp dữ liệu như hiển thị các kết quả theo mức độ nguy hiểm, mức độ tin cậy, tênphần mềm tích hợp,
− Chương trình hỗ trợ xuất kết quả ra file theo chuẩn XML để có thể dễ dàng giaotiếp hoặc tích hợp vào một hệ thống khác mà không cần mất nhiều chi phí hiệnthực
− Ngoài ra hệ thống cần phải đạt được một số yêu cầu phi chức năng như thời giankiểm tra không quá lâu có thể chấp nhận được chấp nhận được, giao diện dễ sửdụng, giao diện hiển thị kết quả dễ đọc và hỗ trợ người dùng tất cả các thông tincần thiết để có thể hiểu rõ về lỗ hổng cũng như hướng khắc phục
4.3 Lược đồ Use Case
Dựa vào những yêu cầu hệ thống như ở phần trên, thì hệ thống cần được xây dựng cáctính năng cơ bản thể hiện qua lược đồ Use Case dưới đây:
Trang 35Hình 2: Lược đồ Use Case cho hệ thống hỗ trợ đánh giá an toàn website
Mô tả: Hệ thống được thiết kế và hiện thực các tính năng cơ bản hỗ trợ người dùngtrong quá trình kiểm tra lỗ hổng cho ứng dụng web, bao gồm các tính năng cần thiếttheo như lược đồ Use Case như sau:
− Scan web application
Tính năng cho phép người dùng kiểm tra lỗ hổng bảo mật của ứng dụng web.Người dùng chọn đường dẫn thư mục chứa mã nguồn ứng dụng (khi sử dụng cáccông cụ tích hợp đùng phương pháp kiểm tra hộp trắng) và nhập vào đường dẫntrang web (khi sử dụng các công cụ tích hợp đùng phương pháp kiểm tra hộpđen) Chương trình sẽ liệt kê tất cả các công cụ đã được tích hợp trong hệ thống,phân loại thành hai danh sách theo loại công cụ (hộp đen/hộp trắng) người dùng
có thể tùy chọn các công cụ mà mình muốn sử dụng để kiểm tra, các tùy chọnkhác như yêu cầu mở file hiển thị kết quả sau khi chương trình hoàn tất, yêu cầughi nhật kí cho quá trình chạy,
− Manage Plugins
Tính năng cho phép quản lý tất cả các công cụ đã được tích hợp trong hệ thống,
Trang 36người dùng có thể thêm/sửa các thông tin tích hợp như tên công cụ, phiên bản,tác giả, đường dẫn đến file thực thi kèm với các thông số đầu vào khi gọi ứngdụng, người dùng có thể dễ dàng thay đổi các thông số này mà không cần phảiqua giai đoạn lập trình và biên dịch lại chương trình.
− Manage Vulnerability DB
Quản lý các thông tin có sẵn trong cơ sở dữ liệu các lỗ hổng, người dùng có thểthêm các lỗ hổng mới hoặc cập nhật, xóa thông tin các lỗ hổng cũ Các thông tinnày có sự tham khảo từ tổ chức OWASP, nhằm cung cấp thêm cho người dùngthông tin thêm về các loại lỗ hổng, các ví dụ minh họa, cách phòng chống, khắcphục, Các kết quả đầu ra của quá trình kiểm tra sẽ được gắn thêm những thôngtin này để tạo ra sự chi tiết trong bản báo cáo về lỗ hổng cuối cùng
− View Vulnerability Result
Tính năng hiển thị kết quả sau khi chương trình đã thực hiện hoàn tất giai đoạnkiểm tra Giao diện hiển thị được thiết kế đơn giản với đầy đủ tính năng cầnthiết để người dùng có thể có cái nhìn tổng quan về kết quả thu được, như tổng
số các ghi nhận được của toàn bộ báo cáo hay của từng công cụ được chọn, tínhnăng sắp xếp kết quả theo tên công cụ tích hợp, tên tập tin được quét, mức độnguy hiểm của lỗ hổng,
− Create log file
Tính năng tùy chọn cho phép người dùng ghi nhật kí toàn bộ quá trình kiểm tra
lỗ hổng, các đường dẫn, tên tập tin đã được kiểm tra ứng với mỗi công cụ, Ngườidùng có thể dựa vào nhật kí này để kiểm tra tính đúng đắn của hệ thống, haykiểm tra một tập tin nào đó đã qua kiểm tra hay chưa, trình tự các tập tin đượckiểm tra như thế nào,
Trang 374.4 Các lược đồ Activity
Lược đồ activity cho tính năng kiểm tra lỗ hổng
Hình 3: Lược đồ activity cho tính năng kiểm tra lỗ hổng