QR Login là một tính năng đem lại sự tiện dụng và nâng cao trải nghiệm sử dụng ứng dụng đa nền tảng cho người dùng. Nếu xem QR Login là một bí kíp võ công thì QRLJacking lại là một chiêu thức âm tà hiểm độc được tạo ra từ việc lợi dụng tính năng QR Login. Xưa nay võ công không phân chính tà, người sử dụng với mục đích tốt thì là tốt, xử dụng để hại người khác thì là xấu. Các hacker đã lợi dụng tính năng QR Login như nào để gây hại cho người dùng? Kỹ thuật tấn công QRLJacking có khó không? Phòng tránh kỹ thuật tấn công này như nào? Đáp án cho những điều đó đều có trong bài viết này.
1. QR Login
1.1. QR Login sinh ra để làm gì?
Bạn sử dụng một ứng dụng X (không phải X từ chim xanh biến thành) trên điện thoại, để cho nhanh và tiện thì bạn đã lưu tài khoản mật khẩu tự động (qua Google Account hoặc Apple ID) vào điện thoại của mình. Mỗi lần mở ứng dụng trên điện thoại thì quá trình đăng nhập sẽ được thực hiện tự động, rất nhanh. Dần dần bạn quên béng mất tài khoản và mật khẩu của ứng dụng đó là gì. Đến khi cần đăng nhập vào ứng dụng đó trên máy tính, bạn mới phải đi kiểm tra lại danh sách các tài khoản lưu trong điện thoại. Điều đó không hẳn tạo cho người dùng cảm giác khó chịu, nhưng nó khiến cho trải nghiệm ứng dụng đa nền tảng của người dùng có một vệt ngắt quãng nhỏ, không thực sự mượt như được bôi dầu ăn Neptune.
Để đem lại trải nghiệm trơn mượt hơn cho người dùng, một số ứng dụng đã phát triển thêm tính năng QR Login - Đăng nhập bằng mã QR. Tính năng này cho phép người dùng quét QR trên ứng dụng ở máy tính bằng bất cứ ứng dụng quét QR nào trên điện thoại. Sau khi mã QR được quét thành công, phiên bản trên điện thoại của ứng dụng sẽ được mở lên và yêu cầu người dùng xác thực - xác nhận đăng nhập trên máy tính. Nếu người dùng đồng ý thì phiên bản ứng dụng trên máy tính sẽ được đăng nhập ngay sau đó.
Một số ứng dụng thịnh hành ở Việt Nam đã có tính năng QR Login là: Telegram, Discord, Zalo, Cổng thông tin điện tử Quốc gia (VNeID),...
1.2. Quy trình thực hiện QR Login
Quá trình xử lý khi người dùng thực hiện đăng nhập bằng mã QR có thể hiểu đơn giản như sau:
Bước | Người dùng | Ứng dụng web | Ứng dụng di động | Máy chủ |
---|---|---|---|---|
1 | Truy cập ứng dụng trên web | |||
2 | Hiển thị mã QR đăng nhập | |||
3 | Sử dụng điện thoại để quét mã QR | |||
4 | Đọc dữ liệu trong QR do ứng dụng web tạo ra | |||
5 | Xử lý yêu cầu đăng nhập và gửi kết quả xử lý lên máy chủ | |||
6 | Nhận kết quả xử lý từ ứng dụng di động, sau đó phản hồi kết quả cho ứng dụng web | |||
7 | Thực hiện đăng nhập hoặc thông báo lỗi |
Trong QR thường sẽ có deep link của ứng dụng di động, kèm với một token để thông báo cho máy chủ biết máy tính nào muốn đăng nhập. VD như QRLogin của ứng dụng Telegram khi quét sẽ có thông tin như sau: tg://login?token=AQXztN5lziv_vuuxtfznKeGbHTcShaSp1C0lGDeCcVEjEQ==
Các bạn cũng có thể theo dõi qua biểu đồ dưới đây để có góc nhìn cụ thể hơn:
2. QRLJacking
QRLJacking là kỹ thuật tấn công dựa trên việc lợi dụng quy trình hoạt động của mã QR đăng nhập để chiếm phiên làm việc của người dùng. Khi để ý kỹ vào các bước trong quy trình thực hiện QRLogin, có thể thấy rằng người dùng chỉ cần thực hiện duy nhất 1 việc là quét mã QR, còn lại sẽ do các thành phần khác xử lý. Ngay cả việc sinh ra mã QR để quét cũng không cần người dùng phải làm. Hacker có thể lợi dụng điều này để thực hiện các kịch bản tấn công QRLJacking.
Kịch bản tấn công QRLJacking gồm 5 bước sau:
- B1: Kẻ tấn công mở ứng dụng tại máy tính của bản thân, sau đó lấy mã QR đăng nhập mà ứng dụng tạo ra.
- B2: Kẻ tấn công gửi mã QR đăng nhập cho nạn nhân. Thông qua các phương pháp như phishing để lừa người dùng quét mã.
- B3: Người dùng quét mã QR và cho phép đăng nhập bằng ứng dụng di động.
- B4: Ứng dụng tại máy tính của kẻ tấn công đã đăng nhập với tài khoản của nạn nhân.
- B5: Kẻ tấn công tiến hành đánh cắp và thay đổi thông tin trong tài khoản của nạn nhân.
Để nâng cao khả năng tấn công, hacker có thể viết thêm một đoạn mã tự động yêu cầu ứng dụng làm mới mã QR, đảm bảo bất cứ khi nào người dùng quét mã thì hacker đều có thể đăng nhập được ngay.
3. Phòng tránh QRLJacking
Như vậy, bên cạnh với việc phải chú ý không bấm vào các đường link giả mạo, thì người dùng còn phải cẩn thận mỗi khi quét mã QR đăng nhập nữa. Để giảm khả năng người dùng bị tấn công QRLJacking, các ứng dụng có thể áp dụng một số biện pháp như:
- Tuyên truyền, cảnh báo người dùng.
- Kiểm tra địa chỉ IP thiết bị đăng nhập và thiết bị quét QR phải trùng nhau.
- Thông báo cho người dùng rằng có thiết bị lạ lần đầu yêu cầu đăng nhập.
- ....