1. Trang chủ
  2. » Luận Văn - Báo Cáo

Phát hiện lỗ hổng sử dụng phương pháp xử lý ngôn ngữ tự nhiên

67 7 0

Đ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

Tiêu đề Phát Hiện Lỗ Hổng Sử Dụng Phương Pháp Xử Lý Ngôn Ngữ Tự Nhiên
Tác giả Phạm Ngọc Quân
Người hướng dẫn TS. Đỗ Xuân Chợ
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 67
Dung lượng 15,23 MB

Nội dung

Đối tượng của phương pháp này được đánh giá hoặc trực tiếp lấy thông tin đặc biệt từ mã nguồn và phân tích tìm ra các lỗ hồng mà kẻ tấn công có thể lợi dụng đề thực hiện các hành vi nguy

Trang 1

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

KHOA CÔNG NGHỆ THÔNG TIN I

ĐỎ ÁN

TOT NGHIỆP ĐẠI HỌC

Dé tài: “PHAT HIỆN LO HONG SỬ DUNG

Người hướngdẫn : TS Đỗ Xuân Chợ

Sinh viên thực hiện : Phạm Ngọc Quân

Trang 2

HOC VIEN CONG NGHỆ BƯU CHÍNH VIỄN THONG

KHOA CONG NGHE THONG TIN I

DO AN

TOT NGHIEP DAI HOC

Dé tai: “PHAT HIEN LO HONG SU DUNG PHUONG PHAP XU LY NGON NGU TU NHIEN”

Người hướngdẫn : TS Đỗ Xuân Chợ

Sinh viên thực hiện : Phạm Ngọc Quân

Trang 3

Đồ án tốt nghiệp Đại học

LỜI MỞ ĐẦU

Xây dựng dự án phần mềm thành công luôn là mối quan tâm hàng đầu của các tổchức, doanh nghiệp Trong đó, việc đảm bảo chất lượng của phần mềm là ưu tiên caonhất trong trong toàn bộ quá trình phát triển cũng như vận hành của phần mềm

Hiện nay, phần mềm máy tính có rất nhiều lỗ hồng, dé dàng trở thành mục tiêu

cho các cuộc tấn công có ý, trong khi các tin tặc lại có vô số các phương pháp khai thác

các lỗ hồng này Xu hướng này thực sự làm nhiều người lo ngại và cũng không ít người

lạc quan vào khả năng của các chuyên gia an ninh trong việc phát hiện và thông báo các

lỗ hồng nhờ vào những kỹ thuật mới Khi hệ thống đang tôn tại lỗ hồng, nêu người quan

lý không phát hiện ra và cài đặt bản vá trước khi tin tặc biết cách khai thác, chúng cóthé bị sử dụng đề thực hiện các hành vi nguy hiểm như đánh cắp các dtr liệu quan trọng,gây từ chối dịch vụ, và nguy hiểm nhất là năm quyền kiểm soát hệ thống và phát tán

virus.

Chính vì vậy, ngày nay các phần mềm dự đoán lỗ hồng của một phan mềm dang

phát triển mạnh mẽ, với nhiều phương pháp khác nhau Có hai phương pháp chính déphát hiện lỗi và lỗ hong phần mềm:

- Phương pháp phân tích tĩnh: là phương pháp phân tích trực tiếp trên mã nguồn

hoặc dịch ngược phần mềm mà không cần phải thực thi ứng dụng Đối tượng của phương

pháp này được đánh giá hoặc trực tiếp lấy thông tin đặc biệt từ mã nguồn và phân tích

tìm ra các lỗ hồng mà kẻ tấn công có thể lợi dụng đề thực hiện các hành vi nguy hiểm

- Phương pháp phân tích động: là phương pháp tự động phát hiện các lỗ hong qua

việc phân tích thực thi của đoạn mã hay chương trình và thực hiện phân tích cách xử lý

hay các câu trả lời của hệ thống và đưa ra nhận định

Trong hai phương pháp trên, phương pháp phân tích tĩnh là một phương pháp

mang lại hiệu quả cao trong quá trình phát hiện lỗ hồng phần mềm Tuy nhiên, cácphương pháp phân tích mã nguồn truyền thống hiện nay thường không mang lại hiệuquả hoặc kém hiệu quả vì số lượng kết quả đương tính giả (false positive) và âm tínhgiả (false negative) vẫn còn rất lớn gây khó khăn và mắt rất nhiều thời gian trong việc

kiểm tra và xử lý lỗ hong Đồ án này đưa ra một số nghiên cứu và đề xuất phương pháp

phát hiện lỗ hồng phần mềm dựa trên mã nguồn với dé tài: “Phát hiện lỗ hỗng sử dụng

phương pháp xử lý ngôn ngữ tự nhiên”

Kết cau đồ án gồm 4 phan chính:

Chương 1: Tổng quan về lỗ hồng phần mềm, chương này giới thiệu các khái

niệm chung về lỗ hồng, lỗ hỗng phần mềm, cách thức phân loại lỗ hổng phần mềm vàcác phương pháp phát hiện lỗ hồng phần mềm phổ biến hiện nay

PHAM NGOC QUAN - DI7AT02 i

Trang 4

Đồ án tốt nghiệp Đại học

Chương 2: Nghiên cứu và đề xuất, chương này giới thiệu về một số nghiên cứu

về phát hiện lỗ hồng phần mềm từ mã nguồn và đưa ra đề xuất về các mô hình áp dụngtrong phương pháp phát hiện lỗ hồng phần mềm bang kỹ thuật xử lý ngôn ngữ tự nhiên

Chương 3: Thử nghiệm và đánh giá kết quả, chương này giới thiệu về bộ ditliệu mẫu sẽ sử dụng để thử nghiệm Trình bày việc xây dựng và kết quả thử nghiệm các

mô hình phát hiện lỗ hồng phần mềm băng kỹ thuật xử lý ngôn ngữ tự nhiên Đánh giákết quả của các mô hình dé tìm được mô hình tối ưu nhất áp dụng cho hệ thống phan

mềm mới.

Chương 4: Kết luận, chương này đưa ra đánh giá về kết quả đạt được khi ápdụng kỹ thuật xử lý ngôn ngữ tự nhiên vào việc phát hiện lỗ hồng phần mềm và đưa ra

hướng phát triển của giải pháp trong tương lai

PHAM NGỌC QUAN - D17AT02 ii

Trang 5

Đồ án tốt nghiệp Đại học

LỜI CẢM ƠN

Đầu tiên, em xin bày tỏ lòng biết ơn sâu sắc nhất đến Thay giáo hướng dẫn của

em — TS.Đỗ Xuân Chợ, người đã luôn tận tình hướng dẫn và chỉ day cho em, luôn động

viên và quan tâm đến em trong suốt quá trình học tập và thực hiện đồ án tốt nghiệp này

Em xin chân thành cam ơn các Thay, Cô trong Khoa Công Nghệ Thong Tin I vatoàn thé các cán bộ của Hoc viện Công nghệ Bưu chính Viễn thông Hà Nội đã tạo điều

kiện đề em có thể được học tập trong một môi trường tốt Cảm ơn các Thầy Cô đã cungcấp cho em những kiến thức hữu ích và quan trọng trong suốt quá trình em học tập tại

trường dé em có thể hoàn thành đồ án của mình một cách tốt nhất

Xin gửi lời cảm ơn chân thành đến tất cả các bạn bè của em, những người luôn

bên em, động viên, cô vũ, tận tình giúp đỡ và tạo điều kiện thuận lợi cho em trong quá

trình làm đô án tốt nghiệp

Cuối cùng, con xin bày tỏ lòng biết ơn sâu sắc tới bố mẹ và những người thân

trong gia đình đã luôn quan tâm, chăm sóc và động viên con.

Với trình độ hiểu biết còn nhiều hạn chế của bản thân và vốn kiến thức vẫn còn

ít oi nên trong đồ án của em không tránh khỏi những thiếu sót Em rat mong nhận được

sự góp ý của các Thầy, Cô để đồ án của em được hoàn thiện hơn

Em xin chân thành cảm ơn!

Hà Nội, ngày 01 tháng O1 năm 2022

SINH VIÊN

PHẠM NGỌC QUẦN

PHAM NGOC QUAN - D17AT02 ili

Trang 6

Đồ án tốt nghiệp Đại học

NHAN XÉT, ĐÁNH GIA, CHO DIEM

