Path traversal trong GeoIP Alias Importer của OPNsense cho phép thực thi mã với quyền root

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

Lỗ hổng CVE-2026-57155 là lỗ hổng thuộc các loại Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'), External Control of File Name or Path và Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection'), ảnh hưởng tới core (phiên bản bị ảnh hưởng: < 26.1.11). Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.9. 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

OPNsense là một nền tảng tường lửa và định tuyến dựa trên FreeBSD. Trước phiên bản 26.1.11, các đường xử lý process_zip() và process_gzip() của trình nhập GeoIP của Firewall Alias trong src/opnsense/scripts/filter/lib/alias/geoip.py sử dụng giá trị country_code từ CSV chưa được kiểm tra để tạo tên tệp đầu ra bên dưới /usr/local/share/GeoIP/alias. Người dùng có quyền Firewall Alias Edit có thể cấu hình URL nguồn GeoIP do kẻ tấn công kiểm soát và cung cấp một archive có country code cho phép traversal vào một thư mục khác đang tồn tại, khiến nội dung do kẻ tấn công kiểm soát được ghi với quyền root kèm hậu tố -IPv4 hoặc -IPv6. Một fragment newsyslog được tạo thủ công và tệp log quá lớn có thể lợi dụng cron job root mặc định chạy mỗi giờ để thực thi lệnh với quyền root, dẫn đến việc firewall bị chiếm quyền hoàn toàn. Lỗ hổng này được khắc phục trong phiên bản 26.1.11.

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

• Nhánh OPNsense core 26.1: các phiên bản <= 26.1.10 bị ảnh hưởng; bản sửa lỗi được xác định là 26.1.11. • Nhánh OPNsense core 26.4: advisory của nhà cung cấp xác định các phiên bản <= 26.4.1 bị ảnh hưởng; bản sửa lỗi được xác định là 26.4.1p1. • Bản ghi chuẩn hóa ban đầu chỉ nêu điều kiện < 26.1.11; thông tin về nhánh 26.4 được advisory của OPNsense bổ sung và cần được xem là một nhánh ảnh hưởng riêng. • Trạng thái của các nhánh khác không được bằng chứng hiện có xác lập, vì vậy không nên suy ra rằng mọi phiên bản mới hơn hoặc song song đều không bị ảnh hưởng.

Chi tiết kỹ thuật

Trình nhập GeoIP của Firewall Alias trong OPNsense xử lý các archive ZIP và gzip qua process_zip() và process_gzip() trong src/opnsense/scripts/filter/lib/alias/geoip.py. Giá trị country_code lấy từ CSV được dùng trực tiếp để tạo tên tệp dưới /usr/local/share/GeoIP/alias, không giới hạn vào thư mục đích; vì vậy dữ liệu CSV do kẻ tấn công kiểm soát có thể đưa đường dẫn ra ngoài thư mục này. Nội dung được ghi vào tệp đến từ trường network trong archive, và thao tác ghi được thực hiện với quyền root; tên tệp luôn được thêm hậu tố -IPv4 hoặc -IPv6. Người dùng có quyền Firewall: Alias: Edit có thể cấu hình URL GeoIP do mình kiểm soát, sau đó kích hoạt luồng cập nhật để OPNsense tải archive và chạy trình xử lý với quyền root. Advisory mô tả một chuỗi tiếp theo sử dụng tệp cấu hình newsyslog và cron job mặc định chạy mỗi giờ để đạt thực thi mã với quyền root. Việc nâng cấp hệ thống tùy biến có giữ cấu hình newsyslog mặc định hay không không được xác lập, nhưng khả năng ghi tệp tùy ý bằng root là hậu quả cốt lõi đã được xác nhận.

Khả năng khai thác

Lỗ hổng có thể bị khai thác qua giao diện web của OPNsense từ xa. Kẻ tấn công cần một tài khoản đã xác thực có quyền Firewall: Alias: Edit, nhưng không cần quyền quản trị đầy đủ hoặc tương tác của người dùng khác. Hồ sơ được cung cấp mô tả độ phức tạp khai thác thấp và không yêu cầu user interaction. Luồng khai thác cần một URL nguồn GeoIP do kẻ tấn công kiểm soát và archive được tạo đặc biệt, sau đó kích hoạt các thao tác cấu hình, reconfigure và cập nhật GeoIP. Advisory GitHub và bài phân tích công khai có proof of concept cho cả đường xử lý ZIP và gzip. Bằng chứng hiện có xác nhận public exploit, nhưng không xác lập việc lỗ hổng đã bị khai thác trong thực tế hoặc gắn với một chiến dịch, nạn nhân hay sự cố cụ thể.

Tác động kỹ thuật

