Vì credential nằm trong JavaScript là lộ cho mọi người, và query DSL đủ mạnh để một người tò mò đọc hết dữ liệu hoặc làm sập cluster.
Các việc kẻ tấn công làm được khi endpoint mở:
- Query sang index khác (GET /_all/_search), đọc dữ liệu nhạy cảm.
- Gửi aggregation nặng hoặc size: 100000 để làm cluster OOM.
- DELETE /products nếu credential có quyền ghi.
Kiến trúc đúng: backend làm proxy, nhận tham số đã ràng buộc từ client rồi tự dựng query DSL, kèm giới hạn size, timeout và rate limit.
browser -> API cua ban (auth + validate + build DSL) -> Elasticsearch (private network)Ở tầng cluster nên có thêm: bật security và TLS, tạo role read-only theo từng index, và không bao giờ để cluster nghe trên IP public.
Số vụ lộ dữ liệu do Elasticsearch mở public rất nhiều và gần như đều cùng một nguyên nhân: cluster demo được bật lên nhanh rồi trở thành production mà không ai bật lại security.