Researchers discovered two vulnerabilities in pfSense CE related to Cross-Site Scripting (XSS) and Command Injection that allow an attacker to execute arbitrary commands on a pfSense appliance.
An attacker with RCE capabilities can control the firewall, monitor traffic on the local network, or target services within the network.
pfSense is a prominent open-source firewall solution developed by Netgate. To create a dedicated firewall/router for a network, the open-source pfSense Community Edition (CE) and pfSense Plus are installed on a physical computer or a virtual machine.
The “world’s most trusted open source network security solution” is a claim made by pfSense, and its r/PFSENSE subreddit, which has over 100,000 users.
pfSense Security Vulnerabilities
Reflected XSS (CVE-2023-42325):
A remote attacker can obtain privileges via a crafted URL to the status_logs_filter_dynamic.php page in Netgate pfSense v.2.7.0 due to a Cross-Site Scripting (XSS) vulnerability. In this case, an unencoded filter string is reflected into a script tag.
Command Injection (CVE-2023-42326):
A flaw in Netgate pfSense v.2.7.0 allows a remote attacker to execute arbitrary code by sending a specially crafted request to the interfaces_gif_edit.php and interfaces_gre_edit.php components. In this case, an unescaped user input is used inside a management shell command.
Reflected XSS vulnerability (CVE-2023-42327):
A remote attacker can obtain privileges via a crafted URL to the getserviceproviders.php page in Netgate pfSense v.2.7.0 due to Cross-Site Scripting (XSS) vulnerability. This is similar to the first Reflected XSS vulnerability.
The Cross-site scripting (XSS) vulnerabilities and a Command Injection vulnerability that were found could have been utilized by potential attackers to intercept communications or target local network services.
“Attackers can combine the vulnerabilities to execute arbitrary code on the pfSense appliance remotely. An attacker can trick an authenticated pfSense user into clicking on a maliciously crafted link containing an XSS payload that exploits the command injection vulnerability”, SonarCloud said in a report shared with Cyber Security News.
It is necessary for the victim user to be an admin user or to have access to specific sections of the pfSense WebGui.
pfSense CE 2.7.0 and below pfSense Plus 23.05.1 and below are vulnerable to two XSS vulnerabilities and a Command Injection vulnerability (CVE-2023-42325, CVE-2023-42327, CVE-2023-42326).
The security vulnerabilities are fixed in pfSense CE 2.7.1 and pfSense Plus 23.09.
“To patch Injection vulnerabilities, it is necessary to encode/escape all inserted data for the context it is inserted into,” researchers said.
Regardless of the source, it is advised to encode or escape all variables because there is typically no risk involved. This method also contributes to a Clean Code state by hardening your code against upcoming modifications or problems found elsewhere in the codebase.