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

CVE-2026-54741

CVE-2026-54741 Vulnerability in Lemmy
📅 PUBLISHED: 2026-08-19 00:00 UTC 🔄 UPDATED: 2026-09-23 20:36 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.45%
👁️
0.45% probability
11.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
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 4.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-54741 is an authorization bypass vulnerability in Lemmy, a link aggregator and forum platform for the fediverse. The flaw allows a user who has been blocked by another user to continue editing private messages that were sent prior to the block, effectively circumventing the intended block functionality. This creates a persistent harassment channel where a blocked sender can repeatedly modify the content of an existing private message thread that the recipient can still view. The vulnerability affects all Lemmy versions prior to 0.19.19 and 1.0.0-alpha.18, and the vendor has released patched versions that address the missing authorization check. The CVSS score is N/A, though the underlying weakness is classified as CWE-862 (Missing Authorization).

⚡ 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 private message modification workflow. The NVD description indicates a fundamental asymmetry in authorization enforcement between two distinct code paths:

  1. Creation path (create_private_message): Prior to inserting a new private message into the database, this function explicitly consults the recipient's block list using PersonActions::read_block. If the recipient has blocked the sender, the message creation is rejected. This is the intended behavior — blocking a user prevents them from initiating new contact.

  2. Edit path (edit_private_message in crates/api/api_crud/src/private_message/update.rs): This function only verifies that the caller is the original message creator via a check against orig_private_message.creator_id. It performs no check against the recipient's block list. Once a private message exists in the database, a blocked sender can continue to invoke the edit operation, modifying the content of that historical message.

The attack mechanism is straightforward: the authorization check on the edit path is incomplete. The recipient's block status is only validated at the moment of message creation, not at the moment of message update. The update operation writes new content to the existing message row and returns a modified PrivateMessageView object without consulting the recipient's block list.

From a code-level perspective, the flaw is a missing authorization check (CWE-862). The edit endpoint fails to enforce the same recipient-block validation that the creation endpoint enforces. This is a classic example of inconsistent access control enforcement across similar operations — the developer implemented the block check for one code path but omitted it from a parallel code path that handles a related but distinct operation.

The attack surface is the Lemmy API's private message editing functionality, which is exposed on federated instances. Because Lemmy operates on the fediverse model, instances communicate with one another, and the edit operation may be reachable through both local API calls and federation protocols. The vulnerability requires an authenticated account (the blocked sender's account) — it is not exploitable by unauthenticated attackers.

Exploitation Scenarios

The attack chain for CVE-2026-54741 is as follows:

Step 1 — Reconnaissance/target identification: The attacker must have an existing private message thread with the target recipient. This means the attacker previously sent the recipient a private message, and the recipient has since blocked the attacker. The attacker may already be aware that they were blocked (the platform may inform them) or may discover this when attempting to send a new message and receiving a rejection.

Step 2 — Triggering the flawed code path: The attacker invokes the private message edit operation on the pre-existing message. Because the edit path (edit_private_message) only checks creator_id and does not consult the recipient's block list, the request passes the authorization gate. The block check that would normally prevent continued contact via the creation path is entirely bypassed.

Step 3 — Payload execution at the vulnerability-class level: The attacker modifies the content of the existing private message. Since the vulnerability is a missing authorization check rather than an injection flaw, the "payload" is simply new message content. The attacker can repeatedly invoke the edit operation, changing the message content as many times as they wish. Each iteration returns a refreshed PrivateMessageView to the recipient, who continues to see the message in their private message inbox.

Step 4 — Post-exploitation impact: The attacker gains a persistent harassment channel. The recipient's block action is effectively neutered — they cannot prevent the attacker from rewriting content in a conversation thread they can still view. This is particularly impactful in the fediverse context, where private messages may be federated across instances, potentially exposing the modified content to other services or amplifying the harassment. The attacker can escalate from text-based harassment to include threatening content, as the message thread remains visible to the recipient with each successive edit.

