1. Trang chủ
  2. » Công Nghệ Thông Tin

Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)

75 261 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 2,6 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)Nghiên cứu kiểm thử bảo mật website (LV thạc sĩ)

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

-

TRẦN THỊ HẠNH

NGHIÊN CỨU KIỂM THỬ BẢO MẬT WEBSITE

LUẬN VĂN THẠC SĨ KỸ THUẬT

Theo nh hướng ứng dụng

HÀ NỘI - 2017

Trang 2

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

-

TRẦN THỊ HẠNH

NGHIÊN CỨU KIỂM THỬ BẢO MẬT WEBSITE

CHUYÊN NGÀNH : HỆ THỐNG THÔNG TIN

MÃ SỐ : 60.48.01.04

`

LUẬN VĂN THẠC SĨ KỸ THUẬT

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS LÊ HỮU LẬP

HÀ NỘI - 2017

Trang 3

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi trong đó có sự giúp

Trang 4

LỜI CẢM ƠN

Trước tiên, tôi xin chân thành cảm ơn PGS.TS Lê Hữu Lập đã dành thời

gian quý báu, tận tình hướng dẫn chỉ bảo, góp ý cho tôi trong suốt quá trình thực hiện luận văn tốt nghiệp

Tôi xin được cảm ơn sự giúp đỡ nhiệt tình của các Thầy giáo, Cô giáo khoa Quốc tế và Đào tạo sau đại học - Học viện Công nghệ Bưu chính Viễn thông Đặc biệt, tôi xin được bày tỏ lòng biết ơn sâu sắc tới các Thầy giáo, Cô giáo đã tham gia giảng dạy tôi trong quá trình học tập tại Học viện Các thầy đã tận tình giảng dạy, truyền đạt kiến thức, tạo tiền đề cho tôi hoàn thành luận văn

Cuối cùng, tôi xin chân thành cảm ơn các bạn bè, đồng nghiệp và nhất là gia đình tôi đã quan tâm và tạo mọi điều kiện tốt nhất, động viên, cổ vũ tôi trong suốt quá trình học tập và nghiên cứu để hoàn thành tốt luận văn tốt nghiệp này

Xin trân trọng cảm ơn!

Hà Nội, ngày 30 tháng 5 năm 2017

Tác giả

Trần Th Hạnh

Trang 5

MỤC LỤC

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

MỤC LỤC iii

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT v

DANH MỤC CÁC BẢNG vi

DANH MỤC CÁC HÌNH vii

MỞ ĐẦU 1

1.Mục đích nghiên cứu 2

2.Đối tượng và phạm vi nghiên cứu 2

CHƯƠNG 1 - TỔNG QUAN VỀ BẢO MẬT WEBSITE 4

1.1.Tổng quan về bảo mật 4

1.2.Mục đích của bảo mật 4

1.3.Thống kê tình trạng bảo mật hiện nay của các trang web 4

1.4 Một số phương pháp tấn công phổ biến hiện nay 5

1.4.1.Tấn công SqlInjection [4][6][15] 5

1.4.2.Tấn công Cross Site Scripting [15] 8

1.4.3 Lỗ hổng Directory Listing [14] 10

Kết luận chương 11

2.1 Giới thiệu về kiểm thử phần mềm 12

2.2 Kiểm thử bảo mật 12

2.2.1 Nhiệm vụ của kiểm thử bảo mật 12

2.2.2.Trách nhiệm của kiểm thử bảo mật 12

2.2.3 Mục đích kiểm thử bảo mật 13

2.3 Các loại kiểm thử bảo mật 13

2.3.1 Kiểm thử yêu cầu và thiết kế 13

2.3.2 Kiểm thử mã nguồn 13

2.3.3 Kiểm thử các thiết lập của trình duyệt 13

2.3.4 Kiểm thử bức tường lửa 14

2.4 Quy trình kiểm thử bảo mật website [10][11] 14

2.4.1.Kiểm thử bảo mật thủ công (manually) [11][12] 15

2.4.2.Kiểm thử bảo mật tự động (Automation) [11][12] 16

Trang 6

2.5 Các phương pháp kiểm thử bảo mật [14][23] 17

2.5.1 Phương pháp kiểm tra hộp trắng 17

a, Kiểm thử đường diễn tiến của chương trình 19

b, Kiểm thử cấu trúc điều khiển 23

2.5.2 Phương pháp kiểm thử hộp đen [1][2][23] 28

2.5.3 Phương pháp kiểm thử mờ (Fuzzed testing) [3][5][10] 37

2.6 Đánh giá về các phương pháp và công cụ kiểm thử bảo mật website 49

Kết luận chương 2 51

CHƯƠNG 3 – SỬ DỤNG CÔNG CỤ “ACUNETIX WEB VULNERABILITY” ĐỂ KIỂM THỬ BẢO MẬT WEBSITE 52

3.1 Giới thiệu về công cụ “Acunetix Web Vulnerability”[13] 52

3.2 Acunetix Web Vulnerability làm việc như thế nào? 52

3.3 Những tính năng cũng như ưu điểm chính của công cụ Acunetix Web Vulnerability 53

3.4 Thực nghiệm để kiểm thử bảo mật website 54

3.4.1 Download 54

3.4.2 Yêu cầu về cấu hình cài đặt tool Acunetix 54

3.4.3 Sử dụng Acunetix Web Vulnerability 54

3.4.4 Kết quả thực nghiệm 61

3.5 Đánh giá kết quả thực nghiệm 61

Kết luận chương 3 62

KẾT LUẬN 64

1.Những đóng góp của luận văn 64

2.Hướng phát triển 64

IV DANH MỤC CÁC TÀI LIỆU THAM KHẢO 65

Trang 7

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT

AWV Acunetix Web Vulnerability Công cụ kiểm thử Acunetix

DFT Data Follow Testing Kiểm thử luồng dữ liệu

HTML HyperText Markup Ngôn ngữ Đánh dấu Siêu văn

Trang 8

DANH MỤC CÁC BẢNG

Bảng 2.1- Các trường hợp kiểm định: 21

Bảng 2.2: Bảng phân đoạn tương đương 29

Bảng 2.3: Bảng phân đoạn tương đương dùng cho giá trị biên 30

Bảng 2.4: Bảng quyết định 32

Bảng 3.1: Bảng so sánh kết quả kiểm thử 2 website bằng công cụ Acunetix 62

Trang 9

DANH MỤC CÁC HÌNH

Hình 1.1: Minh họa lỗi Cross Site Script 9

Hình 1.2: Minh họa lỗi Directory Listing 11

Hình 2.1: Mô tả phương pháp kiểm thử hộp trắng 17

Hình 2.2: Đường diễn tiến 18

Hình 2.3: Code của hàm average 20

Hình 2.4: Flow Graph của thủ tục Average 21

Hình 2.5: Cấu trúc lặp 25

Hình 2.6: Giao diện của AppCodeScan 27

Hình 2.7: Minh họa phương pháp kiểm thử hộp đen 28

Hình 2.8: Đồ thị nguyên nhân - kết quả 31

Hình 2.9: Một số loại quan hệ giữa các nút trong đồ thị nguyên nhân – kết quả 32

Hình 2.10: Đồ thị nguyên nhân - kết quả 33

Hình 2.11: Giao diện Wa3f 35

Hình 2.12: Giao diện WebScarab 36

Hình 2.13: Giao diện BurpSuite 37

Hình 2.14: Quy trình kiểm thử Fuzzing 41

Hình 2.15: Kiểm thử website dựa trên kỹ thuật Fuzzing 46

Hình 2.16: Hình ảnh của Nikto 47

Hình 2.17: Giao diện của công cụ Appscan 48

Hình 3.1: Giao diện chính của công cụ Acunetix (AWV) 55

Hình 3.2: Cửa sổ lựa chọn “Scan Type” 56

Hình 3.3: Cửa sổ tùy chọn “Options” 57

Hình 3.4: Cửa sổ Customize Setting 58

Hình 3.5: Cửa sổ Target 1 59

Hình 3.6: Cửa sổ thiết lập login 59

Hình 3.7: Cửa sổ Finish 60

Hình 3.8: Cửa sổ hiển thị màn hình đang quét 60

Hình 3.9: Màn hình kết quả sau khi quét Web1 61

Hình 3.10: Màn hình kết quả sau khi quét Web2 61

Trang 10

cố do tấn công DdoS Gần đây vào ngày 29/7/2016, trang mạng chính thức của Vietnam Airlines đã bị hacker tấn công chiếm quyền kiểm soát và chuyển sang trang mạng xấu ở nước ngoài Dữ liệu của một số hội viên khách hàng thường xuyên của Vietnam Airlines đã bị công bố, [9]

Khả năng có thể truy nhập 24/7 từ bất cứ nơi nào trên thế giới hay các ứng dụng web không an toàn thường cung cấp truy nhập dễ dàng đến cơ sở dữ liệu

là một sơ hở lớn cho phép tin tặc có thể thực hiện các hoạt động bất hợp pháp bằng cách sử dụng các trang web đã tấn công Hầu hết nguyên nhân của các vụ tấn công này là do website tồn tại nhiều lỗ hổng bảo mật

Một điều đáng lo ngại nữa là đối với các cá nhân, tổ chức và doanh nghiệp, CNTT nói chung và các ứng dụng web nói riêng đang trở thành một trong các nhân tố, công cụ đắc lực hỗ trợ tăng hiệu suất làm việc và lợi nhuận, hiệu quả kinh tế cao cho họ, nhưng sự quan tâm, và chi phí bỏ ra cho lĩnh vực bảo trì, bảo mật lại không đáng kể Đồng thời các mối nguy hiểm đe dọa ngày càng mới

và phát triển phức tạp hơn, khả năng tấn công và khai thác của các kẻ xấu đã tăng lên rõ rệt, các mã độc, phần mềm độc hại, virut trở nên khó phát hiện và tiêu diệt hơn

Vì vậy vấn đề an ninh mạng nói chung và bảo mật Web Application nói riêng đang là một vấn đề quan trọng và cấp bách cần phải được nghiên cứu, tìm hiểu và đưa ra các giải pháp và kỹ thuật mới để phòng tránh, đồng thời cá nhân,

tổ chức và doanh nghiệp cũng cần dành nhiều thời gian, kinh phí, nhân lực kỹ thuật để đảm bảo cho hệ thống mạng cũng như Web Application của mình hoạt

Trang 11

động tốt, có khả năng chống chọi và ngăn chặn trước các mối nguy hiểm và các cuộc tấn công

Đó là lý do em đã chọn đề tài: “Nghiên cứu kiểm thử bảo mật website” để làm luận văn tốt nghiệp với mục đích hiểu được việc kiểm thử website từ đó áp dụng vào công việc thực tế

1 Mục ích nghiên cứu

Tìm hiểu các vấn đề về bảo mật, các phương pháp và các công cụ kiểm thử bảo mật website lựa chọn công cụ kiểm thử và thực hiện thử nghiệm kiểm thử bảo

mật website qua đó đánh giá kết quả

- Tìm hiểu tổng quan về bảo mật

- Nghiên cứu các loại kiểm thử bảo mật, quy trình kiểm thử bảo mật

- Nghiên cứu các phương pháp và các công cụ tương ứng trong kiểm thử bảo mật website

o Phương pháp kiểm thử hộp đen

o Phương pháp kiểm thử hộp trắng

o Phương pháp kiểm thử Fuzzing

- Phân tích đánh giá, lựa chọn công cụ và thực hiện kiểm thử bảo mật website

- Đánh giá kết quả đạt được

2 Đối tượng và phạm vi nghiên cứu

Trong khuôn khổ luận văn thuộc loại nghiên cứu và ứng dụng, em chỉ giới hạn nghiên cứu các vấn đề sau:

- Nghiên cứu các phương pháp và các công cụ tương ứng trong kiểm thử bảo mật website

- Phân tích đánh giá, lựa chọn công cụ và thực hiện kiểm thử bảo mật website

Trang 12

Nội dung luận văn: Được trình bày làm 3 chương chính

Chương 1: Tổng quan về bảo mật website

Chương này trình bày tổng quan, mục đích của bảo mật, thống kê tình trạng bảo mật website và các phương pháp tấn công website phổ biến

Chương 2: Nghiên cứu kiểm thử bảo mật website

Trình bày các vấn đề liên quan đến kiểm thử bảo mật: Mục đích của kiểm thử bảo mật, các loại kiểm thử bảo mật, quy trình kiểm thử bảo mật, các phương pháp kiểm thử bảo mật và các công cụ kiểm thử bảo mật từ đó đánh giá lựa chọn đề xuất sử dụng công cụ kiểm thử bảo mật

Chương 3: Sử dụng công cụ “Acunetix Web Vulnerability” ể kiểm thử bảo mật website

Trình bày tổng quan các tính năng chính của công cụ “Acunetix Web Vulnerability”, cách sử dụng và đánh giá kết quả

Cuối cùng là kết luận về những đóng góp của luận văn và hướng phát triển Mặc dù có nhiều cố gắng để hoàn thành luận văn nhưng do thời gian và khả năng có hạn, nên không tránh khỏi những hạn chế, nhược điểm Kính mong các thầy cô và đồng nghiệp đóng góp ý kiến

Xin trân trọng cảm ơn

Trang 13

CHƯƠNG 1 - TỔNG QUAN VỀ BẢO MẬT WEBSITE 1.1 Tổng quan về bảo mật

Bảo mật cần sự thỏa hiệp giữa v i ệ c đảm bảo an ninh và chức năng hay khả năng sử dụng của hệ thống Nếu bảo mật quá chặt chẽ, hệ thống sẽ trở nên rất khó sử dụng hoặc khó hoạt động một cách hiệu quả Nếu bảo mật quá đơn giản, hệ thống dễ bị tấn công và xâm nhập

Kiểm thử bảo mật Web, theo nghĩa truyền thống, là đánh giá hiệu quả sự bảo vệ toàn bộ hệ thống Web Nó yêu cầu kết hợp nhiều kiến thức về các công nghệ bảo mật, công nghệ mạng, lập trình, và kinh nghiệm thực tế về thâm nhập các hệ thống mạng Hầu hết các kiểm thử viên phần mềm không có đầy đủ kiến thức này Do đó chúng ta cần nghiên cứu, tìm hiểu các kiến thức về bảo mật cho website từ đó có thể đưa ra cách thức thực hiện cũng như đánh giá về khả năng bảo mật của website

1.2 Mục ích của bảo mật

Tùy thuộc vào các yêu cầu của mỗi hệ thống, mỗi hệ thống có những mục đích khác nhau, nhưng yêu cầu bảo mật đều có điểm chung là: Đảm bảo sự an toàn dữ liệu cho hệ thống và bảo vệ các tài nguyên trên mạng trước sự tấn công nhằm phá vỡ hệ thống hoặc sử dụng trái phép các tài nguyên của một số người có chủ ý xấu

1.3 Thống kê tình trạng bảo mật hiện nay của các trang web

Theo thống kê của trang web bảo mật Security Daily [7], có đến 1039 website

của Việt Nam bị tấn công trong vòng nửa đầu tháng 9 năm 2015 Trong số này, có

69 website giáo dục và hơn 30 website của các cơ quan thuộc Chính phủ Việt Nam Hơn 1000 website các lỗ hổng bị tấn công đều là các lỗ hổng cơ bản và đã tồn tại cách đây hơn chục năm và các hacker có thể dễ dàng tấn công các website này Số lượng các website bị tin tặc tấn công sẽ còn tiếp tục tăng trong thời gian tới

Theo thống kê khác [8] của Bkav, tại Việt Nam, trung bình mỗi tháng lại có hơn 300 website của các doanh nghiệp, tổ chức trong nước bị tấn công Tỷ lệ

Trang 14

website tồn tại lỗ hổng ở khu vực Châu Á là 36%, Châu Âu 15%, Châu Mỹ 5% và Châu Phi 33% thì tại Việt Nam tỷ lệ này là 40% Như vậy, mức độ bảo mật của hệ thống các webstie Việt Nam chỉ ở mức trung bình so với các nước trong khu vực và thấp so với trên thế giới Trong đó đáng chú ý là 30% các website ngân hàng tại Việt Nam tồn tại lỗ hổng Và có tới 2/3 trong số này ở mức độ nguy hiểm trung bình và cao

Lỗ hổng nguy hiểm nhất mà các website ngân hàng đang gặp phải là SQL Injection mở đường cho tin tặc tấn công trực tiếp vào dữ liệu của website Các lỗ hổng XSS (Cross Site Scripting) và Open Redirection gây nguy cơ chiếm quyền điều khiển của quản trị hoặc chuyển hướng website đến trang lừa đảo

1.4 Một số phương pháp tấn công phổ biến hiện nay

1.4.1 Tấn công SqlInjection [4][6][15]

1.4.1.1 Khái quát

Lỗ hổng injection là loại lỗ hổng liên quan tới việc thao tác với CSDL, bao gồm các hệ quản trị CSDL quan hệ (Mysql, MSSQL, Oracle…), các dữ liệu XML… Nguyên nhân chủ yếu là do người lập trình không kiểm duyệt hoặc có kiểm duyệt chưa tốt dữ liệu nhập vào, tin tặc dễ dàng có thể vượt qua để chèn các câu lệnh truy vấn như SQL, XQuery…, khi chèn thành công tin tặc có thể đọc, thêm sửa, xóa thông tin trong CSDL của hệ thống

Về mặt lý thuyết, lỗ hổng injection tưởng chừng rất đơn giản nhưng đây là một trong những loại tấn công phổ biến và nguy hiểm nhất hiện nay Dựa vào các lỗi Injection, tin tặc có thể thao tác trực tiếp CSDL của hệ thống, đọc tệp tin, ghi tệp tin nhằm tạo backdoor và chiếm quyền điều khiển hệ thống

1.4.1.2 Minh họa

Nếu lập trình viên không kiểm soát tốt các giá trị biến nhập vào từ người dùng, tin tặc có thể lợi dụng để chèn các đoạn mã độc nhằm thay đổi cấu trúc câu truy vấn và lộ các thông tin về hệ thống Chẳng hạn, một kịch bản quen thuộc để lấy thông tin của hệ thống như sau:

URL: https://test.com/ injection/user.php?id=1

Trang 15

Với một giá trị ID chính xác được nhập vào là 1 hệ thống sẽ trả về người dùng có

ID bằng 1

Quá trình xử lý của hệ thống

PHP Code

$id = $_REQUEST[“id”];

$query = “SELECT * FROM users where userID=”.$id;

Hệ thống không có quá trình kiểm duyệt dữ liệu ID từ người dùng

Trong trường hợp này ta thấy, nếu người dùng gửi đường dẫn có giá trị id = x thì

kết quả trả về của hệ thống sẽ hoàn toàn bình thường

Nhìn kỹ đoạn mã PHP xử lý ta thấy biến $id được đưa ngay vào câu truy vấn mà

không được kiểm duyệt trước, tin tặc hoàn toàn có thể chèn một số mã độc để lấy

thông tin về hệ thống Chẳng hạn, thay vì gửi giá trị id = 1 tin tặc sẽ gửi giá trị id = -1 or 1=1

URL: https://test.com/ injection/user.php?id= -1 or 1=1 -

Khi đó câu truy vấn của chúng ta sẽ trở thành

SELECT * FROM users WHERE userID=-1 or 1=1 -

Rõ ràng với điều kiện WHERE userID = -1 thì CSDL sẽ không trả về bản ghi nào trả về Tuy nhiên, do đoạn mã or 1=1 - đã được tin tặc chèn vào Nên điều kiện

sau WHERE sẽ trở nên luôn đúng và kết quả là CSDL sẽ trả về tất cả các bản ghi có

trong bảng users

Bằng những cách thức nâng cao khác, tin tặc hoàn toàn có thể chèn các đoạn mã nguy hiểm hơn để lấy toàn bộ thông tin về hệ thống, đọc ghi tệp tin bằng các hàm trong CSDL như: outfile, load_file (MySQL), execute (MSSQL) lên hệ thống từ đó hình thành những cửa sau (backdoor) và sau cùng là chiếm quyền điều khiển toàn

bộ hệ thống

Với kiểu tấn công Xpath Injection ta cũng có thể khai thác hoàn toàn tương tự Mức độ nguy hiểm của SQL/Xpath Injection là rất cao bởi vì nó tác động trực tiếp đến CSDL: ăn cắp thông tin người dùng, thay đổi làm sai lệch các thông tin quan trọng, thêm sửa xóa CSDL… Rõ ràng, với một hệ thống website đặc biệt là các hệ thống có liên quan đến tài chính như ngân hàng, thì việc thông tin bị đánh cắp hay thay đổi sẽ gây những thiệt hại vô cùng lớn

Trang 16

1.4.1.3 Cơ chế phát hiện

Tương tự như quá trình khai thác một lỗi SQL chúng ta cũng có thể phát hiện

tự động các hệ thống có ẩn chứa những mối nguy hiểm như vậy Có thể phát hiện các lỗi SQL/Xpath Injection bằng 4 phương pháp chính:

- Dựa trên các thông báo lỗi từ hệ thống, từ CSDL của hệ thống

- Dựa trên kỹ thuật Boolean based (kiểm tra kết quả khác nhau của các câu

truy vấn khác nhau, ví dụ như khi chèn or 1=1 và or 1=2)

- Dựa trên kỹ thuật nối câu truy vấn (UNION query)

- Dựa trên kỹ thuật timebased: sử dụng các hàm thao tác với thời gian trong hệ quản trị CSDL và kiểm tra timeout của kết quả trả về

1.4.1.4 Các thức phòng tránh

Lỗ hổng SQL Injection/Xpath Injection xảy ra do các biến được nhập vào từ người dùng không được kiểm soát chặt chẽ trước khi xây dựng câu truy vấn tới CSDL Đó chính là nguyên nhân chung nhất của các lỗ hổng dạng Injection

Lỗ hổng SQL Injection/Xpath Injection xảy ra khi có kết hợp cả 2 điều kiện:

- Có sự truy vấn tới CSDL

- Câu truy vấn chưa được kiểm soát sự an toàn

Có thể khẳng định chắc chắn rằng, một biến được nhập vào từ người dùng, qua nhiều bước xử lý trung gian xây dựng câu truy vấn tới CSDL mà không có bất cứ bước kiểm tra sự an toàn nào thì chắc chắn sẽ mắc các lỗ hổng Injection Đây cũng chính là điểm mấu chốt để nhận diện và phòng chống các lỗ hổng Injection Phương pháp hữu hiệu nhất để chống tấn công SQL/Xpath Injection là kiểm soát thật chặt chẽ các giá trị nhập được nhập vào từ người dùng

Trang 17

1.4.2 Tấn công Cross Site Scripting [15]

1.4.2.1 Khái quát

Cross-site Scripting (XSS) là lỗ hổng cho phép tin tặc có thể chèn những đoạn mã client-script (thường là Javascript, JScript, DHTML và cũng có thể là cả các thẻ HTML) vào trang web, khi người dùng vào những trên web này, mã độc sẽ được thực thi trên máy của người dùng và thực hiện các mục đích mà kẻ tin tặc mong muốn

Khác với SQL Injection tấn công vào CSDL của website, XSS tấn công trực tiếp vào người dùng Lợi dụng lỗi XSS này, tin tặc có thể:

- Lừa đảo người quản trị của website, lấy cắp cookie, chiếm session… từ đó có thể đăng nhập chiếm quyền điều khiển website

- Thực thi các mã độc javascript tùy ý nhằm tấn công vào người dùng

- Phát tán các thông tin xấu lên hệ thống

Hiện nay, kĩ thuật tấn công XSS đã nhanh chóng trở thành một trong những lỗ hổng phổ biến nhất của các ứng dụng web Mối đe doạ của chúng đối với người sử dụng ngày càng lớn

Trang 18

Khi đó đó hay vì hiện dữ liệu như bình thường hệ thống xuất hiện một popup hiển thị cookie của người dùng:

Hình 1.1: Minh họa lỗi Cross Site Script

Nếu như thay vì chỉ hiển thị cookie của hệ thống, tin tặc có thể sử dụng một hàm gửi mail hay một hàm trong javascript để gửi thông tin về cookie của người dùng về cho tin tặc thì tin tặc hoàn toàn có thể đăng nhập vào tài khoản của người dùng bằng cách set giá trị cookie nhận được vào trình duyệt của tin tặc Tin tặc sẽ có đủ các quyền như người dùng khi đăng nhập vào hệ thống Cũng với lỗi này tin tặc cũng có thể chèn các đoạn virus javascript, cài đặt add-on, download mã độc, … vào trình duyệt và máy của của người dùng

Trang 19

- Hàm htmlentities() – trong ngôn ngữ PHP

- Hàm htmlEncode() – trong ngôn ngữ C#

Trong jsp cung cấp cú pháp: ${specialCharString} để thực hiện encode html tag

1.4.3 Lỗ hổng Directory Listing [14]

1.4.3.1 Khái quát

Trong các webserver, khi chúng ta thực hiện truy nhập vào một thư mục web, nếu tồn tại các tệp tin mặc định của hệ thống thì hệ thống sẽ gọi đến ngay các tệp tin mặc định như: index.html, index.jsp, index.php, default.asp… Tuy nhiên nếu trong thư mục không tồn tại các tệp tin mặc định hoặc cơ chế cấu hình riêng của website thì khi truy nhập tới các thư mục web này hệ thống sẽ hiển thị danh sách tất cả các tệp tin và thư mục con hiện có trong thư mục Với lỗ hổng này, tin tặc có thể biết được các danh sách các tệp tin có trên hệ thống và thực hiện việc đọc, truy nhập trái phép vào các tệp tin trong hệ thống

1.4.3.2 Minh họa

Dưới đây là một ví dụ về lỗi Directory Listing

Trang 20

Hình 1.2: Minh họa lỗi Directory Listing

1.4.3.3 Phát hiện

Để phát hiện lỗi trên hệ thống ta thực hiện việc truy nhập vào các thư mục của hệ thống, cụ thể truy nhập vào các URL kết thúc bằng dấu “/” Và kiểm tra sự xuất hiện của một số lỗi trả về từ hệ thống Trong mã html trả có chứa từ “index of” hoặc

“parent directory”… thì đồng nghĩa với việc hệ thống tồn tại lỗi Directory Listing

1.4.3.4 Phòng chống

Để phòng chống lỗi Directory Listing cũng hết sức đơn giản, chúng ta có thể thực hiện bằng một trong các phương pháp sau

- Thêm tệp tin mặc định vào các thư mục (index, default…)

- Thêm một số tệp tin cấu hình như htaccess trong Apache để hạn chế

- Cấu hình từ các WebServer (IIS, Apache…)

- Cấu hình phân quyền cấp người dùng khi truy nhập vào các thư mục đó

Kết luận chương

Trong chương này đã nêu lên các khái niệm cơ bản về bảo mật, mục đích của bảo mật, thống kê tình trạng bảo mật của website Đồng thời giới thiệu một số lỗ hổng phổ biến hiện nay Để đảm bảo an toàn cho website cần thực hiện kiểm thử bảo mật cho chúng Việc áp dụng các phương pháp kiểm thử bảo mật website sẽ được giới thiệu ở chương 2 kiểm thử bảo mật website

Trang 21

CHƯƠNG 2 – KIỂM THỬ BẢO MẬT WEBSITE

2.1 Giới thiệu về kiểm thử phần mềm

Kiểm thử phần mềm được định nghĩa theo nhiều nguồn khác nhau, dưới đây một số định nghĩa phổ biến hiện nay

Kiểm thử phần mềm (kiểm tra, thử nghiệm) là một cuộc kiểm tra được tiến hành để cung cấp cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ được kiểm thử Kiểm thử có thể cung cấp cho doanh nghiệp một quan điểm, một cách nhìn độc lập về phần mềm để từ đó cho phép đánh giá

và thấu hiểu được những rủi ro trong quá trình triển khai phần mềm Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi [22]

Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần mềm trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho người có lợi ích liên quan những thông tin về chất lượng của sản phẩm hay dịch vụ phần mềm ấy Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác nhau

2.2 Kiểm thử bảo mật

2.2.1 Nhiệm vụ của kiểm thử bảo mật

Với tư cách là kiểm thử viên, là tập trung kiểm thử bảo mật của Website và ứng dụng Web Điều đó có nghĩa là chúng ta tìm kiếm các lỗ hổng và rò rỉ thông tin gây nên chủ yếu do lập trình và do cấu hình sai các trình chủ Web và các trình chủ ứng dụng khác

2.2.2 Trách nhiệm của kiểm thử bảo mật

Kiểm thử bảo mật liên quan đến trách nhiệm của nhiều người khác nhau sau đây:

- Nhà định nghĩa chính sách (policymaker), định nghĩa các yêu cầu bảo mật nhằm tăng độ tin cậy của người sử dụng và nhà sản xuất về bảo mật hệ thống

- Người quản trị mạng, thiết kế và cài đặt các biện pháp bảo mật nhằm cung cấp bảo mật ở mức hoạt động

Trang 22

- Lập trình viên phần mềm, chịu trách nhiệm kiểm thử hệ thống nhằm phát hiện các lỗi chức năng, tương tác cấu hình và khả năng tương thích khi họ liên quan đến cài đặt bảo mật (chủ yếu ở mức ứng dụng và có thể ở mức hoạt động), phát hiện các vấn đề do lỗi thiết kế bảo mật

- Các chuyên gia và nhà tư vấn bảo mật, giúp kiểm thử và duy trì các chương trình bảo mật cũng như xử lý các lỗ hổng bảo mật

2.2.3 Mục đích kiểm thử bảo mật

Kiểm thử bảo mật cho website nhằm mục đích tìm ra các lỗi về bảo mật của website

nó là cơ sở để xác định các lỗ hổng bảo mật

2.3 Các loại kiểm thử bảo mật

2.3.1 Kiểm thử yêu cầu và thiết kế

Bất kỳ hệ thống nào cũng được xây dựng từ một tập hợp các yêu cầu Đôi khi những yêu cầu này được viết một cách rõ ràng, nhưng thường chúng là những phát biểu mập mờ không được định nghĩa rõ ràng về tính bảo mật Ví dụ, có thể

có phát biểu “Ứng dụng phải an toàn” Nhưng “an toàn” nghĩa là gì và nên phải dành bao nhiêu công sức và thời gian để làm cho sản phẩm an toàn Kiểm thử bảo mật ở giai đoạn yêu cầu thiết kế cho ứng dụng web chính là việc xem xét các yêu cần thiết có đã mô tả rõ các tiêu chí cụ thể về yêu cầu bảo mật cho ứng dụng web hay chưa

2.3.2 Kiểm thử mã nguồn

Kiểm tra độ bảo mật của ứng dụng thông qua mã nguồn của ứng dụng Loại kiểm thử này chủ yếu dùng để xác định sự an toàn của thuật toán được dùng trong ứng dụng, xác độ nguy cơ rỏ rỉ thông tin, nguy cơ bị tấn công chiếm quyền kiểm soát thông qua mã nguồn Loại kiểm thử này này thường ứng dụng kỹ thuật kiểm thử hộp trắng

2.3.3 Kiểm thử các thiết lập của trình duyệt

Các thiết lập của trình duyệt có thể được cài đặt trong các trình duyệt như Mozilla FireFox và Microsoft Internet Explorer cho phép giới hạn truy nhập đến các nội dung internet có thể gây hại Người sử dụng sẽ thường có các

Trang 23

chỉnh sửa các thiết lập này Hơn nữa, có một sự thay đổi lớn phía người sử dụng

về khả năng làm chủ các thiết lập này Những người sử dụng Web ngày càng được đào tạo nhiều hơn cách sử dụng các thiết lập để bảo vệ chính họ Với tư cách là một đội phát triển Website hay ứng dụng Web, chúng ta không thể bắt buộc người sử dụng chấp nhận các thiết lập mặc định Vì vậy, chúng ta cần phải kiểm thử nhiều sự kết hợp của các thiết lập

2.3.4 Kiểm thử bức tường lửa

Cần nhắc lại rằng nhóm kiểm thử phần mềm không chịu trách nhiệm kiểm thử sự hiệu quả của các tường lửa và sự cấu hình chúng Kiểm thử tường lửa nhằm nhận biết các hiệu ứng về chức năng được tạo ra bởi sự chuyển dữ liệu qua các mạng khác nhau Một số mạng riêng và một số khác công cộng

2.4 Quy trình kiểm thử bảo mật website [10][11]

 Bước đầu tiên là phải hiểu được nghiệp vụ hệ thống, mục tiêu bảo mật và tuân thủ bảo mật của tổ chức Việc lập kế hoạch kiểm tra nên xem xét tất cả các yếu tố bảo mật

 Thu thập tất cả các thông tin thiết lập hệ thống được sử dụng để phát triển phần mềm và mạng giống như hệ điều hành, công nghệ, phần cứng

 Check list các lỗ hổng và rủi ro bảo mật, chuẩn bị kế hoạch kiểm tra để giải quyết những vấn đề này

 Đối với mỗi mối đe dọa được xác định, lỗ hổng và rủi ro bảo mật chuẩn bị

ma trận lưu vết (traceability matrix)

 Tất cả các thử nghiệm bảo mật có thể không thể thực hiện bằng tay, do đó xác định các công cụ để thực hiện tất cả các trường hợp kiểm tra bảo mật nhanh hơn và đáng tin cậy hơn

 Chuẩn bị các testcase kiểm tra bảo mật

 Thực hiện test các testcase đó và retest các bug đã được sửa

 Thực hiện test tích hợp

 Chuẩn bị báo cáo chi tiết về kiểm tra bảo mật, trong đó có lỗ hổng bảo mật

và các mối đe dọa, rủi ro chi tiết, và các vấn đề bảo mật khác

Trang 24

2.4.1 Kiểm thử bảo mật thủ công (manually) [11][12]

a, Kiểm thử thủ công

Kiểm thử thủ công là quá trình kiểm thử mà người kiểm thử phải xác định vị trí

dữ liệu cần được gửi đến ứng dụng bằng cách sử dụng các intercepting proxy (là một ứng dụng nằm giữa ứng dụng và trình duyệt, cho phép người kiểm thử thay đổi giá trị một cách tùy biến trước khi gửi đến đến ứng dụng) và tập dữ liệu cần gửi đến ứng dụng tương ứng với các vị trí gửi đã xác định trước đó Kiểm thử thủ công bao gồm design, business logic cũng như xác minh mã nguồn Quá trình kiểm thử thâm nhập:

 Xác định các lỗ hổng có trong hệ thống là bước quan trọng đầu tiên trong quá trình

 Hoạt động sửa chữa được thực hiện trên những lỗ hổng này

 Kiểm thử thâm nhập tương tự sẽ được lặp lại cho đến khi hệ thống từ chối tất cả các cuộc kiểm tra

b, Các bước kiểm thử bảo mật thủ công

 Thu thập dữ liệu: Các phương pháp khác nhau bao gồm tìm kiếm Google được

sử dụng để có được dữ liệu hệ thống Một trong các phương pháp này cũng có thể sử dụng kỹ thuật phân tích trang mã nguồn web để có thêm thông tin về hệ thống, phiên bản phần mềm và plugin Có rất nhiều công cụ miễn phí và dịch vụ

có sẵn trên thị trường mà có thể cung cấp các thông tin như cơ sở dữ liệu hoặc bảng tên, phiên bản DB, các phiên bản phần mềm, phần cứng và sử dụng plugin của bên thứ 3 trong hệ thống mục tiêu

 Đánh giá tính chất dễ bị tổn thương của hệ thống: Dựa trên các dữ liệu thu thập được trong thước đầu tiên người ta có thể tìm thấy những điểm yếu bảo mật trong các hệ thống mục tiêu Điều này giúp nhân viên kiểm thử bảo mật khởi động các cuộc tấn bằng việc sử dụng các đường xâm nhập đã được xác định vào

hệ thống

 Khai thác thực tế: Đây là một bước cực kỳ quan trọng Nó đòi hỏi kỹ năng và kỹ thuật đặc biệt để khởi động cuộc tấn công và hệ thống mục tiêu Những kinh

Trang 25

nghiệm về bảo mật của nhân viên kiểm thử có thể sử dụng kỹ năng của họ để khởi động cuộc tấn công vào hệ thống

 Phân tích kết quả và chuẩn bị báo cáo: Sau khi hoàn thành kiểm thử thâm nhập báo cáo chi tiết được chuẩn bị cho những hoạt động khắc phục lỗi Tất cả các lỗ hổng được xác định và các phương pháp khắc phục được liệt kê trong bản báo cáo Bạn có thể tùy chỉnh định dạng báo cáo lỗ hổng (HTML, XML, MS Word hoặc PDF) theo như yêu cầu của tổ chức

Quá trình tìm kiếm lỗi bảo mật trong mã nguồn của ứng dụng bằng phương pháp thủ công thì phải đòi hỏi người kiểm thử phải có một phương pháp kiểm thử và ra soát hợp lý Bởi vì khối lượng tập tin cũng như nội dung trong các ứng dụng web là rất lớn, nếu như không có một phương pháp rà soát và đánh giá hợp lý thì sẽ tiêu tốn rất nhiều thời gian để phát hiện lỗi

2.4.2 Kiểm thử bảo mật tự động (Automation) [11][12]

Phương pháp kiểm thử lỗi tự động là quá trình các công cụ sẽ thực hiện tự động

quét thư mục, tập tin của ứng dụng web và tự động xác định các điểm mà cần đệ trình dữ liệu Trên cơ sở đã xác định các điểm cần gửi tự động đến công cụ sẽ thực hiện gửi các tập dữ liệu được định nghĩa sẵn và chờ sự phản hồi từ phía ứng dụng web để kiểm tra xem liệu ứng dụng đó có bị các lỗi bảo mật hay không?

Công cụ tự động có thể được sử dụng để xác định một số lỗ hổng tiêu chuẩn hiện tại trong một ứng dụng Công cụ kiểm thử bảo mật quét mã hiện nay dùng để kiểm tra xem có mã độc hay không có thể dẫn đến vi phạm an ninh tiềm tàng Công cụ kiểm thử bảo mật không thể xác minh lỗ hổng bảo mật hiện tại trong hệ thống như các kỹ thuật mã hóa dữ liệu và các giá trị mã cứng giống như username và password

Các tiêu chí để chọn công cụ kiểm thử bảo mật tốt nhất:

 Nó sẽ dễ dàng được triển khai, cấu hình và sử dụng

Trang 26

 Nó sẽ tạo ra các báo cáo và các bản ghi chi tiết về lỗ hổng

2.5 Các phương pháp kiểm thử bảo mật [14][23]

2.5.1 Phương pháp kiểm tra hộp trắng

2.5.1.1 Nội dung phương pháp [1][2][23]

Phương pháp kiểm tra hộp trắng các lỗi bảo mật trên ứng dụng web là quá trình kiểm tra trực tiếp mã nguồn của ứng dụng web để tìm ra các lỗi bảo mật Quá trình quan sát và kiểm tra mã nguồn có thể thực hiện thủ công hoặc thực hiện bằng công

cụ Quá trình thực hiện bằng công cụ tức là quá trình mà công cụ sẽ thực hiện quét toàn bộ mã nguồn của ứng dụng và dựa trên tập nhận biết các hàm, các chỉ dẫn có khả năng gây ra lỗi bởi ngôn ngữ lập trình phát triển ứng dụng web

Hình 2.1: Mô tả phương pháp kiểm thử hộp trắng

Trước tiên ta thảo luận một số khái niệm cần thiết cho các phần trình bày sau: Khái niệm một đường diễn tiến của chương trình là một tập hợp lệnh được thực thi

có thứ tự trong chương trình Để đơn giản hơn có thể hiểu một đoạn chương trình hay một chương trình chứa rất nhiều các đường diễn tiến tại một lệnh điều kiện rẽ nhánh tạo ra một tập đường mới

Hộp Trắng

Ứng dụng

Trang 27

Hình 2.2: Đường diễn tiến

Trong ví dụ trên ta sẽ có 2 đường một đường khi điều kiện A nhận giá trị đúng

và một đường khi điều kiện A mang giá trị sai

Trong kiểm thử hộp trắng, các trường hợp kiểm thử được thiết kế để xem xét trên cấu trúc nội bộ của module và cấu trúc logic và cấu trúc điều khiển Các trường hợp kiểm thử sẽ duyệt qua tất cả các lệnh trong chương trình Tuy nhiên điều này cũng gặp các khó khăn như trình bày ở trên bởi số lượng công việc phải làm Vậy tại sao ta không tập trung vào chỉ thiết kế các trường hợp kiểm thử dựa trên kỹ thuật kiểm thử hộp đen Câu trả lời nằm trong nhưng yếu điểm tự nhiên của phần mềm

 Những lỗi về lý luận và những giả sử không chính xác có xác xuất xảy ra tương đương với những trường hợp đúng Những lỗi có khuynh hướng xuất hiện khi chúng ta thiết kế và cài đặt chương trình, các biểu thức điều kiện, hoặc các biểu thức điều khiển, và các lỗi thường có khuynh hướng xuất hiện

ở các trường hợp đặc biệt

 Chúng ta thường tin rằng một đường diễn tiến nào đó sẽ không được thực thi Tuy nhiên thực tế thì nó có thể được thực thi Luồng diễn tiến của chương trình đôi khi chỉ là mang tính trực giác, có thể hiểu là một giả định tưởng tượng của người lập trình về luồng điều khiển và dữ liệu đã làm cho chúng ta tạo ra lỗi Lỗi loại này có thể được phát hiện bằng một trường hợp kiểm thử trên một đường diễn tiến

Điều Kiện A

Lệnh thực hiện

False

True

Trang 28

 Những lỗi về cài đặt sai do lỗi gõ phím là ngẫu nhiên và có thể xuất hiện tại bất kỳ đâu trong chương trình Khi một chương trình được chuyển đổi từ ý tưởng thiết kế sang thành mã chương trình Một số lỗi do dánh sai hiểu sai xuất hiện Phần lớn có thể được phát hiện bỏi những hệ thống kiểm tra cú pháp của ngôn ngữ, nhưng một số khác sẽ không được phát hiện cho đến khi chạy kiểm thử

 Mỗi một lý do giải thích tại sao phải tạo ra các trường hợp kiểm thử dựa trên

kỹ thuật hộp trắng Hộp đen cũng được nhưng có thể một số loại lỗi ở trên sẽ không được phát hiện bởi các trường hợp sử dụng phương pháp này

 Vậy cho nên thiết kế các trường hợp kiểm thử này cần phải xem xét đến sự cân bằng giữa mức độ kiểm định và khả năng hiện thực của thiết kế Phần sau là những cấp độ kiểm định dựa trên kỹ thuật kiểm thử hộp trắng

a, Kiểm thử ường diễn tiến của chương trình

Đây là khái niệm chỉ đến việc thiết kế các trường hợp kiểm thử trên từng lệnh trong chương trình sẽ thực hiện ít nhất một lần Kỹ thuật này không quan tâm đến

ảnh hưởng lên các đường quyết định (decisions path)

Việc xây dựng tập hợp kiểm thử có thể thực hiện theo những bước sau đây:

1) Dùng tài liệu thiết kế hay source code để vẽ ra một đồ thị mô tả flow chart của chương trình hay hàm

Trang 29

Hình 2.3: Code của hàm average 1) Phân tích thủ tục average Mã lệnh của thủ tục được phân tích và biểu diễn

thành flow chart tương ứng

2) Tạo một đồ thị flow graph biểu diễn tương ứng với flow chart của hàm

average

Trang 30

Hình 2.4: Flow Graph của thủ tục Average

3) Trong trường hợp này ta có thể xác định có 6 trường hợp kiểm thử như sau :

1 value[k] = là một giá trị hợp lệ, với k < i

value[i] = -999 vơi một giá trị 2<=i <=100

Giá trị mong đợi

Giá trị trung bình mong đợi là giá trị trung bình đúng của tât cả giá trị k

Trang 31

TT Mô Tả

2 value[1] = -999

Giá trị mong đợi :

Giá trị trung bình mong đợi là giá trị trung bình -999, những biền chứa giá trị tổng cộng khác đều bằng 0

3 Cố gắng thực hiện tiến trình cho 101 giá trị hoặc hơn, 100 giá trị đầu trong value là những giá trị hợp lệ

Giá trị mong đợi :

giống như trường hợp 1

4 value[i] = giá trị hợp lệ khi i< 100

value[k]< minimum khi k < i

Giá trị mong đợi :

Giá trị trung bình mong đợi là giá trị trung bình đúng trên k giá trị và tổng nhận giá trị đúng

5 value[i] = là một giá trị hợp lệ khi i <100

value[k] > maximum khi k<=i

Giá trị mong đợi :

Giá trị trung bình mong đợi là giá trị trung bình đúng trên n giá trị và tổng nhận giá trị đúng

6 value[i] = là một giá trị hợp lệ khi i <100

Giá trị mong đợi :

Giá trị trung bình mong đợi là giá trị trung bình đúng trên n giá trị và tổng nhận giá trị đúng

Trang 32

Mỗi trường hợp được chạy và so sánh với kết quả mong đợi Nếu tất cả các trường hợp kiểm định đều cho kết quả như mong muốn thì có thể khẳng định rằng tất cả các dòng lệnh trong thủ tục average đều được kiểm thử ít nhất một lần

b, Kiểm thử cấu trúc iều khiển

Kiểm thử các biểu thức iều kiện

Kiểm thử biểu thức điều kiện là phương pháp kiểm thử trên những điều kiện logic của hàm hay module Một điều kiện đơn giản là một biến boolean hoặc là một biểu thức quan hệ:

- X hay Not X một điều kiện logic đơn giản

- Biểu thức quan hệ thường có dạng : E1 <phép toán quan hệ> E2

E1, E2 là các biểu thức số học và phép toán quan hệ là một trong các phép toán sau : <, <=, ==,! = , > hay >= Một điều kiện kết hợp của 2 hay nhiều điều kiện đơn giản, các phép toán boolean: OR (| |, AND (&) and NOT (!)

Các loại lỗi của điều kiện bao gồm:

- Lỗi trong các thao tác luận lý (lỗi tồn tại một biểu thức không đúng, thiếu hoặc thừa các thao tác luận lý):

- Lỗi do giá trị của biến luận lý

- Lỗi do dấu ngoặc

- Lỗi do phép toán quan hệ

- Lỗi trong biểu thức toán học

Mục đích của kiểm thử cấu trúc điều khiển là phát hiện không chỉ lỗi trong điều kiện mà còn những lỗi khác trong chương trình Nếu một tập kiểm thử cho một chương trình P là hiệu quả cho việc phát hiện lỗi trong điều kiện của P, thì bộ kiểm thử đò cũng có thể phát hiện các lỗi khác trong P

E1 <phép toán quan hệ> E2

Ba trường hợp kiểm thử được yêu cầu để kiểm tra là giá trị E1 lớn hơn, nhỏ hơn và bằng giá trị của E2 Nếu <phép toán quan hệ> là không đúng và E1, E2 là đúng thì 3 loại kiểm thử trên có đảm bảo có thể xác định được lỗi trong phép toán

Trang 33

quan hệ Để phát hiện lỗi trong E1và E2 thì các trường hợp kiểm thử E1 lớn hơn, nhỏ hơn E2 có thể phát hiện ra được lỗi

Một biểu thức có n biến, thì có 2n khả năng kiểm thử xảy ra khi (n>0)

c, Kiểm thử luồng dữ liệu DFT

Phương pháp kiểm thử luồng dữ liệu chọn lựa một số đường diễn tiến của chương trình dựa vào việc cấp phát, định nghĩa, và sử dụng những biến trong chương trình

Phương pháp kiểm thử luồng dữ liệu yêu cầu rằng tất cả các chuỗi DU đều được kiểm thử ít nhất một lần Có thể thấy rằng bộ kiểm thử cho luồng dữ liệu có thể không bao trùm tất cả các nhánh của chương trình Tuy nhiên nếu môt nhánh đảm bảo được sẽ được phát hiện bởi phương pháp kiểm thử này Trong một số hiếm trường hợp như là cấu trúc lệnh if-then trong phần then không có định nghĩa thêm một biến nào và phần else không tồn tại Trong tình huống này thì nhánh else của câu lênh if trên không cần thiết phải bảo hộ bởi phương pháp này

DFT rất hữu ích cho các loại kiểm thử một chương trình có nhiều lệnh if và lệnh lặp lồng nhau nhiều cấp

d, Kiểm thử vòng lặp

Vòng lặp là một trong những nền tảng cho rất nhiều các thuật toán được cài đặt trong các phần mềm Tuy nhiên, cho đến lúc này chúng ta vẫn còn ít chú ý đến việc xây dựng các trường hợp để kiểm thử

Kiểm thử vòng lặp tập trung vào tính chất của cấu trúc vòng lặp Có 4 cấu trúc vòng lặp như sau: vòng lặp đơn giản, vòng lặp móc nối, vòng lặp tạo thành tổ,

và vòng lặp không cầu trúc

Hình 2.5 mô tả các cấu trúc lặp:

Trang 34

 Chỉ cần một lần duyệt xuyên qua cả vòng lặp

 Hai lần duyệt xuyên qua cả vòng lặp

 m lần duyệt xuyên qua cả vòng lặp

 n-1, n, n+1 lần duyệt xuyên qua cả vòng lặp

2 Vòng lặp tạo tổ

Nếu như chúng ta mở rộng phương pháp kiểm thử cho vòng lặp đơn thì số lượng trường hợp kiểm thử sẽ tăng rất nhiều Sau đây là một cách là giảm sồ lượng trường hợp kiểm thử:

 Bắt đầu tại vòng lặp con trong cùng Thiết lập tất cả các vòng lặp khác là giá trị minimum

vòng lặp đơn

giản

vòng lặp tạo thành tổ vòng lặp móc nối

vòng lặp không cầu trúc

Trang 35

 Kiểm soát vòng lặp ở trong cùng trong khi giữ các vòng lặp bên ngoài lặp lại với giá trị là minimum thông số ảnh hưởng nhau (thông số đó có thể là biến lặp) Thêm môt số trường hợp ngoài phạm vi của biến lặp và một số giá trị đặc biệt

 Thực hiên như bước trên và tiến ra ngoài dần

 Thực hiện tiếp cho đến khi tất cả các vòng lặp được kiểm thử hết

(3) Vòng lặp móc nối

Đối với kiểu này có thể kiểm thử bằng cách như với vòng lặp đơn ở trên nếu các biền lặp độc lập với nhau Tuy nhiên nếu 2 vòng lặp là móc nối và biến lặp của vòng lặp thứ nhất được sử dụng như là biến khởi tạo cho vòng lặp 2 thì 2 vòng lặp này không còn độc lặp nữa Phương pháp dùng cho vòng lặp tạo tổ sẽ được sử dụng

ở đây

(4) Vòng lặp không có cấu trúc

Khi nào gặp các cấu trúc lặp như vậy thì nên thiết kế lại Việc kiểm thử rất phức tạp

2.5.1.2 Một số công cụ tiêu biểu

Một số công cụ giúp kiểm thử bảo mật website áp dụng phương pháp kiểm thử hộp trắng sau:

a, AppCodeScan [19]

Là công cụ hỗ trợ việc quét mã nguồn là AppCodeScan do Blueinfy Solutions Pvt Ltd phát triển

Việc thực hiện quét mã nguồn bằng công cụ rất đơn giản Chỉ cần lựa chọn thư mục

có chứa mã nguồn ứng dụng Web cần scan và thực hiện lựa chọn rule (lựa chọn các kiểu cần áp dụng cho quá trình scan)

Trang 36

Công cụ này có một tiện ích nhỏ giúp kiểm tra các biến hàm, nó chỉ thực hiện scan

mã nguồn dựa trên các tập điểm yếu xây dựng sẵn để nhận biết các điểm có thể gây

ra lỗi bảo mật trong ứng dụng Web

Hình 2.6: Giao diện của AppCodeScan [19]

b, Công cụ RATS (Rough Auditing Tool for Security) [20][21]

Công cụ RATS cũng là một trong những công cụ thực hiện rà soát mã nguồn đối với một

số ứng dụng được viết bằng các ngôn ngữ như C, C++, Perl, PHP, Python và Ruby do Secure Software Inc phát triển Công cụ này cũng chỉ dựa trên tập các hàm mà có nguy cơ gây ra lỗi bảo mật đối với dụng và nó thực hiện scan với tốc độ khá tốt Sau khi thực hiện chạy thì công cụ sẽ đưa ra một danh sách các hàm và vị trí trong mã nguồn, giúp người kiểm tra có thể nhanh chóng tập trung ra soát lại các hàm mà RATS đưa ra, kiểm tra liệu khi sử dụng các hàm đó đã an toàn hay chưa

Trang 37

2.5.2 Phương pháp kiểm thử hộp đen [1][2][23]

2.5.2.1 Nội dung phương pháp

Phương pháp kiểm tra hộp đen các lỗi bảo mật trên ứng dụng web đề cập đến việc kiểm tra các ứng dụng từ bên ngoài, tức là quan sát các dữ liệu được đệ trình đến ứng dụng và các dữ liệu từ ứng dụng xuất ra mà không cần hiểu đến hoạt động bên trong của nó Quá trình đệ trình dữ liệu từ bên ngoài đến ứng dụng có thể thực hiện bằng thủ công hoặc sử dụng công cụ tự động gửi đến ứng dụng

Hình 2.7: Minh họa phương pháp kiểm thử hộp en

2.5.2.2 Khái quát một số phương pháp kiểm thử hộp đen

a) Phân đoạn tương đương

Phân đoạn tương đương là phương pháp chia dữ liệu vào thành các đoạn, mỗi đoạn đại diện cho một số dữ liệu Và việc kiểm thử chỉ thực hiện trên đại diện đó Mục đích của phương pháp này là giảm số lượng test bằng cách chọn các tập dữ liệu đại diện

Phương pháp dựa trên một số ý tưởng sau:

Hộp đen

Ứng dụng

Ngày đăng: 30/10/2017, 14:57

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w