Bạn nhận một email báo "đăng nhập mới từ thiết bị lạ" cho dịch vụ bạn không hề mở suốt hai năm. Mật khẩu chưa bị bẻ khoá, tài khoản chưa bị nhắm riêng, và không ai vừa đoán mò cả. Nhiều khả năng bạn vừa đi qua một lượt credential stuffing — kiểu tấn công đơn giản nhất và hiệu quả nhất trên internet hiện nay. Bài này viết cho người có thể thành nạn nhân, và ở cuối, cho người vận hành website muốn bảo vệ người dùng.
Credential stuffing là gì
Một website nào đó bị rò rỉ dữ liệu, và tập cặp "địa chỉ email + mật khẩu" của nó lọt ra ngoài. Kẻ tấn công lấy nguyên tập đó và thử lại, tự động và ở quy mô rất lớn, trên hàng loạt website khác — ngân hàng, ví điện tử, sàn thương mại điện tử, mạng xã hội. Không có gì tinh vi ở đây. Tỷ lệ thành công thường dưới một phần trăm, nhưng khi thử vài triệu cặp thì dưới một phần trăm vẫn là hàng nghìn tài khoản bị chiếm.
Khác gì brute force và phishing
Brute force là đoán: thử lần lượt vô số chuỗi ký tự cho tới khi trúng. Phishing là lừa: dựng trang giống thật để bạn tự gõ mật khẩu vào. Credential stuffing không đoán gì và không lừa ai — nó dùng lại một mật khẩu đúng, chỉ là đúng ở nơi khác. Vì mật khẩu vốn hợp lệ, các biện pháp chống đoán mò như yêu cầu ký tự phức tạp gần như vô dụng, còn giới hạn số lần thử sai theo từng tài khoản cũng ít tác dụng vì mỗi tài khoản thường chỉ bị thử đúng một lần. Lý do duy nhất khiến nó hoạt động là việc dùng lại mật khẩu.
Vì sao địa chỉ email của bạn là chìa khoá ghép nối
Nếu bạn dùng một địa chỉ email duy nhất cho mọi thứ, địa chỉ đó thành khoá ghép hoàn hảo giữa các vụ rò rỉ khác nhau. Một diễn đàn bạn đăng ký năm 2015, một ứng dụng giao đồ ăn, một trang tải tài liệu — tất cả cùng chỉ về một con người, và ai gom được vài tập dữ liệu là dựng lại được bức tranh khá đầy đủ về bạn. Cách giảm bề mặt này đơn giản: dùng địa chỉ riêng cho những đăng ký giá trị thấp. Với các trang bạn chỉ cần vào một lần để tải một file hay xem một bản demo, một hộp thư tạm dùng một lần là đủ — nếu trang đó rò rỉ dữ liệu, thứ lọt ra không nối được với hộp thư mà ngân hàng của bạn đang dùng. Hãy giữ địa chỉ chính cho những nơi thật sự quan trọng: ngân hàng, cơ quan thuế, chỗ làm, và chính hộp thư khôi phục của bạn.
Dấu hiệu cho thấy tài khoản của bạn đang bị thử
- Cảnh báo đăng nhập từ dịch vụ bạn không hề chạm vào, đặc biệt là "đăng nhập không thành công từ vị trí lạ".
- Yêu cầu xác thực hai lớp hiện lên khi bạn không đăng nhập gì cả — hiện tượng "MFA fatigue": kẻ tấn công đã có mật khẩu đúng và chờ bạn bấm đồng ý cho xong.
- Email đặt lại mật khẩu mà bạn không yêu cầu, đến rải rác từ nhiều dịch vụ trong cùng một ngày.
- Bị khoá tài khoản đột ngột hoặc bị buộc đổi mật khẩu.
- Giao dịch nhỏ khó hiểu, vài chục nghìn đồng để thử xem thẻ còn dùng được không.
- Quy tắc lọc thư hoặc địa chỉ chuyển tiếp trong hộp thư mà bạn không tạo — dấu hiệu nghiêm trọng nhất trong danh sách này.
Bước 1 — mỗi dịch vụ một mật khẩu riêng
Đây không phải một trong nhiều lời khuyên; đây là toàn bộ vấn đề. Nếu mật khẩu ở mỗi nơi mỗi khác, một vụ rò rỉ chỉ ảnh hưởng đúng một tài khoản và credential stuffing không còn chỗ bám. Không ai nhớ nổi bốn mươi mật khẩu khác nhau, nên hãy dùng trình quản lý mật khẩu — bạn chỉ cần thuộc đúng một mật khẩu chính, thật dài, và bật xác thực hai lớp cho chính trình quản lý đó. Khi cần một chuỗi mới, công cụ tạo mật khẩu ngẫu nhiên sinh ra thứ không dính dáng gì tới tên con bạn hay ngày sinh của bạn. Ưu tiên thay trước: hộp thư chính, ngân hàng, và mọi nơi bạn biết chắc mình đã dùng lại mật khẩu.
Bước 2 — một lớp thứ hai sống sót được sau khi mật khẩu rò rỉ
Xác thực hai lớp biến một mật khẩu đúng thành chưa đủ. Ba lựa chọn phổ biến không ngang nhau. Passkey mạnh nhất: khoá gắn với đúng tên miền nên không dùng được trên trang giả mạo. Ứng dụng TOTP sinh mã sáu số ngay trên máy, không đi qua mạng viễn thông, đủ tốt cho gần như mọi tài khoản. SMS yếu nhất: mã đi qua nhà mạng, có thể bị chặn, và chuyện đánh tráo SIM đã được ghi nhận nhiều lần ở Việt Nam. Dù vậy, SMS vẫn tốt hơn hẳn không có gì. Nếu bạn chưa từng thiết lập, công cụ tạo mã xác thực hai lớp cho phép bạn thử quy trình quét mã QR và sinh mã trước khi bật nó trên tài khoản thật.
Bước 3 — biết những gì đã rò rỉ
Bạn không thể sửa thứ mình không biết. Hãy tra từng địa chỉ email bạn đang dùng — không chỉ địa chỉ chính — xem nó đã xuất hiện trong vụ rò rỉ nào, và vụ đó có lộ mật khẩu hay chỉ lộ email. Sau đó xử lý theo thứ tự: đổi trước những mật khẩu vừa bị lộ vừa được dùng lại ở nơi khác. Bài hướng dẫn kiểm tra xem mật khẩu của bạn đã bị lộ chưa mô tả cách tra cứu an toàn và cách đọc kết quả mà không hoảng loạn.
Nếu chuyện đã xảy ra: dọn dẹp theo thứ tự
Bắt đầu từ hộp thư điện tử, luôn luôn — ai kiểm soát hộp thư thì kiểm soát nút "quên mật khẩu" của mọi tài khoản còn lại. Đổi mật khẩu tài khoản bị ảnh hưởng, rồi đổi ở mọi nơi bạn đã dùng lại mật khẩu đó; bỏ qua bước thứ hai là bỏ dở nửa việc. Đăng xuất toàn bộ phiên đang hoạt động và thu hồi token còn hiệu lực. Kiểm tra và xoá email khôi phục, số điện thoại khôi phục, quy tắc lọc thư, địa chỉ chuyển tiếp, mật khẩu ứng dụng và ứng dụng bên thứ ba đã được cấp quyền mà bạn không nhận ra. Cuối cùng, xem lại danh sách thiết bị đã đăng ký xác thực hai lớp và tạo lại bộ mã khôi phục.
Độ dài quan trọng hơn ký tự đặc biệt
Quy tắc "phải có chữ hoa, số và ký tự đặc biệt" tạo ra những chuỗi kiểu Matkhau@2024 — khó nhớ với người dùng và dễ đoán với máy, vì máy biết chính xác con người biến đổi từ ngữ theo những khuôn mẫu nào. Một cụm bốn hoặc năm từ không liên quan, đủ dài, vừa dễ nhớ hơn vừa khó dò hơn nhiều. Nhưng đừng nhầm thứ tự ưu tiên: tính duy nhất quan trọng hơn cả độ dài. Một cụm mật khẩu dài tuyệt vời nhưng dùng ở mười website vẫn sụp đổ ngay khi một trong mười nơi đó rò rỉ. Nếu bạn thích tự đặt thay vì để máy sinh, bài cách tạo cụm mật khẩu mạnh mà vẫn nhớ được giải thích cách chọn từ, còn công cụ sinh cụm mật khẩu làm sẵn phần ngẫu nhiên nếu bạn không muốn tự nghĩ.
Nếu bạn đang vận hành một website
Phía bạn có vài việc rẻ và hiệu quả. Giới hạn tần suất đăng nhập theo IP, theo tài khoản và theo dấu vân tay thiết bị, kèm chính sách khoá tạm thời tăng dần thời gian chờ. Đối chiếu mật khẩu mới của người dùng với các tập dữ liệu đã rò rỉ và từ chối những mật khẩu nằm trong đó. Cung cấp xác thực hai lớp và làm cho nó dễ bật. Theo dõi mẫu đăng nhập bất thường: tỷ lệ thất bại tăng vọt, một IP thử hàng trăm tài khoản, tỷ lệ thành công thấp bất thường trên lượng thử rất lớn. Và đừng bao giờ tiết lộ phần nào của cặp thông tin là sai — thông báo phải giống hệt nhau dù email không tồn tại hay mật khẩu sai.
Thứ tự ưu tiên thực tế
Đừng cố sửa bốn mươi tài khoản trong một buổi tối. Làm hộp thư điện tử trước: mật khẩu duy nhất, xác thực hai lớp, dọn sạch quy tắc chuyển tiếp và địa chỉ khôi phục. Sau đó là tiền: ngân hàng, ví điện tử, sàn thương mại điện tử có lưu thẻ. Tiếp theo là mọi nơi bạn biết mình đã dùng lại mật khẩu. Phần còn lại xử lý dần, mỗi lần đăng nhập thì đổi một tài khoản. Một lưu ý thành thật để kết: không biện pháp nào ở trên cứu được tài khoản mà hộp thư khôi phục của nó vẫn dùng mật khẩu cũ, dùng lại ở nơi khác và không có lớp bảo vệ thứ hai. Hộp thư là gốc rễ; hãy bắt đầu từ đó.