vulnerability / NVI-00003564 / Revision 1
Graby has stored XSS via iframe srcdoc Attribute in htmLawed Sanitization Config
OSV carries this publisher advisory for j0k3r/graby. This is an aggregated source copy; consult the original publisher and compare update dates.
This report has not inspected your inventory, configuration, deployed build, reachability or evidence. A catalog listing and a severity score do not establish exposure or compromise.
01 / Meaning
Why it matters
Published affected context helps an owner decide what evidence to gather. This report has not examined your application.
02 / Applicability
The affected context
Affected versions, configuration prerequisites and known exclusions are public. Confirm each one against the deployed service.
j0k3r/graby
source listedECOSYSTEM: introduced 0; fixed 2.5.1
## Summary Graby's `cleanupXss()` function configures htmLawed with conflicting settings: `safe=1` (which removes ``) combined with `'elements' => '*+iframe-meta'` (which re-enables ``). htmLawed does not sanitize the `srcdoc` attribute, allowing injection of arbitrary JavaScript that executes when the content is rendered via `|raw` in templates. ## Root Cause **`src/Graby.php` lines 1038-1048:** ```php htmLawed($html, [ 'safe' => 1, // removes 'elements' => '*+iframe-meta', // re-adds , overrides safe=1 'deny_attribute' => 'style', // srcdoc is NOT denied ]); ``` The `safe=1` and `+iframe` combination is a conflict: `safe` mode is designed to strip dangerous elements, but the elements override re-enables `` without also blocking the dangerous `srcdoc` attribute. ## Proof of Concept Input to `cleanupXss()`: ```html ``` Output (unchanged — htmLawed passes it through): ```html ``` When rendered via `{{ content|raw }}` in a template, `srcdoc` exec
03 / Response
What to do next
- vendor patch
The original advisory lists fixed boundaries 2.5.1 for j0k3r/graby. Confirm the publisher’s latest guidance.
Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system. GitHub Advisory Database via OSV
A fixed release is not deployment evidence.
Check current vendor support and compatibility. After making a change, verify the deployed build and relevant runtime conditions. Keep the evidence, owner and time. An updated lockfile alone does not prove what is running.
04 / Limits
What this report cannot establish
- Customer inventory, deployment, reachability and exploitation have not been inspected.
05 / Provenance
Sources you can inspect
Each assertion retains its source. Mirrored records may repeat one underlying publisher; additional links are not independent corroboration.
- GHSA-3h6j-9x8m-rg3g ↗
GitHub Advisory Database via OSV · vendor advisory
Observed . GitHub-origin advisory, CC-BY-4.0; OSV is an aggregate copy, not independent corroboration.
Public revision history
Only published revisions appear here. Routine fetches do not create a material-change event.
- Revision 1 ·
First indexed by Null; source disclosure date is shown separately.