Hành động
Bug #2126
mở
HN
ĐĐ
[BE][Critical][JWT Algorithm Confusion — All Verify Sites Accept alg:none — JWT]
Bug #2126:
[BE][Critical][JWT Algorithm Confusion — All Verify Sites Accept alg:none — JWT]
Bắt đầu:
13-08-2026
Hết hạn:
Tiến độ:
100%
Thời gian ước lượng:
Lỗi tại bản build:
Build tại bản:
Người Test:
Thời gian test xong:
Mô tả
tạm dịch
- Mô tả lỗi
Hệ thống hiện chưa cấu hình whitelist thuật toán (allowed algorithms) khi xác thực JWT.
Các luồng xác thực JWT hiện chỉ cấu hình secret/secretOrKey nhưng không chỉ định rõ thuật toán được phép sử dụng. Do đó, hệ thống đang có nguy cơ Algorithm Confusion / Algorithm Downgrade, trong đó thuật toán được khai báo trong JWT header có thể không được kiểm soát chặt chẽ theo cấu hình bảo mật mong muốn.
Đặc biệt, cần kiểm tra khả năng hệ thống chấp nhận JWT có header:
{
"alg": "none",
"typ": "JWT"
}
và token không có chữ ký.
Nếu token giả mạo được hệ thống chấp nhận, attacker có thể tự tạo JWT với userId bất kỳ và sử dụng token này để truy cập các API yêu cầu xác thực. - Nguyên nhân
Nguyên nhân chính là hệ thống không giới hạn rõ thuật toán JWT được phép sử dụng khi verify token.
Các điểm cần rà soát:
Vị trí Hiện trạng Rủi ro
JwtModule.register() Chưa khai báo algorithm rõ ràng Có thể sử dụng cấu hình mặc định không phù hợp
JwtStrategy Chưa khai báo algorithms Không whitelist thuật toán tại Passport
jwtService.verify() Không truyền algorithms Không kiểm soát thuật toán tại verify path
Các verification path khác Cần rà soát toàn bộ Có thể tồn tại bypass ở các luồng xác thực khác - Ảnh hưởng
Nếu PoC xác nhận token giả mạo được chấp nhận, mức độ ảnh hưởng là Critical.
Attacker có thể:
Giả mạo danh tính user khác.
Có khả năng giả mạo tài khoản có quyền Administrator.
Truy cập các API yêu cầu authentication.
Truy cập dữ liệu sự cố/incident.
Thực hiện hoặc thay đổi thông tin liên quan đến triển khai lực lượng cứu hộ.
Truy cập/chỉnh sửa cấu hình hệ thống nếu tài khoản giả mạo có quyền tương ứng.
Bypass cơ chế authorization ở các API sử dụng identity từ JWT.
Có khả năng ảnh hưởng đến các API auto-CRUD được bảo vệ dựa trên authentication context.
Do hệ thống thuộc nhóm disaster command / emergency response, việc authentication bị bypass có thể dẫn tới ảnh hưởng nghiêm trọng đến tính toàn vẹn dữ liệu và hoạt động điều phối. - Kết quả mong đợi
Hệ thống phải chỉ chấp nhận JWT được ký bằng thuật toán đã được hệ thống cấu hình và whitelist.
Ví dụ nếu hệ thống sử dụng HS256:
Allowed algorithm: HS256
JWT sử dụng các thuật toán khác hoặc không có signature phải bị từ chối.
Đặc biệt:
alg = none
phải luôn bị reject.
Response mong đợi:
401 Unauthorized
và không được tạo authenticated context cho request.
ĐĐ Cập nhật bởi Đức Linh Đinh cách đây 17 ngày
- Phân công cho gán cho Đức Linh Đinh
ĐĐ Cập nhật bởi Đức Linh Đinh cách đây 17 ngày
- Tiến độ thay đổi từ 0 tới 100
ĐĐ Cập nhật bởi Đức Linh Đinh cách đây 17 ngày
- Trạng thái thay đổi từ New tới Commit
Hành động