The SentinelOne Annual Threat Report - A Defenders Guide from the FrontlinesThe SentinelOne Annual Threat ReportGet the Report
Experiencing a Breach?Blog
Get StartedContact Us
SentinelOne
  • Platform
    Platform Overview
    • Singularity Platform
      Welcome to Integrated Enterprise Security
    • AI for Security
      Leading the Way in AI-Powered Security Solutions
    • Securing AI
      Accelerate AI Adoption with Secure AI Tools, Apps, and Agents.
    • How It Works
      The Singularity XDR Difference
    • Singularity Marketplace
      One-Click Integrations to Unlock the Power of XDR
    • Pricing & Packaging
      Comparisons and Guidance at a Glance
    Data & AI
    • Purple AI
      Accelerate SecOps with Generative AI
    • Singularity Hyperautomation
      Easily Automate Security Processes
    • AI-SIEM
      The AI SIEM for the Autonomous SOC
    • AI Data Pipelines
      Security Data Pipeline for AI SIEM and Data Optimization
    • Singularity Data Lake
      AI-Powered, Unified Data Lake
    • Singularity Data Lake for Log Analytics
      Seamlessly Ingest Data from On-Prem, Cloud or Hybrid Environments
    Endpoint Security
    • Singularity Endpoint
      Autonomous Prevention, Detection, and Response
    • Singularity XDR
      Native & Open Protection, Detection, and Response
    • Singularity RemoteOps Forensics
      Orchestrate Forensics at Scale
    • Singularity Threat Intelligence
      Comprehensive Adversary Intelligence
    • Singularity Vulnerability Management
      Application & OS Vulnerability Management
    • Singularity Identity
      Identity Threat Detection and Response
    Cloud Security
    • Singularity Cloud Security
      Block Attacks with an AI-Powered CNAPP
    • Singularity Cloud Native Security
      Secure Cloud and Development Resources
    • Singularity Cloud Workload Security
      Real-Time Cloud Workload Protection Platform
    • Singularity Cloud Data Security
      AI-Powered Threat Detection for Cloud Storage
    • Singularity Cloud Security Posture Management
      Detect and Remediate Cloud Misconfigurations
    Securing AI
    • Prompt Security
      Secure AI Tools Across Your Enterprise
  • Why SentinelOne?
    Why SentinelOne?
    • Why SentinelOne?
      Cybersecurity Built for What’s Next
    • Our Customers
      Trusted by the World’s Leading Enterprises
    • Industry Recognition
      Tested and Proven by the Experts
    • About Us
      The Industry Leader in Autonomous Cybersecurity
    Compare SentinelOne
    • Arctic Wolf
    • Broadcom
    • CrowdStrike
    • Cybereason
    • Microsoft
    • Palo Alto Networks
    • Sophos
    • Splunk
    • Trellix
    • Trend Micro
    • Wiz
    Verticals
    • Energy
    • Federal Government
    • Finance
    • Healthcare
    • Higher Education
    • K-12 Education
    • Manufacturing
    • Retail
    • State and Local Government
  • Services
    Managed Services
    • Managed Services Overview
      Wayfinder Threat Detection & Response
    • Threat Hunting
      World-Class Expertise and Threat Intelligence
    • Managed Detection & Response
      24/7/365 Expert MDR Across Your Entire Environment
    • Incident Readiness & Response
      DFIR, Breach Readiness, & Compromise Assessments
    Support, Deployment, & Health
    • Technical Account Management
      Customer Success with Personalized Service
    • SentinelOne GO
      Guided Onboarding & Deployment Advisory
    • SentinelOne University
      Live and On-Demand Training
    • Services Overview
      Comprehensive Solutions for Seamless Security Operations
    • SentinelOne Community
      Community Login
  • Partners
    Our Network
    • MSSP Partners
      Succeed Faster with SentinelOne
    • Singularity Marketplace
      Extend the Power of S1 Technology
    • Cyber Risk Partners
      Enlist Pro Response and Advisory Teams
    • Technology Alliances
      Integrated, Enterprise-Scale Solutions
    • SentinelOne for AWS
      Hosted in AWS Regions Around the World
    • Channel Partners
      Deliver the Right Solutions, Together
    • SentinelOne for Google Cloud
      Unified, Autonomous Security Giving Defenders the Advantage at Global Scale
    • Partner Locator
      Your Go-to Source for Our Top Partners in Your Region
    Partner Portal→
  • Resources
    Resource Center
    • Case Studies
    • Data Sheets
    • eBooks
    • Reports
    • Videos
    • Webinars
    • Whitepapers
    • Events
    View All Resources→
    Blog
    • Feature Spotlight
    • For CISO/CIO
    • From the Front Lines
    • Identity
    • Cloud
    • macOS
    • SentinelOne Blog
    Blog→
    Tech Resources
    • SentinelLABS
    • Ransomware Anthology
    • Cybersecurity 101
  • About
    About SentinelOne
    • About SentinelOne
      The Industry Leader in Cybersecurity
    • Investor Relations
      Financial Information & Events
    • SentinelLABS
      Threat Research for the Modern Threat Hunter
    • Careers
      The Latest Job Opportunities
    • Press & News
      Company Announcements
    • Cybersecurity Blog
      The Latest Cybersecurity Threats, News, & More
    • FAQ
      Get Answers to Our Most Frequently Asked Questions
    • DataSet
      The Live Data Platform
    • S Foundation
      Securing a Safer Future for All
    • S Ventures
      Investing in the Next Generation of Security, Data and AI
  • Pricing
