Horilla Horilla HR cho phép open redirect qua tham số next chưa được kiểm tra

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-41513 là gì?

Lỗ hổng CVE-2026-41513 là lỗ hổng URL Redirection to Untrusted Site ('Open Redirect') ảnh hưởng tới horilla-hr (phiên bản bị ảnh hưởng: <= 1.5.0). Lỗ hổng này được xếp hạng ở mức Trung bình, với điểm CVSS 4.8. Lỗ hổng này đã có mã hoặc bằng chứng khai thác công khai, nhưng điều đó chưa xác nhận việc khai thác trong thực tế.

Giới thiệu chung

Dữ liệu gốc

Horilla là phần mềm HR và CRM. Trong phiên bản 1.5.0, các notification endpoint tin cậy tham số next chưa được kiểm tra và chuyển hướng người dùng đến các URL bên ngoài tùy ý. Điều này cho phép kẻ tấn công biến các liên kết ứng dụng đáng tin cậy thành các chuyển hướng phục vụ phishing hoặc social engineering.

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

  • Bản ghi chuẩn hóa xác định vendor horilla, product horilla-hr, với phạm vi bị ảnh hưởng <= 1.5.0.
  • Vendor advisory xác nhận 1.5.0 bị ảnh hưởng và liệt kê patched versions là None.
  • Repository có một commit sửa lỗ hổng bằng cách giới hạn redirect theo host được phép, nhưng bằng chứng hiện có không gắn commit đó với một số phiên bản phát hành cụ thể.
  • Trạng thái của các nhánh hoặc phiên bản sau 1.5.0 chưa được xác lập đầy đủ trong bằng chứng hiện có, vì vậy không nên mặc định coi chúng là an toàn chỉ dựa trên việc tồn tại commit sửa lỗi.

Chi tiết kỹ thuật

Horilla HR đọc tham số truy vấn next tại các notification endpoint và truyền trực tiếp giá trị này vào redirect() mà không kiểm tra đích đến có phải đường dẫn nội bộ an toàn hay không. Advisory nêu route mark-all-as-read/ trong notifications/urls.py và hàm mark_all_as_read trong notifications/views.py; commit sửa lỗi liên quan cũng áp dụng cùng thay đổi cho các thao tác đánh dấu đã đọc, đánh dấu chưa đọc và xóa thông báo. Luồng bị ảnh hưởng yêu cầu người dùng đã đăng nhập, sau đó trình duyệt xử lý liên kết được tạo sẵn có chứa giá trị next do kẻ tấn công kiểm soát. Khi giá trị là URL bên ngoài, ứng dụng trả về redirect đến host đó thay vì chỉ cho phép đường dẫn nội bộ hoặc host được phép. Bản sửa bổ sung url_has_allowed_host_and_scheme() trước khi gọi redirect() và dùng iri_to_uri() cho giá trị đã được chấp nhận. Chi tiết về toàn bộ các notification endpoint ngoài những route được nêu trong advisory vẫn chưa được xác lập đầy đủ.

Khả năng khai thác

Lỗ hổng có thể bị khai thác qua mạng đối với người dùng đã xác thực và yêu cầu nạn nhân chủ động mở một liên kết được tạo sẵn. Bằng chứng hỗ trợ một cuộc tấn công có độ phức tạp thấp: kẻ tấn công đưa URL bên ngoài vào tham số next, còn ứng dụng thực hiện thao tác thông báo rồi chuyển trình duyệt đến URL đó. Bản ghi đánh dấu đã có public exploit, và advisory mô tả proof of concept trên một cài đặt cục bộ. Bằng chứng được cung cấp không xác lập việc khai thác thực tế trong các chiến dịch đang diễn ra; trạng thái này cần được theo dõi riêng.

Tác động kỹ thuật

