Tải bản đầy đủ (.pdf) (65 trang)

Phát triển giải pháp và công cụ đảm bảo an ninh cho các dịch vụ trực tuyến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.63 MB, 65 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------

Đinh Thái Sơn
Trang phụ bìa

PHÁT TRIỂN GIẢI PHÁP VÀ CÔNG CỤ
ĐẢM BẢO AN NINH CHO CÁC DỊCH VỤ TRỰC TUYẾN

Chuyên ngành : Công nghệ thông tin

LUẬN VĂN THẠC SĨ KĨ THUẬT
CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS. Nguyễn Khanh Văn

Hà Nội – Năm 2013

1


LỜI CAM ĐOAN
Tôi xin cam đoan: Luận văn thạc sĩ Công nghệ thông tin “Phát triển giải
pháp và công cụ đảm bảo an ninh cho các dịch vụ trực tuyến” này là cơng trình
nghiên cứu thực sự của cá nhân, được thực hiện trên cơ sở nghiên cứu lý thuyết và
dưới sự hướng dẫn khoa học của Tiến sĩ: Nguyễn Khanh Văn.
Tôi xin chịu trách nhiệm về lời cam đoan này.
Hà Nội, ngày 01 tháng 03 năm 2013
Tác giả



Đinh Thái Sơn

2


LỜI CẢM ƠN
Để hồn thành chương trình cao học và viết luận văn này, tôi xin chân thành
cảm ơn đến q thầy cơ trong Viện Cơng nghệ thơng tin và Truyền Thông, trường
Đại học Bách Khoa Hà Nội đã tận tình dạy bảo tơi trong thời gian học.
Tơi xin gửi lời biết ơn sâu sắc đến Tiến Sĩ Nguyễn Khanh Văn đã dành rất
nhiều thời gian và nhiệt huyết để hướng dẫn tơi hồn thành luận văn này.
Nhân đây, tơi cũng xin cảm ơn Ban giám hiệu trường Đại học Hùng Vương
và các thầy cơ trong khoa Tốn cơng nghệ đã tạo điều kiện cho lớp cao học Công
nghệ thông tin 2010B tại Hùng Vương chúng tôi được học tập thuận lợi.
Mặc dù tơi đã cố gắng hết sức hồn thiện luận văn, tuy nhiên chắc chắn vẫn
còn nhiều thiếu sót, rất mong sự góp ý q báu của q thầy cô và các bạn.
Hà Nội, ngày 01 tháng 03 năm 2013
Tác giả

Đinh Thái Sơn

3


MỤC LỤC
Trang phụ bìa ............................................................................................................ 1
MỤC LỤC ................................................................................................................ 4
DANH MỤC CÁC THUẬT NGỮ, TỪ VIẾT TẮT ................................................ 6
DANH MỤC CÁC HÌNH VẼ .................................................................................. 7

PHẦN MỞ ĐẦU .......................................................................................................... 9
1. Lý do chọn đề tài .................................................................................................. 9
2. Mục đích nghiên cứu luận văn, đối tượng, phạm vi nghiên cứu ........................ 10
3. Cấu trúc luận văn ................................................................................................ 10
Chương 1 .................................................................................................................... 11
TỔNG QUAN VỀ AN NINH TRỰC TUYẾN ......................................................... 11
1.1. An ninh trực tuyến ........................................................................................... 11
1.2. Thống kê an ninh ............................................................................................. 11
1.3 Đánh giá............................................................................................................ 13
Chương 2 .................................................................................................................... 14
PHƯƠNG PHÁP PHÁT HIỆN VÀ NGĂN CHẶN CROSS-SITE SCRIPTING..... 14
2.1 Tìm hiểu về Cross-site scripting ....................................................................... 14
2.2 Các mối đe dọa từ Cross-site Scripting : .......................................................... 14
2.3 Phân loại Cross-site Scripting .......................................................................... 16
2.4 Các cách ngăn chặn XSS: ................................................................................. 20
2.4.1 Ngăn chặn XSS trong giai đoạn phát triển web......................................... 21
2.4.2. Ngăn chặn XSS bằng phần mềm .............................................................. 22
2.4.3. Ngăn chặn XSS bằng việc phân tích việc truyền dữ liệu ......................... 23
2.4.4. Ngăn chặn XSS bằng việc theo dõi dữ liệu nhạy cảm.............................. 25
2.4.5. Mã hóa an tồn (Secure Coding) .............................................................. 25
2.4.6. Tường lửa ứng dụng Web (Web Application Firewalls - WAF): ............ 26
2.4.7. Phương pháp phòng chống phía máy khách (client-side) ........................ 28
2.5 Các cách phát hiện lỗi bảo mật chung .............................................................. 29

4


2.5.1. Phương pháp tấn công .............................................................................. 29
2.5.2. Penetration Testing thủ cơng .................................................................... 30
2.5.3. Phân tích mã ............................................................................................. 32

