Chương 1: Giới thiệu tổng quan luận văn, lý do chọn đề tài, mục tiêu, phạm vi và hướng giải quyết của luận văn. Chương 2: Giới thiệu những khái niệm tổng quan về bảo mật trong hệ thống phần mềm, các lỗ hổng bảo mật cũng như các kiểu tấn công. Chương 3: Giới thiệu tổng quan về kiến trúc bảo mật hệ thống phần mềm, tổng quan về bảo mật trong Microsoft .Net, bảo mật trong ASP. Chương 4: Một mô hình ứng dụng kỹ thuật bảo mật trong ASP.NET của Microsoft tại GPBank.
Chương 5: Tóm tắt kết quả thu được qua luận văn. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13 Chương 2: TỔNG QUAN VỀ BẢO MẬT HỆ THỐNG PHẦN MỀM 2. Sự cần thiết đối với bảo mật máy tính Các máy tính ngày nay được sử dụng để quản lý nhiều chức năng từ các tài khoản ngân hàng đến các hồ sơ sức khỏe. Chúng ta giữ thẻ tín dụng của chúng ta an toàn để không ai có thể đánh cắp được chúng.
Tuy nhiên, với sự ra đời của Thương mại điện tử, người ta có thể mua hàng hóa mà không cần thẻ tín dụng vật lý. Ngày nay, một tên tội phạm không cần đánh cắp thẻ tín dụng vật lý, chúng chỉ cần biết chi tiết thông tin thẻ tín dụng đó. Do đó, chúng cần đảm bảo rằng máy tính lưu trữ thông tin thẻ tín dụng cần được bảo mật. Các máy tính được sử dụng để quản lý và lưu trữ nhiều thông tin, từ giải trí đến thông tin công ty, từ thông tin cá nhân đến giấy phép lái xe, tất cả đều được duy trì bởi máy tính.
Nếu chúng ta không bảo mật và bảo vệ máy tính, chúng ta có nguy cơ bị tấn công và mất mát dữ liệu. Các khái niệm cơ bản Bảo mật (Security) là các biện pháp được thiết lập để bảo vệ một ứng dụng/hệ thống ứng dụng chống lại các hành động không lường trước được cho rằng các hành động đó sẽ ảnh hưởng hoặc phá hủy ứng dụng/hệ thống ứng dụng. Hành động không lường trước có thể là cố ý hoặc vô ý. Trong phần này luận văn trình bày một số khái niệm liên quan đến bảo mật trong hệ thống phần mềm [2].
Lỗ hổng bảo mật Các lỗ hổng bảo mật là những điểm yếu trong hệ thống hoặc ẩn chứa trong một dịch vụ hệ thống đó cung cấp, dựa vào đó tin tặc có thể khai thác xâm nhập trái phép để thực hiện các hành động phá hoại hoặc chiếm đoạt tài nguyên bất hợp pháp. Đối với một hệ thống máy tính, lỗ hổng có thể ở bất cứ đâu. Nó có thể trong một chương trình người dùng, trong một Hệ điều hành (Windows XP, Windows NT, UNIX), trong cơ sở dữ liệu, hoặc do người quản trị yếu kém không hiểu sâu sắc các dịch vụ cung cấp và/hoặc do người sử dụng có ý thức bảo mật kém. Đối với lỗ hổng phần mềm, đây là lỗ hổng liên quan đến lỗi (bug) trong phần mềm.
Bug là lỗi code khiến hệ thống thực hiện một hành động không mong muốn. Các bug này có thể khiến hệ thống gặp sự cố, kết nối bị lỗi, không đăng nhập được, nâng cao đặc quyền người dùng hoặc cấp quyền truy cập trái phép vào hệ thống. Mức độ ảnh hưởng của các lỗ hổng là khác nhau. Có những lỗ hổng chỉ ảnh hưởng đến chất lượng dịch vụ cung cấp, có những lỗ hổng ảnh hưởng nghiêm trọng đến toàn bộ hệ thống… các lỗ hổng bảo mật sẽ là các điểm yếu có thể tạo ra sự ngưng trệ của dịch vụ.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Khai thác lỗ hổng Một khi xác định được lỗ hổng, tin tặc có thể viết ra một chương trình lợi dụng lỗi để xâm nhập và chiếm quyền kiểm soát thiết bị. Tội phạm mạng tìm điểm yếu trong các phần mềm bảo vệ hệ thống, có thể là một kết nối mạng không được bảo vệ đúng cách. Nếu tin tặc có thể tiếp cận máy tính mục tiêu, chúng có thể tìm hiểu về hệ thống đó.
Làm thế giúp chúng xác định các phương pháp tiếp cận riêng - truy cập các tệp tin cụ thể hay chạy các chương trình nhất định - từ đó chúng có thể kiểm soát máy tính và dữ liệu. Trong những năm gần đây, tin tặc bắt đầu nhắm mục tiêu vào các trình duyệt web bởi những phần mềm này được phép kết nối Internet và thường được cho phép để chạy các chương trình nhỏ; do đó tồn tại rất nhiều lỗ hổng có thể bị khai thác. Những lỗ hổng ban đầu có thể cho phép tin tặc kiểm soát máy tính mục tiêu, trước khi lấy đó làm bàn đạp để xâm nhập vào mạng lưới lớn hơn. Đôi khi các lỗ hổng được chính các nhà phát triển phần mềm phát hiện hoặc do người dùng hay các nhà nghiên cứu cảnh báo.
Có những trường hợp, tin tặc hoặc cơ quan gián điệp của chính phủ phát hiện cách thức xâm nhập vào hệ thống nhưng không thông báo với bên phát triển. Do đó, phần mềm hoặc phần cứng sẽ dễ bị xâm nhập cho đến khi có bản vá hoặc bản sửa lỗi được tạo và phân phối tới người dùng. Nguy cơ và rủi ro Nguy cơ Nguy cơ (threat) là những sự kiện có khả năng ảnh hưởng đến an toàn của hệ thống [2, 3]. Ví dụ: tấn công từ chối dịch vụ (DoS và DDoS) là một nguy cơ đối với hệ thống các máy chủ cung cấp dịch vụ trên mạng.
Khi nói đến nguy cơ, nghĩa là sự kiện đó chưa xảy ra, nhưng có khả năng xảy ra và có khả năng gây hại cho hệ thống. Có những sự kiện có khả năng gây hại, nhưng không có khả năng xảy ra đối với hệ thống thì không được xem là nguy cơ. Rủi ro Rủi ro (risk) là xác suất xảy ra thiệt hại đối với hệ thống [2, 3]. Rủi ro bao gồm 2 yếu tố: Khả năng xảy ra rủi ro và thiệt hại do rủi ro gây ra.
Có những rủi ro có khả năng xảy ra rất cao nhưng mức độ thiệt hại thì thấp và ngược lại. Ví dụ: rủi ro mất thông tin trên hệ thống không có cơ chế bảo vệ tập tin, chẳng hạn như Windows 98. Windows 98 không có cơ chế xác thực người sử dụng nên bất cứ ai cũng có thể sử dụng máy với quyền cao nhất. Nếu trên đó chỉ có chứa các tập tin văn bản không có tính bí mật thì việc mất một tập tin thì thiệt hại gây ra chỉ là mất công sức đánh máy văn bản đó.
Đây là dạng rủi ro có xác suất xảy ra cao nhưng thiệt hại thấp. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 15 Cần chú ý phân biệt giữa nguy cơ và rủi ro. Nguy cơ là những hành vi, những sự kiện hoặc đối tượng có khả năng gây hại cho hệ thống. Rủi ro là những thiệt hại có khả năng xảy ra đối với hệ thống.
Ví dụ: Tấn công từ chối dịch vụ là một nguy cơ (threat). Đây là một sự kiện có khả năng xảy ra đối với bất kỳ hệ thống cung cấp dịch vụ nào. Thiệt hại do tấn công này gây ra là hệ thống bị gián đoạn hoạt động, đây mới là rủi ro (risk). Tuy nhiên, không phải bất kỳ tấn công từ chối dịch vụ nào xảy ra cũng đều làm cho hệ thống ngưng hoạt động, và hơn nữa, tấn công từ chối dịch vụ không phải là nguồn gốc duy nhất gây ra gián đoạn hệ thống; những nguy cơ khác như lỗi hệ thống (do vận hành sai), lỗi phần mềm (do lập trình), lỗi phần cứng (hư hỏng thiết bị, mất điện, …) cũng đều có khả năng dẫn đến gián đoạn hệ thống.
Tấn công Tấn công bảo mật là các cuộc tấn công máy tính làm tổn hại đến bảo mật của hệ thống. Về mặt khái niệm, các cuộc tấn công bảo mật có thể được phân thành 2 loại là các cuộc tấn công chủ động và tấn công thụ động [8] trong đó kẻ tấn công có quyền truy cập bất hợp pháp vào tài nguyên hệ thống. Tấn công chủ động Tấn công chủ động là các cuộc tấn công trong đó kẻ tấn công cố gắng sửa đổi thông tin hoặc tạo một thông báo sai. Việc ngăn chặn các cuộc tấn công này là khá khó khăn vì có một loạt các lỗ hổng vật lý, mạng và phần mềm.
Chính vì vậy phải có cơ chế phục hồi khi phát hiện ra hệ thống bị gián đoạn hoặc chậm chễ.1: Tấn công chủ động. Tấn công thụ động Tấn công thụ động là các cuộc tấn công mà kẻ tấn công thực hiện nghe lén trái phép, chỉ cần theo dõi việc truyền hoặc thu thập thông tin. Kẻ trộm không thực hiện bất kỳ thay đổi nào đối với dữ liệu hoặc hệ thống. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.2: Tấn công thụ động.
Tấn công thụ động rất khó phát hiện vì nó không liên quan đến bất kỳ sự thay đổi nào trong dữ liệu hoặc tài nguyên hệ thống. Có thể ngăn chặn tấn công thụ động bằng cách sử dụng các phương thức mã hóa trong đó dữ liệu trước tiên được mã hóa đầu người gửi, sau đó tại đầu người nhận dữ liệu sẽ được giải mã về dữ liệu ban đầu. Hacker Tin tặc (Hacker) Một hacker máy tính là bất kỳ một chuyên gia máy tính nào sử dụng kiến thức kỹ thuật của họ để khắc phục một vấn đề [10]. Hacker sử dụng các các kiến thức kỹ thuật của họ khai thác các lỗ hổng bảo mật, các bug để xâm nhập vào hệ thống máy tính.
Mũ trắng (Whitehat) Thuật ngữ whitehat dùng để chỉ một hacker máy tính có đạo đức hoặc một chuyên gia bảo mật máy tính, chuyên kiểm tra việc thâm nhập và các phương pháp kiểm tra khác đảm bảo cho hệ thống thông tin của tổ chức an toàn. Các lỗ hổng phần mềm quan trọng Để xây dựng phần mềm bảo mật, không thể thiếu sự hiểu biết về các lỗ hổng phần mềm. Trong phần này, luận văn sẽ trình bày tổng quan ngắn gọn về các lỗ hổng quan trọng và nguy hiểm [4]. SQL Injection SQL Injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng Web và các thông báo lỗi trả về của LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 17 hệ quản trị CSDL để tiêm vào (inject) và thi hành các câu lệnh SQL bất hợp pháp bằng cách sử dụng nối chuỗi.
SQL Injection có thể cho phép những kẻ tấn công thực hiện các thao tác thêm mới, cập nhật, xóa trên CSDL của ứng dụng. SQL Injection là một công cụ trung gian để tấn công các ứng dụng web có dữ liệu được quản lý bởi các hệ quản trị CSDL như: MS SQL Server, Oracle, MySQL, DB2.