No public PoC is available; the attack chain is inferred from the vulnerability class and the NVD description. The exploitation requires only authenticated access to the Lemmy instance, making it trivially easy to execute once the attacker holds a valid account and has a pre-existing message thread with the target.

Impact Assessment

Business impact: Lemmy is used by online communities and forums operating on the fediverse. The impact is primarily a user-safety and platform-integrity issue. The block feature is a core trust and safety mechanism — users block others to stop harassment. This CVE fundamentally undermines that mechanism, allowing persistent harassment through a channel the victim believes is closed. For self-hosted communities, this can lead to user churn, reputational damage, and potential legal exposure if the platform is used within a jurisdiction with strict anti-harassment laws.

Affected systems: All Lemmy instances running versions prior to 0.19.19 (for the 0.x release line) and prior to 1.0.0-alpha.18 (for the 1.0.0 alpha release line). Given that Lemmy is a decentralized platform, the blast radius is potentially large — any instance with active users and blocked-user relationships is exposed. The impact scales with community size and the prevalence of blocking interactions.

Blast radius: The vulnerability requires a pre-existing relationship (a message thread) between attacker and victim, and the attacker must be the one who originally sent the message. This narrows the pool of potential victims to users who have previously received private messages from individuals they later blocked. However, within that pool, the impact is complete — there is no mitigation available to the victim at the application level.

CVSS assessment: CVSS score is N/A per the CVE record. An estimated vector of CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N is provided for contextual purposes only — network attack vector, low attack complexity, low privileges required (authenticated user), no user interaction, unchanged scope, no confidentiality impact, low integrity impact (message content can be altered), and no availability impact. The low integrity score reflects that the attacker can only modify their own pre-existing messages, not create new ones or alter other users' data.

Detection Guidance

Sigma Rule

title: Lemmy Private Message Edit by Blocked Sender
id: 73a66b2e-ef37-4a3b-9b2d-5e4a1c9f6d82
status: experimental
description: >
  Detects attempts to edit a private message in Lemmy where the sender has been
  blocked by the recipient. This may indicate exploitation of CVE-2026-54741.
author: Valtersit Threat Intelligence
date: 2026/02/15
logsource:
  category: application
  product: lemmy
  service: api
detection:
  selection:
    http.response.status_code: 200
    http.url|contains: /private_message
    http.method: PUT
    lemmy.operation: edit_private_message
  filter_known_ok:
    lemmy.recipient_blocked_sender: false
  condition: selection and not filter_known_ok
level: high
falsepositives:
  - Legitimate edits to messages in threads where the recipient has not blocked the sender
  - Race conditions between message edit and user block actions
fields:
  - src.ip
  - user.name
  - lemmy.private_message_id
tags:
  - cve-2026-54741
  - cwe-862
  - attack.defense_evasion

YARA Rule

rule Lemmy_CVE_2026_54741_Edit_Path_Block_Check_Bypass
{
    meta:
        author = "Valtersit Threat Intelligence"
        description = "Detects source code patterns indicative of CVE-2026-54741 missing block check in edit_private_message"
        date = "2026-02-15"
        cve = "CVE-2026-54741"
        cwe = "CWE-862"
        severity = "high"
    strings:
        $edit_fn = "edit_private_message" ascii nocase
        $create_fn = "create_private_message" ascii nocase
        $read_block = "PersonActions::read_block" ascii nocase
        $creator_check = "creator_id" ascii nocase
        $update_path = "private_message/update.rs" ascii nocase
        $orig_msg = "orig_private_message" ascii nocase
    condition:
        $edit_fn and $creator_check and $update_path and not ($read_block within 500 of $edit_fn)
        or ($create_fn and $read_block)
}

Suricata IDS Rule