2.5.4. Máy qt lỗ hổng Web tự động ................................................................ 33
2.6. Mơ hình hoạt động của WVS .......................................................................... 35
2.6.1. Sự thực thi nội tuyến (inline) trong iStar .................................................. 37
2.6.2. Thực thi hoàn chỉnh trong iStar ................................................................ 38
2.6.3. Hạn chế của máy quét lỗ hổng Web hiện nay .......................................... 40
2.6.4. Một máy ghi trình tự điển hình. ................................................................ 42
2.6.5. Phát hiện các lỗ hổng bảo mật trên lớp mạng ........................................... 43
2.6.6 Sự phát hiện tự động các lỗ hổng bảo mật XSS loại 2 (thế hệ thứ 2)........ 43
Chương 3 .................................................................................................................... 46
PHƯƠNG PHÁP PHÁT HIỆN VÀ PHÒNG TRÁNH XSS WORM. ...................... 46
3.1 Khái niệm XSS Worm ...................................................................................... 46
3.2 Phương pháp lan truyền của sâu ....................................................................... 46
3.3 Phương pháp phát hiện XSS worm ................................................................. 48
3.4 Chương trình XSS Detection : ......................................................................... 54
3.5 Đánh giá chương trình ...................................................................................... 59
KẾT LUẬN ................................................................................................................ 61
TÀI LIỆU THAM KHẢO .......................................................................................... 63

5


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

Thuật ngữ

Diễn giải

1


XSS

Cross- Site Scripting

2

CERT

Computer Emergency Response Team

3

OWASP

Open Web Application Security Project

4

DOM

Document Object Model

5

PHP

Hypertext Preprocessor

6


ASP

Active Server Page

7

CGI

Common Gateway Interface

8

HTML

Hypertext Markup Language

9

HTTP

Hypertext Transfer Protocol

10

URL

Uniform Resource Locator

11


WVS

Web Vulnerability Scanner

12

IDS

Intrusion detection system

13

CAPTCHA

Completely Automated PublicTuring test to
tell Computers and Humans Apart

14

CSRF

Cross-site Request Forgery

15

IDE

Integrated Development Environement

16


API

Application Programming Interface

6


DANH MỤC CÁC HÌNH VẼ
STT

Danh mục các hình

Trang

1.1

Thống kê 10 lỗi website thường gặp phải

12

1.2

Thống kê thời gian vá lỗi

12

1.3

Mức độ nghiêm trọng do các lỗ hổng bảo mật gây ra


13

2.1

Thống kê các lỗ hổng thường bị tấn công năm 2009

15

2.2

Ví dụ về một tin nhắn, tấn cơng Stored XSS để lấy cắp
cookie

17

2.3

Các bước tấn cơng Stored XSS

18

2.4

Ví dụ về tấn công “ Reflected XSS”

19

2.5


Các bước tấn công Reflected XSS

19

2.6

Đoạn hex được sử dụng trong lỗi XSS

21

2.7

Ví dụ về một bộ lọc

27

2.8

Một dạng tấn cơng XSS dựa vào mơ hình Black-box

33

2.9
2.10
2.11

Kỹ thuật White-box thực hiện trong quá trình xử lý dữ liệu
Một kiến trúc Web Vulnerability Scanner chuẩn

33

34
36

Một workflow-base WVS

2.12

Thực hiện kiểu nội tuyến

37

2.13

Thực thi Inline trong Istar

38

2.14

Thực thi complete trong iStar

39

2.15

Các mẫu tiêm độc hại

44

7



3.1
3.2

3.3

Đoạn mã XSS Worm viết bằng Javascript
Mơ hình kiến trúc kiểm sốt các gói tin từ phía trình duyệt
chống lại sự phát tán của XSS worm
Sự tương đồng giữa mã nguồn gốc và mã nguồn đã được
mã hóa

48
49

53

3.4

Mơ hình hoạt động của XSS Detection

55

3.5

Một đoạn mã của hàm list_url

55


3.6

Mô tả các thuộc tính của thẻ HTML

56

3.7

Một đoạn chương trình của hàm Handle_starttag

57

3.8

Một đoạn chương trình mơ tả hàm scan_web

57

3.9

Chương trình scan với các trang xss.progphp.com

59

3.10

Kết quả tìm kiếm lỗi các dựa vào các payload cho trước

59


3.11

Đánh giá xem website có khả năng dính lỗi XSS hay khơng

59

8


PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
Sự phát triển nhanh chóng của Internet đem lại cho người dùng rất nhiều
dịch vụ hữu ích đặc biệt là các dịch vụ thanh tốn hoặc giải trí trực tuyến. Tuy
nhiên hầu hết các ứng dụng này đều tiềm ẩn nguy cơ chứa các lỗi bảo mật mà tin
tặc có thể khai thác và tấn công. Cross-Site Scripting là một trong các lỗi chính mà
kẻ tấn cơng khai thác để tấn cơng vào nhiều dịch vụ Web. Kể từ khi trình duyệt
Web hỗ trợ việc thực hiện các script, các kịch bản được nhúng trong nội dung, kẻ
tấn cơng có thể sử dụng lỗi bảo mật này để truy nhập thông tin người dùng một
cách bất hợp pháp. Việc phát hiện các mã script độc hại là rất cần thiết đối với
người sử dụng dịch vụ và việc phát hiện này có thể được thực hiện bằng cách sử
dụng các cơng cụ có sẵn do các cơng ty bảo mật uy tín cung cấp.Tuy nhiên ở Việt
Nam việc phòng chống tác hại các lỗi do XSS gây ra chưa được nghiên cứu cụ thể
và chi tiết.Vì vậy dưới sự hướng dẫn của TS. Nguyễn Khanh Văn, em đã chọn đề
tài “Phát triển giải pháp và công cụ đảm bảo an ninh cho các dịch vụ trực tuyến”
nhằm mô tả tổng quan các dịch vụ trực tuyến và đi sâu tìm hiểu cách thức tấn công
và các tác hại do cách tấn công Cross- Site Scripting gây ra, khả năng giải quyết
nhằm giảm bớt sự nguy hiểm của các cuộc tấn công bằng cách thức này mang lại.
Đồng thời trong luận văn này, tác giả cũng nghiên cứu về XSS worm, nghiên cứu
phương pháp lan truyền và đưa ra mơ hình ngăn chặn sử dụng thuật tốn tri-grams,
tác giả cũng phát triển một cơng cụ mới được xây dựng bằng ngôn ngữ python,