Lỗ hổng cho phép người dùng đã xác thực với quyền Firewall: Alias: Edit khiến tiến trình cập nhật GeoIP ghi tệp tùy ý bằng quyền root vào các thư mục đã tồn tại. Điều này tạo ra sự chuyển quyền từ phạm vi quản lý alias sang phạm vi hệ điều hành và có thể làm thay đổi tính toàn vẹn, tính bảo mật hoặc khả năng sẵn sàng của firewall. Chuỗi newsyslog được mô tả có thể biến primitive ghi tệp thành thực thi mã root, tương đương với việc chiếm quyền hoàn toàn thiết bị. Khả năng mở rộng cụ thể phụ thuộc vào các thư mục và cấu hình cục bộ có sẵn, nhưng hậu quả ghi tệp root đã đủ để yêu cầu xử lý như một lỗ hổng nghiêm trọng.

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

• Một tài khoản được ủy quyền chỉnh sửa Firewall Alias có thể vượt qua ranh giới quyền dự kiến và tác động đến hệ điều hành của firewall với quyền root. • Kẻ tấn công có thể ghi nội dung tùy ý vào các thư mục tồn tại, từ đó có khả năng làm thay đổi cấu hình, dữ liệu hoặc cơ chế vận hành của thiết bị. • Chuỗi newsyslog được công bố có thể dẫn đến thực thi mã root, khiến confidentiality, integrity và availability của firewall đều có nguy cơ bị ảnh hưởng nghiêm trọng. • Việc mất quyền kiểm soát firewall có thể làm suy yếu biên bảo vệ mạng và gây gián đoạn dịch vụ, nhưng bằng chứng hiện có không xác nhận một vụ xâm nhập hoặc mất dữ liệu cụ thể.

Cách khắc phục

  1. Nâng cấp nhánh 26.1 lên đúng bản 26.1.11. Với nhánh 26.4, nâng cấp lên đúng bản 26.4.1p1. Không thay thế hướng dẫn theo từng nhánh bằng giả định rằng một bản sửa lỗi áp dụng cho mọi nhánh khác.
  2. Nếu chưa thể nâng cấp ngay, tạm thời hạn chế quyền Firewall: Alias: Edit cho các tài khoản thật sự cần thiết và không cho phép người dùng không tin cậy thay đổi URL nguồn GeoIP.
  3. Rà soát các URL GeoIP hiện có và thay thế nguồn không được kiểm soát bằng nguồn đáng tin cậy trong thời gian chờ bản vá. Đây là biện pháp giảm rủi ro tạm thời, không thay thế bản sửa lỗi.
  4. Nếu phải backport bản sửa lỗi, cần áp dụng thay đổi cho cả process_zip() và process_gzip(). Commit sửa lỗi của OPNsense kiểm tra country_code có độ dài đúng hai ký tự và chỉ chứa ký tự chữ hoặc số trước khi sử dụng nó để tạo tên tệp.
  5. Sau khi cập nhật, kiểm tra lại quyền của các tài khoản alias, các URL nguồn GeoIP và các tệp bất thường trong thư mục cấu hình newsyslog trước khi đưa thiết bị trở lại trạng thái vận hành bình thường.

Cách phát hiện

  1. Kiểm kê các phiên bản OPNsense đang chạy và xác định các thiết bị còn ở nhánh bị ảnh hưởng trước khi đối chiếu với bản sửa lỗi tương ứng.
  2. Rà soát tài khoản và nhóm được cấp quyền Firewall: Alias: Edit, đặc biệt các tài khoản không phải quản trị viên, cùng với các thay đổi gần đây đối với URL nguồn GeoIP.
  3. Kiểm tra nhật ký truy cập và audit log của các API firewall/alias/set, firewall/alias/reconfigure và firewall/alias/update/geoip để tìm chuỗi thao tác bất thường, nhất là khi URL trỏ đến máy chủ không thuộc tổ chức.
  4. Kiểm tra /usr/local/share/GeoIP/alias và các thư mục nhạy cảm khác để phát hiện tệp mới hoặc nội dung không mong đợi, đồng thời xác minh quyền sở hữu và thời điểm tạo tệp.
  5. Rà soát /etc/newsyslog.conf.d/ và các tệp log liên quan để tìm fragment lạ hoặc tệp có hậu tố -IPv4 hay -IPv6. Đây là kiểm tra phòng ngừa dựa trên chuỗi khai thác đã công bố, không phải IOC được xác nhận cho mọi cuộc tấn công.
  6. Nếu có dấu hiệu ghi tệp bằng root hoặc thay đổi cấu hình newsyslog, cô lập thiết bị và điều tra như một khả năng đã bị chiếm quyền hoàn toàn; việc không thấy log phù hợp không chứng minh hệ thống an toàn.
Nguồn (11)
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