CVE-2025-34300: Lỗ hổng RCE nghiêm trọng trong Lighthouse Studio

Các nhà nghiên cứu tại Assetnote đã phát hiện một lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng trong Lighthouse Studio, một phần mềm khảo sát được sử dụng rộng rãi do Sawtooth Software phát triển.

Tổng quan về lỗ hổng Remote Code Execution (RCE) trong Lighthouse Studio

Lỗ hổng này ảnh hưởng đến các Perl CGI scripts cung cấp năng lượng cho thành phần khảo sát nền web của Lighthouse Studio. Nó cho phép những kẻ tấn công không cần xác thực thực thi mã tùy ý trên các máy chủ lưu trữ chỉ bằng cách truy cập một liên kết khảo sát.

Với sự phổ biến của phần mềm này trong các môi trường doanh nghiệp—nơi khảo sát thường yêu cầu đầu vào của người dùng qua cửa sổ bật lên hoặc email—tác động tiềm tàng là rất đáng kể. Nhiều tổ chức có thể đang lưu trữ hàng chục hoặc thậm chí hàng trăm bản sao của các script lỗi thời trên mỗi máy chủ, do thiếu cơ chế tự động cập nhật, làm tăng bề mặt tấn công một cách đáng kể.

Lighthouse Studio bao gồm một ứng dụng desktop chạy trên Windows để tạo khảo sát và các Perl CGI scripts được triển khai trên các máy chủ web. Thông thường, các thiết lập này là Linux Apache với mod_cgi, cho phép các script CGI được thực thi.

Cơ chế khai thác lỗ hổng

Lỗ hổng bắt nguồn từ việc sử dụng một templating engine không an toàn bên trong các script, đặc biệt là tại điểm truy cập ciwweb.pl. Script này chịu trách nhiệm xử lý các đầu vào từ người dùng, chẳng hạn như tham số hid_Random_ACARAT. Kẻ tấn công có thể chèn mã Perl thông qua các tham số URL được chế tạo đặc biệt, tận dụng một “điểm chìm” eval (eval sink) mà tại đó nội dung được bao bọc trong [% … %] sẽ được hiểu là mã thực thi.

Ví dụ, việc thêm ?hid_Random_ACARAT=[%ls%] vào một URL khảo sát sẽ kích hoạt việc thực thi lệnh, chẳng hạn như liệt kê nội dung thư mục. Điều này xảy ra do việc thiếu xác thực đầu vào đầy đủ trong quá trình kết xuất HTML. Cụ thể, các phép thay thế của người dùng (user substitutions) được xử lý trước khi quá trình đánh giá templating diễn ra, cho phép các payload đã được chèn tới hàm eval mà không bị kiểm tra.

Ví dụ Khai thác ban đầu

Kẻ tấn công có thể sử dụng một URL có cấu trúc như sau để kiểm tra khả năng thực thi lệnh:

https://[your_lighthouse_studio_domain]/cgi-bin/ciwweb.pl?hid_Random_ACARAT=[%system('ls%20-la')%]

Hoặc một ví dụ đơn giản hơn để xác nhận thực thi:

https://[your_lighthouse_studio_domain]/cgi-bin/ciwweb.pl?hid_Random_ACARAT=[%257*7%25]

Trong ví dụ trên, %257*7%25 là mã URL-encoded của [%7*7%]. Nếu được thực thi, máy chủ sẽ thực hiện phép tính 7*7 và có khả năng trả về kết quả 49, xác nhận rằng mã Perl bên trong [%...%] đã được đánh giá.

Quá trình phát hiện và phân tích

Để phát hiện ra lỗ hổng này, nhóm Assetnote đã tiến hành reverse-engineer các Perl script đã được rút gọn (minified) từ trình cài đặt Lighthouse Studio có sẵn miễn phí.

Họ đã sử dụng các công cụ như Perl::Tidy để định dạng lại mã nguồn và Google Gemini (có thể là một công cụ hỗ trợ phân tích mã hoặc deobfuscation) để giải mã các thành phần đã bị làm rối (obfuscated). Quá trình này giúp họ ánh xạ các phần tử bị làm rối, ví dụ như _fuv đại diện cho các trường nhập liệu của biểu mẫu (form inputs). Họ cũng đã xác định được logic templating của hàm con _fop, nơi các chuỗi không được xác thực được truyền tới _foq để đánh giá.