Get StartedContact Us
CVE Vulnerability Database
Vulnerability Database/CVE-2026-21443

CVE-2026-21443: OpenEMR Translation XSS Vulnerability

CVE-2026-21443 is a cross-site scripting flaw in OpenEMR affecting the xl() translation function. Unescaped strings can enable XSS attacks if malicious content enters the translation database. This post covers technical details, affected versions, impact, and mitigation.

Published: February 27, 2026

CVE-2026-21443 Overview

CVE-2026-21443 is a Cross-Site Scripting (XSS) vulnerability in OpenEMR, a free and open source electronic health records (EHR) and medical practice management application. The vulnerability exists in versions prior to 8.0.0 where the xl() translation function returns unescaped strings. While wrapper functions exist for escaping in different contexts (xlt() for HTML, xla() for attributes, xlj() for JavaScript), there are places in the codebase where xl() output is used directly without proper escaping. If an attacker could insert malicious content into the translation database, these unescaped outputs could lead to XSS attacks.

Critical Impact

Healthcare applications handling sensitive patient data are at risk. If exploited, an attacker with the ability to modify translation database entries could inject malicious scripts that execute in the context of authenticated healthcare provider sessions, potentially compromising patient data confidentiality.

Affected Products

  • OpenEMR versions prior to 8.0.0
  • open-emr openemr

Discovery Timeline

  • 2026-02-25 - CVE CVE-2026-21443 published to NVD
  • 2026-02-26 - Last updated in NVD database

Technical Details for CVE-2026-21443

Vulnerability Analysis

This vulnerability stems from improper output encoding in OpenEMR's translation system. The application provides a multi-layered localization framework with the base xl() function retrieving translated strings from the database, while context-specific wrapper functions handle output encoding: xlt() for HTML content, xla() for HTML attributes, and xlj() for JavaScript contexts.

The core issue is that developers in several locations throughout the codebase used the raw xl() function directly in HTML output contexts instead of the appropriate escaped variant. This creates potential injection points where malicious content stored in the translation database could be rendered without sanitization, allowing arbitrary JavaScript execution in user browsers.

The attack requires an adversary to first gain the ability to modify translation database entries, which limits the practical exploitability. However, in multi-tenant or shared hosting environments, or where database access controls are weak, this could be leveraged for persistent XSS attacks against healthcare providers using the system.

Root Cause

The root cause is CWE-116: Improper Encoding or Escaping of Output. The xl() function was designed to return raw translation strings without context-specific encoding, relying on developers to use the appropriate wrapper functions (xlt(), xla(), xlj()) for safe output. However, this design pattern was not consistently followed throughout the codebase, resulting in multiple locations where unescaped translation output was directly embedded into HTML responses.

Attack Vector

The attack vector is network-based and requires low privileges with user interaction. An attacker with the ability to modify translation database entries (either through direct database access, a separate vulnerability, or compromised administrator credentials) could inject malicious JavaScript payloads into translation strings. When legitimate users access pages that display these translations using the unescaped xl() function, the malicious scripts execute in their browser context.

The following patch demonstrates the fix applied in one of the affected files, showing the change from xl() to xlt() for proper HTML escaping:

php
             $temp_url = $GLOBALS['OE_SITE_DIR'] . '/documents/' . $from_pathname . '/' . $from_filename;
             }
             if (!file_exists($temp_url)) {
-                echo xl('The requested document is not present at the expected location on the filesystem or there are not sufficient permissions to access it.') . ' ' . $temp_url;
+                echo xlt('The requested document is not present at the expected location on the filesystem or there are not sufficient permissions to access it.') . ' ' . text($temp_url);
             }
             $url = $temp_url;
             $pdetails = getPatientData($patient_id);

Source: GitHub Commit Change

Another example from the prescription controller:

php
         echo ("}\n");
         echo ("</style>\n");
 
