I. Tóm tắt nội dung
Trong phần này, chúng ta sẽ tiếp tục phân tích các phương pháp tấn công hướng tới JSON Web Tokens (JWT), bao gồm tấn công tham số jwk
, jku
, và kid
trong self-signed JWTs. Đồng thời, cũng sẽ thảo luận về các biện pháp ngăn chặn hiệu quả để bảo vệ ứng dụng khỏi các lỗ hổng này.
II. Tấn công tham số jwk
trong self-signed JWTs
Các server sử dụng JWT có tham số jwk
để xác thực người dùng thường phải lưu trữ danh sách các public key hợp lệ. Tuy nhiên, một sai sót phổ biến là lập trình viên có thể để lại chế độ test với public key được nhúng, dẫn đến nguy cơ mã độc. Để thực hiện tấn công này, kẻ tấn công có thể tạo và nhúng public key của riêng mình vào phần headers của JWT. Ví dụ, cách tấn công này có thể được thực hiện như sau:
- Đăng nhập thành công và quan sát giá trị của header.
- Xác định giá trị
kid
để hiểu cách mà server sử dụng để xác thực. - Tạo một RSA key theo định dạng jwk và nhúng vào JWT header.
Biện pháp ngăn chặn: Không chấp nhận khóa công khai được chỉ định bởi người dùng trong tham số jwk
.
III. Tấn công tham số jku
trong self-signed JWTs
Một số ứng dụng sử dụng tham số jku
để xác định một URL chứa public keys. Tuy nhiên, nếu không được triển khai đúng cách, điều này có thể gây ra rủi ro. Kẻ tấn công có thể thay đổi giá trị jku
trỏ đến một URL mà họ kiểm soát, nhằm truy cập và sử dụng public keys không hợp lệ. Quá trình này bao gồm:
- Kiểm tra server có chấp nhận tham số
jku
hay không. - Tạo một trang web chứa danh sách public keys giả mạo và thay đổi giá trị
jku
trong JWT.
Biện pháp ngăn chặn: Trước khi giải mã JWT, server nên kiểm tra và đảm bảo rằng không có tham số jku
nào được phép người dùng xác định.
IV. Tấn công tham số kid
trong self-signed JWTs
Tham số kid
có thể chỉ định đường dẫn đến một tệp chứa khóa xác thực. Thiếu sót trong kiểm tra tính hợp lệ của tham số này có thể dẫn đến tấn công Directory traversal. Kẻ tấn công có thể truy cập các tệp không mong muốn bằng cách truyền đường dẫn không hợp lệ qua kid
.
Biện pháp ngăn chặn: Đảm bảo rằng kid
chỉ được sử dụng với các giá trị đã biết và hợp lệ. Sử dụng danh sách các khóa hợp lệ và kiểm tra tính hợp lệ của kid
trước khi xử lý.
V. Kết Luận
Quá trình hiểu biết và bảo vệ ứng dụng khỏi các cuộc tấn công liên quan đến JWT là rất quan trọng. Việc áp dụng các biện pháp bảo mật đúng cách sẽ giảm thiểu rủi ro và tăng cường sự an toàn trong quá trình xác thực người dùng.
Các tài liệu tham khảo
- https://portswigger.net/web-security/jwt
source: viblo