được tác giả đặt tên là XSS Detection.Công cụ này nhằm phát hiện một số lỗi XSS
thường gặp trên website, và sẽ được đánh giá dựa trên hai yếu tố: hiệu suất và độ
chính xác. Kết quả so sánh với chương trình Web Vulnerability Scanner của hãng
Acunetix. Kết quả cho thấy tính chính xác của cơng cụ XSS Detection là có thể
chấp nhận được, đủ để đáp ứng cho sự an toàn của người dùng mà không cần so
sánh với các công cụ khác.

9


2. Mục đích nghiên cứu luận văn, đối tượng, phạm vi nghiên cứu
-Theo đánh giá của tác giả, đây là đề tài tuy không mới trên thế giới nhưng ở
Việt Nam đây là đề tài tương đối mới và khó với nhiều vấn đề kỹ thuật mới. Trong
phạm vi điều kiện và khả năng nghiên cứu, mục đích, đối tượng và phạm vi nghiên
cứu được xác định như sau:
- Nghiên cứu tổng quan chung về an ninh các dịch vụ trực tuyến
- Nghiên cứu Cross Site Scripting:
• Tổng quan về Cross Site Scripting.
• Các cách thức tấn cơng Cross Site Scripting.
• Phương pháp ngăn chặn và phịng tránh.
- Nghiên cứu về XSS Worm.
- Thuật toán ngăn chặn sự lây lan của XSS Worm.
- Phát triển một công cụ được gọi là XSS Detection nhằm kiểm tra và phát
hiện lỗi XSS trong các website và so sánh với công cụ WVS (Web
Vulnerability Scanner )
3. Cấu trúc luận văn
Phần nội dung chính của luận văn được chia thành 3 chương, trong đó:
Chương 1 - Tổng quan về an ninh trực tuyến : Thống kê và đánh giá mức độ rủi
ro của một số lỗi bảo mật hay bị mắc phải.
Chương 2 - Phương pháp phát hiện và ngăn chặn Cross Site Scripting: Nghiên

cứu về Cross site Scripting, phân loại Cross site Scripting, cách thức phát hiện và
ngăn chặn lỗi XSS.
Chương 3 - Phương pháp phát hiện và phòng tránh XSS worm: Chương này
giới thiệu các phương pháp phát hiện từ phía người xây dựng ứng dụng và từ phía
người người dùng. Mơ tả thuật toán ngăn chặn XSS worm, đồng thời xây dựng một
ứng dụng được tác giả đặt tên là XSS Detection nhằm quét và phát hiện lỗ hổng
XSS.

10


Chương 1
TỔNG QUAN VỀ AN NINH TRỰC TUYẾN
1.1. An ninh trực tuyến
Ngày nay, khi Internet ngày càng phát triển, việc tiếp cận đến các dịch vụ
trực tuyến ngày càng dễ dàng hơn.Cùng với sự phát triển đó là sự xuất hiện của
hàng loạt các website thương mại điện tử, thanh tốn trực tuyến, các mạng xã hội,
các trị chơi trực tuyến, vv….Việc đảm bảo an ninh, an tồn thơng tin cho các giao
dịch này là hết sức quan trọng. Thống kê an ninh cho thấy sự quan tâm của tin tặc
đối với các hình thức giao dịch trực tuyến này. Cụ thể là cùng với sự tăng lên của số
lượng các dịch vụ thanh tốn trực tuyến, thì số lỗi bảo mật được phát hiện trên các
website đó ngày càng tăng. Đặc biệt, người quản trị website cũng không nhận thấy
các lỗi bảo mật này. Đến khi phát hiện được, thì tác hại là khơng nhỏ.
Các lỗi bảo mật liên quan đến các dịch vụ trực tuyến thường liên quan đến
các ứng dụng web, công cụ dùng để triển khai thanh tốn điện tử. Lý do là những
lập trình viên thiết kế các ứng dụng web này chưa quan tâm đúng mức đến việc đảm
bảo an ninh cho các giao dịch điện tử, hoặc có thể họ chưa được đầu tư, đào tạo bài
bản cho những vấn đề này. Chính vì thế, mặc dù có quan tâm, rà sốt các chương
trình, tuy nhiên vẫn khơng thể tránh khỏi một ứng dụng web dính các lỗi bảo mật.
Theo thống kê của BKAV (bkav.com.vn) trong năm 2012 có khoảng hơn

2203 website của các doanh nghiệp và cơ quan Việt Nam bị tấn công, lỗi phổ biến
là khai thác lỗ hổng trên các hệ thống mạng. Cũng theo thống kê này thì số lượng
website bị lỗi hầu như khơng giảm mà đang có chiều hướng tăng lên.
Thực trạng cho thấy, an ninh mạng, an ninh trực tuyến vẫn chưa được quan
tâm đúng mức tại các cơ quan, doanh nghiệp, hầu hết các cơ quan này cũng chưa bố
trí được nhân sự phụ trách an ninh mạng, hoặc đội ngũ chưa đáp ứng được với tình
hình thực tế.
1.2. Thống kê an ninh
Theo thống kê an ninh từ tổ chức whitehat (www.whitehatsec.com) số lượng các
lỗi liên quan đến việc đánh cắp thông tin người dùng, hay truy xuất vào cơ sở dữ

