Trong một thông báo bảo mật gần đây, Okta đã tiết lộ một lỗ hổng trong hệ thống Xác thực Ủy quyền AD/LDAP của họ, tồn tại từ tháng 7 đến tháng 10 năm 2024. Phân tích kỹ thuật từ cộng đồng cho thấy những hiểu biết sâu sắc hơn về các quyết định kiến trúc dẫn đến vấn đề bảo mật này.
Nguyên nhân Kỹ thuật Gốc rễ
Lỗ hổng xuất phát từ cách triển khai tạo khóa cache của Okta sử dụng BCrypt. Hệ thống ghép nối userId, username và mật khẩu để tạo khóa cache, nhưng giới hạn 72 byte của BCrypt đã gây ra vấn đề. Khi tên người dùng vượt quá 52 ký tự, phần mật khẩu có thể bị cắt bớt khỏi khóa cache, có khả năng cho phép xác thực chỉ bằng tên người dùng sử dụng khóa cache đã lưu trữ trước đó.
Các Mẫu Thiết kế Không phù hợp Được Xác định
Các chuyên gia bảo mật trong cộng đồng đã chỉ ra một số vấn đề về kiến trúc trong cách tiếp cận của Okta. Các vấn đề chính bao gồm:
- Sử dụng BCrypt, một thuật toán băm mật khẩu, cho việc tạo khóa cache
- Kết hợp các định danh (userId, username) với thông tin bí mật (mật khẩu) trong một hash duy nhất
- Không tính đến các giới hạn độ dài đã biết của BCrypt
- Xử lý không đúng cách các ký tự phân cách trong quá trình ghép nối
Các Phương pháp Triển khai Tốt hơn
Cộng đồng đề xuất một số cách tiếp cận thay thế có thể ngăn chặn lỗ hổng này:
- Tách biệt việc lưu trữ mật khẩu khỏi việc tạo khóa cache
- Sử dụng HMAC hoặc các Hàm Tạo Khóa chuyên dụng (KDFs) như HKDF để tạo khóa cache
- Triển khai tiền tố độ dài trường phù hợp thay vì sử dụng ký tự phân cách
- Băm riêng từng trường trước khi ghép nối
Các Cân nhắc về Triển khai Cache
Việc khai thác lỗ hổng đòi hỏi các điều kiện cụ thể: hoặc là agent AD/LDAP không thể truy cập được hoặc tình huống lưu lượng cao buộc phải truy cập cache. Điều này cho thấy sự cân bằng tinh tế giữa tối ưu hóa hiệu suất và bảo mật trong các hệ thống xác thực. Cộng đồng nhấn mạnh rằng việc vô hiệu hóa cache thông qua thay đổi mật khẩu có thể là một cân nhắc quan trọng trong thiết kế ban đầu, mặc dù việc triển khai đã chứng minh là có khiếm khuyết.
Tác động và Giải pháp
Okta đã khắc phục lỗ hổng bằng cách chuyển từ BCrypt sang PBKDF2 cho các hoạt động mã hóa. Các tổ chức sử dụng Xác thực Ủy quyền AD/LDAP của Okta nên kiểm tra nhật ký hệ thống của họ để phát hiện khả năng khai thác trong khoảng thời gian từ 23 tháng 7 đến 30 tháng 10 năm 2024, đặc biệt là nếu họ có người dùng với tên người dùng từ 52 ký tự trở lên.
Phản ứng của Ngành
Cộng đồng bảo mật đã bày tỏ lo ngại về thời điểm công bố của Okta, với thông báo được đưa ra muộn vào chiều thứ Sáu. Điều này đã khơi mào cuộc thảo luận về tính minh bạch trong việc công bố bảo mật và nhu cầu về các thông lệ công bố được chuẩn hóa hơn trong ngành quản lý định danh và truy cập.