☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 8.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-54743

CVE-2026-54743 Vulnerability in Lemmy
📅 PUBLISHED: 2026-08-19 00:00 UTC 🔄 UPDATED: 2026-10-02 19:27 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.55%
👁️
0.55% probability
13.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 8.2
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: C Scope Changed
C: H Confidentiality High
I: L Integrity Low
A: N Availability None
8.2
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-54743 is a stored Cross-Site Scripting (XSS) vulnerability in lemmy-ui, the frontend component of the Lemmy federated link aggregator platform. The flaw exists in the Markdown rendering pipeline, where crafted alt text in image syntax can bypass the platform's sanitization controls and inject executable HTML/JavaScript into the DOM when a user views a poisoned post, comment, private message, or sidebar. An attacker with membership in a Lemmy instance, or a malicious federated instance, can store such content server-side, achieving persistent XSS against any viewer. Successful exploitation can result in session theft and unauthorized execution of authenticated actions on behalf of the victim. The vendor has released a fix in lemmy-ui version 0.19.19-beta.1; however, patch confidence is rated 0/4, meaning no patch evidence from any tracked source is currently available.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability resides in the Markdown processing logic of lemmy-ui, specifically within the module src/shared/markdown.ts as indicated in the NVD description. The core issue is that the mdToHtml function returns a raw __html object that is passed directly to the Inferno rendering framework without an intervening sanitization pass. While the function setupMarkdown explicitly configures the html option as false—which would normally cause the Markdown parser to discard raw HTML tags—this protection is incomplete.

The configuration registers the plugin markdown-it-html5-embed@1.0.0 with the useImageSyntax option enabled. This plugin transforms image syntax that references video media into HTML5 <video> elements. Critically, the plugin's output generation relies on an unescaped string replacement operation that incorporates the image's alt text into the generated video element. Because the html: false setting does not apply to plugin-generated output, the plugin's raw HTML bypasses the parser's sanitization layer entirely.

The resulting behavior is that a Markdown payload such as an image syntax with embedded alt text can produce a <video> element containing attacker-controlled raw HTML. The alt text injection occurs through string concatenation, meaning that HTML tags, event handler attributes, or script elements in the alt text are not HTML-encoded before being placed into the generated video markup. When the DOM is constructed, the browser treats the injected content as live HTML, not as text, leading to script execution under certain conditions.

The attack surface spans multiple content types processed through mdToHtml, including post bodies, comment bodies, private messages, and community and site sidebars. The description notes that contexts using mdToHtmlNoImages are not affected, as that variant presumably strips or neutralizes image elements. The vulnerable path is therefore any rendering context that passes through the standard mdToHtml function with the image embed plugin active.

An important contextual note from the advisory: the presence of a Content Security Policy (CSP) in production deployments can prevent the described exploit from executing. However, the advisory also states that the tested default self-hosted deployment serves no Content-Security-Policy header, leaving out-of-the-box deployments exposed. The absence of CSP means that inline <script> elements or event handlers in the injected markup can execute without policy interference.

The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation, commonly known as Cross-Site Scripting). The CVSS vector is not officially assigned; the inferred vector of CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N reflects a network-exploitable, low-complexity, user-interaction-required, scope-changed XSS with high confidentiality impact.

Exploitation Scenarios

Step 1 — Reconnaissance/Target Identification: An attacker identifies a Lemmy instance running lemmy-ui prior to version 0.19.19-beta.1. This can be accomplished by fingerprinting the web application via response headers, HTML source markers, or asset paths that reveal the frontend version. Public Lemmy instances are discoverable through the fediverse network itself, and the "All" or "Local" community feeds expose user-generated content surfaces. Alternative discovery vectors include Shodan searches for lemmy-ui or http.title:"lemmy".

Step 2 — Triggering the Vulnerability Class: The attacker constructs a Markdown payload containing an image syntax block that targets video media. A representative payload, at the vulnerability-class level, will use the standard image syntax ![alt-text](video-url) where the alt-text field contains raw HTML. Because the markdown-it-html5-embed plugin recognizes the URL as video content and emits a <video> element, the alt text is concatenated into the element's fallback content without HTML escaping. An example attack structure would be: ![<img src=x onerror=alert(document.cookie)>](https://example.com/video.mp4). The exact syntax is not specified in the advisory, and no PoC is available; the narrative here is inferential based on the plugin's documented behavior and the vulnerability description.

Step 3 — Payload/Execution Method: The payload is injected into any of the affected content surfaces: a post body, a comment, a private message, or a community/site sidebar. The attacker either requires an account with posting privileges on the target instance (an "approved member") or operates a remote federated instance that can deliver content to the target instance's feed. The crafted content is stored server-side and later rendered to other users through the standard mdToHtml path. When a victim loads the page, the video element's fallback content containing the injected HTML is parsed as live DOM nodes. If the payload includes an onerror event handler or a <script> element, the browser executes it in the context of the victim's session.