alert http any any -> any any (msg:"LEMMY CVE-2026-54741 Private Message Edit Bypass"; flow:established,to_server; http.method; content:"PUT"; http.uri; content:"private_message"; startswith; http.user_agent; content:"lemmy"; nocase; sid:10054741; rev:1; metadata:cve CVE-2026-54741, cwe CWE-862; reference:url,https://nvd.nist.gov/vuln/detail/CVE-2026-54741;)

Elastic Detection

// EQL rule to detect repeated edits to private messages by a single sender
sequence by user.name with maxspan=1h
  [any where process.name == "lemmy-server" and
     http.request.method == "PUT" and
     match(url.path, "*private_message*")]
  [any where process.name == "lemmy-server" and
     http.request.method == "PUT" and
     match(url.path, "*private_message*")]

Splunk SPL Query

index=lemmy sourcetype=lemmy:api
  method=PUT
  uri_path=*private_message*
  | stats count by user, private_message_id, src_ip
  | where count > 3
  | table _time, user, private_message_id, src_ip, count
  | sort - count

Wazuh OSSEC Rule

<group name="lemmy,">
  <rule id="100547" level="12">
    <decoded_as>json</decoded_as>
    <field name="http.method">PUT</field>
    <field name="url" type="pcre2">private_message</field>
    <description>Lemmy CVE-2026-54741: Possible private message edit by blocked sender</description>
    <group>cve-2026-54741,cwe-862,access_control,</group>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 — UNPATCHED per tracked sources. However, the NVD description explicitly states the issue is fixed in versions 0.19.19 and 1.0.0-alpha.18.

  1. Immediate mitigations:

    • Upgrade to the patched Lemmy 0.19.19 (for the 0.x line) or Lemmy 1.0.0-alpha.18 (for the 1.0.0 alpha line) immediately. These releases contain the fix that adds the recipient block list check to the edit_private_message path.
    • As a temporary measure, if an upgrade cannot be performed immediately, disable private message editing functionality at the reverse proxy or application firewall level. This will prevent all edits, not just those from blocked senders, but will close the attack path.
    • Monitor instance logs for anomalous PUT requests to private message endpoints, particularly from accounts that have been blocked by their recipients.
  2. Patch/upgrade steps:

    • The vendor has confirmed the fix in the stated versions. Obtain the release artifacts from the official Lemmy GitHub repository or your Linux distribution's package manager.
    • Back up the database before upgrading.
    • Follow the standard Lemmy upgrade procedure for your deployment method (Docker, binary, or source build).
    • After upgrade, verify that the edit_private_message function now calls PersonActions::read_block before applying edits.
  3. Long-term hardening:

    • Review access control policies across all API operations. This vulnerability highlights the risk of inconsistent authorization checks between parallel code paths (create vs. update).
    • Implement automated tests that verify block-list enforcement is consistent across all message-related operations (create, edit, delete, reply).
    • Consider federating only sanitized private message data to prevent cross-instance amplification of harassment content.
    • Subscribe to the Lemmy security advisory feed to receive timely notifications of future fixes.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-54741
  2. Lemmy GitHub Repository (Release Notes): https://github.com/LemmyNet/lemmy/releases — refer to versions 0.19.19 and 1.0.0-alpha.18 for the fix.
  3. Lemmy Official Website: https://join-lemmy.org — contains deployment and upgrade documentation.
  4. CWE-862 (Missing Authorization): https://cwe.mitre.org/data/definitions/862.html
  5. MITRE ATT&CK T1190 (Exploit Public-Facing Application): https://attack.mitre.org/techniques/T1190/

Threat actor campaigns / in-the-wild evidence: No known active exploitation campaigns have been reported for this CVE as of the time of writing. The CVE is not listed on the CISA Known Exploited Vulnerabilities Catalog. Exploit code availability is unknown, but given the simplicity of the flaw (a missing check in an authenticated edit function), weaponization is likely to be trivial for any attacker with knowledge of the codebase. Administrators should treat the vulnerability as likely to be exploited in the near term given the harassment use case.

👁️ 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.

http.title:"Lemmy"
http.html:"lemmy-ui"
product:"Lemmy" "fediverse"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-54741/ · 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.