# CVE-2026-61823: code16 Sharp stored XSS in iframe srcdoc attribute

Source: https://junglewise.ai/threats/cve-2026-61823-code16-sharp-stored-xss-in-iframe-srcdoc-attribute  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-09-24. Updated: 2026-09-25  
License: CC BY 4.0 with a link back

CVE-2026-61823 · Severity: high · CVSS 7.3 · Published 2026-09-24

code16 Sharp is a rich text editor used in content management applications. An attacker with permissions to edit content can inject malicious scripts via the srcdoc attribute in iframe elements. When other users view the affected content, the scripts execute with the viewer's privileges, enabling account takeover, session hijacking, and theft of admin panel data.

Technologies: [Code16 Sharp](https://junglewise.ai/threats/technologies/sharp), [code16/sharp (Packagist)](https://junglewise.ai/threats/technologies/code16-sharp). Vendors: [Code16](https://junglewise.ai/threats/vendors/code16), [Packagist](https://junglewise.ai/threats/vendors/packagist).

## Quick answers

**Is CVE-2026-61823 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-61823 being exploited in the wild.

**How severe is CVE-2026-61823?** High severity, with a CVSS score of 7.3, published 24 September 2026.

**Which products and versions are affected?** Code16 Sharp < 9.22.5; code16/sharp (Packagist) < 9.22.5, ECOSYSTEM:introduced=0,fixed=9.22.5.

**Is there a fix for CVE-2026-61823?** Yes. code16/sharp (Packagist): upgrade to 9.22.5 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-61823 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-61823?** Check whether you run Code16 Sharp or code16/sharp (Packagist) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- code16/sharp (Packagist): upgrade to 9.22.5 or later

  ```sh
  composer require code16/sharp:^9.22.5
  ```


## Technical details

A stored XSS vulnerability exists in the rich text editor's sanitization of iframe elements. Although the underlying Symfony HtmlSanitizer HTML-encodes special characters in attribute values, the HTML specification requires browsers to automatically decode HTML entities within attributes before processing. As a result, encoded JavaScript in the srcdoc attribute is decoded and executed as live HTML/JS within the iframe context. An attacker with Editor field edit permissions can inject malicious payloads that execute when other users render the content. The vulnerability has been patched in version 9.22.5 by explicitly removing srcdoc from the list of allowed iframe attributes in FormatsSanitizedValue.php.

## Affected products

- code16 Sharp < 9.22.5

## Identifiers

- CVE-2026-61823
- GHSA-qxg3-46rw-79j8

## Timeline

- 2026-06-24: disclosed
- 2026-09-25: patched: Version 9.22.5 released

## References

- [https://api.github.com/users/nova-aryan](https://api.github.com/users/nova-aryan)

## Related threats

- [code16/sharp server-side request forgery in autocomplete endpoint](https://junglewise.ai/threats/cve-2026-84987-code16-sharp-server-side-request-forgery-through-an-unanchored)
- [Code16 Sharp arbitrary class instantiation in embed_key parameter](https://junglewise.ai/threats/cve-2026-84974-code16-sharp-arbitrary-class-instantiation-through-the-embed-key)
- [code16 Sharp stored XSS via sanitizer bypass](https://junglewise.ai/threats/cve-2026-61825-code16-sharp-stored-xss-via-sanitizer-bypass)
- [code16 Sharp missing authorization in Quick Creation Command endpoints](https://junglewise.ai/threats/cve-2026-53634-code16-sharp-missing-authorization-in-quick-creation-command)
- [code16 Sharp authorization bypass in generic download endpoint](https://junglewise.ai/threats/cve-2026-44692-code16-sharp-authorization-bypass-in-generic-download-endpoint)