(Của người hướng dẫn)

Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng cham đồ án tốt nghiệp?

Hà Nội, ngày O1 tháng O1 năm 2022

GIẢNG VIÊN HƯỚNG DẪN

(Ký và ghi rõ họ tên)

PHAM NGỌC QUAN - D17AT02 iv

Trang 7

Đồ án tốt nghiệp Đại học

NHAN XÉT, ĐÁNH GIA, CHO DIEM

(Của người phan biện)

Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng châm đồ án tốt nghiệp?

Hà Nội, ngày — tháng O1 năm 2022

GIẢNG VIÊN PHẢN BIỆN

(Ký và ghi rõ họ tên)

PHAM NGOC QUAN - DI7AT02 Vv

Trang 8

Đồ án tốt nghiệp Đại học

MỤC LỤC

0908090027005 i

09809 00005 iiiNHAN XÉT, DANH GIA, CHO ĐIỂM - 2-5 s2 ©ssssvssessessesserssrssese iv

(Cia ngurdi hung 11007777 ) iv

NHAN XÉT, DANH GIA, CHO DIEM scsssssssssessessssssessessssssssesecsncsssssesaessesneesceees V

(Của người phản ĐiỆN)), o G5 9 9 0 9H 00 0060906 M

MUC LUỤC o 5-5 G5 5 S9 9 Họ TH ọ Họ 0.000.000 000000080906 vi

DANH MỤC CAC BANG, SO DO, HINH scssssssssssssssesssesssesonsssesssecssessssseesseesseese x

KÝ HIEU CAC CUM TU VIET TẮTT -e-s° 2£ << sssesseessesssessessessse xiiCHUONG 1 TONG QUAN VE LO HONG PHAN MÈM -<<- 14

1.1 Một số định nghĩa và khái niệm - 2-5 s2 ssssssssessessessezssessesse 14

1.1.1 Định nghĩa về lỗ hồng - 2-2: 5£ ©5£©S£2EE2EE£EEESEEESEEEEEerkeerkrrrrees 141.1.2 Phân loại 16 hồngg -¿- 2 ©5£+S£+SE£EE£EEE2EEEEEEEEEEEEEEEEEEEEEEEEEEEEEcrkerkrei 15

ITĐNN/ 1.10 nang 15

1.1.2.2 Lỗ hồng phân MEM - - + 2-52 ©E2E£+EE£EE£EE£EEEEEEEEEEEEErrkrrkerkees 151.1.2.3 LO hổng MAN vevecsscecescssvesssvessssesesssssessssssvsussvssssvesssssvsassesavsnsavsecevsaeaveees 161.1.2.4 Lỗ hồng VỀ CON NUCL ceseecsesssesssesssessisssesssessssssssssessssssssssesssesssessesssecsseess 16

1.1.2.5 Lỗ hồng VỀ SÏÑ€ ¿52-56 SESESEEEEEEEEEEEEEE11E127121112112112111111.11 1y 16

1.1.2.6 Lỗ hồng VỀ tổ CHARC veeseescessessesseessessessesssessessessesssessessessesssessessessesssesseesess 161.1.3 Nguyên nhân gây ra lỗ HON ecescesesesessesseesessessessessessesesseeseesessesseaees 161.1.4 Khái niệm 16 hỗng phần mềm 2-2 2 22 +£2E£2EE+EE££E£2EE+E++rxervzez 171.2 Các loại lỗ hong phần mềm 2-2 <5 s£s£ s2 s£S2£Ss£se£ss£sessssee 18

1.2.1 Phân loại theo các sai sót của phần mềm 2-22 2+2 s+zxzzsz+z 18

1.2.1.1 Vi phạm an toàn bộ nhớ (MEMOTY SAfELY) eccceecccessccesceeseeesteeeneeteaeeees Tổ

1.2.1.2 Lỗi xác thực đầu vào (input VALIAATION) cà cc+ccxssvesssexeseessses T9

1.2.1.3 Điều kiện thực hiện (TACE COHHIÏOHI) o2 5 << 55s keessexs 19

PHAM NGOC QUAN - D17AT02 vi

Trang 9

Đồ án tốt nghiệp Đại học

1.2.1.4 Lỗi phân quyên lần lộn (Privilege conjƒlisiOH) -s5scsscs+escsez 20

1.2.1.5 Lỗi chiếm quyên thực thi (Privilege CSCAIATION) «c<<<<<+ 201.2.2 Phân loại theo quá trình phát trién phần mềm 2-2525: 20

1.3 Các giải pháp giám thiếu lỗ hồng phần mềm 5° 5° 5° se = 24

1.3.1 Phương pháp kiêm tra phần mềm - 2-2 2 22 ££+E£+E+£E+£E£E+Exvezz 24

1.3.2 Phương pháp xây dựng mô hình SAG (Security Activity Graph) 27

1.4 Phát hiện lỗ hồng phan mềm - 2 << 5° s£ s2 sSs£ss£s2£ss£sessesses 27

1.4.1 Phương pháp dự đoán tĩnh - óc 2 S333 rirrrrrirerrrrkrree 27

1.4.1.1 Phương pháp đối Chi€U HuẤU 2-5-5 S55 SE‡E£+E+E+EerEeEtertersereee 27

1.4.1.2 Phân tich tt VUNG SH HH Hư, 28 1.4.1.3 Phân tích dựa trên cây cú pháp trừu tượng (AST) «« 28 1.4.1.4 Phương pháp VÒNG ÏOQÏ - Ăn kg như 29

1.4.1.5 Phân tích luông dit liỆM - 2-52 £+ESE‡EE‡EEEEEEESEEEEErkerkerkerserkee 30

1.4.1.6 Phân tích hỏng HÓC - «cv Hư, 30 1.4.1.7 Phương pháp phân tích văn BGM Sàn seikeeeerserese 31 1.4.2 Phương pháp dự đoán động - - - 5c 3213233 SEEteireerrrrrrsrrrrrrsee 32

1.4.2.1 Kỹ thuật Tiêm lỗi (Fault inj€CfÌOH|) - 5-55 52+E+E‡+ereEererssreee 32

1.4.2.2 .s 1maadaaaaaaiđii - 32 1.4.2.3 Kỹ thuật Dynamic TÌHH Gv key 32

1.5 Phần mềm quét lỗ hỗng 2-2 << £s£s££s£ s£Ss£Ss£ss£ssEseEsszsezsessee 32

1.5.1 Gidi thigu CHUNG 1n 32

PHAM NGOC QUAN - D17AT02 vii

Trang 10

Đồ án tốt nghiệp Đại học

1.5.2 Phần mềm quét lỗ hồng là gì? - 2 2 s+++E£+E£+EE+£E+EEzEzrxsrxeee 32

I.ENG mhurge GiGi na 331.5.4 Kién tric CHUN hố 33

1.5.5 Các loại phần mềm quét lỗ h6ng cccceccessessessesssessessessesstessessessesseesseeseesees 34

1.6 Kết luận chương -s- s sssss+ss++seEssestxstxserssresrrsrrserssrssrrssrssrssrsee 35

CHƯƠNG 2 NGHIÊN CỨU VA ĐÈ XUẤT PHƯƠNG PHÁP 36

2.1 Một số nghiên cứu liên quan 2-2 2s ssssessssssessesessesserserssess 36

2.1.1 Phát hiện lỗ hồng phần mềm dựa trên luật - - 55+ +<<<<<<<++++ 362.1.2 Phát hiện lỗ hồng sử dụng hoc máy học sâu «+ «<++sxe+ssxes 36

2.2 Đề xuất phương phápp s- << se ©s£ssSSseEseEseSssExseEsersetsstsserserserssre 37