11


liệu ngày càng tăng. Cụ thể, tổ chức này thống kê 10 lỗi website thường gặp phải
trong năm 2011 như sau :

Hình 1.1 : Thống kê 10 lỗi website thường gặp phải
Số lỗi liên quan đến Cross-site Scripting tăng dần theo từng năm.Mặc dù các
nhà phát triển ứng dụng web có quan tâm đến lỗi bảo mật này, tuy nhiên số lượng
website bị lỗi này không hề giảm.Theo tổ chức này, năm 2010 lỗi “Information
Leakage” chiếm 64%, thì năm 2011 lại có xu hướng giảm chỉ cịn 53%.
Việc vá lỗi cũng khơng hề đơn giản, vì nó liên quan đến cấu trúc của cả ứng
dụng web đang được triển khai. Trong ngành công nghiệp CNTT, tổ chức whitehat
vẫn đánh giá thời gian sửa lỗi XSS là lâu nhất. Trung bình là khoảng 35 ngày.

Hình 1.2 : Thời gian vá lỗi

12



Cũng theo tổ chức này, họ tiến hành thống kê đánh giá các website dễ bị tổn
thương do các lỗ hổng này mang lại. Và một lần nữa lỗi XSS được đánh giá là
nghiêm trọng hơn cả.

Hình 1.3 : Mức độ nghiêm trọng do các lỗ hổng bảo mật gây ra.
1.3 Đánh giá
Tình hình an ninh mạng, an ninh trực tuyến mặc dù có được quan tâm nhưng khơng
hề được cải thiện.Số lỗi, website bị khai thác vẫn đang có chiều hướng tăng lên.Vì
vậy cần phải có các nghiên cứu sâu hơn, đánh giá chi tiết hơn về các lỗi bảo mật
này.
Đặc biệt đối với lỗi Cross-site Scripting ngày càng phát triển mạnh và khơng có
chiều hướng giảm.Chính vì thế việc nghiên cứu nhằm phát hiện và ngăn chặn từng
bước lỗi XSS là hết sức quan trọng.Trong chương 2, và chương 3 chúng tôi sẽ đề
cập chi tiết hơn về vấn đề này.Chúng tơi sẽ tiến hành tìm hiểu lỗi XSS, phân loại
chúng, đánh giá mức độ nguy hiểm, đưa ra các giải pháp phát hiện và ngăn chặn
XSS.Đồng thời trong chương 3, chúng tôi sẽ nghiên cứu sâu hơn về XSS worm,
một dạng sâu, virus, tìm hiểu phương pháp lây lan, và đưa ra thuật tốn ngăn chặn
và phịng tránh.

13


Chương 2
PHƯƠNG PHÁP PHÁT HIỆN VÀ NGĂN CHẶN CROSS-SITE SCRIPTING
2.1 Tìm hiểu về Cross-site scripting
XSS là một kiểu khai thác lỗ hổng an ninh mạng mà ở đó cho phép kẻ tấn
công chèn mã độc vào một website. Mã này có thể có thể chứa JavaScript hay chỉ là
HTML nằm trên máy chủ web hoặc được chèn vào khi người dùng duyệt đến một
trang web. Khi đoạn mã được kích hoạt, kẻ tấn cơng có thể chiếm quyền sử dụng

các trang web của bên thứ ba hoặc sử dụng tài nguyên của máy chủ . Các cuộc tấn
công XSS thường chèn mã JavaScript vào một dịch vụ web độc hại thực hiện trên
trình duyệt web của người dùng.
XSS là một trong các ứng dụng tấn công web phổ biến nhất mà các tin tặc sử
dụng để gửi các mã độc hại cho người sử dụng. Nó cũng được sử dụng để thay đổi
nội dung hoặc chiếm quyền điều khiển trang web hay thực hiện các cuộc tấn công
để lấy thông tin và dữ liệu người dùng.
Bằng việc khai thác lỗ hổng XSS cross-site scripting, kẻ tấn cơng có thể xây
dựng một cuộc tấn công. Kỹ thuật này thường được sử dụng bởi những kẻ tấn cơng
với mục đích là tiêm đoạn mã JavaScript, VBScript, ActiveX, HTML, hoặc Flash
để thực hiện trên hệ thống của nạn nhân với quyền của nạn nhân. Khi một cuộc tấn
cơng được kích hoạt, tất cả mọi thứ từ lấy tài khoản, thay đổi các thiết lập của người
sử dụng, lấy cookie hoặc quảng cáo có thể sai lệch.
2.2 Các mối đe dọa từ Cross-site Scripting :
- Theo thống kê về các lỗ hổng bảo mật thường bị tấn cơng nhất vào năm 2009, ta
có kết quả như dưới đây:

14


Hình 2.1 : Thống kê các lỗ hổng thường bị tấn cơng năm 2009
- Một số website tìm thấy lỗ hổng XSS (2009)
Tên công

Domain

Liên kết bị khai thác

/>
/>

ty
NBC

u=
<script>alert(document.cookie)>&frompage=4&page=1&ct=VVTV&
mh=0&sh=0&RN=1
Microsoft

/>/

ID=MCTN&target=ros
oft.com/education/?ID=MCTN&target
=<script>alert(document.cookie)pt>

Chase

/>
/>Tcs?pagename=<script>alert(documen
t.cookie)</script>&urlname=smallbusi
ness/direct

15


Ebay




/>&countryid=3&siteId=3&co_partnerId
=0&UsingSS
L=1&aolemail=<script>alert(documen
t.cookie) </script>