Step 4 — Post-Exploitation Impact: The injected JavaScript executes in the lemmy-ui origin, meaning it has full access to the victim's session cookies, local storage, and any authenticated API endpoints. The attacker can exfiltrate session tokens to a remote server, perform authenticated actions as the victim (modifying content, sending private messages, changing account settings, and potentially escalating administrative privileges if the victim is a moderator or admin). The scope of compromise is limited by the victim's privileges; a moderator viewing the malicious content could be coerced into performing moderation actions or exposing moderator-only data. The stored nature of the payload means every viewer who loads the poisoned content is affected, amplifying the impact across the instance's user base.

Impact Assessment

The business impact of CVE-2026-54743 is significant for operators of self-hosted Lemmy instances operating at or below lemmy-ui 0.19.19-beta.1. The federated nature of Lemmy expands the attack surface: an attacker does not need a local account—any user of a connected instance can deliver malicious content that may be rendered by the target instance's user base. This cross-instance attack vector makes the vulnerability especially dangerous in a federated ecosystem where trust boundaries are porous by design.

The confidentiality impact is rated high: session tokens and authenticated data are primary targets, and an attacker who steals an admin session could extract user databases, private communications, and configuration data. The integrity impact is limited to the ability to perform authenticated actions through a victim's session rather than directly modifying stored content; however, persistent modification of posts or comments through a hijacked moderator session can have cascading trust implications. Availability impact is minimal in the base scoring, though a sophisticated attacker could potentially lock out legitimate users by altering account credentials or banning users via a hijacked moderator session.

The blast radius is the entire Lemmy instance's user base, as the stored payload persists until manually purged. Because no Content-Security-Policy header is present by default in the tested self-hosted configuration, production deployments are exposed unless operators have explicitly added a CSP. Organizations that have invested in CSP implementation may mitigate execution entirely, but the vulnerability itself remains present in the rendered DOM. The lack of a vendor-published patch at the time of this report, combined with an unknown PoC status, elevates the urgency: administrators cannot apply a known-fixed version with confidence until patch sources are tracked.

Detection Guidance

The following detection rules target the exploitation patterns associated with this vulnerability. They focus on crafting malicious Markdown payloads with embedded HTML in image alt text, as well as on detecting the delivery and execution of such payloads.

Sigma Rule

title: Lemmy-UI Markdown Image Alt-Text XSS Payload
id: 8c4f7c2e-9d31-4f9b-ae7c-b1560e89d4a3
status: experimental
description: Detects HTTP requests to Lemmy instances containing Markdown image syntax with HTML tags in the alt text field, indicating possible CVE-2026-54743 exploitation.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-54743
author: Valters IT Security Research Team
date: 2026/01/01
logsource:
    category: webserver
    product: nginx
    definition: HTTP access logs from a Lemmy instance reverse proxy
detection:
    selection:
        c-uri|contains:
            - '![<'
            - '!['
        c-uri|match: '!\[[^\]]*<[^>]*>[^\]]*\]\('
    condition: selection
level: high
falsepositives:
    - Legitimate use of Markdown images with HTML in alt text (rare in practice)
fields:
    - clientip
    - c-uri
    - http_user_agent

YARA Rule

rule Lemmy_UI_Markdown_XSS_AltText
{
    meta:
        author = "Valters IT Security Research Team"
        description = "Detects Markdown payloads containing HTML tags in image alt-text syntax, targeting CVE-2026-54743"
        cve = "CVE-2026-54743"
        date = "2026-01-01"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-54743"

    strings:
        $img_syntax_1 = "![" ascii wide
        $html_open = "<" ascii wide
        $event_handler = "onerror=" ascii wide
        $script_tag = "<script" ascii wide
        $img_tag = "<img" ascii wide
        $video_url = ".mp4" ascii wide nocase
        $video_url2 = ".webm" ascii wide nocase
        $video_url3 = ".ogv" ascii wide nocase

    condition:
        $img_syntax_1 at 0 or $img_syntax_1 in (0..2048)
        and (
            ($video_url or $video_url2 or $video_url3)
            and ($event_handler or $script_tag or ($html_open and $img_tag))
        )
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-54743 - Lemmy-UI Markdown Alt-Text XSS Payload Detected"; flow:established,to_server; content:"!["; http_uri; pcre:"/!\[[^\]]*<[^>]*>[^\]]*\]\((?:https?:\/\/[^\s\)]*\.(?:mp4|webm|ogv)|[^\s\)]*)/i"; classtype:web-application-attack; reference:cve,2026-54743; sid:202654743; rev:1;)

Elastic Detection

sequence by source.ip
    with maxspan=5s
    [network where event.type == "connection" and network.protocol == "http" and 
     url.path : "*" and url.query : "*![*" and 
     url.query : "*<*>*" and url.query : "*.mp4*"]
    [process where event.action == "exec" and process.name == "browser"
     and process.args : "*onerror=*"]

Note: The above EQL rule assumes HTTP-level access logs are captured in Elasticsearch. If only application-level logs exist, consider the following alternative:

any where event.module == "nginx" and
    (url.query : "*![*" and url.query : "*<*>*" and url.query : "*.mp4*")
    and not url.query : "*!\[*" and not url.query : "*\\[*"

