Lỗ hổng bảo mật trong file JavaScript công khai trên trang chủ ClickUp đã âm thầm làm lộ gần 1.000 địa chỉ email doanh nghiệp và cơ quan, thông qua một API key hardcoded của bên thứ ba chưa được xoay vòng từ tháng 01/2025 đến tháng 04/2026.
Phát hiện lỗ hổng bảo mật từ mã JavaScript công khai
Nhà nghiên cứu bảo mật đã truy cập trang chủ ClickUp, kiểm tra mã nguồn trang và phát hiện một API key được nhúng trực tiếp trong file JavaScript tải trước khi bất kỳ xác thực người dùng nào diễn ra. Tham chiếu kỹ thuật về cơ chế xác thực có thể xem tại authentication.
Chỉ với một yêu cầu GET không cần xác thực, khóa này đã trả về 959 địa chỉ email và 3.165 feature flags nội bộ. Không cần credential, không cần bypass, và không cần công cụ khai thác phức tạp.
Đây là một lỗ hổng bảo mật thuộc nhóm quản lý secret kém trong môi trường client-side, với tác động trực tiếp tới dữ liệu nội bộ và khả năng lộ thông tin nhạy cảm.
Lỗ hổng bảo mật và phạm vi dữ liệu bị lộ
Dữ liệu bị lộ trải rộng trên nhiều tổ chức doanh nghiệp và cơ quan, gồm nhân viên từ Home Depot, Fortinet, Autodesk, Tenable, Rakuten, Mayo Clinic, Permira và hãng luật Akin Gump. Ngoài ra còn có nhân sự thuộc các đơn vị chính quyền tại Wyoming, Arkansas, North Carolina, Montana, Queensland (Australia), New Zealand, cùng một contractor của Microsoft và 71 nhân viên ClickUp.
Trong bối cảnh này, lỗ hổng bảo mật không chỉ là rò rỉ email. Nó còn tạo ra bề mặt tấn công cho các chiến dịch phishing, credential stuffing và social engineering nhắm vào chính các tổ chức vốn có vai trò phòng thủ an ninh mạng.
Ảnh hưởng hệ thống và rủi ro an toàn thông tin
Danh sách email bị lộ làm tăng nguy cơ rò rỉ dữ liệu và xâm nhập trái phép qua các kịch bản nhắm mục tiêu. Với các tổ chức như Fortinet và Tenable, việc lộ danh tính nhân sự có thể làm tăng rủi ro bảo mật trong chuỗi tấn công gián tiếp.
Fortinet là nhà cung cấp firewall doanh nghiệp; Tenable là đơn vị phát triển Nessus. Khi email nhân viên của các tổ chức này bị phơi nhiễm, lỗ hổng bảo mật trở thành điểm khởi đầu cho lừa đảo có chủ đích và thu thập thông tin đăng nhập.
3.165 feature flags nội bộ bị lộ
Bên cạnh email, 3.165 internal feature flags cũng bị trả về trong cùng phản hồi. Đây là các chỉ dấu về phát triển sản phẩm, tính năng beta, và cấu hình A/B testing.
Về mặt kỹ thuật, dữ liệu này có thể hỗ trợ threat intelligence cho bên tấn công, đồng thời làm lộ logic triển khai nội bộ. Trong ngữ cảnh lỗ hổng bảo mật, feature flags là tài nguyên cần được bảo vệ tương tự như PII.
Mốc thời gian và trạng thái khắc phục
Vấn đề được báo cáo cho ClickUp qua HackerOne vào ngày 17/01/2025. Đến cuối tháng 04/2026, tức hơn 15 tháng sau, API key vẫn chưa được xoay vòng. Nhà nghiên cứu xác nhận dữ liệu vẫn còn khả dụng ngay trước khi công bố.
Đây không phải zero-day vulnerability. Đây là một lỗ hổng bảo mật đã biết nhưng chưa được vá trong môi trường production, tiếp tục thu thập dữ liệu doanh nghiệp trong thời gian dài.
Nguyên nhân kỹ thuật: hardcoded secret trong JavaScript phía client
Hardcoded secrets trong JavaScript phía client là một trong những lỗi bảo mật phổ biến và có thể phòng tránh. Khi API key nằm trong mã phía trình duyệt, bất kỳ người dùng nào cũng có thể xem mã nguồn, trích xuất khóa và gửi truy vấn trực tiếp tới API.
Trong trường hợp này, lỗ hổng bảo mật xuất phát từ việc secret không được bảo vệ ở lớp server-side, không có vòng đời quản lý khóa, và không được xoay vòng kịp thời. Điều đó làm cho thông tin nội bộ bị rò rỉ mà không cần khai thác nâng cao.
Ví dụ truy vấn quan sát được
i went to https://t.co/GYtMjd81a6.
opened the page source.
found a hardcoded API key in the javascript.
copied it.
sent one GET request.
got back 959 email addresses and 3,165 internal feature flags.IOC liên quan đến sự cố
- Hành vi IOC: Một yêu cầu GET không xác thực tới API sử dụng key hardcoded.
- Dấu hiệu lộ lọt dữ liệu: 959 email addresses.
- Dữ liệu nội bộ bị lộ: 3.165 internal feature flags.
- Vị trí phát hiện: File JavaScript công khai trên trang chủ.
- Trạng thái secret: API key chưa được xoay vòng sau hơn 15 tháng.
Cảnh báo CVE và trạng thái khai thác
Không có mã CVE cụ thể nào được nêu trong nội dung gốc. Tuy nhiên, về mặt phân loại, đây là lỗ hổng bảo mật thuộc nhóm exposed secrets / hardcoded credentials trong ứng dụng web.
Nếu đối chiếu theo quy trình quản trị rủi ro, đây là trường hợp cần ưu tiên cập nhật bản vá, xoay vòng secret và kiểm tra toàn bộ tài sản client-side để ngăn rò rỉ dữ liệu tiếp diễn.
Biện pháp kỹ thuật cần thực hiện
Với dạng lỗ hổng bảo mật này, các bước xử lý tập trung vào giảm thiểu khả năng lộ secret và ngăn truy cập trái phép vào dữ liệu nội bộ.
- Loại bỏ API key khỏi mã JavaScript phía client.
- Xoay vòng toàn bộ secret đã lộ.
- Áp dụng kiểm soát truy cập phía server cho endpoint trả dữ liệu.
- Rà soát log để phát hiện truy vấn bất thường tới API.
- Kiểm tra lại cơ chế phân phối feature flags và dữ liệu nhạy cảm.
Tác động đối với an toàn thông tin
Lỗ hổng bảo mật này cho thấy chỉ một secret bị nhúng sai trong JavaScript cũng đủ tạo ra rủi ro an toàn thông tin lớn. Khi dữ liệu email và feature flags bị lộ đồng thời, hệ quả không dừng ở privacy exposure mà còn kéo theo nguy cơ phishing và đánh cắp thông tin đăng nhập.
Tham khảo thêm danh mục lỗ hổng và dữ liệu công khai từ NVD tại nvd.nist.gov.