Oracle



/>
Japan

MTS_SEM/im_search_exe?search_tex
t=<script>alert(document.cookie)
</script>

Cross-Site Scripting (XSS) chiếm một tỉ lệ rất cao so với các phương pháp tấn
công khác. Hầu hết các tác hại tiềm ẩn của kĩ thuật này đã được biết đến. Tuy nhiên,
chúng ta mới chỉ khắc phục được một phần của nó.
Từ lỗi Cross-site scripting, kẻ tấn cơng có thể gây ra những rủi ro nghiêm
trọng:
• Đánh cắp thông tin người sử dụng: chẳng hạn như hacker thêm JavaScript để
ăn cắp cookie, mật khẩu người dùng,….
• Tạo ra những thông tin sai lệch, bôi nhọ danh tiếng của cá nhân, tổ chức…
• Tạo các cuộc tấn cơng lừa đảo trực tuyến.
• Chiếm quyền sử dụng của nạn nhân: chẳng hạn như thêm mã JavaScript để
chuyển hướng người dùng.
• Đoạn mã độc hại có thể làm cho trang web của bạn khơng thể truy cập, cũng
như có thể làm cho trình duyệt lỗi hoặc trở nên khơng thể hoạt động.
• Thơng qua đoạn mã kẻ tấn cơng có thể theo dõi lịch sử truy cập các trang

web, theo dõi thông tin bạn đăng lên một trang web và truy cập vào dữ liệu cá
nhân như (thẻ tín dụng, tài khoản ngân hàng,…).
2.3 Phân loại Cross-site Scripting

16


Có ba loại tấn cơng XSS khác nhau là : Stored XSS, Reflected XSS và DOM-base
XSS. Cụ thể như sau:
-Stored XSS :
Cịn được gọi là kiểu tấn cơng liên tục (Persistent) là loại mà các mã được
chèn vào website thông qua một chức năng nào đó, chẳng hạn như: gửi một lời bình
luận hay tin nhắn, gửi bài trên các diễn đàn, ... để từ đó khi các thành viên khác truy
cập website sẽ bị dính mã độc từ kẻ tấn công này.
Với tấn công kiểu tấn công Stored XSS, kẻ tấn công sẽ lưu trữ đoạn mã độc
trên ứng dụng web (ví dụ trong cơ sở dữ liệu - Database). Vì vậy, nó được gọi là
Stored XSS… Sau đó, khi một người dùng gửi yêu cầu đến trang web mà có chứa
đoạn mã độc đó thì đoạn mã độc sẽ được kích hoạt và thực hiện mưu đồ của kẻ tấn
cơng.
Ví dụ như một web site là một diễn đàn, nơi mọi người có thể đưa các bài
viết lên hiển thị cho tất cả mọi người. Trang web này có thể được sử dụng để thực
hiện loại tấn cơng này. Kẻ tấn cơng viết một mẩu tin như hình 1 mà trong đó có
chứa một đoạn mã độc để ăn cắp cookie, sau đó mẩu tin được lưu trữ trong CSDL.
Khi một người dùng muốn đọc bài viết trên thì phải tải cả đoạn mã độc xuống trình
duyệt của mình. Đoạn mã độc được chạy trên trình duyệt web của người dùng, nó
sẽ gửi cookie của người dùng cho một máy chủ web mà được kiểm soát bởi kẻ tấn
cơng.

Hình 2.2 : Ví dụ về một tin nhắn, tấn công Stored XSS để lấy cắp cookie.
Trước tiên, kẻ tấn công lưu bài viết chứa mã XSS trên diễn đàn. Đầu tiên,

người dùng đăng nhập vào diễn đàn và sẽ được xác định bởi một cookie được thiết
lập trên trình duyệt. Sau đó, người dùng có thể đọc bài viết của kẻ tấn công đã đăng,
các mã độc được gửi trả lại như một phần của bài viết và sau đó nó sẽ được dịch và
chạy trên trình duyệt của người dùng. Đoạn mã XSS sẽ gửi cookie của người dùng

17


cho kẻ tấn công. Với thông tin này của nạn nhân, kẻ tấn cơng có thể giả danh nạn
nhân trong diễn đàn này và có tất cả các quyền của nạn nhân.

Hình 2.3 : Các bước tấn cơng stored XSS
-Reflected XSS :
- Cịn được gọi là kiểu tấn cơng XSS không liên tục (Non-Persistent). Đây là
loại tấn công phổ biến . Trong loại này, mã độc được gửi trở lại người dùng với sự
giúp đỡ của ứng dụng web. Chúng dưới dạng một tin nhắn thơng báo lỗi, kết quả
tìm kiếm… gửi đến người dùng. Để làm điều này, kẻ tấn cơng gửi một liên kết cho
người dùng có thể bằng email (đoạn mã hình 2.4). Trong liên kết là mã HTML có
chứa một script để tấn cơng các máy client nhận được email này. Nếu người dùng
nhấp chuột vào liên kết thì sẽ hiển thị các trang web được yêu cầu trong liên kết này.

18


Trên trang web có thể chứa mã độc hại, chúng sẽ được gửi tới trình duyệt của người
dùng và nó được thực thi.

Hình 2.4: Ví dụ về tấn cơng “Reflected XSS”.
Tóm tắt các bước thực hiện:
• Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ

hổng XSS.
• Bước 2: Người dùng nhận được 1 liên kết thơng qua email hay trên chính trang
Web (như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…).
Thơng thường hacker khiến người dùng chú ý bằng những câu kích thích sự tị mị
của người dùng như “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn đang chờ
bạn!”,…
• Bước 3: Chuyển nội dung thơng tin (cookie, tên, mật khẩu…) về máy chủ của
hacker.
• Bước 4: Hacker tạo một chương trình cgi (ở ví dụ 3 này là steal.cgi) hoặc một
trang Web để ghi nhận những thơng tin đã đánh cắp vào 1 tập tin.
• Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm
nhập vào tài khoản của người dùng.

Hình 2.5 : Các bước tấn cơng XSS Reflected

19


- Dom- based Xss :
Đây là loại thứ ba của kiểu tấn cơng XSS gây hại đến trình duyệt của người dùng.
Trong trường hợp này, kẻ tấn công đặt một tập tin Flash độc trên một trang web mà
người dùng ghé thăm. Khi trình duyệt của người dùng tải về các video, tập tin kích
hoạt một script trong trình duyệt, kẻ tấn cơng có thể kiểm sốt các yếu tố của các
trang web bên trong trình duyệt của người sử dụng.
Một XSS DOM-base hoạt động hoàn toàn trong phạm vi của trình duyệt
của nạn nhân và thậm chí một số cuộc tấn cơng cịn có thể khơng được phát hiện
thấy trên máy chủ.
2.4 Các cách ngăn chặn XSS:
Một số cuộc tấn cơng có thể được ngăn chặn bằng chính sách “Same source
Origination Policy”. Mơ hình này được sử dụng rộng rãi trong vấn đề đảm bảo an

ninh Scripting. Chính sách này ngăn cản việc một document mà được tải từ một
website có thể truy cập các thành phần của một document được tải từ một website
khác. Tuy nhiên, trong một cuộc tấn cơng XSS các script có thể truy cập dữ liệu
trong bối cảnh của document bị tấn công. Nếu kẻ tấn công nhúng mã độc vào liên
kết tương tự như hình 2.3, mơ hình bảo mật đó có thể khơng cịn tác dụng bởi vì
đoạn script đó được chạy trong chính trang web đó chứ khơng phải là một trang
web khác. Nó có thể lấy tài nguyên trong trang web và truyền ra ngoài.
Để tránh các lỗi này, cách đơn giản nhất là người dùng nên vơ hiệu hóa việc
thực thi các ngơn ngữ script trên trình duyệt của mình. Về cơ bản điểu này là đúng
nhưng giải pháp này ảnh hưởng đến tất cả các trang web dù chúng có bị lỗ hổng hay
khơng. Và điều đó làm giảm các chức năng của một trang web. Ví dụ, một trang
web mà sử dụng Ajax dựa trên JavaScript (là một sự kết hợp các cơng nghệ để cải
tiến tính tương tác của trang web) mà nếu script bị vô hiệu hóa thì việc này sẽ
khơng thực hiện được. Một lựa chọn khác là chỉ vào những trang web tin cậy. Điều
này có thể rất khó khăn nếu một cơng cụ tìm kiếm được sử dụng để tìm kiếm một
thứ gì đó trên trang web. Các trang web được trả về bởi cơng cụ tìm kiếm mà chưa
từng được xem trước đó thì nó khơng thể biết các trang web đó có tin cậy hay

20


không. Sau đây, là các phương pháp ngăn chặn và phát hiện mà đã có những hiệu
quả nhất định.
2.4.1 Ngăn chặn XSS trong giai đoạn phát triển web.
Hai biện pháp chính để phịng chống XSS ở phía máy chủ là: lọc dữ liệu đầu vào
và khử đầu ra. Chúng có thể được thực hiện trong giai đoạn phát triển phần mềm :
Lọc đầu vào là quá trình xác nhận tất cả các dữ liệu vào.Cách bảo vệ này thực
hiện bởi các bộ lọc dựa vào việc loại bỏ các từ khóa được xác định trước, chẳng hạn
như “<”, “script”, “JavaScript”, hoặc “document”, ...
Khử đầu ra sử dụng một số ký tự, chẳng hạn như “ <”, ” " “, ... đã được mã hóa

khi người dùng cung cấp dữ liệu để gửi đi.
Ví dụ, ký tự đặc biệt “<” này đánh dấu bắt đầu của một thẻ HTML. Một kẻ tấn cơng
có thể nhúng mã mà đã được mã hóa của “<” và đoạn mã đó được gửi cho ứng dụng
web. Trình duyệt nhận được mã ký tự trên sẽ hiểu nó là chuẩn mã hóa ASCII và
dịch thành “<”. Như vậy, kẻ tấn công đã thực hiện thành công việc nhúng các thẻ
HTML, Java Script vào trang web.
Sau đây là cách mã hố(HEX) các kí tự thường dùng trong lỗi XSS của thanh
AddressBar của Browser.

Hình 2.6 : Đoạn hex được sử dụng trong lỗi XSS

21


