ArgoCD một công cụ Continous Delivery cho Kubernetes, vừa vá một lỗ hổng nghiêm trọng cho phép những kẻ tấn công giả mạo token web JSON (JWT) và trở thành quản trị viên.
Lỗ hổng cho phép leo phân quền phát sinh do nền tảng GitOps mã nguồn mở tin cậy sai token web JSON (JWT). Việc access không hợp lệ nếu quyền truy không giới hạn.
May mắn thay, mặc dù lỗi đã được xếp hạng mức độ nghiêm trọng cao nhất có thể – điểm CVSS là 10 – quyền truy cập ẩn danh bị vô hiệu hóa theo mặc định.
Chiếm điều khiển Cluster
Theo lời chia sẽ từ GitHub chính thức của ArgoCD. Những kẻ giả mạo danh có lợi dụng cơ chế truy xuất nặc danh JWT dễ bị tấn công. Chúng có thể “chiếm được các đặc quyền như quyền truy xuất tử các cluster của ArgoCD, là quản trị viên cụm trong cài đặt mặc định”.
“Điều này sẽ cho phép kẻ tấn công tạo, thao tác và xóa bất kỳ tài nguyên nào trên cluster.”
Ảnh hưởng
Lỗ hổng này ảnh hưởng đến các phiên bản 1.4.0 trở lên và bao gồm 2.1.14, 2.2.8, 2.3.3. Lỗi được fix trong các phiên bản vá lỗi 2.3.4, 2.2.9 và 2.1.15.
Bạn nên tắt Quyền truy cập ẩn danh cho đến khi người dùng có thể áp dụng bản cập nhật, lời khuyên cho thấy. Bạn nên cập nhật hệ thống “càng sớm càng tốt, bất kể truy cập ẩn danh có được kích hoạt trong trường hợp của bạn hay không”.
Workarrounds
Lỗi này được fix trong các phiên bản phiên bản:
- v2.3.4
- v2.2.9
- v2.1.15
Tắt chế độ truy xuất ẩn danh
Kiểm tra xem giá trị được set cho truy xuất ẩn danh ko. Dùng lệnh dưới
$ kubectl get -n argocd cm argocd-cm -o jsonpath='{.data.users\.anonymous\.enabled}'
Nếu kết quả trả về “true” thì bạn cần set fale cho nó theo câu lệnh.
$ kubectl patch -n argocd cm argocd-cm --type=json -p='[{"op":"add", "path":"/data/users.anonymous.enabled", "value":"false"}]'
Hoặc có thể remove hẳn giá cấu hình này
$ kubectl patch -n argocd cm argocd-cm --type=json -p='[{"op":"remove", "path":"/data/users.anonymous.enabled"}]'