-        echo ("<title>" . xl('Prescription') . "</title>\n");
+        echo ("<title>" . xlt('Prescription') . "</title>\n");
         echo ("</head>\n");
         echo ("<body>\n");
     }

Source: GitHub Commit Change

Detection Methods for CVE-2026-21443

Indicators of Compromise

  • Unusual or unexpected JavaScript code present in translation database entries
  • Anomalous HTML tags or script elements stored in language/localization tables
  • Web application firewall logs showing XSS patterns originating from translation-related database queries
  • User reports of unexpected browser behavior or script execution when viewing translated content

Detection Strategies

  • Audit the translation database tables for entries containing HTML tags, JavaScript code, or encoded script payloads
  • Implement Content Security Policy (CSP) headers to detect and report inline script execution attempts
  • Monitor web server access logs for patterns indicative of XSS exploitation attempts
  • Review application logs for unauthorized modifications to translation database entries

Monitoring Recommendations

  • Enable database audit logging to track all modifications to translation/localization tables
  • Deploy a Web Application Firewall (WAF) with XSS detection rules enabled
  • Implement integrity monitoring for critical database tables containing user-displayable content
  • Configure browser-side XSS protection headers and monitor CSP violation reports

How to Mitigate CVE-2026-21443

Immediate Actions Required

  • Upgrade OpenEMR to version 8.0.0 or later immediately
  • Audit existing translation database entries for any malicious or suspicious content
  • Review database access controls to ensure only authorized personnel can modify translation tables
  • Implement Content Security Policy headers to provide defense-in-depth against XSS attacks

Patch Information

The vulnerability is fixed in OpenEMR version 8.0.0. The fix replaces instances of the unescaped xl() function with the appropriate context-specific escaping functions (xlt() for HTML, xla() for attributes, xlj() for JavaScript). The security patch is available in commit b1e3fe8a9ed8bcaf17e0b73d7fad5434f9fe36da. Organizations should apply this update as part of their regular patch management cycle. For detailed information, refer to the GitHub Security Advisory.

Workarounds

  • Restrict database access to translation tables to only highly trusted administrators
  • Implement input validation and sanitization on any administrative interfaces that allow translation modifications
  • Deploy Content Security Policy headers with strict script-src directives to mitigate XSS impact
  • Enable HTTP-only and Secure flags on session cookies to limit the impact of potential script execution
bash
# Example Apache configuration to add Content Security Policy header
<IfModule mod_headers.c>
    Header set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'"
</IfModule>

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

  • Vulnerability Details
  • TypeXSS

  • Vendor/TechOpenemr

  • SeverityLOW

  • CVSS Score1.2

  • EPSS Probability0.04%

  • Known ExploitedNo
  • CVSS Vector
  • CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Impact Assessment
  • ConfidentialityLow
  • IntegrityNone
  • AvailabilityNone
  • CWE References
  • CWE-116
  • Vendor Resources
  • GitHub Commit Change

  • GitHub Security Advisory
  • Related CVEs
  • CVE-2026-33348: OpenEMR Stored XSS Vulnerability

  • CVE-2026-33346: OpenEMR Stored XSS Vulnerability

  • CVE-2026-33303: OpenEMR Stored XSS Vulnerability

  • CVE-2026-33299: OpenEMR Stored XSS Vulnerability
Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the World’s Most Advanced Cybersecurity Platform

See how our intelligent, autonomous cybersecurity platform can protect your organization now and into the future.

Try SentinelOne
  • Get Started
  • Get a Demo
  • Product Tour
  • Why SentinelOne
  • Pricing & Packaging
  • FAQ
  • Contact
  • Contact Us
  • Customer Support
  • SentinelOne Status
  • Language
  • Platform
  • Singularity Platform
  • Singularity Endpoint
  • Singularity Cloud
  • Singularity AI-SIEM
  • Singularity Identity
  • Singularity Marketplace
  • Purple AI
  • Services
  • Wayfinder TDR
  • SentinelOne GO
  • Technical Account Management
  • Support Services
  • Verticals
  • Energy
  • Federal Government
  • Finance
  • Healthcare
  • Higher Education
  • K-12 Education
  • Manufacturing
  • Retail
  • State and Local Government
  • Cybersecurity for SMB
  • Resources
  • Blog
  • Labs
  • Case Studies
  • Videos
  • Product Tours
  • Events
  • Cybersecurity 101
  • eBooks
  • Webinars
  • Whitepapers
  • Press
  • News
  • Ransomware Anthology
  • Company
  • About Us
  • Our Customers
  • Careers
  • Partners
  • Legal & Compliance
  • Security & Compliance
  • Investor Relations
  • S Foundation
  • S Ventures

©2026 SentinelOne, All Rights Reserved.

Privacy Notice Terms of Use

English