Skip to main content

answer-me-with-html CVE-2026-108723

| EUVDEUVD-2026-96889 LOW
Improper Link Resolution Before File Access (CWE-59)
2026-10-11 VulnCheck GHSA-7v7j-pmcf-62v5
2.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft repo with escaping symlink
  2. Delivery
    Victim runs am render on repo
  3. Exploit
    localPath check bypassed, symlink unresolved
  4. Execution
    External file embedded into HTML output
  5. Impact
    Shared HTML discloses sensitive file

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
Exploitation Conditions

Exploitation requires the victim to run the am render command on an attacker-supplied repository that contains a code-block src= embedding resolving to a symlink pointing outside the checkout; the flaw is that localPath() validates only the path text and does not resolve symlinks. Concrete limiting factors: (1) local access / attacker-controlled repository content is required (AV:L, AT:P), (2) passive user interaction is mandatory - the victim must choose to render the untrusted repo (UI:P), (3) the targeted external file must be readable by the victim's process, and (4) disclosure only materializes when the generated HTML is subsequently shared or published. Affected versions are answer-me-with-html through 0.5.0.

Impact

This is a low-priority, low-real-risk issue despite being a genuine vulnerability. The vendor-supplied CVSS 4.0 base score is only 2.0, and all signals align on low severity: the vector is local (AV:L), requires a specific attack condition (AT:P - a crafted repository), passive user interaction (UI:P - the victim must run am render on untrusted content), and yields only low confidentiality impact (VC:L) with no integrity or availability impact. There is no EPSS score, no CISA KEV listing, and no public exploit code provided in the input - only a technical writeup (hackmd) and the vendor advisory from VulnCheck. No signals conflict; everything points to a niche, low-urgency disclosure flaw. The absence of EPSS and KEV data is consistent with a very recently disclosed, low-footprint tool rather than evidence of stealth exploitation. Treat this as a hygiene fix (upgrade past 0.5.0 when a patch is available), not an emergency. Note: no fix version is stated in the input, so patch availability could not be independently confirmed.

Exploit ScenarioDerived

An attacker publishes a repository (or submits a PR/sample project) containing a markdown/code block with a src= embedding that points to a symlink escaping the checkout directory. A victim who runs am render on this repository has readable external files (e.g. SSH keys, config, or system files accessible to their user) silently embedded into the generated HTML, which then discloses those contents when the HTML is published or shared. No public exploit code is identified at time of analysis, though a detailed technical writeup exists.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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 – Oct 11, 2026

Symlink-following path handling in the answer-me-with-html am CLI (through version 0.5.0) causes am render to embed files from outside the repository checkout - potentially SSH keys, config files or other data readable by the victim's process - into the generated HTML, which then leaks them if that output is shared or published. The attack is narrow: an attacker must deliver a crafted repository (local vector, AT:P), the victim must deliberately render it (passive user interaction), and the targeted file must be readable by the victim's process, which is why the CVSS 4.0 base score is only 2.0 (AV:L/AC:L/AT:P/PR:N/UI:P, confidentiality low, no integrity or availability impact). No public exploit code and no confirmed active exploitation were identified at time of analysis; the CVSS vector carries PR:N, so no authentication is required, and our independent assessment rates this as a low-priority, low-real-risk issue despite being a genuine vulnerability.

RemediationAI

No vendor-released patch was identified in the available intelligence at time of analysis, so remediation must start with compensating controls. The single most effective measure is to stop running am render on repositories you did not create or do not trust; because the attacker's payload is repository content rather than network traffic, this removes the exposure entirely at the cost of losing the ability to render or review third-party documents. If untrusted repositories must be rendered, do it inside a disposable sandbox or container that mounts only the repository directory read-only and runs as a low-privilege account with no access to home directories, SSH keys, cloud credentials or environment files - the trade-off is extra tooling overhead and possible breakage of legitimate relative-path assets, but it contains the file-disclosure impact to files actually reachable in the sandbox. Before rendering, scan the checkout for symlinks that escape the project root (for example find . -type l -exec realpath {} \; and compare against the checkout path) or reject code-block src= attributes altogether; this defeats the specific attack but may break repositories that legitimately use symlinks or external embeds. Treat any HTML produced from an untrusted repository as sensitive and do not publish, commit or share it without reviewing the inlined content, since the disclosure only materializes once the generated file is distributed. For maintainers of the project, the durable fix is to harden localPath() so it calls fs.realpath on the resolved path and then verifies the real path is still contained within the repository root before reading it, returning an error otherwise - the same pattern used to fix comparable CWE-59 issues - and to confirm that change is released in a tagged version, since the referenced commit b275eba8d4cc49bcb4bbc28459863f4b49a480f9 is the vulnerable code location and not a confirmed fix. Additional context is in the VulnCheck advisory at https://www.vulncheck.com/advisories/answer-me-with-html-through-0.5.0-symlink-following-in-code-block-src-embedding and the researcher write-up at https://hackmd.io/@haind/answer-me-with-html-code-src-symlink-escape.

Affected VersionsENISA

answer-me-with-html 0 ≤0.5.0

Affected Packages

euvd answer_me_with_html no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

The issue is a classic link-following (CWE-59) flaw in the code-block src= embedding path of the answer-me-with-html tool, a Node.js CLI that converts markdown/answer documents into standalone HTML. In the referenced source (src/code.js, lines 74-105 at commit b275eba8d4cc49bcb4bbc28459863f4b49a480f9), the localPath() helper validates only the literal path text supplied in the src= attribute; it does not call something like fs.realpathSync to resolve symlinks or verify that the resolved target still resides inside the repository root. An attacker therefore ships a git repository containing a symlink whose target points outside the checkout (for example ./asset.txt -> ~/.ssh/id_rsa), and when the victim runs am render on that repository the CLI opens the symlink target and inlines its contents into the produced HTML. The final disclosure step depends on the generated HTML being shared, published or otherwise distributed afterwards. This matches the CVSS 4.0 vector CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N (attack requirements present, passive user interaction needed), and is consistent with our independent CVSS 3.1 assessment of AV:L/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N - exploitability hinges almost entirely on the victim voluntarily rendering attacker-controlled content and then redistributing the resulting file.

Know when Answer Me With Html 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 (VulnCheck) PRIMARY 2.0 LOW
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 2.5 LOW

Attacker needs victim to render an untrusted repo (AV:L, UI:R) and a readable symlink target plus sharing step (AC:H); no auth needed (PR:N); only partial file disclosure (C:L), no integrity/availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

answer-me-with-html through 0.5.0 contains a link following vulnerability in the am CLI code block src= embedding, where localPath() checks only path text without resolving symlinks. Attackers can ship a repository with a symlink pointing outside the checkout so am render embeds readable external files into generated HTML, disclosing them when shared.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Rare
obscure single-maintainer CLI tool, negligible enterprise deployment footprint
Data Quality
5 sources
Confidence: Medium

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 LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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