Splunk SPL Query

index=webserver sourcetype=access_combined
| eval is_payload=if(match(uri_path, "![^\\]]*<[^>]*>[^\\]]*\\]\\("), "true", "false")
| where is_payload=="true"
| search uri_query="*.mp4*" OR uri_query="*.webm*" OR uri_query="*.ogv*"
| eval event_handler=if(match(uri_query, "onerror=") OR match(uri_query, "onload="), "true", "false")
| where event_handler=="true"
| table _time, clientip, uri_path, uri_query, http_user_agent, status
| sort -_time

Wazuh OSSEC Rule

<group name="web,lemmy,xss,">
    <rule id="202654" level="12">
        <decoded_as>web</decoded_as>
        <match>!\[</match>
        <regex>!\[[^\]]*<[^>]*>[^\]]*\]\(</regex>
        <regex>\.(mp4|webm|ogv)</regex>
        <regex>onerror=|onload=|onmouseover=|<script</regex>
        <description>Possible CVE-2026-54743 exploitation attempt - Markdown image alt-text with HTML injection targeting Lemmy instance</description>
        <groups>attack,xss,web_application_attack</groups>
        <mitre>
            <id>T1190</id>
        </mitre>
        <references>
            <reference>https://nvd.nist.gov/vuln/detail/CVE-2026-54743</reference>
        </references>
    </rule>
</group>

Mitigation & Patch Guidance

Patch Confidence Assessment: CVE-2026-54743 has a patch confidence rating of 0/4 — no patch evidence from any tracked source is currently available. While the NVD description states the issue is fixed in lemmy-ui 0.19.19-beta.1, this fix has not been corroborated across tracked patch sources, and the patch details cannot be independently verified. Organizations should treat the "fixed version" claim with caution until the vendor publishes an official advisory or a Git commit is confirmed in the LemmyNet/lemmy-ui repository.

Immediate Mitigations:

  1. Deploy a Content Security Policy (CSP): The advisory notes that CSP prevents the described exploit in production. Implement a strict CSP that disallows inline scripts and event handlers. A policy of default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self' will block inline onerror handlers and <script> elements injected via the Markdown pipeline.
  2. Disable HTML5 Embed Plugin: If configuration access is available, disable the markdown-it-html5-embed plugin or set useImageSyntax to false. This removes the plugin-generated output path that bypasses sanitization.
  3. Restrict Federation: Temporarily disable or restrict federation with external instances if the instance cannot be patched, to limit the delivery of malicious content from remote actors. Local account holders remain a vector, but restricting federation reduces the overall attack surface.
  4. Monitor User-Generated Content: Enable manual moderation review for posts and comments containing images, particularly those referencing video files, until a fix is confirmed and deployed.

Patch/Upgrade Steps:

  1. Continuously monitor the LemmyNet/lemmy-ui GitHub repository for release tags and commits addressing CVE-2026-54743.
  2. When the fix is confirmed, upgrade lemmy-ui to version 0.19.19-beta.1 or later immediately. This may require coordinated upgrades of the Lemmy backend component to ensure version compatibility.
  3. After upgrading, verify the fix by testing the exact attack vector described in the advisory—crafting Markdown with HTML in image alt text and confirming it renders as text rather than executing.

Long-Term Hardening:

  1. Implement a Server-Wide CSP: Regardless of the fix status, all self-hosted Lemmy deployments should ship with a CSP header configured at the reverse proxy layer. Use the Content-Security-Policy HTTP header with script-src 'self' and object-src 'none'.
  2. Establish a Patch Management Cadence: Given the federated nature of Lemmy and its active development lifecycle, adopt a recurring schedule to check for lemmy-ui releases and deploy them within a defined SLA.
  3. Run a Web Application Firewall: Deploy a WAF with rules that inspect POST/GET payloads for Markdown-to-HTML injection patterns, blocking request bodies containing ![ followed by HTML tags before the closing ]( sequence.
  4. Enable Security Headers: Beyond CSP, enable X-Content-Type-Options: nosniff and X-Frame-Options: DENY to harden the browser security posture.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-54743
  2. LemmyNet/lemmy-ui Repository: https://github.com/LemmyNet/lemmy-ui — Monitor for fixes and release notes addressing CVE-2026-54743.
  3. Lemmy Project Main Site: https://join-lemmy.org — For official announcements and deployment guidance.
  4. CWE-79 Reference: https://cwe.mitre.org/data/definitions/79.html — Improper Neutralization of Input During Web Page Generation.

Threat Actor Activity: As of this report, there is no known exploitation in the wild, no PoC or exploit code publicly available, and no CISA KEV listing for CVE-2026-54743. The vulnerability is assessed as a high-risk stored XSS due to its persistent and federated delivery mechanism, but the unknown patch status and lack of PoC temper current risk assessment. Organizations should monitor the LemmyNet GitHub repository and the NVD entry for updates.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

lemmy-ui
http.title:"lemmy"
http.html:"lemmy-ui"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-54743/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.