Một địa chỉ đã được mã hóa HEX.
/>%25%33%44%68%74%74%70%25%33%41%25%32%46%25%32%46%6A%73
%6E%67%6F%63%2E%76%6E%6E%2E%6D%73%25%32%46%78%73%73%2
E%6A%73%3E%3C%25%32%46%73%63%72%69%70%74%3E
Như vậy, tất cả các ký tự đặc biệt(ví dụ “<”, “>”, “&”..) cần phải được xác
định và mã hóa nếu chúng chứa trong đầu ra hoặc chúng cần phải được lọc bỏ bởi
ứng dụng web. Nếu không cơ chế bảo mật trong ứng dụng có thể bị qua mặt bằng
cách tiêm mã scripting. Mọi dữ liệu đầu vào mà chứa trong đầu ra thì phải được mã
hóa, điều này có thể được thực hiện với “character entity references”. Ví dụ, ký tự
“<” từ dữ liệu vào nên được chuyển thành “character entity references” là “<”.
Nếu trang được tạo ra sử dụng mã hóa ký tự ISO 8859-1 thì ký tự đặc biệt đó có thể
được mã hóa thành “<”, sử dụng giá trị số. Mã hóa tất cả các đầu vào khơng tin
cậy mà được sử dụng trong đầu ra có thể làm tốn tài nguyên nhưng lại rất hiệu quả.
Phương pháp này được thưc hiện khi phát triển ứng dụng web mang lại hiệu
quả cao nhưng đòi hỏi người phát triển phải là người có kiến thức tốt về tất cả các
cuộc tấn cơng đã có và có thể có, và phải biết làm thế nào để tránh chúng. Đồng

thời, phương pháp này tốn rất nhiều tài nguyên cho việc lọc và mã hóa mỗi đầu vào
và đầu ra. Xử lý các yêu cầu trên cho một trang web phổ biến có thể làm cho chi phí
thực hiện của trang web lên rất cao. Tuy nhiên, nếu tất cả các dữ liệu khơng đáng
tin cậy bị " tước vũ khí " theo cách này thì XSS có thể hồn tồn được ngăn chặn.
2.4.2. Ngăn chặn XSS bằng phần mềm
Phần mềm kiểm tra các lỗ hổng XSS có thể được thực hiện theo hai cách tĩnh
và động. Kiểm tra tĩnh được thực hiện bằng cách phân tích thử nghiệm mã nguồn.
Trong cuốn sách “Sixth IEEE International Workshop on Web Site Evolution” của
các tác giả G.A. Di Lucca, A.R. Fasolino, M. Mastroianni, and P. Tramontana một
phương pháp được mô tả là tạo ra một biểu đồ kiểm sốt luồng thơng tin mà được
xử lý bởi máy chủ. Đồ thị bao gồm các nút đầu vào và đầu ra. Mỗi nút đầu vào có
thể là quá trình nhập dữ liệu của một form, đọc giá trị của một câu truy vấn trong

22


CSDL, cookie, dữ liệu từ một tập tin... Một nút đầu ra là liên quan đến câu truy vấn
mà ghi vào các trường trong CSDL, ghi vào file, một cookie hay đầu ra của một
trang web. Máy chủ có thể bị lỗ hổng nếu một phần của đồ thị luồng điều khiển tồn
tại kết nối một nút đầu ra với một nút đầu vào. Tuy nhiên, trong trường hợp dữ liệu
từ một trang gửi đến một trang khác thì ứng dụng web có thể khơng bị lỗ hổng đối
với kiểu tấn cơng này nếu chỉ một trang có lỗi bảo mật. Ví dụ một trang có thể đọc
đầu vào và lưu trữ vào một trường trong CSDL. Kết quả của phân tích này chỉ ra
rằng trang này có lỗ hổng tiềm tàng. Nhưng nếu trang khác mà đọc dữ liệu từ
trường này mà mã hóa mọi thứ trong đầu ra của trang và vì thế tồn thể ứng dụng
web là không bị tổn thương.
Trong kiểm tra động ta cho chạy lại các cuộc tấn công đã biết trên ứng dụng
web. Trong cuốn sách “Sixth IEEE International Workshop on Web Site Evolution”
trên các tác giả thực hiện việc kiểm tra động như là giai đoạn thứ hai của đánh giá
ứng dụng web. Chính xác hơn là các trang máy chủ mà có lỗ hổng theo một bước

phân tích tĩnh trước được kiểm tra lại trong kiểm tra động với một số tấn cơng đặc
biệt cho lỗ hổng đó. Các trình thu thập tiến hành kiểm thử hộp đen với một CSDL
được tạo ra. Nó phân tích các trang được tạo ra của ứng dụng web và sau đó chọn
cách tấn cơng để thực hiện.
Phân tích bằng phần mềm là phương pháp mạnh mẽ phát hiện các lỗ hổng có
thể.. Nhưng với phương pháp phân tích tĩnh, ta thấy nó hiệu quả với mã nguồn
nhưng nó chỉ kiểm tra để biết có lỗ hổng hay không chứ không khắc phục được lỗ
hổng. Kiểm thử hộp đen có thể thấy hết các vị trí của ơ nhập mà được sử dụng để
thực hiện trong các cuộc tấn cơng. Nhưng đó cũng chỉ là những cuộc tấn cơng đã
biết, và vì thế chỉ ngăn chặn được các lỗ hổng đó.
2.4.3. Ngăn chặn XSS bằng việc phân tích việc truyền dữ liệu
Để ngăn chặn việc truyền dữ liệu một hệ thống proxy được đề xuất. Nó có
thể được cài đặt phía người sử dụng để ngăn chặn tấn công XSS. Proxy phải giám
sát các yêu cầu (request) HTTP gửi đi và các kết quả (response) trả về của người
dùng đang lướt web. Có hai chế độ được gọi là “Response change mode” và

23