Kết quả trực tiếp là ứng dụng phát hành HTTP redirect đến URL do người dùng kiểm soát, thay vì giữ người dùng trong Horilla HR. Lỗ hổng không trực tiếp tạo quyền mới hoặc thay đổi tính bí mật, toàn vẹn hay khả dụng của hệ thống Horilla HR, nhưng có thể tạo tác động lên hệ thống tiếp theo khi nạn nhân bị dẫn đến website độc hại. Tác động tổ chức thực tế có thể gồm tăng hiệu quả của chiến dịch phishing, mất thông tin xác thực hoặc phát tán malware nếu người dùng tiếp tục tương tác với trang đích. Khai thác phụ thuộc vào tài khoản người dùng đã xác thực và hành động mở liên kết của nạn nhân; không có bằng chứng về việc chiếm quyền máy chủ chỉ bằng redirect này.

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

Lỗ hổng làm suy giảm độ tin cậy của các liên kết Horilla HR và có thể khiến người dùng tưởng rằng họ vẫn đang thao tác trong ứng dụng khi thực tế đã bị chuyển đến một website bên ngoài. Kẻ tấn công có thể dùng redirect này để hỗ trợ phishing, lừa người dùng nhập thông tin xác thực hoặc tải nội dung độc hại; các hậu quả sau đó phụ thuộc vào hành vi của nạn nhân và website đích. Thao tác thông báo ban đầu vẫn có thể được thực hiện trước khi trình duyệt chuyển hướng, khiến liên kết độc hại trông giống một hành động hợp lệ trong ứng dụng. Không có bằng chứng cho thấy lỗ hổng trực tiếp cho phép đọc, sửa hoặc làm gián đoạn dữ liệu của Horilla HR.

Cách khắc phục

  1. Ưu tiên chuyển khỏi phiên bản bị ảnh hưởng. Advisory không nêu một patched release cụ thể, vì vậy hãy theo dõi bản phát hành Horilla HR có chứa bản sửa và xác minh phiên bản thực tế sau khi nâng cấp.
  2. Nếu triển khai từ source, áp dụng bản sửa notification của vendor và xác nhận mã đã kiểm tra next bằng url_has_allowed_host_and_scheme() trước khi gọi redirect(). Không coi việc có commit trong repository là bằng chứng rằng bản build đang chạy đã bao gồm sửa lỗi.
  3. Khi chưa thể cập nhật, vô hiệu hóa việc tôn trọng các giá trị next bên ngoài tại các notification endpoint bị ảnh hưởng, chỉ cho phép đường dẫn nội bộ hoặc host đã được phê duyệt. Đây là biện pháp giảm thiểu tạm thời, không thay thế việc cập nhật.
  4. Sau thay đổi, kiểm tra cả bốn nhánh notification được bản sửa đề cập: đánh dấu tất cả đã đọc, đánh dấu đã đọc, đánh dấu chưa đọc và xóa. Xác nhận redirect đến URL ngoài bị từ chối hoặc rơi về đích nội bộ mặc định.

Cách phát hiện

  1. Kiểm kê các hệ thống Horilla HR đang chạy và xác định phiên bản triển khai. Bản ghi chuẩn hóa đánh dấu các phiên bản <= 1.5.0 là bị ảnh hưởng, còn advisory xác nhận 1.5.0 bị ảnh hưởng.
  2. Kiểm tra mã triển khai tại notifications/urls.py và notifications/views.py để tìm việc đọc request.GET.get("next") rồi truyền trực tiếp giá trị vào redirect().
  3. Xác nhận mọi nhánh redirect từ notification endpoint đều kiểm tra next bằng url_has_allowed_host_and_scheme() hoặc cơ chế tương đương trước khi chuyển hướng.
  4. Trong môi trường kiểm thử, kiểm tra các phản hồi redirect của những endpoint này khi có tham số next, đặc biệt là header Location trỏ đến host ngoài danh sách được phép. Không dùng việc không thấy log làm bằng chứng rằng hệ thống an toàn.
  5. Rà soát access log để tìm request đến notification endpoint có tham số next và phản hồi 3xx dẫn đến host bên ngoài. Đây là biện pháp phát hiện bổ sung, không phải IOC đã được xác nhận.
Nguồn (23)
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á CyStack VulnScan