Khóa mặc định không an toàn của Apache Superset gây ảnh hưởng hàng nghìn hệ thống
Ứng dụng nguồn mở, dựa trên khung Flask của Python, dùng khóa bí mật với giá trị mặc định mà mọi người đều biết đến:
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
Trong một khuyến cáo hôm 25/4, công ty bảo mật Horizon3.ai giải thích rằng khi người dùng đăng nhập vào phiên bản Superset, ứng dụng web sẽ gửi cookie phiên có mã định danh người dùng cho trình duyệt web của khách truy cập.
Naveen Sunkavally, kiến trúc sư trưởng tại Horizon3.ai cho biết: “Ứng dụng web ký cookie bằng SECRET_KEY, một giá trị được cho là được tạo ngẫu nhiên và thường được lưu trữ trong tệp cấu hình cục bộ”.
Nếu kẻ tấn công biết giá trị của SECRET_KEY, thì kẻ đó có thể tạo và ký cookie, xác thực với tư cách là quản trị viên ứng dụng. Việc kiểm tra xem Superset có đang sử dụng khóa mặc định hay không bằng một công cụ có tên là jar-unsign là khá đơn giản.
Theo Sunkavally, khoảng 2/3 số người sử dụng phần mềm không tạo khóa mới khi thiết lập Superset: tính đến ngày 11/10/2021, ứng dụng này có gần 3.000 phiên bản để lộ trên internet, khoảng 2.000 trong số đó dựa trên phiên bản mặc định chìa khoá bí mật.
Ngày 11/01/2022, nhóm bảo mật của Apache đã thực hiện một số thay đổi nhằm thiết lập một khóa bí mật mặc định mới: "CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET"
Nhưng lần này, ứng dụng có một bước kiểm tra để xem liệu giá trị mặc định mới có không thay đổi hay không. Nếu đúng như vậy, ứng dụng ghi cảnh báo vào tệp nhật ký của ứng dụng, kèm theo hướng dẫn về cách tạo khóa bảo mật. Tuy nhiên, người dùng không chắc sẽ để ý đến cảnh báo.
Hơn một năm sau khi thay đổi này được thực hiện, ngày 9/02/2023, Horizon3.ai tiếp tục kiểm tra xem có bao nhiêu phiên bản Superset đang định cấu hình ứng dụng bằng khóa bí mật mặc định công khai. Lần này, họ đã mở rộng tìm kiếm Shodan.io của mình thành bốn khóa mặc định khác nhau: khóa gốc, khóa mới và hai khóa khác - một từ mẫu triển khai và một từ tài liệu. Kết quả không có nhiều thay đổi, trong số 3.176 phiên bản Superset, 2.124 (gần 67%) đang sử dụng một trong bốn khóa mặc định.
Vì vậy, Horizon3.ai đã liên hệ lại với nhóm bảo mật của Apache, những người duy trì dự án đã tung ra một bản cập nhật sẽ được gửi như một phần của bản phát hành 2.1 vào ngày 5/4/2023, để "áp đặt các biện pháp khắc nghiệt hơn khi xác định SECRET_KEY mặc định". Thay đổi này khiến ứng dụng không khởi động bằng khóa mặc định.
Sunkavally cho biết: "Tệp docker-compose chứa SECRET_KEY mặc định mới của TEST_NON_DEV_SECRET mà chúng tôi sợ rằng một số người dùng sẽ vô tình chạy Superset với nó. Một số cấu hình cũng đặt admin/admin làm thông tin đăng nhập mặc định cho người dùng quản trị".
Lỗ hổng Superset được gắn mã định danh CVE-2023-27524 vào ngày 24/4. Sunkavally cho biết những người dùng Superset có liên quan có thể kiểm tra xem liệu máy chủ của họ có khóa mặc định hay không với script dựa trên jar-unsign tại địa chỉ https://github.com/horizon3ai/CVE-2023-27524.
Cũng theo Sunkavally, hơn 2.000 phiên bản Superset dễ bị tổn thương được xác định đã được vận hành bởi các công ty lớn và nhỏ, các cơ quan chính phủ và trường đại học, đồng thời cho biết thêm rằng một số tổ chức này đã xử lý lỗ hổng sau khi được thông báo về nó.
Nguyễn Anh Tuấn (theo The Register)