“Request change mode”. Trong “Response change mode”, proxy lưu trữ thông tin
về yêu cầu mà chứa những thẻ đặc biệt (ví dụ script). Nếu tiếp theo các thẻ đó lại
xuất hiện trong response gửi về bởi ứng dụng web thì mặc định các thẻ đó được mã
hóa và trở thành an tồn. Cịn trong “Request change mode” tham số trong yêu cầu
gửi đi được gắn kèm thêm một định danh là một số ngẫu nhiên nếu chúng chứa kí
tự đặc biệt. Tất cả các thẻ HTML đặc biệt trong tham số của yêu cầu gửi đi được
thêm một số ngẫu nhiên (nó hoạt động như một định danh). Ví dụ, với tham số
“<s>test</s>” một số ngẫu nhiên 234 được tạo ra và sử dụng như một định danh.
Request gửi đi được chỉnh sửa và trở thành “<234s>234test<234/s>234”. Sau khi
request được sửa đổi thì được gửi tới ứng dụng web. Và khi response trả về, nó sẽ
được quét để kiểm tra sự xuất hiện của các thẻ đã thay đổi. Nếu khơng có thẻ được

sửa đổi với định danh được phát hiện trong response thì ứng dụng là khơng có lỗ
hổng và yêu cầu bình thường được gửi đi và response trả lại được chuyển cho người
sử dụng. Trong chế độ này số lượng yêu cầu và response là tăng gấp đôi. Thông tin
về lỗ hổng bảo mật tiềm năng này được gửi tới CSDL để chia sẻ giữa các máy chủ
proxy. Hệ thống này khơng có thơng tin về cấu trúc và ngữ nghĩa của trang web vừa
truy cập, nó chỉ có thể kiểm tra tham số được xử lý bởi ứng dụng web mà được sử
dụng trong yêu cầu http. Nếu mã hóa được sử dụng thì proxy khơng thể theo dõi các
request và các response.
Ngoài ra trong cuốn sách “10th ACM Conferenceon Computerand
Communication Security” của các tác giả Christopher Kruegel và Giovanni Vigna
có giới thiệu một hệ thống phát hiện xâm nhập. Hệ thống này giúp phát hiện các
cuộc tấn công vào máy chủ web và ứng dụng web. Các log file của máy chủ web
được phân tích cho các dị thường trong các yêu cầu HTTP. Giải pháp này bao gồm
giai đoạn đọc và giai đoạn phát hiện. Trong giai đoạn đọc, các chuỗi truy vấn gửi
đến ứng dụng web được sử dụng để tính điểm mà dựa trên một mơ hình. Mơ hình
và điểm số được thích ứng với từng ứng dụng web. Trong giai đoạn phát hiện các
điểm số cho mỗi câu truy vấn được tính tốn bằng cách sử dụng mơ hình đào tạo mà
vượt quá một ngưỡng nhất định thì là dấu hiệu cho một cuộc tấn công. Để phát hiện

24


ra các dị thường địi hỏi một mơ hình tốt để cung cấp các điểm số chính xác và
ngưỡng phải là một số không quá cao (nếu không các cuộc tấn cơng có thể khơng bị
phát hiện). Nhưng ưu điểm của nó là có thể phát hiện các cuộc tấn công mới mà
không cần thay đổi ứng dụng.
2.4.4. Ngăn chặn XSS bằng việc theo dõi dữ liệu nhạy cảm
Để ngăn chặn XSS bằng việc theo dõi dữ liệu nhạy cảm thì ta phải tích hợp
trong trình dịch một chương trình để đánh dấu và theo dõi các dữ liệu nhạy cảm.
Bất cứ khi nào mà ứng dụng cố gắng đưa dữ liệu ra bên ngồi chương trình thì nó sẽ

bị ngăn chặn. Việc đánh dấu và theo dõi các dữ liệu nhạy cảm như vậy gọi là
“tainting”. Các dữ liệu nhạy cảm phải được quy định cụ thể. Ví dụ như là biến
session, database results, biến trong một form, cookies, thơng tin HTTP header. Và
phải có một luật để theo dõi các dữ liệu nhạy cảm đó. Ví dụ, khi chúng được truyền
trong các hàm, được gán cho các biến khác… Đối với kiểu ngăn chặn này thì khơng
cần phải chỉnh sửa chương trình ứng dụng mà chỉ cần chỉnh sửa trình biên dịch. Khi
đã tích hợp giải pháp này vào trình biên dịch thì tất cả ứng dụng mà chạy trên nó sẽ
được bảo vệ. Tuy nhiên khi có lỗ hổng mới thì lại phải xây dựng lại trình biên dịch.
2.4.5. Mã hóa an tồn (Secure Coding)
Cách tốt nhất để ngăn chặn các lỗ hổng bảo mật trong các ứng dụng là viết
mã an tồn. Q trình phát triển phần mềm đã dần dần được cải thiện theo thời gian
và có nhiều phương pháp tiếp cận khác nhau. Tùy thuộc vào quy mơ nhóm, quy mơ
dự án, thời gian và ngân sách tiền tệ hoặc chỉ đơn giản là sở thích cá nhân, nhóm
nhà phát triển phần mềm có thể lựa chọn từ tập hợp các mơ hình phát triển phần
mềm khác nhau hay từ các mơ hình cũ như mơ hình thác nước, mơ hình V, hoặc là
một trong các phương pháp nhanh như Extreme Programming, SCRUM và vv…
Tuy nhiên, trong số những phương pháp này khơng có phương pháp nào tập trung
chủ yếu vào cách mã hóa an toàn.
Michael Howard và Steve Lipner từ Microsoft đã phát triển và cơng bố cuốn
sách có tên "Security Development Lifecycle" (SDL). SDL được hoàn thành và
được giới thiệu trong tháng 7 năm 2004 tại Microsoft và các tác giả cho rằng sau đó

25


×