Việc này chỉ ra rằng quá trình xử lý đầu vào của người dùng trong _fop không được kiểm tra đầy đủ trước khi được chuyển đến _foq, nơi chúng được hàm eval xử lý, tạo ra một lỗ hổng nghiêm trọng cho phép chèn và thực thi mã tùy ý.

Kỹ thuật Bypass và Khai thác trên nhiều phiên bản

Mặc dù các cuộc khai thác ban đầu đã thành công trên các phiên bản mới hơn của Lighthouse Studio, các phiên bản cũ hơn (ví dụ: 9.15.x) đã thực hiện một biện pháp đối phó đơn giản bằng cách chèn khoảng trắng để làm gián đoạn các injection. Ví dụ, chúng có thể biến [% thành [ %. Mục đích là để phá vỡ cú pháp Perl của payload và ngăn chặn việc thực thi.

Tuy nhiên, các nhà nghiên cứu đã vượt qua biện pháp này bằng cách khai thác cách Perl xử lý các tham chiếu mảng (array references). Khi tham số được cung cấp hai lần (ví dụ: hid_Random_ACARAT=[%257*7%25]&hid_Random_ACARAT=x), quá trình này sẽ bỏ qua các regex thay thế (substitution regexes). Điều này là do khi một tham số được lặp lại trong URL, Perl có thể biến nó thành một tham chiếu mảng. Một tham chiếu mảng bỏ qua các hoạt động s/// (substitute), đảm bảo rằng payload được chèn không bị thay đổi và cho phép thực thi RCE một cách đáng tin cậy trên nhiều phiên bản.

Ví dụ Khai thác Bypass

Để bypass biện pháp chèn khoảng trắng và đảm bảo thực thi trên các phiên bản cũ hơn, kẻ tấn công có thể sử dụng cấu trúc URL kép:

https://[your_lighthouse_studio_domain]/cgi-bin/ciwweb.pl?hid_Random_ACARAT=[%system('id')%]&hid_Random_ACARAT=x

Hoặc một ví dụ đơn giản hóa để chứng minh cơ chế bypass:

https://[your_lighthouse_studio_domain]/cgi-bin/ciwweb.pl?hid_Random_ACARAT=[%257*7%25]&hid_Random_ACARAT=x

Kỹ thuật này đảm bảo rằng ngay cả khi các cơ chế phòng thủ đơn giản được triển khai, lỗ hổng vẫn có thể bị khai thác do đặc tính xử lý tham số của Perl.

Ảnh hưởng, Mã định danh và Biện pháp khắc phục

Sự dai dẳng của lỗ hổng này còn trầm trọng hơn bởi mô hình triển khai của phần mềm. Các script thường được sao chép thủ công giữa các khảo sát mà không được cập nhật đồng bộ, khiến các cài đặt cũ vẫn dễ bị tổn thương.

Assetnote đã báo cáo lỗ hổng này vào ngày 9 tháng 4 năm 2025, dẫn đến một bản vá trong phiên bản 9.16.14. Lỗ hổng đã được gán mã định danh là CVE-2025-34300.

Người dùng bị ảnh hưởng được khuyến nghị cập nhật ngay lập tức. Việc khai thác lỗ hổng này không yêu cầu xác thực và có thể dẫn đến việc chiếm quyền kiểm soát toàn bộ máy chủ, bao gồm việc đánh cắp dữ liệu hoặc thực hiện các cuộc tấn công xoay trục mạng (network pivoting) sâu hơn vào môi trường của tổ chức.

Phát hiện này nhấn mạnh những rủi ro cố hữu trong các ứng dụng CGI cũ, nơi mã nguồn đã được rút gọn và việc sử dụng templating dựa trên eval có thể tạo ra các “điểm chìm” tiềm ẩn nguy hiểm. Assetnote đã tích hợp loại nghiên cứu này vào nền tảng Attack Surface Management của họ, cho phép phát hiện chủ động các lỗ hổng có thể khai thác.

Các tổ chức đang sử dụng Lighthouse Studio nên kiểm tra các thư mục CGI-bin trên máy chủ web của mình để tìm các phiên bản lỗi thời và áp dụng bản vá để giảm thiểu mối đe dọa có mức độ nghiêm trọng cao này.