2.2.1 Học sâu sử dụng kỹ thuật xử lý ngôn ngữ tự nhiên (Natural Language

CHƯƠNG 3 THỨ NGHIEM VA ĐÁNH GIÁ KET QUA . .«- 52

3.1 Dữ liệu thr nghiéM 7G G5 9 9 99.9.9999 000 8040609006096 52 3.2 Kịch bản thử nghiệm - 2s s°s£©ss£Ss+s£Ess£sexetvserseEserssrrserssrssrse 56 3.3 Phương pháp đánh Gia c5 G5 5s 9 9 0 04 600400609066096 58

âcm sẽ 590n Ô 62

PHAM NGOC QUAN - D17AT02 Vili

Trang 11

Đồ án tốt nghiệp Đại học

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

PHAM NGOC QUAN - DI7AT02

reer rrr

1X

Trang 12

Đồ án tốt nghiệp Đại học

DANH MỤC CÁC BANG, SƠ DO, HÌNH

Bang 1.1: Phân phối lỗ hồng theo CVSS S€Ores 2-2-5 S22EE2EE‡EEtEEzEEerxerrrres 23Bảng 3.1: Các lỗ hồng trong bộ dữ liệu 2-22 5¿©2+2++EE++EEt2EEtEE+zrxezrxerxesree 56

Bang 3.2: Các kết quả thử nghiệm của kịch bản l 2 2 s+2s2z22£++zx+zxzes 59

Bảng 3.3: Các kết qua thử nghiệm của kịch bản 2 o scecscessesssessseessesstesseessecssesseesseessees 60

Bảng 3.4: Các kết quả thử nghiệm của kịch bản 3 2 2-52 ++2+2Ez2£+zxerxcres 61

Hình 1.1: Vị trí của lỗ héng trong bảo mật phan mềm - 2-2-5252 22 £++zEz+£2 18Hình 1.2: Phân phối lỗ hổng theo CVSS Scores scsssesssessesssesssesssessesssesssecssesseseseessecs 23

Hình 1.3: Vi du Security Goal Indicator Trees 20.0.0 ceeceeeseeeseeeseeceeeeeeeeeeeaeeesaeeeseeeaes 26

Hình 1.4: Ví du mô hình SAG WA ee eeeseesecsecnecseceeceeceeesseesesseeseesessessesessesenseseeeeeaes 27

Hình 1.5: Mã nguồn mau file “HelloWord.java” cc.ccsccssscssesseessessesssessesseeseeseeseeseeseees 31Hình 1.6: Kiến trúc chung phần mềm quét lỗ hồng 2-2-2 52252 +2 ++£E>s2 34Hình 2.1: Loại bỏ các thành phần nhiễu khỏi dữ liệu - - - 5 c£e£x+xzxzxzxzxz 39Hình 2.2: Các thành phan chính của mô hình Word2vec + LSTM/BiLSTM 40

Hình 2.3: Minh họa Skip-gram dưới dang mang neural - ««++s«s++ss++ 41 Hình 2.4: Minh họa CBOW dưới dang mang neural +5 <++ss+<x+sxssss 42

Hình 2.5: Mô-đun lặp lại trong RNN tiêu chuẩn chỉ chứa một lớp duy nhất 43Hình 2.6: Mô-đun lặp lại trong một LSTM chứa bốn lớp tương tác - 43Hình 2.7: Trạng thái tế bào (Cell SA(€) c5 Set 3S E1 EEESEEE111511111511111111111ExE 44Hình 2.8: Công (gate) trong LSTÌM - + 2S£+EE2E2E£EEEEEEEEEEEEE1211211 212111 xe, 44Hình 2.9: Tang sigmoid (tang công quên) trong LSTM ¿2 522-252 45Hình 2.10: Quyết định thông tin lưu vào trang thái tế bào trong LSTM 45

Hình 2.11: Cập nhật trạng thái trong LLŠ TÌM S321 vSeirsesrseeeersre 46 Hình 2.12: Bidirectional LSTM = forward LSTM + backward LSTM 47

PHAM NGOC QUAN - DI7AT02 X

Trang 13

Đồ án tốt nghiệp Đại học

Hình 2.13: Các thành phần chính của mô hình BERT -. ¿+cz+z 47

Hình 2.14: Mô hình encoder trong BIERIT” - 5 5 + E + *EkEHnngniệt 49

Hình 2.15: Các bước xử lý trong Next Sentence Prediction của BERT 50

Hình 3.1: Mô hình phát hiện lỗ hong sử dụng LSTM -2 z©5+5c5z£- 57Hình 3.2: Mô hình phát hiện lỗ hong sử dụng BERT 2 522x255: 58

PHAM NGOC QUAN - D17AT02 xi

Trang 14

Đồ án tốt nghiệp Đại học

KÝ HIỆU CAC CUM TU VIET TAT

Chit/Ky hiệu Tiéng Anh Tiếng Việt/Giải thích

AST Abstract Syntax Tree Cây cú pháp trừu tượng

Bidirectional Long Short , \

BiLSTM TNO ONE ĐH Mạng bộ nhớ dài-ngắn hai chiều

Term Memory networks

CFG Control Flow Graph Đồ thị luồng điều khiển

CV Computer Vision Thi giác máy tính

CVE Common Vulnerabilities and | Là một cơ sở dữ liệu về những lỗ

Exposures hồng và rủi ro thường thay

CVSS Common Vulnerability Hệ thống chấm điểm lỗ hồng phổ

Scoring System bién

ENISA European Union Agency for | Co quan An ninh mang Lién minh

Cybersecurity chau Au

GPU Graphics Processing Unit Bộ xử ly đồ họa

Internet Engineering Task

IETF e Nhóm đặc trách kỹ thuật Internet

Force

ISACA Information Systems Audit | Hiệp hội Kiểm tra và Kiém soát

and Control Association Hệ thống Thông tin

International Organization 2 oy ee 2, k2 ISO ca 'Tô chức tiêu chuân hóa quôc tê

for Standardization Long Short Term M ,

LSTM ong S101 0H MMOTY | Mạng bộ nhớ dài-ngắn

networks

National Institute of ¬ ta Ry A NIST Viện tiêu chuân và công nghệ

Standards and Technology

Natural Language ae lk ~ an

NLP Xu lý ngôn ngữ tự nhiên

Processing

NVD National Vulnerability Cơ sở dit liệu về lỗ hồng bảo mật

Trang 15

Đồ án tốt nghiệp Đại học

Pointerrelated Control Flow Đồ thị luồng điều khiến liên quan

PCFG k

Graph đên con tro

Chuỗi các bản ghi nhớ chứa đựng

hững nghiên cứu mới, những đổi

RFC Request for Comments : ung ne mn cou men D mas ` ø

mới, và những phương pháp luận ứng dụng cho công nghệ Internet SAG Security Activity Graph M6 hinh hoat d6ng an ninh

SCAP Security Content Giao thức tự động hóa nội dung bảo

Trang 16

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

CHUONG 1 TONG QUAN VE LO HONG PHAN MEM

Chương này giới thiệu các khái niệm chung về phát hiện lỗ hồng phan mém, các

phương pháp giảm thiểu, phát hiện lỗ hồng phan mém Đô án giới thiệu các khái niệmliên quan tới lỗ hồng nói chung, cũng như lỗ héng phan mém nói riêng Đồ án cũng

trình bày một cách khái quát các phương pháp giảm thiểu, phát hiện lỗ hồng phan mềmtrong đó tập trung làm rõ phương pháp dự đoán lỗ hồng dùng cách phân tích mã nguồn

phan mềm Đó chính là phương pháp được sử dụng trong quá trình phát hiện phan mém

của đồ án

1.1 Một số định nghĩa và khái niệm

1.1.1 Định nghĩa về lỗ hổng

Trong van dé bao mật máy tính, 16 hỗng (hay điểm yếu) là một điểm cho phép kẻ

tan công lợi dụng nhằm làm giảm sự an toàn thông tin hệ thống Một lỗ hồng được xácđịnh bởi ba yếu tố chính: Một điểm nhạy cảm của hệ thống hay lỗi, một 16 hông mà kẻtấn công thường hay truy cập tới và ba là khả năng khai thác hệ thống của các kẻ tấn

công Đề khai thác được lỗ hồng, kẻ tấn công phải có ít nhất một công cụ hoặc một kỹ

thuật để kết nối tới một điểm yếu của hệ thống Một nguy cơ bảo mật cũng có thể coi là

một lỗ hồng Hiện nay, trên thé giới có nhiều khái niệm lỗ hồng khác nhau do các tổchức, các công ty đưa ra, có thể ké đến một số khái niệm sau:

- ISO 27005 định nghĩa lỗ hồng như:

Một điềm yếu của một tài sản hoặc một nhóm tài sản có thé bị khai thác bởi mộthoặc nhiều mối đe dọa và bất cứ thứ gì có thể có giá trị cho tô chức, cho các hoạt độngsản xuất kinh doanh của tô chức, bao gồm cả các nguồn thông tin hỗ trợ cho tô chức đó

- Theo IETF RFC 2828, lỗ hồng là:

Một lỗ hồng (hay điểm yếu) trong thiết kế, phát triển, quản lý của một hệ thống

mà có thê được khai thác nhằm vi phạm chính sách bảo mật của hệ thống đó

- Ủy ban về các hệ thống an ninh quốc gia của Mỹ xác định khái niệm lỗ hồng

la:

Lễ hồng trong một hệ thống nội bộ, một thủ tục an ninh, các kiểm soát nội bộhoặc trong quá trình thực hiện có thể khai thác từ bên ngoài

- Nhiều ân phâm NIST (National Institute of Standards and Technology — Viện

tiêu chuẩn va công nghệ) xác định lỗ hồng là:

PHAM NGỌC QUAN - D17AT02 14

Trang 17

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

Một lỗ hồng (hay điểm yếu) trong các thủ tục an ninh hệ thống, trong thiết kế,phát triển hoặc kiểm soát nội bộ là các vấn đề có thể được thực hiện (vô tình hay cố ýgây ra) và tạo ra kết quả là vi phạm các chính sách an ninh, bảo mật của hệ thống

- ENISA định nghĩa lỗ hồng là:

Sự tồn tại của một điểm yếu hoặc thiết kế lỗi có thé dẫn tới một sự kiện bat ngờkhông mong muốn ảnh hưởng đến sự an toàn của hệ thống máy tính, mạng, ứng dụng

hoặc các giao thức liên quan.

- ISACA định nghĩa lỗ hồng trong hệ thống quan lý rủi ro là:

Là một điểm yếu trong thiết kế, phát triển, vận hành hoặc điều hành nội bộ

Như vậy, có thé đưa ra khái niệm lỗ hồng trong hệ thống phần mềm như sau:

“Các lỗ hồng trên một hệ thống là các điểm yếu có thé tạo ra sự ngưng trệ của dịch vụ,thêm quyền đối với người sử dụng hoặc cho phép các truy nhập không hợp pháp vào hệ

thong.” Các lỗ hồng cũng có thé nằm ngay trong các dịch vụ cung cấp như web, ftp, Ngoài ra các lỗ hồng còn tôn tại ngay chính tại hệ điều hành như trong Windows, Mac,

UNIX, Linux, ; hoặc trong các ứng dụng ma người sử dụng thương xuyên sử dụng như Word, các hệ databases

- Độ nhạy với bụi.

- Độ nhạy với ban

- Độ nhạy với thiết bị lưu trữ không được bảo vệ

1.1.2.2 Lỗ hồng phần mềm

Lỗ hồng phần mềm bao gồm:

- Lỗ hồng phát sinh do chưa được kiểm thử đầy đủ

- Lỗ hồng phát sinh do thiếu việc kiểm tra các lỗi đã từng xuất hiện trước đây

PHAM NGỌC QUAN - D17AT02 l5

Trang 18

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

1.1.2.3 Lỗ hồng mang

Lỗ hồng mạng bao gồm:

- Lễ hồng do kênh truyền không được bảo vệ

- Lễ hồng do kiến trúc mạng không an toàn

1.1.2.4 Lỗ hồng về con người

Lỗ hồng về con người bao gồm:

- Lỗ hồng do quá trình tuyển dụng thiếu chặt chẽ, chất lượng thấp

- Lỗ hồng do quá trình dao tạo, nâng cao nhận thức mức trung bình

1.1.2.5 Lỗ hồng về site

Lỗ hồng về site bao gồm:

- Lỗ hồng do site quá nhiều chủ đề

- Lỗ hồng do khả năng của mã nguồn không đáng tin cậy

1.1.2.6 Lỗ hông về tổ chức

Lỗ hồng về tô chức bao gồm:

- Lỗ hồng do thiếu kiểm tra thường xuyên

- Lỗ hồng do thiếu kế hoạch liên tục

- Lỗ hồng do thiếu bao mật

1.L3 Nguyên nhân gây ra lỗ hỗng

Các nguyên nhân chính gây ra lỗ hong bao gồm:

- Sự phức tạp: Hệ thống càng lớn, càng phức tap thì càng làm tăng khả năng

xuất hiện lỗ hồng và những điểm truy cập ngoài ý muốn

- Sw quen thuộc: Thói quen sử dụng chung, những code đã biết, các phần mềm,

hệ điều hành và cả phần cứng làm tăng khả năng cho những kẻ tắn công trongviệc tìm kiếm những hiểu biết hoặc công cụ dé khai thác lỗi

- Sw kết nối: Quá nhiều kết nối vật lý, nhiều quyền, công, giao thức và các dich

vụ trong cùng thời gian cũng dẫn đến việc tăng khả năng truy cập đến các lỗ

hồng

PHAM NGỌC QUAN - D17AT02 16

Trang 19

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

- Léihé thống quản ly mật khẩu: Máy tính người dung sử dụng mật khẩu quá

đơn giản (weak passwords) và có thé bị khám phá ra nêu bị tan công mạnh mẽ(thông qua các chương trình phân tích tốt và các hệ thống tốt)

- Lỗi thiết kế nền tảng hệ điều hành: Thiết kế hệ điều hành thực hiện các chính

sách tôi ưu cục bộ hoặc dành cho việc quản lý người dùng/chương trình cụ thể

- Duyệt web: một vài trang web có thé chứa những phần mềm độc hại (harmful

Spyware) có thê cài đặt tự động lên hệ thống máy tính trong quá trình truy cập

- Sai sót phần mềm: người lập trình không quan tâm đến những chỗ sai sót có

thé bị khai thác trong chương trình Chương trình có thé chứa những sai sót cóthé cho phép những kẻ tan công lạm dụng dé khai thác chương trình

- Khong kiểm tra đầu vào: chương trình được giả định răng tat cả những nhập

liệu đầu vào của người dùng là an toàn

- Khong rút kinh nghiệm từ những lỗi đã gặp phải trước đó: chăng hạn như

những lỗi được phát hiện trong giao thức IPv4 cũng được tìm thấy trong giao

thức mới được xây dựng IPv6.

1.1.4 Khái niệm lỗ hổng phan mém

Từ các quan điểm về lỗ hồng, cách thức phân loại lỗ hồng như trên, chúng ta cóthé đưa ra khái niệm về lỗ hồng phần mềm như sau: “Lỗ hông phần mềm đơn giản làđiểm yếu trong hệ thống cho phép những kẻ tan công có thé tận dụng dé phát huy lợithế.” Trong ngữ cảnh của bảo mật phần mềm: các lỗ hồng là những lỗi đặc trưng hoặc

bị bỏ quên trong một phần nào đó của phần mềm và cho phép những kẻ tấn công gâyhại cho hệ thống thay đổi những thông tin nhạy cảm, làm gián đoạn hoặc phá hủy hệthống, hoặc chiếm quyên kiểm soát hệ thống máy tính hoặc chương trình

PHAM NGỌC QUAN - D17AT02 17

Trang 20

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

want to maximise

want to minimise

impose reduce

increase require

Increase

want to abuse

Hình 1.1: Vị trí của lỗ hồng trong bảo mật phan mém

1.2 Các loại lỗ hỗng phan mềm

Phan này sẽ đưa ra các cách phân loại lỗ héng phần mềm theo hai tiêu chi:

- Phan loại theo các sai sót của phần mềm

- Phân loại theo quá trình phát triển phần mềm

1.2.1 Phân loại theo các sai sót của phan mém

Các loại sai sót phô biến trong phần mềm dẫn tới việc xuất hiện các lỗ hồng phanmềm bao gồm:

1.2.1.1 Vi phạm an toàn bộ nhớ (memory safety)

An toàn bộ nhớ là van đề dang lo ngại trong quá trình phát trién phan mềm nhằm

mục đích tránh lỗi phần mềm gây ra lỗ hổng bảo mật với RAM như gây ra tràn bộ đệm

hoặc treo con trỏ.

PHAM NGỌC QUAN - DI7AT02 18

Trang 21

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

Có một số loại lỗi bộ nhớ có thé xảy ra, tùy thuộc vào ngôn ngữ lập trình được

sử dụng:

- Lỗi tràn bộ đệm (buffer overflow): Việc ghi dữ liệu quá phạm vi cho phép có

thé làm hỏng nội dung của các đối tượng liền kề trong bộ nhớ Đây là lỗi cỗ

điển nhất và ngày càng ít gặp bởi vì hầu hết các lập trình viên đều nhận thức

được và tránh lỗi này.

- Lỗi bộ nhớ động (dynamic memory errors): Quản lý không chính xác bộ nhớ

động và con trỏ động.

- Biến chưa được khởi tạo: Xảy ra khi một biến chưa được gan một giá tri khởi

tạo Nó có thể chứa bên trong nó (trong một số ngôn ngữ lập trình) những giá

trị lỗi.

- Lỗi tràn bộ nhớ, gồm các lỗi sau:

+ Stack overflow: Xay ra khi chương trình chạy ra khỏi không gian cho

phép của ngăn xếp, thông thường vi đệ quy quá sâu

+ Allocation failures: Chương trình cố gắng sử dụng nhiều bộ nhớ hơn số

lượng có sẵn Trong một số ngôn ngữ, tình trạng này phải được kiểm tra

bằng tay sau mỗi lần phân bổ

1.2.1.2 Lỗi xác thực đầu vào (input validation)

Quá trình xác thực dữ liệu đầu vào là quá trình nhăm đảm bao rang một chươngtrình phần mềm hoạt động trên dữ liệu rõ ràng, chính xác và hữu ích Nó sử dụng một

số thói quen hay còn gọi là các quy tắc dé kiêm tra tính đúng đắn, tính ý nghĩa và bảo

mật cua dir liệu được nhập vào hệ thống Các quy tắc có thể được thực hiện thông qua

các cách thức kiểm tra tự động theo từ điển dit liệu hoặc bởi các điều kiện logic của

chương trình.

1.2.1.3 Điều kiện thực hiện (race condition)

Là hành vi của mỗi hệ thống điện tử hoặc phần mềm mà đầu ra của nó phụ thuộcvào trình tự hoặc thời gian của các sự kiện không kiểm soát được Nó trở thành lỗi khicác sự kiện không xảy ra theo trình tự đã được lập trình Thuật ngữ này bắt nguồn từ ýtưởng hai tín hiệu cùng chạy đua tới dé tới đích trước

PHAM NGOC QUAN - DI7AT02 19

Trang 22

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

1.2.1.4 Lỗi phân quyén lẫn lộn (Privilege confusion)

Lỗi phân quyền lẫn lộn xảy ra khi một chương trình máy tính bị lừa bởi một ngườikhác nhằm vi phạm vào các truy cập không được phép Đây là một loại hình cụ thé củalỗi chiếm quyền thực thi Trong an ninh thông tin, van dé này thường được coi là một ví

dụ về lý do tại sao bảo mật dựa trên khả năng là rất quan trọng

1.2.1.5 Lỗi chiếm quyền thực thi (Privilege escalation)

Là hành vi khai thác một lỗi, lỗ hồng trong thiết kế hoặc giám sát cấu hình trongmột hệ điều hành hoặc phần mềm ứng dụng dé truy cập tới các dữ liệu được bảo vệ từứng dụng với các đặc quyền cao hơn sự cho phép Kết quả là kẻ tan công có thé truy cậpmột ứng dụng với quyền lớn hơn dự định của nhà phát triển hoặc quản trị hệ thống dé

thực hiện các hành vi trái phép.

Lỗi chiếm quyên thực thi xảy ra trong hai hình thức:

- Chiếm quyền thực thi theo chiều doc: Hay còn gọi là nâng cao đặc quyền, nơi

mà người sử dụng có đặc quyên thấp hơn hoặc các ứng dụng truy cập các chức

năng hay nội dung dành cho người sử dụng hoặc ứng dụng có quyền cao hon

Ví dụ như người sử dụng Internet Banking có thể truy cập các chức năng quảntri của trang web hoặc mật khẩu cho một Smartphone bi bỏ qua

- Chiếm quyền thực thi theo chiều ngang: Là cách mà một người sử dụng bình

thường có thé truy cập các chức năng hoặc nội dung dành cho người sử dụng

bình thường khác Ví dụ như người dùng A có thé sử dụng Internet Banking

để truy cập vào tài khoản của người dùng B

1.2.2 Phân loại theo quá trình phát triển phan mém

1.2.2.1 Lỗi thiết kế

Lỗ hồng trong thiết kế là một vấn đề phát sinh từ những sai lầm cơ bản trong thiết

kế hoặc trong giám sát của bước thiết kế phần mềm Với các lỗ hồng trong thiết kế, phầnmềm sẽ không an toàn vì nó không chính xác với những gì phần mềm nên được thiết kế

dé làm Nó có thể là các thiết kế đơn giản nhưng van gây ra những lỗi lớn Những saisót thường xảy ra do những giả định về môi trường của hệ thống không đúng với những

gi mà hệ thống sẽ thực hiện hoặc tương tác Lỗi trong thiết kế được gọi là lỗ hồng có

mức độ cao, những lỗ hồng kiến trúc, hoặc các hạn chế, các vấn đề với các chương trình

phần mềm

PHAM NGỌC QUAN - D17AT02 20

Trang 23

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

1.2.2.2 Lỗi thực hiện

Khi nói về các lỗ hồng ở bước thực hiện xây dựng chương trình thì mã nguồn

chương trình đóng vai trò quan trọng nhất, nhưng cũng là nguyên nhân gây ra các lỗhong phần mềm lớn nhất Đúng như tên gọi của nó, các lỗ hổng phần mềm thuộc loạinày thường phát sinh trong quá trình thực hiện xây dựng phần mềm, nhưng đôi khi cũngphát sinh ở giai đoạn tích hợp và kiểm thử phần mềm Những lỗ hồng này gây ra sự sailệch giữa việc thiết kế và thực hiện xây dựng phần mềm Đánh giá chung thì các lỗ hông

ở bước này thường là các lỗ hông ở mức độ thấp hoặc chỉ là các lỗi kỹ thuật

1.2.2.3 Lỗi sử dụng

Lỗ hồng trong vận hành, sử dụng hệ thống là các van dé an ninh phát sinh trongquá trình vận hành, sử dụng một phần hoặc toàn bộ hệ thống phần mềm trong một môitrường cụ thé Cách thức phân biệt loại lỗ hông này là đánh giá các lỗ hông không có

trong mã nguồn của phần mềm hoặc chính xác hơn là đánh giá cách phần mềm tương

tác với môi trường của nó Nó có thé bao gồm các van đề với việc câu hình phan mềmtrong môi trường của nó hoặc vấn đề liên quan tới các tác động tự động hoặc thủ côngxung quanh phần mềm Lỗ hồng này có thé bao gồm một số phương thức tan công vàongười dùng của hệ thống

1.2.3 Cơ sở dữ liệu lỗ hỗng đã biết CVE (Common Vulnerabilities and Exposures)

Common Vulnerabilities and Exposures tạm dịch là “Những lỗ hồng và rủi ro

thường thấy” Đây là chương trình được tạo ra bởi MITRE vào năm 1999, với mục tiêu

là phân loại và nhận dạng những lỗ hồng về phần cứng hoặc phần mềm, tập hợp thành

1 hệ thống mở dé chuẩn hóa quy trình xác thực các lỗ hồng đã được biết [1]

CVE sử dụng giao thức tự động hóa nội dung bao mat (Security Content

Automation Protocol - SCAP) dé thu thập thông tin về các lỗ hồng bảo mật và phơinhiễm, lập danh mục về các lỗ hồng theo một sỐ nhận dạng khác nhau

Sau khi được lập thành tài liệu, MITRE [2] cung cấp cho mỗi lỗ hồng một định

danh duy nhất Sau khi cơ sở dữ liệu về lỗ hông bảo mật của MITRE công bố lỗ hồng,

cơ sở dit liệu về lỗ hồng bảo mật quốc gia (National Vulnerability Database - NVD)

cũng công bố CVE với một phân tích bảo mật tương ứng

CVE cho phép các tô chức thiết lập cơ sở dé đánh giá mức độ bao phủ của các

công cụ bảo mật của họ Các định danh CVE mà công cụ có thể phát hiện được sẽ cho

biết chúng có phù hợp với tô chức hay không Ngoài ra, các nhà nghiên cứu cũng có thê

PHAM NGỌC QUAN - D17AT02 21

Trang 24

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

sử dung thông tin CVE dé tim kiếm các dấu hiệu của những lỗ hồng đã biết trong quátrình điều tra

Mỗi một CVE mới sẽ nhận được một định danh duy nhất theo công thức: “CVE”

+ Năm + số định danh (lớn hơn hoặc bằng 4 chữ số) Ví dụ CVE-2018-8589 là một CVE

về lỗ hồng tồn tại trên hệ điều hành Windows, thê hiện đây là lỗ hồng công bố năm 2018

với định danh trên cơ sở dữ liệu của MITRE là 8589.

Đối với các trường hợp thông thường thì số định danh sẽ do MITRE cung cấp.Tuy nhiên, ngoài MITRE cũng có những đơn vị khác gọi là các tổ chức đánh số thươngmại (phi chính phủ) sẽ tham gia cấp số định danh cho những lỗ hồng trên sản phẩm của

ho Theo thống kê chính xác từ MITRE ngày 04/12/2020 thi con số này là 148 tổ chứcđến từ 25 quốc gia trên thế giới Ngoài ra, Trung tâm Điều phối CERT cũng được chứngnhận dé chỉ định số CVE

Ngoài định danh duy nhất, mỗi bản ghi CVE sẽ chứa ngày mà CVE này được tạobởi MITRE, theo sau là các trường mô tả và tham chiếu Nếu lỗ hồng bảo mật không

được báo cáo trực tiếp bởi MITRE, trường tham chiếu sẽ bao gồm các đường dẫn đếnbài viết hoặc tài liệu nơi lỗ hỗng được công bố đầu tiên Các liên kết khác có thé xuất

hiện trong trường này là các trang sản phâm bị ảnh hưởng bởi CVE

CVSS Score Số lượng lỗ héng Phần trăm

0-1 616 0.4 1-2 1132 0.7 2-3 7582 4.6 3-4 8164 4.9 4-5 39223 23.6 5-6 31761 19.1 6-7 24399 14.7 7-8 33470 20.1 8-9 805 0.5

PHAM NGOC QUAN - D17AT02 22

Trang 25

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

10 19029 11.5

Total 166181

Bang 1.1: Phân phối lỗ hồng theo CVSS Scores

Vulnerability Distribution By CVSS Scores

và nhóm bảo mật xác định được mức độ nghiêm trọng và phạm vi ảnh hưởng của lỗ

hồng dé phân bổ nguồn lực, khắc phục hậu quả

Điểm CVSS tuân theo một công thức được tạo thành từ vài chỉ số bảo mật Các

chỉ số liên quan đến việc xác định mức độ nghiêm trọng của một lỗ hong bao gồm hướngtruy cập của nó, độ phức tạp của cuộc tấn công, tính bảo mật của dữ liệu được xử lý bởi

hệ thống chứa lỗ hồng, tính toàn vẹn của hệ thống bị khai thác Trong phiên bản 3.0 mức

độ nghiêm trong của lỗ hồng được phân loại thành các cấp độ như sau:

PHAM NGỌC QUAN - D17AT02 23

Trang 26

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

1.3 Các giải pháp giảm thiểu lỗ héng phần mềm

Việc xây dựng các mô hình là phương pháp tiếp cận đầu tiên dé đối phó với các

16 hông dựa trên sự hiêu biêt vê nó Trong phân này sé đưa ra hai phương giảm thiêu lô hông Với mục đích là đánh giá các mã nguôn phân mêm trong quá trình xây dựng dé

phát hiện ra bất kỳ lỗi bảo mật trong thời gian này mà không cần phải có bước kiểm tra

chuyên sâu sau khi đã hoàn thiện phần mềm

1.3.1 Phương pháp kiểm tra phần mém

Phương pháp kiểm tra phần mềm là quá trình đọc trực tiếp mã nguồn phần mềmhoặc các tài liệu liên quan dé tim ra lỗi và sửa chữa chúng trong quá trình phát triển Khi

các lỗi tìm thay sớm sẽ tiết kiệm chi phí cũng như sẽ dé dang hơn khi sửa lỗi Tuy nhiên,

dé đạt được kết quả tốt trong quá trình kiểm tra phần mềm, một yếu tổ quan trọng là khả

năng của các nhân viên kiểm soát, các loại lỗi mà họ cần kiểm tra Thông thường, quátrình kiểm tra phần mềm là một bước bắt buộc trong quá trình phát triển phần mềm.Dưới đây là hai phương pháp kiểm tra dựa trên việc hệ thống hóa các kiến thức của cácchuyên gia bảo mật nhằm tìm ra các lỗ hồng trên phần mềm

- Xây dựng cây SGIT (Security Goal Indicator Trees)

Cay chi dinh muc tiéu kiém tra an ninh (Security Goal Indicator Trees — SGIT)tập trung vào các tính năng tích cực của các phần mềm mà có thể được xác định trongsuốt quá trình kiểm tra Một SGIT là một đồ thị mà sốc là một mục tiêu an ninh và cáccon của nó là các chỉ số hoặc các thuộc tính để xác định được mục tiêu đó Tuy nhiên,

vì không phải tất cả các thuộc tính đều có thể mô tả tường minh nên nó có thể có một sốchỉ số tiêu cực Các chỉ số này sẽ có một giá tri logic với mục tiêu và phải được kiểmtra dé đạt được mục tiêu

SGIT được xây dựng bởi các chuyên gia về an toàn thông tin Ví dụ về một SGIT

cho mục tiêu kiểm soát đữ liệu được mô tả trong hình 1.3, nó cho thấy các quan hệ phụ

PHAM NGỌC QUAN - D17AT02 24

Trang 27

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

thuộc, các chỉ sô tích cực và tiêu cực, ngoài ra còn có các cây SGIT khác được trỏ tới (như “An audit component exIsts”).

PHAM NGỌC QUAN - D17AT02 25

Trang 28

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

Automated Secunty Audit

Analysis

Hinh 1.3: Vi du Security Goal Indicator Trees

- Lược đồ kiểm tra lỗ hồng VID (Vulnerability Inspection Diagram)

Xây dựng lược đồ kiểm tra lỗ hồng (Vulnerability Inspection Diagram) cũng là

một phương pháp kiểm tra phần mềm thủ công với mục đích là mang lại lợi ích cho cáclập trình viên từ những kiến thức và kinh nghiệm của các chuyên gia bảo mật trong quátrình phát triển ứng dụng Vì vậy, một VID là một đồ thị định hướng cho các lập trình

viên dé kiểm tra phần mềm nhằm phát hiện các lỗ hồng trên phần mềm Thông thường,

với mỗi loại lỗ hổng sẽ có một lược đồ tương ứng được xây dung

PHAM NGOC QUAN - D17AT02 26

Trang 29

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

1.3.2 Phương pháp xây dựng mô hình SAG (Security Activity Graph)

Mô hình hoạt động an ninh (Security Activity Graphs — SAGs) cũng rất hiệu quảtrong việc phòng chống lỗ hồng Nó là một biéu đồ bao gồm các nguyên nhân cụ thécủa các hoạt động an ninh trong quá trình phát triển phần mềm Biéu đồ trong hình 1.3

cho thay sự lựa chọn khác nhau dé giải quyết van đề “Lacking design to implementation

traceability”.

Lacking design to Implementation traceability

Generate a code from

Cross-reference index design

Between desing and

code

Code comments linking

code to design objects

Hình 1.4: Ví du mô hình SAG1.4 Phát hiện lỗ hỗng phần mềm

Trong phan này sẽ xem xét một số phương pháp phát hiện lỗ hồng phần mềm

phô biến dùng phương pháp phân tích tĩnh và phương pháp động nhằm đưa ra dự đoán

lỗ hổng phần mềm Trong đó phương pháp phân tích tĩnh là phương pháp phát hiện lỗhong mà không cần phải chạy mã nguồn dé thực hiện phát hiện lỗ hồng Với phương

pháp động, các mã nguồn phần mềm được chạy bên trong một môi trường được kiểmsoát dé thực hiện việc phát hiện lỗ hồng hoặc thu thập các dau hiệu dé phát hiện lỗ hồng.

1.4.1 Phương pháp dự đoán tinh

1.4.1.1 Phương pháp đối chiếu mẫu

Phương pháp đối chiếu mẫu là kỹ thuật phân tích tính đơn giản nhất Một ví dụ

cụ thể áp dụng phương pháp này như sau:

Sử dụng công cụ Grep dé tìm tat cả các lần xuất hiện của chuỗi “strepy” trong

toàn bộ mã nguồn của một phần mềm được viết bằng ngôn ngữ lập trình C

Khi đó, kết quả trả về hầu hết đều đưa ra hàm strcpy() trong thư viện của C Việc

này dẫn tới chúng thường bị lạm dụng và dễ gây ra các lỗ hồng tiềm năng

PHAM NGỌC QUAN - D17AT02 27

Trang 30

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

Do vậy, phương pháp này được đánh giá là thiếu tính thực tiễn Nó có thé khôngphân tích được các mã nguồn đơn giản và do vậy, nó cũng không phù hợp dé phân tích,

phát hiện các lỗ hồng bảo mật phức tap.

1.4.1.2 Phân tích từ vựng

Phương pháp phân tích từ vựng cải tiến hơn so với phương pháp đối chiếu mẫu.Một lexer được sử dụng dé chuyén ma nguồn thành 1 bộ các thẻ (token), trong đó đã

loại bỏ các khoảng trang Các thẻ nay sẽ được đối chiếu lại một lần nữa với cơ sở dữ

liệu các mẫu lỗ hồng đã biết, từ đó đưa ra kết quả chính xác hơn

Một số công cụ sử dụng phương pháp này như Flawfinder, RATS, ITS4

- Công cụ Flawfinder: Nó chứa một cơ sở dit liệu lớn các mẫu lỗ hong phan

mềm Khi phân tích mã nguồn, nó tạo ra một danh sách các lỗ hổng bảo mật

tiềm năng, trong đó phân thành các mức độ rủi ro tương ứng Danh sách các

lỗi được đưa ra cũng được sắp xếp theo mức độ rủi ro của chúng Và nhữnglỗi có mức độ rủi ro các nhất được đưa lên đầu tiên Từ đó, có thé tìm ra được

lỗ hồng thực sự của phần mềm

- ITS4: Nó cũng là một công cụ phát hiện lỗ hồng phần mềm tương tự như

Flawfinder, nhưng nó có khả năng phân tích được nhiều ngôn ngữ ngoài ngôn

ngữ C Một điểm khác biệt nữa là ITS4 có các xử lý đặc biệt dựa trên các luậttrong bộ tập luật của nó Ví dụ như khi xử lý đánh dau hàm strepy(), hàm nàyđược gọi là an toàn nếu tham số thứ hai của hàm là một chuỗi tĩnh

Tuy nhiên, phương pháp này vẫn còn những nhược điểm như các lợi ích của phântích từ vựng còn nhỏ, con số sai số được đưa ra sau khi phân tích vẫn còn rất lớn

1.4.1.3 Phân tích dựa trên cây cú pháp trừu tượng (AST)

Bước tiếp theo trong việc cải thiện tính chính xác của kỹ thuật phân tích tĩnh là

phân tích các mã nguồn và xây dựng cây cú pháp trừu tượng (AST) đại diện của chươngtrình Việc này thường được thực hiện từ đầu vào của các chương trình biên dịch và nó

cung cấp khả năng tái sử dụng các mã nguồn Một trong các công cụ phân tích mã nguồn

tĩnh sớm nhất là công cụ kiểm tra cú phát Lint được xây dựng từ năm 1979 Công cụnày phát hiện ra các đoạn lệnh không hợp lệ, các biến không được sử dụng hay các hàmđược goi với số tham số không đúng Các bộ biên dịch mới đã có thể thực hiện được

hầu hết các hàm kiểm tra như trên nên công cụ Lint đã trở nên lỗi thời, nhưng phương

PHAM NGỌC QUAN - D17AT02 28

Trang 31

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

pháp phân tích dựa trên cây cú pháp trừu tượng van được sử dung cho các công cụ phân

tích phức tạp hơn.

Vấn đề phân tích cú pháp C và đặc biệt là mã nguồn C++ có thể là một nhiệm vụhết sức phức tạp Trong khi hầu hết các chương trình biên dịch đều tương thích với ngôn

ngữ C, thì các phần mềm lại có thể dựa trên các ngôn ngữ không chuẩn khác Do vây,

dẫn tới việc phải mở rộng biên dịch hoặc gây ra lỗi biên dịch.

Cây cú pháp trừu tượng cho phép chúng ta phân tích không chỉ cú pháp mà còn

là ngữ nghĩa của một chương trình Khi sử dụng phương pháp phân tích từ vựng có thêgây nhằm lẫn giữa các biến cùng tên như là một lỗi hàm, nhưng khi dùng phân tích AST

sẽ có thê phân biệt được các loại định danh khác nhau Trên cây cú pháp trừu tượng thì

biéu đồ mức độ và độ phức tạp được mở rộng, từ đó có thê đưa ra được nhiều lỗ hồng

tiềm ẩn hơn so với phương pháp phân tích từ vựng Các phương pháp phân tích trừu

tượng hơn như phân tích lu6ng dữ liệu hay phân tích lưu lượng dữ liệu có thé được xây

dựng bằng cách sử dụng cây cú pháp trừu tượng

1.4.1.4 Phương pháp vòng loại

Một số công cu phát hiện lỗ hồng tiên tiến hơn được xây dựng trên cơ sở củaphương pháp vòng loại được phát triển bởi Jeffrey Foster Ông mô tả nó như là các điềukiện bắt buộc phải có trên các ngôn ngữ lập trình cơ bản như C, C++, Java hay ML Hầu

hết các ngôn ngữ này đều có một số lượng giới hạn các vòng loại (là các hằng số hoặccác từ khóa) Do vậy, Foster đã đề xuất một hệ thống các vòng loại dùng chung bằng

các chú giải trong mã nguồn và từ đó phát hiện các lỗ hồng trong mã nguồn băng vòng

loại.

Hầu hết các công cụ sử dụng phương pháp này được xây dựng trên cơ sở cáccông cụ phân tích mã nguồn C Một ví dụ là công cụ phát hiện các lỗi trong định dạngchuỗi do Shankar phát triển Công cụ này sử dụng các vòng loại dé đánh dau các chuỗikhông đáng tin cậy trong chương trình Nếu một biến bị đánh dấu là chuỗi không tin cậyđược sử dụng trong chương trình thì công cụ sẽ trả về một lỗi định dạng chuỗi Nhiềungười cho rằng công cụ này có hiệu quả cao và đã giảm được tỷ lệ các mã nguồn bị lỗi

Phương pháp này có lợi thế là với các công cụ đơn giản thì chỉ cần yêu cầu một

vài chú thích cho vòng loại được thêm vào và áp dụng các phương pháp suy luận thì sẽ

có hiệu quả cho cả các chương trình lớn.

Tuy nhiên phương pháp này cũng có nhược điểm là nó chỉ áp dụng cho một số

lỗ hong bao mật có thé biểu diễn dưới dang các mâu thuẫn

PHAM NGOC QUAN - DI7AT02 29

Trang 32

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

1.4.1.5 Phân tích luồng dữ liệu

Các loại lỗ hỗng phần mềm thì rat đa dạng và nó không chi đơn giản là các lỗi về

định dạng chuỗi Các lỗi liên quan với việc tràn bộ đệm, tràn số nguyên, chỉ mục củamảng hoặc các vấn đề về con trỏ đòi hỏi kỹ thuật phân tích phức tạp hơn phương pháp

đối chiếu mẫu, hay phương pháp phân tích từ vựng Những lỗ hồng có thé phát sinh khi

một biến trong một chương trình có thé bị mat ngoai pham vi an toan nhất định Ví dụ,hàm strcpyQ có thể là một lỗ hồng nếu kích thước chuỗi vượt quá kích thước của bộ nhớđệm đích Với những lỗi như thế này thì việc phát hiện lỗi trong chương trình là rất khó.Phương pháp phân tích luồng dữ liệu là một kỹ thuật sử dụng phương pháp biên dịch

truyền thống dé giải quyết van đề này, và nó có thé sử dụng như một phương pháp dé

phát hiện lỗ hong của hệ thống

Phương pháp phân tích luồng dữ liệu của một chương trình với ngôn ngữ C cóthé là bat khả thi nếu không tính tới các giải pháp dé xử lý các van dé về sai số hoặc cáclỗi không thể phát hiện được Điều này khiến cho các công cụ phân tích mã nguồn tĩnhphải có hai lựa chọn: sử dụng luồng phân tích dữ liệu an toàn hoặc cung cấp kết quảchính xác trong một số trường hợp, còn một số trường hợp sẽ đưa ra kết quả xấp xỉ vàchấp nhận các kết quả không hoàn toàn chính xác hoặc có sai số Nói chung, với các sai

số nhỏ là có thê chấp nhận được và việc phân tích mã nguồn không bị hạn chế sẽ quan

trọng hơn, do đó phương pháp thứ hai thường được lựa chọn nhiều hơn

1.4.1.6 Phân tích hỏng hóc

Khái niệm hỏng hóc ở đây dùng dé chỉ những dữ liệu đến từ các nguồn thông tinkhông đáng tin cậy, hay còn gọi là “vết nhơ” và nó gửi tình trạng của nó tới tất cả cácnơi sử dụng đữ liệu này Mỗi chính sách bảo mật cụ thê sẽ quy định việc cho phép hayhạn chế những dit liệu không an toàn này

Việc có gắng sử dụng các dữ liệu bi hỏng này là một dấu hiệu của một 16 hỗng

trong phần mềm

Vi dụ nỗi bật nhất của kỹ thuật này là chế độ taint được cung cấp bởi các ngônngữ lập trình Perl Khi chạy trong chế độ này, các phiên dịch viên đánh dấu tất cả các

dữ liệu được đọc tt tập tin, mạng, các tham số lệnh, các biến môi trường và từ các nguồn

không tin cậy khác Các ngôn ngữ này cung cấp các cơ sở dé loại bỏ (hoặc “rửa”) các

dữ liệu không tin cậy sau khi các lập trình viên đã xác minh rằng nó an toàn Các dữ liệu

bị hỏng có thê không được sử dụng trong bat kỳ chức năng nào làm biến đổi các tập tin,

PHAM NGỌC QUAN - D17AT02 30

Trang 33

Đồ án tốt nghiệp Đại học CHƯƠNG 1 TONG QUAN VE LO HONG PHAN MEM

thư mục hoặc thực hiện bởi các chương trình bên ngoài Nếu quy tắc này bị vi phạm,

các thông dịch viên sẽ hủy bỏ việc thực hiện chương trình.

1.4.1.7 Phương pháp phân tích văn bản

Cách thức tiếp cận của phương pháp này là xem mỗi file mã nguồn như là mộtfile văn bản Mỗi file văn bản chuyên đổi thành một vecto tính năng, trong đó mỗi từ

trong file văn bản đó được xem là một tính năng.

Trước khi chuyền đổi thành các vectơ tính năng thì mã nguồn phần mềm sẽ thực

hiện một bước tiền xử lý: Lọc ra tất cả các ghi chú từ hệ thông mã nguồn; lọc ra tất cả

các chuỗi và các giá trị số

Sau quá trình tiền xử lý, chúng ta cần tạo ra các vectơ đặc trưng đại diện cho các

tập hop các từ trong văn bản mã nguồn Dé phân tách các vectơ đặc trưng thi chúng ta

sẽ sử dụng các ký tự trắng, các dấu chấm câu như “., ; ){ ]L” hoặc các toán tử số học

và logic như “ + - /* ^ & && !” Từ đó trong mỗi bộ vecto đặc trưng có các tính năng

cùng các giá tri của nó.

Ví dụ với file mã nguồn như sau trong file HelloWord.java:

class HelloWorldApp {

System.out.println(“Hello World!"); // Display the string.

}

Hình 1.5: Mã nguồn mẫu file “HelloWord.java”

Với việc lọc các từ trong file “HelloWord.Java”, chúng ta đưa ra được vectơ đặc trưng như sau: class:1, HelloWorldApp:1, public:1, static:1, void:1, main:1, String:1,

args:1, System:1, out:1, printIn:1 Lúc này mỗi từ được theo sau bởi một số Đến giai

đoạn học, mỗi vectơ đặc trưng trong mỗi file văn bản được gán một nhãn (ví dụ: là lỗ

hồng hoặc bình thường) Dựa trên khái niệm học máy (SVM) chúng ta xây dựng môhình dự báo lỗ hồng từ tập hợp các vectơ đặc trưng ở trên

PHAM NGỌC QUAN - DI7AT02 31

Ngày đăng: 10/03/2024, 00:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[9] Olga Russakovsky, Jia Deng, Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang, Andrej Karpathy, Aditya Khosla, Michael Bernstein,Alexander C. Berg, and Li Fei-Fei, "Imagenet large scale visual recognition challenge," 2014 Sách, tạp chí
Tiêu đề: Imagenet large scale visual recognition challenge
Tác giả: Olga Russakovsky, Jia Deng, Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang, Andrej Karpathy, Aditya Khosla, Michael Bernstein, Alexander C. Berg, Li Fei-Fei
Năm: 2014
[10] Saining Xie, Ross Girshick, Piotr Dollar, Zhuowen Tu, and Kaiming He,"Aggregated residual transformations for deep neural networks," 2016 Sách, tạp chí
Tiêu đề: Aggregated residual transformations for deep neural networks
[11] Ali Sharif Razavian, Hossein Azizpour, Josephine Sullivan, and Stefan Carlsson,"Cnn features off-the-shelf: an astounding baseline for recognition," 2014 Sách, tạp chí
Tiêu đề: Cnn features off-the-shelf: an astounding baseline for recognition
Tác giả: Ali Sharif Razavian, Hossein Azizpour, Josephine Sullivan, Stefan Carlsson
Năm: 2014
[12] Jeremy Howard and Sebastian Ruder, "Universal language model fine-tuning for text classification," 2018 Sách, tạp chí
Tiêu đề: Universal language model fine-tuning for text classification
Tác giả: Jeremy Howard, Sebastian Ruder
Năm: 2018
[13] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova, "Bert:Pre-training of deep bidirectional transformers for language understanding,"2018 Sách, tạp chí
Tiêu đề: Bert:Pre-training of deep bidirectional transformers for language understanding
Tác giả: Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova
Năm: 2018
[14] Alex Wang, Amanpreet Singh, Julian Michael, Felix Hill, Omer Levy, andSamuel R. Bowman, "Glue: A multi-task benchmark and analysis platform for natural language understanding," 2018 Sách, tạp chí
Tiêu đề: Glue: A multi-task benchmark and analysis platform for natural language understanding
Tác giả: Alex Wang, Amanpreet Singh, Julian Michael, Felix Hill, Omer Levy, Samuel R. Bowman
Năm: 2018
[15] Wissam Antoun, Fady Baly, and Hazem Hajj, "Arabert: Transformer-based model for arabic language understanding," 2020 Sách, tạp chí
Tiêu đề: Arabert: Transformer-basedmodel for arabic language understanding
[16] Yiming Cui, Wanxiang Che, Ting Liu, Bing Qin, Ziqing Yang, Shijin Wang, and Guoping Hu, "Pre-training with whole word masking for chinese bert," 2019 Sách, tạp chí
Tiêu đề: Pre-training with whole word masking for chinese bert
[17] Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, and Quoc V. Le, "XInet: Generalized autoregressive pretraining for languageunderstanding,” 2019 Sách, tạp chí
Tiêu đề: XInet: Generalized autoregressive pretraining for languageunderstanding
Tác giả: Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le
Năm: 2019
[18] Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, andRuslan Salakhutdinov, ”Iransformer-xl: Attentive language models beyond a fixed-length context," 2019 Sách, tạp chí
Tiêu đề: Iransformer-xl: Attentive language models beyond a fixed-length context
Tác giả: Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov
Năm: 2019
[19] Andrej Karpathy, Justin Johnson, and Li Fei-Fei, "Visualizing and understanding recurrent networks," 2015 Sách, tạp chí
Tiêu đề: Visualizing and understanding recurrent networks
Tác giả: Andrej Karpathy, Justin Johnson, Li Fei-Fei
Năm: 2015
[20] Serguei Mokhov, Joey Paquet, and Mourad Debbabi, "The use of nlp techniques in static code analysis to detect weaknesses and vulnerabilities," vol. 8436, 2014 Sách, tạp chí
Tiêu đề: The use of nlp techniquesin static code analysis to detect weaknesses and vulnerabilities
[21] Noah Ziems, and Shaoen Wu, Security Vulnerability Detection Using Deep Learning Natural Language Processing, IEEE, 2021 Sách, tạp chí
Tiêu đề: Security Vulnerability Detection Using Deep Learning Natural Language Processing
Tác giả: Noah Ziems, Shaoen Wu
Nhà XB: IEEE
Năm: 2021

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

TÀI LIỆU LIÊN QUAN

w