Frappe ERPNext cho phép endpoint timesheet làm lộ dữ liệu trái phép

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-94113 là gì?

Lỗ hổng CVE-2026-94113 là lỗ hổng Missing Authorization ảnh hưởng tới ERPNext (phiên bản bị ảnh hưởng: < 15.121.0 và 16.0.0 – < 16.34.0). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.1. Hiện chưa đủ dữ liệu để xác định lỗ hổng này đã bị khai thác hay chưa.

Giới thiệu chung

Dữ liệu gốc

Frappe ERPNext trước 15.121.0 và các phiên bản 16.x trước 16.34.0 có lỗ hổng tiết lộ thông tin trong các endpoint timesheet được whitelist vì không thực thi quyền doctype. Attacker đã xác thực có thể gọi các endpoint get_projectwise_timesheet_data, get_timesheet_detail_rate và get_timesheet để enumerate và lấy các time log có thể tính phí, gồm tên dự án, số tiền billing và mô tả công việc, mà không có các kiểm tra phân quyền phù hợp.

Sản phẩm và phạm vi ảnh hưởng

  • Frappe ERPNext: các phiên bản < 15.121.0 bị ảnh hưởng; 15.121.0 là phiên bản đã được vá cho nhánh này.
  • Frappe ERPNext: các phiên bản 16.x < 16.34.0 bị ảnh hưởng; 16.34.0 là phiên bản đã được vá cho nhánh này.
  • Bản ghi và các advisory được kiểm tra không xác lập phạm vi ảnh hưởng hoặc ranh giới sửa lỗi cho các nhánh khác ngoài những nhánh nêu trên.

Chi tiết kỹ thuật

Lỗi nằm trong các hàm timesheet được đánh dấu @frappe.whitelist(), nhưng không thực thi đầy đủ quyền trên các doctype Timesheet, Timesheet Detail và Project. Ba endpoint bị ảnh hưởng là get_projectwise_timesheet_data, get_timesheet_detail_rate và get_timesheet; chúng có thể nhận yêu cầu từ một tài khoản đã xác thực và trả về dữ liệu vượt quá phạm vi được cấp quyền. get_projectwise_timesheet_data truy vấn các bản ghi thời gian có thể tính phí, gồm tên dự án, số giờ, số tiền, tiền tệ và mô tả công việc, trong khi các hàm còn lại hỗ trợ tra cứu timesheet hoặc số tiền billing. Bản sửa đổi đã giới hạn truy vấn theo danh sách Timesheet và Project mà người dùng được phép đọc, đồng thời ràng buộc Timesheet Detail với timesheet được phép. Chi tiết về mọi biến thể triển khai hoặc custom permission có thể làm thay đổi khả năng truy cập không được xác lập trong bằng chứng hiện có.

Khả năng khai thác

Lỗi có thể bị khai thác qua các request mạng tới ERPNext và yêu cầu attacker có tài khoản đã xác thực với quyền hạn thấp. Theo thông tin đánh giá được cung cấp, không cần user interaction và độ phức tạp của request thấp. Các endpoint bị ảnh hưởng cho phép enumerate hoặc lấy dữ liệu timesheet mà tài khoản không được phép đọc. Bằng chứng hiện có không xác lập việc khai thác thực tế hay public exploit; trạng thái khai thác vẫn chưa được biết.

Tác động kỹ thuật

  • Kết quả kỹ thuật chính là mất confidentiality đối với dữ liệu được các endpoint timesheet trả về, không phải thay đổi dữ liệu hoặc làm dừng dịch vụ.
  • Attacker cần một tài khoản ERPNext đã xác thực, nhưng không cần user interaction từ người dùng khác.
  • Dữ liệu có thể bị đọc vượt quá quyền gồm tên dự án, billing amounts, thông tin tiền tệ, thời gian làm việc và work descriptions.
  • Hậu quả tổ chức có thể gồm lộ thông tin thương mại hoặc thông tin khách hàng trong hồ sơ dự án. Mức độ thực tế phụ thuộc vào dữ liệu timesheet mà hệ thống lưu trữ và các quyền mà tài khoản bị lạm dụng sở hữu.

Tác động đến tổ chức

Lỗ hổng làm tăng nguy cơ lộ thông tin mật trong hồ sơ chấm công và billing của dự án. Dữ liệu bị tiết lộ có thể cho thấy tên dự án, giá trị tính phí, số giờ hoặc nội dung mô tả công việc, từ đó ảnh hưởng đến bảo mật thương mại, quyền riêng tư hoặc quy trình quản lý khách hàng. Rủi ro trực tiếp được mô tả là mất confidentiality; không có bằng chứng cho thấy lỗi này tự nó cho phép sửa dữ liệu hoặc gây gián đoạn dịch vụ. Vì cần tài khoản đã xác thực, phạm vi người có thể khai thác phụ thuộc vào các tài khoản ERPNext đã tồn tại và khả năng truy cập hệ thống của chúng.

Cách khắc phục

  1. Nâng cấp ERPNext nhánh 15 lên đúng phiên bản 15.121.0.
  2. Nâng cấp ERPNext nhánh 16 lên đúng phiên bản 16.34.0.
  3. Không có workaround nào được advisory của vendor nêu ra; nâng cấp là biện pháp bắt buộc để xử lý lỗi.
  4. Sau khi nâng cấp, kiểm tra lại module timesheet và xác nhận các truy vấn chỉ trả về Timesheet, Timesheet Detail và Project mà tài khoản hiện tại được phép đọc.
  5. Rà soát log truy cập trước thời điểm nâng cấp để đánh giá liệu các endpoint bị ảnh hưởng đã được gọi bởi tài khoản không phù hợp hay chưa.

Cách phát hiện

  • Kiểm kê các hệ thống ERPNext đang vận hành, xác định release hiện tại và đối chiếu với các nhánh bị ảnh hưởng trong affected_summary.
  • Kiểm tra module erpnext/projects/doctype/timesheet/timesheet.py và xác nhận ba hàm get_projectwise_timesheet_data, get_timesheet_detail_rate và get_timesheet đều giới hạn truy vấn theo các bản ghi mà người dùng có quyền đọc.
  • Rà soát application hoặc API logs như một biện pháp phòng ngừa để tìm các request tới ba endpoint trên, đặc biệt từ các tài khoản có quyền hạn thấp.
  • Trong môi trường kiểm thử được phê duyệt, dùng tài khoản có phạm vi quyền giới hạn để xác nhận response chỉ chứa dữ liệu timesheet và project mà tài khoản đó được phép truy cập.
  • Không xem việc không có log phù hợp là bằng chứng hệ thống không bị ảnh hưởng hoặc dữ liệu chưa từng bị truy cập.
Nguồn (20)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.

Khám phá các giải pháp khác liên quan