Các công cụ hỗ trợ người lập trình web, người quản trị mạng cũng xuất hiện giúp tìm kiếm lỗ hổng của ứng dụng web nhưng nó không theo kịp sự phát triển nhanh đến mức chóng mặt theo xu hư
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan đề tài nghiên cứu của tôi do tôi nghiên cứu và thực hiện dưới
sự hướng dẫn của Thầy giáo TS Nguyễn Đình Hƣng Với mục đích học tập, nghiên
cứu để nâng cao kiến thức và trình độ chuyên môn nên tôi đã làm luận văn này một cách nghiêm túc và hoàn toàn trung thực
Để hoàn thành bản luận văn này, ngoài các tài liệu tham khảo đã liệt kê, tôi cam đoan không sao chép toàn văn các công trình hoặc thiết kế tốt nghiệp của người khác
Nếu xảy ra bất cứ điều không đúng như những lời cam đoan trên, tôi xin chịu hoàn toàn trách nhiệm trước viện và Nhà trường
Hà Nội, tháng 8 năm 2015
Học viên
Trần Thị Hằng
Trang 2LỜI CẢM ƠN
Để hoàn thành luận văn “Nghiên cứu bảo mật thông tin cho hệ thống website”,
em xin tỏ lòng biết ơn sâu sắc đến TS – Nguyễn Đình Hưng đã tận tình hướng dẫn trong suốt quá trình viết luận văn tốt nghiệp
Em xin chân thành cảm ơn quý Thầy, Cô Viện Công nghệ Thông tin & Truyền thông, Trường Đại học Bách Khoa Hà Nội, đã tận tình truyền đạt kiến thức trong thời gian học tập và nghiên cứu Với vốn kiến thức được tiếp thu trong quá trình học tập và nghiên cứu không chỉ là nền tảng cho quá trình nghiên cứu khóa luận mà còn là hành trang quý báu để em bước vào đời một cách vững chắc và tự tin
Em rất biết ơn sự ủng hộ của đồng nghiệp, gia đình và bạn bè – những người thân yêu luôn là chỗ dựa vững chắc cho em
Trong phạm vi luận văn tốt nghiệp cao học khó có thể diễn đạt hết ý về mặt lý thuyết cũng như kỹ thuật, mặc dù đã cố gắng hoàn thành luận văn với tất cả sự nổ lực của bạn thân, song luận văn khó có thể tránh khỏi những thiếu sót Kính mong nhận được những ý kiến đóng góp để tác giả tiếp tục hoàn thiện kiến thức cũng như giải pháp của mình
Cuối cùng, em xin kính chúc Quý Thầy cô, Bạn bè, Đồng nghiệp luôn dồi dào sức khỏe và thành công trong sự nghiệp
Xin chân thành cảm ơn!
Học viên
Trần Thị Hằng
Trang 3M C C
LỜI CAM ĐOAN
LỜI CẢM ƠN
DANH M C CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
DANH M C CÁC HÌNH VẼ, CÁC BIỂU BẢNG
MỞ ĐẦU 1
CHƯƠNG I TỔNG QUAN VỀ AN NINH AN TOÀN ỨNG D NG WEB 3
1.1 Khái niệm về an toàn thông tin 3
1.2 Các công nghệ dùng trong ứng dụng web 6
1.2.1 Giao thức HTTP, SSL 6
1.2.2 Công nghệ được sử dụng để tạo trang web 18
1.3 Phân tích thực trạng bảo mật website ngày nay 21
1.4 Các rủi ro thường gặp trong ứng dụng web 24
1.4.1 Dữ liệu đầu vào không được kiểm tra 24
1.4.2 Lỗi kiểm soát truy cập nguồn tài nguyên 26
1.4.3 Lỗi liên quan đến quá trình quản lý xác thực và phiên truy cập 27
1.4.4 Lỗi Cross Site Scripting (XSS) 27
1.4.5 Lỗi tràn bộ đệm 29
1.4.6 Lỗi Injection 30
1.4.7 Lưu trữ thiếu an toàn 31
1.4.8 Tấn công từ chối dịch vụ 32
1.4.9 Quản lý cấu hình thiếu an toàn 33
CHƯƠNG II PHÂN TÍCH CÁC VẤN ĐỀ LỖ HỔNG BẢO MẬT THÔNG TIN WEBSITE 35
2.1 Thao tác trên tham số truyền 35
2.1.1 Thao tác trên URL 35
2.1.2 Thao tác trên biến ẩn Form 36
2.1.3 Thao tác trên Cookie 38
2.1.4 Thao tác trong HTTP Header 39
Trang 42.2 Chèn câu lệnh truy vấn SQL (SQL Injection) 40
2.2.1 Khái niệm SQL Injection 40
2.2.2 Giới thiệu mô hình cơ sở dữ liệu 40
2.2.3 Các cách tấn công 41
2.2.4 Cách phòng chống 54
2.3 Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross Side Scripting) 57 2.3.1 Kỹ thuật tấn công Cross Site Scripting (XSS) 57
2.3.2 Phương pháp tấn công XSS truyền thống 59
2.3.3 Một số website tìm thấy lỗ hổng XSS 62
2.3.4 Tấn công XSS bằng Flash 63
2.3.5 Cách phòng chống 65
2.4 Tràn bộ đệm (Buffer Overfow) 65
2.4.1 Khái niệm 65
2.4.2 Sơ đồ tổ chức của bộ nhớ 66
2.4.3 Một số cách gây tràn bộ đệm qua ứng dụng web 67
2.4.4 Các cách phòng chống 67
2.5 Tấn công từ chối dịch vụ (DoS) 67
2.5.1 Khái niệm 67
2.5.2 Những khả năng bị tấn công bằng DoS 68
2.5.3 Các kỹ thuật tấn công 68
2.5.4 Biện pháp phòng chống 73
2.6 Chiếm hữu phiên làm việc (Session Management) 74
2.6.1 Tổng quan về Session ID 74
2.6.2 Ấn định phiên làm việc 74
2.6.3 Đánh cắp phiên làm việc 76
CHƯƠNG III TRIỂN KHAI PHƯƠNG PHÁP TẤN CÔNG TỪ CHỐI DỊCH V VÀ GIẢI PHÁP BẢO MẬT WEBSITE TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT VINH 77
3.1 Tình hình ứng dụng công nghệ thông tin giai đoạn 2011-2015 77
3.1.1 Hạ tầng kỹ thuật 77
Trang 53.1.2 Ứng dụng nội bộ 78
3.2 Hiện trạng Website trường Đại học Sư Phạm Kỹ thuật vinh 79
3.3 Tấn công từ chối dịch vụ (DoS) 79
3.3.1 Giới thiệu về tấn công mô phỏng 79
3.3.2 Công cụ và các bước chuẩn bị 79
3.3.3 Tiến hành tấn công 80
3.4 Đánh giá 84
3.5 Giải pháp chống DoS được đưa ra cho website trường Đại học Sư phạm Kỹ thuật vinh 84
KẾT LUẬN 91
TÀI LIỆU THAM KHẢO 92
Trang 6DANH M C CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
ICMP Internet Control Message Protocol
Trang 7DANH M C CÁC HÌNH VẼ, CÁC BIỂU BẢNG
Hình 1.1 Cơ sở cho một mô hình tổng quát……….…… ……….… ………5
Hình 1.2 Lớp giao thức HTTP……….…… ……6
Hình 1.3 Cấu hình đầy đủ URI……….………….…… … 7
Hình 1.4 Hoạt động của HTTP……… … ……… …………8
Hình 1.5 Hoạt động kết nối của HTTP…… … ……….……… 8
Hình 1.6 Hoạt động Pipelining của HTTP……….…………8
Hình 1.7 Hoạt động GET của HTTP……….……….…… … 9
Hình 1.8 Ví dụ về web form POST………… ……….…… ……… 10
Hình 1.9 Hoạt động POST của HTTP……… ……….…… ……….…………10
Hình 1.10 Hoạt động PUT của HTTP……… ……….…… ……….…………11
Hình 1.11 Ví dụ về File Upload – PUT…… ……… …… ……….……….…11
Hình 1.12 Hoạt động File Delection – DELETE…….…… ……….…………11
Hình 1.13 Cấu trúc thông điệp HTTP Request……….…… ……….……….…12
Hình 1.14 Một ví dụ về nội dung thông điệp HTTP……… ….………….…………13
Hình 1.15 Ví dụ cụ thể về Request-Line ……… …….…… …… …….……… 13
Hình 1.16 Cấu trúc thông điệp HTTP Response …….…… …… …… …………14
Hình 1.17 Cụ thể trường Status-Line ……… …….…… …… …….…………14
Hình 1.18 Các giao thức con của SSL trong mô hình TCP/IP…… …… …………15
Hình 1.19 Từng bước thành lập một kết nối SSL…….…… …… ……….………16
Hình 1.20 Sử dụng Proxy để thay đổi tham số…….…… …… …….….…….……26
Hình 1.21 Tấn công XSS…….…… … ……… … ….……….…28
Hình 1.22 Lỗi tràn bộ đệm….…… … ……… ……… … ….…………29
Hình 1.23 Lỗi SQL Injection….…… … ……….… … ……… ……….…30
Hình 1.24 Lưu trữ thiếu an toàn….…….……….…… … ……… …………31
Hình 1.25 Tấn công từ chối dịch vụ.…….……….….… ……… …… …33
Hình 2.1 Quá trình thực hiện XSS.…….……….… … ……… …… …59
Hình 2.2 Sơ đồ tổ chức bộ nhớ.…….……….… …… ……… …… …66
Hình 2.3 Cơ chế thiết lập kết nối trước khi truyền số liệu.….………… …… …69
Hình 2.4 Tấn công DoS truyền thống.….……… …… …….69
Hình 2.5 Kiểu tấn công DoS vào băng thông.….……… …… …70
Trang 8Hình 2.6 Tấn công DDoS.….……… ……… …… ……71
Hình 2.7 Tấn công kiểu DRDoS.….……… …… …72
Hình 3.1 Sơ đồ mạng trường Đại học Sư phạm Kỹ thuật Vinh.………… ….……78
Hình 3.2 Website trường Đại học Sư phạm Kỹ thuật Vinh.………… …… …79
Hình 3.3 Cài đặt DoSHTTP 2.5.1.……… … …… ……80
Hình 3.4 Chọn Card mạng để bắt gói tin.……… … …… …80
Hình 3.5 website mục tiêu kiểm tra.……… … …… …….81
Hình 3.6 Kiểm tra WireShark.……….……… … …… …81
Hình 3.7 Xác định mục tiêu và bắt đầu tấn công….……… … …… …82
Hình 3.8 Kiểm tra các kết nối trong WireShark khi tấn……… … …… …82
Hình 3.9 Kiểm tra lại website ……… … …… …83
Hình 3.10 Tắt phần mềm DoSHTTP……… … ……….… 83
Hình 3.11 File báo cáo kết quả ……… … …… …83
Hình 3.12 Mô hình IP Snort ……… … …… …88
Hình 3.13 Quá trình xử lý gói Hình……… … …… ……89
Hình 3.14 Công cụ FortGuard Firewall……… … …… …90
Trang 9ra vấn đề cấp thiết cần làm như thế nào để bảo đảm an toàn thông tin cho ứng dụng web, thông tin của người sử dụng Các khái niệm chuyên môn về ứng dụng web và tấn công ứng dụng web cũng dần trở nên phổ biến hơn trong các tài liệu chuyên ngành Các công cụ hỗ trợ người lập trình web, người quản trị mạng cũng xuất hiện giúp tìm kiếm lỗ hổng của ứng dụng web nhưng nó không theo kịp sự phát triển nhanh đến mức chóng mặt theo xu hướng nhanh hơn, đẹp hơn của các ứng dụng web, tất nhiên nó không thể ngăn chặn hoàn toàn các cuộc tấn công ứng dụng web, khi mà các cuộc tấn công ngày càng đa dạng khai thác triệt để những lỗi của ứng dụng web, của người quản trị, hay người lập trình ứng dụng web
Thống kê cho thấy 75% cuộc tấn công Internet là tấn công ứng dụng web, nó gây ra những thiệt hại vô cùng to lớn, vì vậy việc tìm hiểu về tấn công ứng dụng web
là rất cần thiết nhằm có cách phòng chống tấn công và bảo mật thông tin website hiệu
quả trở thành một yêu cầu cấp thiết Luận văn “Nghiên cứu bảo mật thông tin cho hệ thống website” sẽ đáp ứng phần nào nhu cầu cấp thiết về an ninh bảo mật hiện nay
Xây dựng nên quy trình phục vụ cho việc kiểm tra và phát hiện các điểm yếu an toàn thông tin trong ứng dụng web, từ đó đưa ra báo cáo đánh giá về an toàn thông tin cho website
Luận văn gồm 3 chương với các nội dung sau:
Chương I: Tổng quan về an ninh an toàn ứng dụng web
Trình bày khái niệm về an toàn thông tin Các rủi ro thường gặp và cơ chế phòng thủ trong ứng dụng web
Chương II: Phân tích các vấn đề lỗ hổng bảo mật thông tin website
Trang 10Trình bày một cách chi tiết các phương thức tấn công cũng như các cách thức phòng chống tấn công
Chương III: Triển khai demo các hình thức tấn công và các giải pháp bảo mật cho Website trường Đại học Sư phạm Kỹ thuật vinh
Mô phỏng một số tấn công điển hình như SQL Injection, DoS, và giải pháp thực nghiệm phòng chống tấn công cho website trường Đại học Sư phạm Kỹ thuật Vinh
Luận văn đã được kiểm tra kỹ nhưng cũng không tránh khỏi những sai sót, rất mong nhận được sự đóng góp ý kiến của quý thầy cô, bạn bè và các đồng nghiệp để đề tài hoàn thiện hơn nữa
Trang 11CHƯƠNG I TỔNG QUAN VỀ AN NINH AN TOÀN ỨNG D NG WEB
1.1 Khái niệm về an toàn thông tin
Thông tin được lưu trữ bởi các sản phẩm và hệ thống CNTT là một tài nguyên quan trọng cho sự thành công của tổ chức đó, là tài sản của một cá nhân hay tổ chức Các thông tin cá nhân lưu trữ trong hệ thống thông tin cần được giữ bí mật, bảo vệ và không bị thay đổi khi không được phép Trong khi các sản phẩm và hệ thống CNTT thực hiện các chức năng của chúng, các thông tin cần được kiểm soát để đảm bảo chúng được bảo vệ chống lại các nguy cơ, ví dụ như việc phổ biến và thay đổi thông tin không mong muốn và trái phép, nguy cơ mất mát thông tin [1],[5],[6]
An toàn thông tin là an toàn kỹ thuật cho các hoạt động của các cơ sở hạ tầng
thông tin, trong đó bao gồm an toàn phần cứng và phần mềm theo các tiêu chuẩn kỹ thuật do nhà nước ban hành; duy trì các tính chất bí mật, toàn vẹn, chính xác, sẵn sàng phục vụ của thông tin trong lưu trữ, xử lý và truyền tải trên mạng (theo định nghĩa trong Nghị định 64-2007/NĐ-CP)
Thuật ngữ an toàn CNTT thường sử dụng để chỉ việc ngăn chặn và làm giảm
nhẹ các mối nguy hại tương tự đối với các sản phẩm và hệ thống CNTT
Mục tiêu hướng tới của người dùng là bảo vệ các tài sản nói trên Tuy nhiên, các sản phẩm và hệ thống thường luôn tồn tại những điểm yếu dẫn đến những rủi ro có thể xảy ra, làm tổn hại đến giá trị tài sản thông tin Các đối tượng tấn công (tin tặc) có chủ tâm đánh cắp, lợi dụng hoặc phá hoại tài sản của các chủ sở hữu, tìm cách khai thác các điểm yếu để tấn công, tạo ra các nguy cơ và các rủi ro cho các hệ thống
Với các biện pháp an toàn thông tin người dùng có được công cụ trong tay để nhận thức được các điểm yếu, giảm thiểu các điểm yếu, ngăn chặn các nguy cơ tấn công, làm giảm các yếu tố rủi ro Như vậy, các biện pháp và kỹ thuật đảm bảo an toàn thông tin chính là mang lại sự tin cậy cho các sản phẩm và hệ thống
Đảm bảo an toàn thông tin là đảm bảo an toàn kỹ thuật cho hoạt động của các
cơ sở hạ tầng thông tin, trong đó bao gồm đảm bảo an toàn cho cả phần cứng và phần mềm hoạt động theo các tiêu chuẩn kỹ thuật do nhà nước ban hành; ngăn ngừa khả năng lợi dụng mạng và các cơ sở hạ tầng thông tin để thực hiện các hành vi trái phép gây hại cho cộng đồng, phạm pháp hay khủng bố; đảm bảo các tính chất bí mật, toàn
Trang 12vẹn, chính xác, sẵn sàng phục vụ của thông tin trong lưu trữ, xử lý và truyền tải trên mạng
Như vậy khái niệm đảm bảo an toàn thông tin bao hàm đảm bảo an toàn cho cả phần cứng và phần mềm An toàn phần cứng là bảo đảm hoạt động cho cơ sở hạ tầng thông tin An toàn phần mềm gồm các hoạt động quản lý, kỹ thuật nhằm bảo vệ hệ thống thông tin, đảm bảo đảm cho các hệ thống thực hiện đúng chức năng, phục vụ đúng đối tượng một cách sẵn sàng, chính xác, tin cậy An toàn công nghệ thông tin là đảm bảo an toàn kỹ thuật cho các sản phẩm, dịch vụ và hệ thống công nghệ thông tin
An toàn thông tin yêu cầu nhằm đảm bảo 3 đặc điểm quan trọng nhất của thông tin, đó là: tính bí mật, tính toàn vẹn và tính sẵn sàng Các đặc điểm này bao trùm toàn
bộ phạm trù an toàn các hệ thống thông tin Các đặc điểm này cũng đúng với mọi tổ chức, không lệ thuộc vào việc chúng chia sẻ thông tin như thế nào
Tính bí mật
Tính bí mật là tâm điểm chính của mọi giải pháp an toàn cho một sản phẩm trên
hệ thống CNTT Một giải pháp an toàn là tập hợp các quy tắc xác định quyền được truy cập đến với thông tin đang tìm kiếm, đối với một số lượng người sử dụng thông tin nhất định và một số lượng thông tin là tài sản nhất định Trong trường hợp kiểm soát truy cập cục bộ, nhóm người truy cập sẽ được kiểm soát xem là họ đã truy cập những số liệu nào Tính bí mật là sự đảm bảo rằng các chức năng kiểm soát truy cập
có hiệu lực
Tính toàn vẹn
Tính toàn vẹn, không bị sửa đổi là đặc tính phức hợp nhất và dễ bị hiểu lầm của thông tin Một định nghĩa khái quát hơn được sử dụng ở trong tài liệu này là vấn đề cấp độ là chất lượng của số liệu (thông tin), chứ không phải là con người được, hoặc không được phép truy cập Đặc tính toàn vẹn được hiểu là chất lượng của thông tin được xác định căn cứ vào độ xác thực khi phản ánh thực tế Số liệu càng gần với thực
tế bao nhiêu thì chất lượng thông tin càng chuẩn bấy nhiêu
Tính sẵn sàng
Tính sẵn sàng của thông tin cũng là một đặc tính quan trọng, không khác gì các đặc tính đã đề cập đến Đó là khía cạnh sống còn của an toàn thông tin, đảm bảo cho
Trang 13thông tin đến đúng địa chỉ (người được phép sử dụng) khi có nhu cầu, hoặc được yêu cầu
Bộ ba các đặc tính then chốt của thông tin đề cập đến ở trên bao trùm toàn bộ các mặt của việc đảm bảo an toàn thông tin Một ma trận được tạo nên bởi 3 yếu tố là
3 trạng thái của thông tin (truyền dẫn, lưu giữ, xử lí) được minh họa ở trục hoành; cùng với 3 đăc tính then chốt của thông tin (độ tin cậy, tính toàn vẹn, tính sẵn sàng) được minh họa trên trục tung có thể được sử dụng làm nền tảng cho mô hình thể hiện các biện pháp an toàn thông tin
Hình 1.1 Cơ sở cho một mô hình tổng quát
Các biện pháp an toàn hệ thông thông tin được phân loại thành 3 lớp như sau, tạo thành chiều thứ 3 của không gian ma trận:
Các biện pháp công nghệ: Bao hàm tất cả các biện pháp thiết bị phần cứng, các
phần mềm, phần sụn (firmware) cũng như các kỹ thuật công nghệ liên quan được
áp dụng nhằm đảm bảo các yêu cầu an toàn của thông tin trong các trạng thái của
nó như đã kể trên
Các biện pháp về tổ chức: Đưa ra các chính sách, quy định, phương thức thực
thi Thực tế cho thấy, an toàn thông tin không chỉ đơn thuần là vấn đề thuộc phạm trù công nghệ, kỹ thuật Hệ thống chính sách và kiến trúc tổ chức đóng một vai trò hữu hiệu trong việc đảm bảo an toàn thông tin
Các biện pháp về đào tạo, tập huấn, nâng cao nhận thức: Các biện pháp công
nghệ hay các biện pháp về tổ chức thích hợp phải dựa trên các biện pháp đào tạo, tập huấn và tăng cường nhận thức để có thể triển khai đảm bảo an toàn thông tin từ nhiều hướng khác nhau Các nhà nghiên cứu và các kỹ sư cũng cần phải hiểu rõ các nguyên lý an toàn hệ thống thông tin, thì mới mong các sản phẩm và hệ thống
Trang 14do họ làm ra đáp ứng được các nhu cầu về an toàn thông tin của cuộc sống hiện tại đặt ra
Mô hình ma trận không gian 3 chiều kể trên có thể áp dụng làm cơ sở cho đánh giá an toàn thông tin một cách khái quát nhất Ví dụ: Người đánh giá an toàn thông tin cho một sản phẩm là một hệ thống thông tin sẽ phải xác định các trạng thái thông tin trong hệ thống cần được đánh giá Mô hình tổng quát này sẽ cho phép xác định các trạng thái thông tin không bị lệ thuộc vào bất kỳ công nghệ cụ thể nào đang được áp dụng
1.2 Các công nghệ dùng trong ứng dụng web
Hình 1.2 Lớp giao thức HTTP
Trang 151.2.1.1.2 URI – Uniform Resource Identifiers
Thông thường, chúng ta quen thuộc với định nghĩa URL (Uniform Resource Locators) Địa chỉ http://www.example.com là một ví dụ về URL Trên thực tế, không
có nhiều khác biệt giữa hai khái niệm URL và URI, URL là chỉ một loại của URI
URI là một đặc điểm kỹ thuật của giao thức HTTP Như hình dưới cho thấy một URI chứa rất nhiều các thành phần, không đơn giản như URL
Hình 1.3 Cấu hình đầy đủ URI
Protocol: Xác định các giao thức và các ứng dụng cần thiết để truy cập tài nguyên, trong trường hợp này là giao thức HTTP
Username: Nếu giao thức hỗ trợ khái niệm về tên người dùng thì username cung cấp tên người dùng để chứng thực truy cập tài nguyên
Password: Mật khẩu truy cập tài nguyên
Host: Tên miền truyền thông cho webserver
Port: Là port cho các giao thức lớp ứng dụng, ví dụ như HTTP là cổng 80 (có thể bỏ qua tham số này)
Path: Đường dẫn path cấp đến tài nguyên được đặt trên server
File: Tên các tập tin tài nguyên trên server
Query: Các truy vấn thêm thông tin về tài nguyên của client
Fragment: Một vị trí nào đó trong tài nguyên
1.2.1.1.3 Hoạt động HTTP
Kết nối
HTTP thuộc giao thức TCP, vì vậy trước khi tiến hành truyền thông phải thực hiện phiên kết nối TCP
Trang 16Trước đây, mỗi kết nối TCP sẽ thực hiện chỉ một request HTTP và một response, nghĩa là nếu client request 2 lần thì sẽ cần 2 phiên kết nối TCP Điều này gây
ra nhiều bất cập, ảnh hưởng rất nhiều đến hiệu năng hoạt động của server
Trang 17 Web Page Retrieval – GET
Hoạt động HTTP đơn giản nhất là GET Đó là cách để client lấy một đối tượng hoặc tài nguyên nào đó trên server Các trình duyệt sẽ yêu cầu một website từ server với GET
Hình 1.7 Hoạt động GET của HTTP
Với ví dụ trên, client khởi tạo và gửi thông điệp GET đến server, thông điệp này định danh đối tượng mà client yêu cầu server đáp ứng bằng một URI (Uniform Resource Identifier) Server có thể trả về tài nguyên mà client yêu cầu với một mã trạng thái 200 OK Nếu server không đáp ứng được yêu cầu client thì nó sẽ gửi về một
số mã trạng thái khác được mô tả ở bảng bên dưới
Mã trạng
100 – 199 Thông tin: các server nhận được yêu cầu nhưng kết quả chưa có sẵn để trả
về client
200 - 299 Thành công: Các server đã có thể trả về theo yêu cầu thành công
300 – 399 Chuyển hướng: Các client đã được chuyển hướng yêu cầu đến server
khác hoặc tài nguyên khác
400 – 499 Lỗi client: Các yêu cầu của client chứa lỗi mà server không thể trả về kết
quả
500 – 599 Lỗi server: Server đã không hành động theo yêu cầu, ngay cả yêu cầu là
hợp lệ
Bảng Mã trạng thái được trả về của HTTP
Web Forms – POST
Trong khi GET cho phép một server gửi thông tin đến client, thì hoạt động POST cung cấp một cách để client gửi thông tin đến các server Trình duyệt sử dụng POST để gửi nội dung các Form đến web server Hình dưới cho thấy một ví dụ như vậy:
Trang 18Hình 1.8 Ví dụ về web form POST
Hình 1.9 Hoạt động POST của HTTP
Như hình trên cho thấy, hoạt động POST đơn giản như GET Client gửi một thông điệp POST và bao gồm thông tin mà nó muốn gửi đến server Cũng giống như GET, một phần của thông điệp POST là URI Nhưng trong trường hợp này, URI xác định các đối tượng trên server có thể xử lý thông tin
Cũng như GET, server có thể trả về thông tin cho client Đối với trình duyệt web, thông tin thường là một trang web mới để hiển thị
File Upload – PUT
Các hoạt động PUT cũng cung cấp một cách để client gửi thông tin đến các server Hay nói cách khác, PUT dùng để upload dữ liệu lên server
Như hình dưới đây cho thấy, hai hoạt động nhìn rất giống nhau Với POST, client gửi bao gồm một URI và dữ liệu Web server về mã trạng thái, tùy chọn kèm theo và dữ liệu Sự khác biệt giữa POST và PUT ở chỗ URI: Với POST, các URI xác định một đối tượng trên server mà có thể xử lý dữ liệu Với một PUT, các URI xác định đối tượng trong đó các server nên đặt dữ liệu (ví dụ đường dẫn cho server đặt dữ liệu)
Trang 19Trong khi một POST URI thường chỉ ra một chương trình, scrip… thì PUT URI thường là đường dẫn và tên cho tập tin
Hình 1.10 Hoạt động PUT của HTTP
Hình 1.11 Ví dụ về File Upload – PUT
File Delection – DELETE
Với GET và PUT, giao thức HTTP trở thành một giao thức chuyển file đơn giản Hoạt động DELETE sẽ hoàn thành chức năng này bằng cách giúp client xóa các đối tượng, tài nguyên từ các server
Như hình dưới đây cho thấy, client gửi một thông DELETE cùng với các URI của đối tượng mà server nên xóa Các server đáp ứng một mã trạng thái và dữ liệu kèm theo
Hình 1.12 Hoạt động File Delection – DELETE
Trang 20 Trạng thái – HEAD
Các hoạt động của HEAD giống như GET, ngoại trừ server không trả lại đối tượng thực tế yêu cầu Cụ thể, server sẽ trả về một mã trạng thái nhưng không có dữ liệu (HEAD có nghĩa là “tiêu đề”, nghĩa là server chỉ trả về thông điệp chứa tiêu đề chứ không chứa dữ liệu)
Client có thể sử dụng thông điệp HEAD khi muốn xác minh rằng một đối tượng
có tồn tại hay không
Ví dụ: Có thể sử dụng thông điệp HEAD để đảm bảo liên kết đến một đối tượng hợp lệ mà không tiêu tốn băng thông
Cache trong trình duyệt cũng có thể sử dụng thông điệp HEAD để xem một đối tượng đã thay đối hay không, nếu không thay đổi thì hiển thị thông tin đã được lưu trước đây, nếu thay đổi thì sẽ thực hiện GET để lấy dữ liệu về từ server
1.2.1.1.4 Thông điệp HTTP
Một thông điệp HTTP bắt đầu với một “line” hay một mã trạng thái, có thể được theo sau bởi các tiêu đề (header) khác nhau và phần thân (body) của thông điệp
Cấu trúc của thông điệp HTTP:
HTTP có hai tác nhân là client và server Các client gửi yêu cầu (request) và server trả lời (response) Vì vậy, chúng ta sẽ phân tích hai thông điệp chính là HTTP Requests và HTTP Responses
HTTP Request
Hình 1.13 Cấu trúc thông điệp HTTP Request
Trang 21Hình trên cho thấy cấu trúc cơ bản của HTTP Requests Một HTTP Request bắt đầu bởi Request-Line Request-Line có thể được theo sau bởi một hoặc nhiều header
và body
Để cụ thể hơn, hình bên dưới cho thấy một thông điệp http (dưới dạng văn bản)
do Internet Explorer của Microsoft gửi khi người dùng truy cập vào trang http://www.ft.com Dòng đầu tiên là Request-Line, và tiêu đề thông điệp tạo nên phần còn lại của văn bản
Hình 1.14 Một ví dụ về nội dung thông điệp HTTP
Hình dưới phân tích cụ thể hơn Request-Line, bao gồm 3 phần: Method-Phương thức của thông điệp, URI và Version-Phiên bản của HTTP
Hình 1.15 Ví dụ cụ thể về Request-Line
Phương thức (method) cụ thể xuất hiện đầu tiên trong Request-Line Trong ví
dụ trên đây là một phương thức GET
Mục tiếp theo trong Request-Line là Request-URI chứa nguồn tài nguyên cần truy cập Trong ví dụ trên, Request-URI là (/), chỉ ra một yêu cầu đối với các nguồn tài nguyên gốc Phần cuối cùng của Request-Line là phiên bản HTTP Như ví dụ trên cho thấy, HTTP phiên bản 1.1
HTTP Response
Request Response bắt đầu bởi Status-Line (dòng mã trạng thái) Sau đó là phần thông tin của Header và một dòng trắng Cuối cùng là phần body
Trang 22Hình 1.16 Cấu trúc thông điệp HTTP Response
Status-Line bắt đầu bởi số phiên bản của HTTP (trường hợp này là HTTP/1.1), sau đó là mã trạng thái (trường hợp này là 200 OK)
Giao thức SSL tổ hợp nhiều giải thuật mã hóa nhằm đảm bảo quá trình trao đổi thông tin trên mạng được bảo mật Việc mã hóa dữ liệu diễn ra một cách trong suốt, hỗ trợ nhiều giao thức khác chạy trên nền giao thức TCP
Giao thức SSL được hình thành và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape dẫn dắt bởi Elgammal và ngày nay đã trở thành chuẩn bảo mật
Trang 23thực hành trên Internet SSL là giao thức tầng (layered protocol), bao gồm 4 giao thức con sau:
Hình 1.18 Các giao thức con của SSL trong mô hình TCP/IP
Theo biểu đồ trên, SSL nằm trong tầng ứng dụng của giao thức TCP/IP Do đặc điểm này, SSL có thể được dùng trong hầu hết mọi hệ điều hành hỗ trợ TCP/IP mà không cần phải chỉnh sửa nhân của hệ thống hoặc ngăn xếp TCP/IP Điều này mang lại cho SSL sự cải tiến mạnh mẽ so với các giao thức khác như IPSec (IP Security Protocaol) Vì giao thức này đòi hỏi nhân hệ điều hành phải hỗ trợ và chỉnh sửa ngăn xếp TCP/IP SSL cũng có thể dễ dàng vượt qua tường lửa và proxy, cũng như NAT (Network Address Translation) mà không cần nguồn cung cấp
Hoạt động của giao thức SSL
Điểm cơ bản của SSL được thiết kế độc lập với tầng ứng dụng để đảm bảo tính
bí mật, an toàn và chống giả mạo luồng thông tin qua Internet giữa hai ứng dụng bất
Trang 24kỳ, ví dụ như webserver và các trình duyệt khách (browsers), do đó được sử dụng rộng rãi trong nhiều ứng dụng khác nhau trên môi trường Internet
Toàn bộ cơ chế hoạt động và hệ thống thuật toán mã hóa sử dụng trong SSL được phổ biến công khai, trừ khóa chia sẻ tạm thời (session key) được sinh ra tại thời điểm trao đổi giữa hai ứng dụng là tạo ngẫu nhiên và bí mật đối với người quan sát trên mạng máy tính Ngoài ra, giao thức SSL còn đòi hỏi ứng dụng chủ phải được chứng thực bởi một đối tượng lớp thứ ba (CA) thông qua giấy chứng thực điện tử (digital certificate) dựa trên mật mã công khai (ví dụ RSA)
Sau đây ta xem xét một cách khái quát cơ chế hoạt động của SSL để phân tích cấp độ an toàn của nó và các khả năng áp dụng trong các ứng dụng nhạy cảm, đặc biệt
là các ứng dụng về thương mại và thanh toán điện tử…
Hình 1.19 Từng bước thành lập một kết nối SSL
Trang 25Giao thức SSL dựa trên hai nhóm con giao thức là giao thức “bắt tay” (handshake protocol) và giao thức “bản ghi” (record protocol) Giao thức bắt tay xác định các tham số giao dịch giữa hai đối tượng có nhu cầu trao đổi thông tin hoặc dữ liệu, còn giao thức bản ghi xác định khuôn dạng cho tiến hành mã hóa và truyền tin hai chiều giữa hai đối tượng đó Khi hai ứng dụng máy tính, ví dụ giữa một trình duyệt web và máy chủ web, làm việc với nhau, máy chủ và máy khách sẽ trao đổi “lời chào” (hello) dưới dạng các thông điệp cho nhau với xuất phát đầu tiên chủ động từ máy chủ, đồng thời xác định các chuẩn về thuật toán mã hóa và nén số liệu có thể được áp dụng giữa hai ứng dụng Ngoài ra, các ứng dụng còn trao đổi “số nhận dạng/khóa theo phiên” (session ID, session key) duy nhất cho lần làm việc đó Sau đó ứng dụng khách yêu cầu có chứng thực điện tử (digital certificate) xác thực của ứng dụng chủ (web server)
Chứng thực điện tử thường được xác nhận rộng rãi bởi một cơ quan trung gian (là CA-Certificate Authority) như RSA Data Sercurity hay VeriSign Inc., một dạng tổ chức độc lập, trung lập và có uy tín Các tổ chức này cung cấp dịch vụ “xác nhận” số nhận dạng của một công ty và phát hành chứng chỉ duy nhất cho công ty đó như là bằng chứng nhận dạng (identity) cho các giao dịch trên mạng, ở đây là các máy chủ web server
Sau khi kiểm tra chứng chỉ điện tử của máy chủ (sử dụng thuật toán mật mã công khai, như RSA tại trình máy trạm), ứng dụng máy trạm sử dụng các thông tin trong chứng chỉ điện tử để mã hóa thông điệp gửi lại máy chủ mà chỉ có máy chủ có thể giải mã Trên cơ sở đó, hai ứng dụng trao đổi khóa chính (master key) – khóa bí mật hay khóa đối xứng - để làm cơ sở cho việc mã hóa luồng thông tin/dữ liệu qua lại giữa hai ứng dụng chủ khách Toàn bộ cấp độ bảo mật và an toàn của thông tin/dữ liệu phụ thuộc vào một số tham số:
(1) số nhận dạng theo phiên làm việc ngẫu nhiên
(2) cấp độ bảo mật của các thuật toán bảo mật áp dụng cho SSL
(3) độ dài của khóa chính (key length) sử dụng cho lược đồ mã hóa thông tin
Các thuật toán mã hóa dùng trong SSL
Các thuật toán mã hóa (cryptographic algorithm hay còn gọi là cipher) là các hàm toán học được sử dụng để mã hóa và giải mã thông tin Giao thức SSL hỗ trợ rất
Trang 26nhiều các thuật toán mã hóa, được sử dụng để thực hiện các công việc trong quá trình xác thực server và client, truyền tải các certificates và thiết lập các khóa của từng phiên giao dịch (session key) Client và server có thể hỗ trợ các bộ mã (cipher suite) khác nhau tùy thuộc vào nhiều yếu tố như phiên bản SSL đang dùng, chính sách của công ty về độ dài khóa mà họ cảm thấy chấp nhận được - điều này liên quan đến mức
độ bảo mật của thông tin,…
1.2.2 Công nghệ đƣợc sử dụng để tạo trang web
Ban đầu, các trang web tĩnh; người dùng gửi yêu cầu một tài nguyên nào đó, và server sẽ trả về tài nguyên đó Các trang web không có gì hơn là một văn bản được định dạng và phân tán Đối với các trình duyệt, thì trang web tĩnh không phải là các vấn đề khó khăn, và trang web lúc đầu chỉ để thông tin về các sự kiện, địa chỉ, hay lịch làm việc qua Internet mà thôi, chưa có sự tương tác qua các trang web
Năm 1990, Tim Berners-Lee, tại CERN, đã sáng chế ra HTML (Hyper Text Markup language), ngôn ngữ đánh dấu siêu văn bản HTML rất đơn giản và dễ dùng,
và nó trở thành một ngôn ngữ rất phổ biến và cơ bản
Tuy nhiên, không lâu sau đó, nhu cầu về các trang web động, có sự tương tác ngày một tăng, chính vì thế sự ra đời các công nghệ web động là một điều tất yếu Sau đây là một số công nghệ web động cơ bản:
Tuy nhiên, CGI không phải là cách an toàn cho các trang web động Với CGI, người khác có thể chạy chương trình trên hệ thống Vì thế có thể chạy các chương trình không mong muốn gây tổn hại hệ thống Nhưng dù vậy, cho đến nay thì CGI vẫn còn được sử dụng
Trang 271.2.2.2 Applet
Tháng 5/1995, John Gage của hãng sun và Andressen (nay thuộc Netscape Communications Corporation) đã công bố một ngôn ngữ lập trình mới có tên Java Netscape Navigator đã hỗ trợ ngôn ngữ này, và một con đường mới cho các trang web động được mở ra, kỷ nguyên của applet bắt đầu
Applet cho phép các nhà phát triển viết các ứng dụng nhỏ nhúng vào trang web Khi người dùng sử dụng một trình duyệt hỗ trợ Java, họ có thể chạy các applet trong trình duyệt trên nền máy ảo Java Virtual Machine (JVM) Dù rằng applet làm được nhiều điều song nó cũng có một số nhược điểm: thường bị chặn bởi việc đọc và ghi các file hệ thống, không thể tải các thư viện, hoặc đôi khi không thể thực thi trên phía client Bù lại những hạn chế trên applet được chạy trên mô hình bảo mật kiểu sandbox bảo vệ người dùng khỏi các đoạn mã nguy hiểm
Có những lúc applet được sử dụng rất nhiều, nhưng nó cũng có những vấn đề nảy sinh: đó là sự phụ thuộc vào máy ảo Java JVM, các applet chỉ thực thi khi có môi trường thích hợp được cài đặt phía client, hơn nữa tốc độ của các applet là tương đối chậm vì thế applet không phải là giải pháp tối ưu cho web động
1.2.2.3 JavaScript
Cùng thời gian này, Netscape đã tạo ra một ngôn ngữ kịch bản gọi là JavaScript JavaScript được thiết kế để việc phát triển dễ dàng hơn cho các nhà thiết kế web và các lập trình viên không thành thạo Java (Microsoft cũng có một ngôn ngữ kịch bản gọi là VBScript) JavaScript ngay lập tức trở thành một phương pháp hiệu quả để tạo ra các trang web động Việc người ta coi các trang như là một đối tượng đã làm nảy sinh một khái niệm mới gọi là Document Object Model (DOM) Lúc đầu thì JavaScript và DOM có một sự kết hợp chặt chẽ nhưng sau đó chúng được phân tách DOM hoàn toàn là cách biểu diễn hướng đối tượng của trang web và nó có thể được sửa đổi với các ngôn ngữ kịch bản bất kỳ như JavaScript hay VBScript
Tổ chức World Wide Web Consortium (W3C) đã chuẩn hóa DOM, trong khi European Computer Manufacturers Association (ECMA) phê duyệt JavaScript dưới dạng đặc tả ECMAScript
Trang 281.2.2.4 JSP/Servlet, ASP và PHP
Cùng với Java, Sun đồng thời đưa ra một công nghệ mới gọi là servlet Các đoạn mã Java sẽ không chạy phía client như với applet; chúng sẽ được chạy trên một ứng dụng phía server Servlet cũng đồng thời phục vụ các CGI script Servlet là một bước tiến lớn, nó đưa ra một thư viện hàm API trên Java và một thư viện hoàn chỉnh
để thao tác trên giao thức HTTP JavaServer Page (JSP) là một công nghệ lập trình web của Sun, cùng với nó là một công nghệ khác của Microsoft – Active Server pages (ASP), JSP là công nghệ đòi hỏi một trình chủ hiểu được Java
Microsoft đã nghiên cứu các nhược điểm của servlet và tạo ra ASP dễ dàng hơn
để thiết kế các trang web động Microsoft thêm các bộ công cụ rất mạnh và sự tích hợp rất hoàn hảo với các web server JSp và ASP có những nét tương đương vì chúng đều được thiết kế để phân tách quá trình xử lý khỏi quá trình biểu diễn Có sự khác biệt về
kỹ thuật, song cả hai đều cho phép các nhà thiết kế web tập trung vào cách bố trí (layout) trong khi các nhà phát triển phần mềm thì tập trung vào các kỹ thuật lập trình logic Tất nhiên Microsoft và Sun không độc quyền ở các giải pháp phía server Còn
có các công nghệ khác, trong đó phải kể đến là PHP (Hypertext Preprocessor) cho tới Cold Fusion Các công nghệ này cung cấp các công cụ rất mạnh cho các nhà phát triển
1.2.2.5 Flash
Năm 1996, FutureWave đã đưa ra sản phẩm FutureSplash Animator Sau đó FutureWave thuộc sở hữu của Macromedia, và công ty này đưa ra sản phẩm Flash Flash cho phép các nhà thiết kế tạo các ứng dụng hoạt họa và linh động Flash không đòi hỏi các kỹ năng lập trình cao cấp và rất dễ học Cũng giống như nhiều giải pháp khác Flash yêu cầu phần mềm phía client Chẳng hạn như gói Shockwave Player plug-
in có thể được tích hợp trong một số hệ điều hành hay trình duyệt
1.2.2.6 DHTML
Khi Microsoft và Netscape đưa ra các version 4 của các trình duyệt của họ, thì các nhà phát triển web có một lựa chọn mới: Dynamic HTML (DHTML) DHTML không phải là một chuẩn của W3C; nó giống một bộ công cụ thương mại hơn Trong thực tế nó là một tập hợp gồm HTML Cascading Style Sheets (CSS), JavaScript và DOM Tập hợp các công nghệ trên cho phép các nhà phát triển sửa đổi nội dung và
Trang 29cấu trúc của một trang web một cách nhanh chóng Tuy nhiên, DHTML yêu cầu sự hỗ trợ từ các trình duyệt Mặc dù cả Internet Explorer và Netscape hỗ trợ DHTML, nhưng các thể hiện của chúng là khác nhau, các nhà phát triển cần thiết phải biết được loại trình duyệt nào mà phía client dùng DHTML thật sự là một bước tiến mới, nhưng nó vẫn cần một sự quy chuẩn để phát triển Hiện nay DHTML vẫn đang trên con đường phát triển mạnh
1.2.2.7 XML
Kể từ khi ra đời vào giữa năm 1990 Extensible Markup Language (XML) của W3C dẫn xuất của SGML đã trở nên rất phổ biến XML có mặt ở khắp nơi, Microsoft Office 12 cũng sẽ hỗ trợ định dạng file XML
Ngày nay chúng ta có rất nhiều dạng dẫn xuất của XML cho các ứng dụng web: XUL của Mozilla; XAMJ, một sản phẩm mã nguồn mở trên nền Java; MXML từ Macromedia; và XAML của Microsoft
1.3 Phân tích thực trạng bảo mật website ngày nay
Cùng với sự phát triển chung của thế giới, trong những năm gần đây, số lượng thuê bao Internet của Việt Nam tăng trưởng nhanh chóng Hiện, số thuê bao Internet chiếm gần 32% dân số Việt Nam Đa số các doanh nghiệp và các tổ chức có hệ thống mạng và website giới thiệu, quảng bá thương hiệu, với gần 200.000 tên miền vn và hàng triệu tên miền thương mại Có rất nhiều doanh nghiệp đã ứng dụng thanh toán trực tuyến vào công việc kinh doanh, giao dịch,…
Tuy nhiên, mạng Internet Việt Nam còn tiềm ẩn rất nhiều những nguy cơ về mặt an ninh, an toàn thông tin Dựa trên các bản báo cáo tổng hợp về an ninh thông tin của nhiều hãng bảo mật nước ngoài như McAfee, Kaspersky hay CheckPoint…, nguy
cơ mất an toàn thông tin ở Việt Nam đang tăng lên đứng thứ 5 trong tổng số 10 nước
có nguy cơ mất an toàn thông tin cao nhất trong năm 2010 Cụ thể, Việt Nam đứng sau Trung Quốc, Nga, Ấn Độ và Mỹ về mức độ rủi ro mà qua đó người sử dụng và các nhà cung cấp dịch vụ Internet có thể bị tấn công Năm quốc gia còn lại gồm Đức, Malaysia, Pháp, Ukraine và Tây ban Nha
Theo đánh giá của một số chuyên gia về an ninh mạng, các tên miền vn đang đứng hàng thứ 3 trong bảng xếp hạng các tên miền có nguy cơ bị tấn công (khoảng
Trang 3015.000 website) Đặc biệt, đã có nhiều trang web có tên miền vn bị hacker tấn công dùng làm địa chỉ để chuyển hướng ngầm truy cập của người sử dụng đến các web chứa
mã độc để cài cắm các phần mềm gián điệp vào máy người truy cập, đánh cắp thông tin cá nhân
Các chuyên gia an ninh mạng cũng cho biết, đa số các trang web lớn của Việt Nam đều có lỗ hổng bảo mật và có thể bị chiếm quyền điều khiển Lỗ hổng an ninh của các hệ thống ngày càng được phát hiện nhiều hơn Số lượng các điểm yếu an ninh trong năm 2010 là 4.300, có tới 30% lỗ hổng có mức độ nguy hiểm cao Gần một nửa (49%) số lỗ hổng an ninh vẫn chưa có các bản vá do nhà cung cấp dịch vụ phát hành
Hiện trạng an toàn thông tin Việt Nam năm 2014
Diễn biến ngày càng phức tạp của tội phạm công nghệ cao gióng lên hồi chuông cảnh báo về nguy cơ mất an toàn an ninh mạng tại Việt Nam Tính đến hết quý III năm
2014, tổng khối lượng website “.vn” của Việt Nam bị tấn công và chiếm quyền kiểm soát đã lên đến con số hơn 6.500 Trung bình mỗi ngày có hơn 18 website của Việt Nam bị chiếm quyền điều khiển, trong đó hầu hết các tấn công xuất phát điểm đều đến
từ các nguồn ngoài lãnh thổ
Theo SecurityDaily, trong 2 ngày 10-11/5/2014 đã có hơn 200 website của Việt Nam bị các nhóm hacker tấn công và để lại những lời nhắn, hình ảnh mang tính chất khiêu khích và chứng tỏ các website đó đều đã bị kiểm soát Ngoài ra, một số đợt tấn công cao điểm từ bên ngoài nhắm vào hệ thống website Việt Nam có thể kể đến nữa là
2 đợt tấn công của các nhóm tin tặc vào cuối tháng 4/2014 và đầu tháng 9/2014 Đặc biệt, trong nửa đầu tháng 9/2014 đã có tổng cộng 1039 website của Việt Nam bị chiếm quyền trong cùng một thời điểm, đây là con số cao nhất được ghi nhận của năm nay Điểm đáng chú ý là chỉ riêng trong hai đợt tấn công này, có đến 30 website của các cơ quan chính phủ và 69 website của cơ quan giáo dục Việt Nam bị chiếm quyền hoặc bị thay đổi giao diện trang chủ
Một nghiên cứu vừa được công ty công nghệ Akamai có trụ sở tại Massachusetts, Hoa Kỳ, công bố cho thấy 43% các vụ tấn công trên mạng Internet toàn cầu và phát tán virus đến từ Trung Quốc Đứng ở vị trí thứ hai là Indonesia với 15%, Mỹ đứng thứ 3 với 13%, Đài Loan 3,7%, Ấn Độ 2,1%, Nga 2%, Brazil 1,7%, Hàn Quốc 1,4%, Romania và Thổ Nhĩ Kỳ 1,2%
Trang 31Không nằm ngoài những thống kê trên của Mỹ, chủ mưu thực hiện các cuộc tấn công quy mô tại Việt Nam kể trên phần lớn là do nhóm tin tặc Trung Quốc mang tên 1937CN, hoạt động dưới sự bảo trợ của chính phủ nước này 1937CN cũng chính là nhóm đã thực hiện vụ tấn công vào máy chủ DNS của facebook.com.vn và thegioididong.com trong tháng 8/2013 Sau khi chiếm quyền thành công, nhóm công khai trên đưa lên trang chủ của mình các thông tin liên quan đến những vấn đề nhạy cảm giữa Việt Nam và Trung Quốc, về biển Đông cũng như các chiến tích đạt được trong việc tấn công các website Việt Nam Ngoài ra, nhóm 1937CN cũng đã từng tấn công nhiều website “.gov.vn” (website của các tổ chức chính phủ Việt Nam)
Không chỉ riêng có 1937 CN tham gia tấn công, Sky-Eyeye, một nhóm hacker lớn khác của Trung Quốc cũng tham gia và đã thực hiện tấn công gần 100 website của Việt Nam Nếu năm 2013 chỉ ghi nhận hơn 1.000 IP Trung Quốc thực hiện các cuộc tấn công thì con số năm 2014 đã tăng lên đến gần 70.000 Tiếp theo sau Trung Quốc là
Mỹ (gần 25.000) và Đài Loan (hơn 20.000) Theo nhiều chuyên gia bảo mật trong nước, hacker Trung Quốc đã thả phần mềm gián điệp xâm nhập máy tính ở nhiều quốc gia khác trên thế giới cũng như tại Việt Nam Các máy tính bị xâm nhập này đã bị biến thành các máy tính ma (zombie) Chúng liên kết các zoombie này thành một mạng máy tính tấn công lớn (còn gọi là botnet) rồi dùng nó để tấn công vào các website khác với sức công phá vô cùng nguy hiểm
Từ ngày 13-19/10/2014, hàng chục website lớn do hãng truyền thông VCCORP quản lý và đồng quản lý bao gồm các báo mạng như Dân trí, Người lao động, Thời báo kinh tế Việt Nam, VnEconomy… và trang tin điện tử kenh14, Soha News, VTV, CafeF, Muachung… đột ngột tê liệt, không thể truy cập được Trầm trọng hơn, các thông tin nhạy cảm và số liệu mật của VCCORP bị phơi bày trên một trang thanh toán điện tử của hãng Sau 5 ngày sự cố, thiệt hại ban đầu cho VCCORP lên đến hàng chục
tỉ đồng theo như lời một đại diện của tập đoàn này Đây được coi là sự cố về hệ thống nghiêm trọng nhất từng xẩy ra với VCCORP từ trước đến nay, thu hút hàng triệu lượt quan tâm của cộng đồng mạng
Sau nhiều nỗ lực điều tra, kết luận cho thấy rõ ràng đây là một cuộc phá hoại có chủ đích đã được lên kế hoạch và có đầu tư nhằm vào VCCORP Nhóm tin tặc đã lợi dụng việc nhân viên của hãng đã không tuân thủ đúng quy trình chính sách bảo mật để
Trang 32cài một phần mềm gián điệp được lập trình rất chuyên nghiệp để thực hiện ý đồ của chúng
Hiện nay, nhiều công ty công nghệ, truyền thông tại Việt Nam kinh doanh dựa hoàn toàn trên Internet và việc bảo vệ các hệ thống máy chủ, dữ liệu là nhiệm vụ có ảnh hưởng sống còn đến sự phát triển của công ty Tuy nhiên, các cá nhân, doanh nghiệp tại Việt Nam chưa nhận thức được về mối nguy hiểm đến từ các phần mềm, các chương trình chưa có bản quyền chia sẻ miễn phí trên Internet, cũng bởi tư duy tiết kiệm mà thường sử dụng các hệ điều hành, phần mềm không có bản quyền còn nhiều Bởi vậy, đã xuất hiện nhiều lỗ hổng an toàn thông tin để hacker, virus hoặc mã độc có thể tấn công vào hệ thống bất cứ lúc nào
Vấn đề trong bảo mật an ninh thông tin của doanh nghiệp và các tổ chức hiện nay, theo ông Stefan Tanase, chuyên gia nghiên cứu an ninh cấp cao, là ý thức của nhân viên về bảo mật thông tin cho đơn vị mình – “người gác cổng” này chính là lỗ hổng để các tin tặc tấn công vào doanh nghiệp Hiện nay, rất ít công ty công nghệ chú trọng đến bảo mật vì phần lớn nhân viên hệ thống của các công ty này không được đào tạo bài bản về an toàn thông tin, không có các đội phản ứng nhanh tại chỗ để ứng phó với các sự cố an ninh có thể xẩy ra bất cứ lúc nào Theo đó, khi có sự cố xảy ra các doanh nhiệp sẽ không có biện pháp xử lý, không kịp trở tay và dẫn tới những hậu quả lớn khó khắc phục
Theo các chuyên gia an ninh mạng, để cung cấp dịch vụ online ổn định thì các
hệ thống kiên quan phải được quản lý chặt chẽ, quản lý từ kỹ thuật, máy móc đến những con người tham gia vận hành hệ thống Phải có chính sách dự phòng khi sự cố xảy ra Hệ thống dữ liệu, máy chủ phải được phân bố nhiều địa điểm (site), không nên
để tập trung một chỗ để phòng tránh những cuộc tấn công và cân bằng tải khi hệ thống
có số lượng truy cập tăng cao
1.4 Các rủi ro thường gặp trong ứng dụng web
1.4.1 Dữ liệu đầu vào không được kiểm tra
Ứng dụng web sử dụng dữ liệu đầu vào trong các truy cập HTTP (hoặc trong các tập tin) nhằm xác định kết quả phản hồi Hacker có thể sửa đổi bất kỳ phần nào của một truy xuất HTTP, bao gồm URL, querystring, headers, cookies, form fields, và
Trang 33thậm chí field ẩn (hidden fields), nhằm vượt qua các cơ chế bảo mật [7] Các tấn công phổ biến dạng này gồm:
Sửa đổi file ẩn
Một số website bảo vệ chống lại loại tấn công này bằng cách thiết lập bộ lọc dữ liệu đầu vào Vấn đề nan giải là có rất nhiều cách để mã hóa (encode) dữ liệu, và những phương cách mã hóa này không giống như các cách mã hóa thông thường khác
ở chỗ là nó dễ dàng được giải mã Tuy vậy, những nhà lập trình viên thường quên giải
mã tất cả các tham số trước khi sử dụng chúng Tham số cần phải được chuyển đổi đến dạng đơn giản nhất trước khi được kiểm tra, nếu không, dữ liệu xấu đầu vào có thể được mã hóa ẩn và vượt qua tầng bảo vệ của các module kiểm tra dữ liệu
Một số lượng lớn ứng dụng chỉ sử dụng các cơ chế lọc phía trình duyệt để kiểm tra dữ liệu đầu vào Các cơ chế kiểm tra phía trình duyệt rất dễ dàng được vượt qua, và ứng dụng web xem như không được bảo vệ bởi cơ chế này Hacker có thể tạo ra các truy xuất HTTP không thông qua trình duyệt bằng cách sử dụng các công cụ như telnet, truy xuất thẳng đến cổng 80 cuả máy chủ web Kiểm tra dữ liệu ở phía máy trình duyệt có lợi điểm về hiệu suất và tính dễ sử dụng, tuy nhiên cơ chế này không cung cấp bất cứ lợi điểm gì về bảo mật Kiểm tra dữ liệu ở phía server đóng vai trò thiết yếu trong việc ngăn cản những cuộc tấn công dạng sửa đổi tham số đầu vào Khi các cơ chế bảo vệ ở server đã được thiết lập, cơ chế bảo vệ phía trình duyệt có thể được sử dụng nhằm giảm bớt dung lượng các dữ liệu không hợp lệ đến máy chủ
Trang 34Hình 1.20 Sử dụng Proxy để thay đổi tham số
Hình1.20 mô tả phương cách phổ biến của hacker hiện nay sử dụng để tấn công ứng dụng web Trước tiên, hacker thiết lập một proxy đứng giữa trình duyệt và máy chủ ứng dụng web Proxy này có khả năng chặn các gói dữ liệu trước khi chuyển đến máy chủ, do đó cho phép hacker sửa đổi dữ liệu truy cập và chèn các mã tấn công trước khi gửi đến ứng dụng web
Những cuộc tấn công dạng này đang có xu hướng ngày càng phổ biến hơn do
số lượng các công cụ hỗ trợ các chức năng tạo tham số bất kỳ, tạo mã tấn công, tấn công brute force đang ngày càng tăng Hậu quả của việc sử dụng các tham số không được kiểm tra không nên được xem nhẹ Một số lượng lớn các cuộc tấn công sẽ gây khó khăn cho nhà lập trình web nếu họ không có một hệ thống tập trung kiểm tra tính hợp lệ của tất cả các truy xuất HTTP
1.4.2 Lỗi kiểm soát truy cập nguồn tài nguyên
Kiểm soát truy cập tài nguyên (authorization), là cơ chế mà ứng dụng web cho phép truy cập đến nội dung, tính năng ứng dụng cho một số người sử dụng và từ chối truy cập cho một số người sử dụng khác Những kiểm tra này được thực hiện sau quá trình xác thực, và quản lý các quyền truy cập mà người sử dụng được phép Kiểm soát truy cập bề ngoài tưởng chừng là một vấn đề đơn giản nhưng thực tế là một vấn đề rất khó được thi hành đầy đủ Một mô hình quản lý truy cập tài nguyên cho ứng dụng web cần được thiết kế theo sát các nội dung và hàm chức năng của một website cung cấp
Những nhà lập trình viên thường không đánh giá được mức độ khó khăn trong việc xây dựng một cơ chế quản lý kiểm soát truy cập dữ liệu Đa số những chức năng này không được thiết kế từ lúc đầu mà được xây dựng kèm theo tùy tính năng của ứng
Trang 35dụng Vì vậy, các chức năng kiểm soát được xây dựng ở khắp các module khác nhau trong mã nguồn Khi ứng dụng được phát triển xong và đưa vào triển khai, các mã kiểm soát này sẽ trở nên không thống nhất và gây ra nhiều lỗ hổng nghiêm trọng khó phát hiện được
1.4.3 Lỗi liên quan đến quá trình quản lý xác thực và phiên truy cập
Quản lý xác thực và phiên truy cập bao gồm tất cả các yếu tố quản lý xác thực người sử dụng và các phiên truy cập Xác thực người dùng là một yếu tố quan trọng trong quy trình này, nhưng ngay cả những cơ chế xác thực mạnh nhất vẫn có thể bị mắc những lỗi liên quan đến các chức năng quản lý xác thực, bao gồm thay đổi password, quên password, nhớ password ở trình duyệt, cập nhật tài khoản, và những hàm chức năng khác
Xác thực người dùng trên ứng dụng web thường bao gồm sử dụng một username và password Những phương pháp xác thực khác mạnh hơn bao gồm các giải pháp phần cứng hoặc mềm dựa trên các token mã hóa hoặc dùng phương pháp sinh trắc học (biometrics) Tuy nhiên những phương pháp này có phần hạn chế do giá thành cao Một số lượng lớn lỗi ứng dụng trong các hàm quản lý tài khoản và phiên truy cập có thể dẫn đến mối nguy cơ lộ tài khoản người sử dụng và thậm chí tài khoản của người quản trị
Ứng dụng web thường phải theo dõi và duy trì phiên truy cập của người dùng nhằm phân biệt các truy cập từ người dùng khác nhau Giao thức HTTP không cung cấp khả năng này và do đó ứng dụng web phải tự tạo cơ chế này Thường thì, môi trường phát triển ứng dụng cung cấp cơ chế quản lý phiên truy cập (thường là dưới hình thức cookie token), tuy nhiên, đa số các nhà lập trình nghiêng về phát triển cơ chế riêng của họ Trong cả hai trường hợp, nếu token quản lý phiên truy cập không được bảo vệ, hacker có thể ăn cắp token truy cập tài khoản của người khác
1.4.4 Lỗi Cross Site Scripting (XSS)
Lỗi Cross –side scripting (thường được gọi tắt là XSS) xảy ra khi một ứng dụng web bị lợi dụng để gửi dữ liệu xấu (thường là đoạn mã script) đến trình duyệt của người sử dụng Những lỗ hổng này rất phổ biến và xảy ra trong bất cứ phần nào của ứng dụng web có sử dụng dữ liệu từ người dùng trong các giá trị phản hồi mà không kiểm tra tính hợp lệ [4]
Trang 36Một hacker có thể sử dụng lỗ hổng này để gửi các đoạn mã đến người dùng Trình duyệt trong máy người dùng không thể biết được nên tin hay không tin đoạn mã nào, và sẽ thi hành đoạn script này Bởi vì trình duyệt tin rằng đoạn mã đến từ một nguồn tin tưởng, đoạn mã script có thể truy cập đến cookies, session tokens, hoặc bất
kỳ thông tin nhạy cảm nào được lưu lại trong trình duyệt có liên quan đến trang web đang truy cập Những đoạn mã này còn có thể sửa đổi nội dung trang web Hậu quả của tấn công dạng XSScos thể rất nguy hiểm, bao gồm lộ session cookie, cho phép hacker chiếm quyền sở hữu tài khoản Những hậu quả khác bao gồm: lộ các tập tin của người dùng, cài đặt các chương trình trojan, di chuyển người sử dụng đến trang web khác, sửa đổi nội dung trang web nhằm đánh lừa người dùng Hình dưới đây mô tả một ví dụ tấn công dạng cross site scripting với hậu quả là khách hàng bị lừa truy cập vào trang web giả mạo nhằm ăn cắp tài khoản khách hàng:
http://www.bank-that.com/dichvu.php?url=http://www.bank-gia.com
Trang 374 Khách hàng nhận được email, tưởng là email từ phía ngân hàng thật, nên bấm vào link
5 Khi bấm vào link, thay vì truy cập vào ngân hàng thật, trình duyệt của khách hàng được chuyển tự động đến trang web ngân hàng giả do hacker tạo sẵn trông giống như ngân hàng thật: http://www.bang-gia.com
Khách hàng nhập thông tin đăng ký vào trang ngân hàng giả và thông tin này được chuyển đến hacker
1.4.5 Lỗi tràn bộ đệm
Hacker sử dụng lỗi tràn bộ đệm nhằm ảnh hưởng đến dòng lệnh thực thi của ứng dụng web Bằng cách gửi một đoạn mã được thiết kế đặc biệt đến ứng dụng, hacker có thể làm cho ứng dụng web thi hành bất kỳ đoạn mã nào, điều này tương đương với việc chiếm quyền làm chủ máy server Mặc dù là một lỗi phổ biến, lỗi tràn
bộ đệm là loại lỗi rất khó được phát hiện và ngay cả khi đã được phát hiện, lỗi này rất khó được lợi dụng do hacker cần một trình độ rất cao để có thể viết đoạn mã khai thác [4]
Hình 1.22 Lỗi tràn bộ đệm
Hình trên mô tả một cuộc tấn công tràn bộ đệm, hacker gửi đến ứng dụng web một truy cập với gói dữ liệu có độ dài vượt mức cho phép mà hàm xử lý của ứng dụng
có thể xử lý Thông thường, dữ liệu đầu vào được lưu trữ trên bộ nhớ đệm trước khi xử
lý, dữ liệu vượt quá độ dài đăng ký sẽ được chèn lên các dữ liệu quan trọng khác trong
bộ đệm, dẫn đến khả năng thi hành mã tùy ý cho hacker
Trang 381.4.6 Lỗi Injection
Lỗi Injection cho phép hacker lợi dụng lỗ hổng trong ứng dụng web làm phương tiện để gửi các đoạn mã nguy hiểm đến hệ thống Những cuộc tấn công dạng này bao gồm các mã gọi là hàm đến hệ điều hành, gọi các ứng dụng qua lệnh shell, và các hàm gọi đến cơ sở dữ liệu (SQL Injection) Những đoạn mã nguy hiểm được viết bằng perl, python và ngôn ngữ khác có thể được chuyển đến và thực thi bởi ứng dụng web, hệ điều hành hoặc các ứng dụng khác [4]
Rất nhiều ứng dụng web sử dụng các hàm của hệ điều hành và các chương trình ngoài để thi hành các chức năng Sendmail là một trong những chương trình ngoài được sử dụng nhiều nhất Khi ứng dụng web sử dụng dữ liệu từ người dùng để tạo ra đoạn mã thực thi, dữ liệu từ người dùng cần được lọc kỹ lưỡng Nếu không, hacker có thể kèm vào các ký tự đặc biệt, đoạn lệnh, và những thông tin xấu này có thể được chuyển đến hệ thống và các chương trình ngoài
Hình 1.23 Lỗi SQL Injection
Một trong những dạng phổ biến nhất của lỗi injection là lỗi “sql injection” Lỗi này xảy ra khi ứng dụng sử dụng những dữ liệu đầu vào không được kiểm tra làm tham số
để xây dựng chuỗi lệnh SQL Bằng cách sử dụng những đoạn mã SQL đặc biệt, hacker
có thể gây ra những hậu quả nghiêm trọng như:
Trang 39 Vượt qua hệ thống xác thực login mà không cần sử dụng password hoặc username
Truy cập vào một phần hoặc tất cả các thông tin trong CSDL
Lấy được thông tin về cấu trúc của cơ sở dữ liệu
Sửa đổi hoặc xóa thông tin trong CSDL
Chạy các lệnh trong hệ điều hành trên máy chủ CSDL
1.4.7 ƣu trữ thiếu an toàn
Đa số các ứng dụng web cần lưu trữ dữ liệu nhạy cảm, trong cơ sở dữ liệu hoặc trong một tập tin nào đó trong hệ thống Thông tin nhạy cảm bao gồm: mật khẩu, số thẻ tín dụng, thông tin tài khoản, hoặc các thông tin cần bảo vệ khác Các cơ chế mã hóa thường được sử dụng để bảo vệ những thông tin này Mặc dù sử dụng các hàm mã hóa không khó cho các lập trình viên, tuy nhiên, lập trình viên vẫn thường mắc những lỗi cơ bản khi áp dụng vào ứng dụng web do không hiểu rõ hết các đặc điểm mã hóa [7]
Hình 1.24 Lưu trữ thiếu an toàn
Những lỗi thông thường bao gồm:
Không mã hóa dữ liệu quan trọng như khóa, certificates và mật khẩu
Lưu trữ các khóa bảo mật trong bộ nhớ bằng các cơ chế không an toàn
Cơ chế tạo số ngẫu nhiên không đảm bảo
Sử dụng sai thuật toán
Tạo một thuật toán mã hóa không đảm bảo
Trang 40Hậu quả của những điểm yếu này có thể rất nghiêm trọng đến an toàn của một trang web, cho phép hacker lấy được toàn bộ các thông tin quan trọng được lưu trữ
1.4.8 Tấn công từ chối dịch vụ
Ứng dụng web rất dễ bị tổn thương do các cuộc tấn công từ chối dịch vụ (DoS) Tấn công từ chối dịch vụ vào ứng dụng web được định nghĩa là các tấn công làm tê liệt ứng dụng, làm cho các truy cập hợp lệ không thể được tiến hành
Đa số máy chủ web chỉ có thể xử lý hỗ trợ một số lượng nhất định người sử dụng trong điều kiện bình thường Một hacker có thể tạo ra nhiều truy cập đồng thời từ một máy để tấn công ứng dụng Sử dụng load balancing sẽ gây khó khăn cho các cuộc tấn công kiểu này, tuy nhiên không thể ngăn ngừa hoàn toàn nếu có quá nhiều truy cập cùng lúc
Một dạng khác của tấn công DoS ứng dụng web dựa trên các lỗi trong chức năng của ứng dụng Ví dụ một ứng dụng sử dụng cơ chế tài khoản trong một tiếng hoặc hơn nếu nhận được quá ba lần mật khẩu sai Hacker có thể lợi dụng điểm yếu này, gửi đến quá ba lần sai mật khẩu của một tài khoản hợp lệ, hậu quả là người dùng của tài khoản này không thể truy cập được trong một tiếng hoặc hơn
Trong một cuộc tấn công từ chối dịch vụ điển hình vào ứng dụng web, hackers
sẽ tìm cách chiếm gần hết nguồn tài nguyên hệ thống trên máy chủ hoặc ứng dụng, hậu quả là người sử dụng hợp lệ không thể truy cập vào ứng dụng tài nguyên hệ thống bao gồm: băng thông, số lượng truy cập đồng thời cơ sở dữ liệu, dung lượng trống ổ cứng, CPU, dung lượng bộ nhớ RAM, threads, và các nguồn tài nguyên khác liên quan đến ứng dụng