Cơ chế khóa tài khoản được sử dụng để giảm thiểu các cuộc tấn công brutal force. Một số cuộc tấn công có thể bị đánh bại bằng cách sử dụng cơ chế khóa:
- Mật khẩu đăng nhập hoặc cuộc tấn công đoán tên người dùng.
- Đoán mã trên bất kỳ chức năng 2FA nào hoặc Câu hỏi bảo mật.
Cơ chế khóa tài khoản yêu cầu sự cân bằng giữa việc bảo vệ tài khoản khỏi truy cập trái phép và bảo vệ người dùng khỏi bị từ chối truy cập được cấp phép. Tài khoản thường bị khóa sau 3 đến 5 lần thử không thành công và chỉ có thể được mở khóa sau một khoảng thời gian định trước, thông qua cơ chế mở khóa tự phục vụ hoặc sự can thiệp của quản trị viên.
Các bài viết liên quan:
Mặc dù có thể dễ dàng tiến hành các cuộc tấn công vũ phu, nhưng kết quả của một cuộc tấn công thành công là rất nguy hiểm vì kẻ tấn công sẽ có toàn quyền truy cập vào tài khoản người dùng và với tất cả các chức năng và dịch vụ mà chúng có quyền truy cập.
Mục tiêu kiểm tra tài khoản yếu
Đánh giá khả năng của cơ chế khóa tài khoản trong việc giảm thiểu việc đoán mật khẩu theo kiểu bạo lực.
Đánh giá khả năng chống lại việc mở khóa tài khoản trái phép của cơ chế mở khóa.
Làm thế nào để kiểm tra cơ chế khóa tài khoản yếu
Cơ chế khóa
Để kiểm tra sức mạnh của cơ chế khóa, bạn sẽ cần quyền truy cập vào tài khoản mà bạn sẵn sàng hoặc đủ khả năng để khóa. Nếu bạn chỉ có một tài khoản mà bạn có thể đăng nhập vào ứng dụng web, hãy thực hiện kiểm tra này ở cuối kế hoạch kiểm tra của bạn để tránh mất thời gian kiểm tra do bị khóa.
Để đánh giá khả năng của cơ chế khóa tài khoản trong việc giảm thiểu việc đoán mật khẩu bạo lực, hãy thử đăng nhập không hợp lệ bằng cách sử dụng mật khẩu không chính xác nhiều lần, trước khi sử dụng mật khẩu chính xác để xác minh rằng tài khoản đã bị khóa. Một bài kiểm tra ví dụ có thể như sau:
- Cố gắng đăng nhập bằng mật khẩu không chính xác 3 lần.
- Đăng nhập thành công bằng mật khẩu chính xác, qua đó cho thấy rằng cơ chế khóa không kích hoạt sau 3 lần xác thực không chính xác.
- Cố gắng đăng nhập bằng mật khẩu không chính xác 4 lần.
- Đăng nhập thành công bằng mật khẩu chính xác, qua đó cho thấy rằng cơ chế khóa không kích hoạt sau 4 lần xác thực không chính xác.
- Cố gắng đăng nhập bằng mật khẩu không chính xác 5 lần.
- Cố gắng đăng nhập bằng mật khẩu chính xác. Ứng dụng trả về “Tài khoản của bạn bị khóa.”, Do đó xác nhận rằng tài khoản đã bị khóa sau 5 lần xác thực sai.
- Cố gắng đăng nhập bằng mật khẩu chính xác 5 phút sau. Ứng dụng trả về “Tài khoản của bạn bị khóa.”, Qua đó cho thấy cơ chế khóa không tự động mở khóa sau 5 phút.
- Cố gắng đăng nhập bằng mật khẩu chính xác 10 phút sau. Ứng dụng trả về “Tài khoản của bạn bị khóa.”, Qua đó cho thấy cơ chế khóa không tự động mở khóa sau 10 phút.
- Đăng nhập thành công với đúng mật khẩu sau 15 phút, qua đó cho thấy cơ chế khóa tự động mở khóa sau khoảng thời gian từ 10 đến 15 phút.
CAPTCHA có thể cản trở các cuộc tấn công bạo lực, nhưng chúng có thể đi kèm với những điểm yếu riêng và không nên thay thế cơ chế khóa. Cơ chế CAPTCHA có thể bị bỏ qua nếu được triển khai không chính xác. Các lỗi CAPTCHA bao gồm:
- Dễ dàng đánh bại thử thách, chẳng hạn như bộ câu hỏi số dư hoặc giới hạn.
- CAPTCHA kiểm tra mã phản hồi HTTP thay vì phản hồi thành công.
- Logic phía máy chủ CAPTCHA mặc định giải quyết thành công.
- Kết quả thử thách CAPTCHA không bao giờ được xác thực phía máy chủ.
- Trường hoặc thông số đầu vào CAPTCHA được xử lý theo cách thủ công và được xác thực hoặc thoát không đúng cách.
Để đánh giá hiệu quả của CAPTCHA:
- Đánh giá các thách thức của CAPTCHA và thử tự động hóa các giải pháp tùy thuộc vào độ khó.
- Cố gắng gửi yêu cầu mà không cần giải CAPTCHA thông qua (các) cơ chế giao diện người dùng thông thường.
- Cố gắng gửi yêu cầu nhưng không cố ý thử thách CAPTCHA.
- Cố gắng gửi yêu cầu mà không giải quyết CAPTCHA (giả sử một số giá trị mặc định có thể được chuyển bằng mã phía máy khách, v.v.) trong khi sử dụng proxy thử nghiệm (yêu cầu được gửi trực tiếp phía máy chủ).
- Cố gắng làm mờ các điểm nhập dữ liệu CAPTCHA (nếu có) với các trọng tải tiêm phổ biến hoặc chuỗi ký tự đặc biệt.
- Kiểm tra xem giải pháp cho CAPTCHA có thể là văn bản thay thế của (các) hình ảnh, (các) tên tệp hoặc một giá trị trong một trường ẩn được liên kết hay không.
- Cố gắng gửi lại các câu trả lời tốt đã biết đã xác định trước đó.
- Kiểm tra xem việc xóa cookie có khiến CAPTCHA bị bỏ qua hay không (ví dụ: nếu CAPTCHA chỉ được hiển thị sau một số lần bị lỗi).
- Nếu CAPTCHA là một phần của quy trình nhiều bước, hãy cố gắng chỉ cần truy cập hoặc hoàn thành một bước ngoài CAPTCHA (ví dụ: nếu CAPTCHA là bước đầu tiên trong quy trình đăng nhập, hãy thử chỉ cần gửi bước thứ hai [tên người dùng và mật khẩu]).
- Kiểm tra các phương pháp thay thế có thể không được thực thi CAPTCHA, chẳng hạn như điểm cuối API nhằm tạo điều kiện cho việc truy cập ứng dụng dành cho thiết bị di động.
Lặp lại quá trình này cho mọi chức năng có thể có yêu cầu cơ chế khóa.
Cơ chế mở khóa
Để đánh giá khả năng chống lại việc mở khóa tài khoản trái phép của cơ chế mở khóa, hãy bắt đầu cơ chế mở khóa và tìm kiếm điểm yếu. Cơ chế mở khóa điển hình có thể liên quan đến giây trả lời câu hỏi hoặc một liên kết mở khóa được gửi qua email. Liên kết mở khóa phải là liên kết dùng một lần duy nhất, để ngăn kẻ tấn công đoán hoặc phát lại liên kết và thực hiện các cuộc tấn công vũ phu hàng loạt.
Lưu ý rằng cơ chế mở khóa chỉ nên được sử dụng để mở khóa tài khoản. Nó không giống như một cơ chế khôi phục mật khẩu, nhưng có thể tuân theo các phương pháp bảo mật tương tự.
Biện pháp khắc phục hậu quả cơ chế khóa tài khoản yếu
Áp dụng các cơ chế mở khóa tài khoản tùy theo mức độ rủi ro. Theo thứ tự đảm bảo từ thấp nhất đến cao nhất:
- Khóa và mở khóa dựa trên thời gian.
- Mở khóa tự phục vụ (gửi email mở khóa đến địa chỉ email đã đăng ký).
- Quản trị viên mở khóa thủ công.
- Quản trị viên mở khóa thủ công với nhận dạng người dùng tích cực.
Các yếu tố cần xem xét khi thực hiện cơ chế khóa tài khoản:
- Rủi ro của việc đoán mật khẩu bạo lực đối với ứng dụng là gì?
- CAPTCHA có đủ để giảm thiểu rủi ro này không?
- Cơ chế khóa phía máy khách có đang được sử dụng không (ví dụ: JavaScript)? (Nếu vậy, hãy tắt mã phía máy khách để kiểm tra.)
- Số lần đăng nhập không thành công trước khi khóa. Nếu ngưỡng khóa xuống thấp thì người dùng hợp lệ có thể bị khóa quá thường xuyên. Nếu ngưỡng khóa cao thì kẻ tấn công càng có thể thực hiện nhiều nỗ lực để cưỡng bức tài khoản trước khi tài khoản bị khóa. Tùy thuộc vào mục đích của ứng dụng, khoảng 5 đến 10 lần thử không thành công là ngưỡng khóa điển hình.
- Tài khoản sẽ được mở khóa như thế nào?
- Do quản trị viên thực hiện thủ công: đây là phương pháp khóa an toàn nhất nhưng có thể gây bất tiện cho người dùng và làm mất thời gian “quý giá” của quản trị viên.
- Lưu ý rằng quản trị viên cũng nên có phương pháp khôi phục trong trường hợp tài khoản của mình bị khóa.
- Cơ chế mở khóa này có thể dẫn đến tấn công từ chối dịch vụ nếu mục tiêu của kẻ tấn công là khóa tài khoản của tất cả người dùng ứng dụng web.
- Sau một khoảng thời gian: Thời hạn khóa là bao nhiêu? Điều này có đủ để ứng dụng được bảo vệ không? Ví dụ. thời lượng khóa từ 5 đến 30 phút có thể là một sự thỏa hiệp tốt giữa việc giảm thiểu các cuộc tấn công vũ phu và gây bất tiện cho người dùng hợp lệ.
- Thông qua cơ chế tự phục vụ: Như đã nêu trước đây, cơ chế tự phục vụ này phải đủ an toàn để tránh kẻ tấn công có thể tự mở khóa tài khoản.
- Do quản trị viên thực hiện thủ công: đây là phương pháp khóa an toàn nhất nhưng có thể gây bất tiện cho người dùng và làm mất thời gian “quý giá” của quản trị viên.