MEDIUM 6.5

CVE-2026-47110: Tiptap for PHP Denial-of-Service Vulnerability in Link Validation

Tiptap for PHP versions before 2.1.1 have a flaw that allows logged-in users to deliberately crash the server's ability to render HTML content. An attacker submits a specially crafted Tiptap JSON document where a link URL field is set to an array of values instead of a single text string. When the server tries to validate this field using a string-matching function, it crashes with an unhandled error. Once this malformed data is saved to the database, every user who tries to view that record will trigger the same crash, disrupting service until a database administrator manually fixes the entry.

Source data · NVD / CISA · public domain

CVSS
3.1 · 6.5 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weaknesses (CWE)
CWE-241
Affected products
0 configuration(s)
Published / Modified
2026-06-24 / 2026-07-14

NVD description (verbatim)

Tiptap for PHP before version 2.1.1 contains an input validation vulnerability that allows authenticated attackers to cause a denial of service by submitting Tiptap JSON with the attrs.href field set to an array instead of a string, causing an unhandled TypeError in the Link::isAllowedUri() function when passed to preg_match(). Attackers can persist malformed JSON records that permanently crash the server-side HTML rendering pipeline for all subsequent viewers of that record until the database entry is manually repaired.

4 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in the Link::isAllowedUri() function within Tiptap for PHP, which lacks proper type validation before passing the attrs.href field to PHP's preg_match() function. The preg_match() function expects a string parameter; when attrs.href is an array, a TypeError is thrown and not caught. An authenticated attacker can craft a Tiptap JSON payload with attrs.href set to an array value, persist it to the database, and cause the HTML rendering pipeline to crash on any subsequent access. The defect is classified as improper input validation (CWE-241), specifically a failure to validate that user-supplied data conforms to expected type constraints before use in type-sensitive operations.

Business impact

This vulnerability creates a denial-of-service vector for any application using Tiptap for PHP to process and render user-submitted rich-text content. An authenticated attacker can corrupt database records with minimal effort, causing application crashes that affect all downstream users attempting to view that content. In collaborative editing environments, document management systems, or content platforms, this can disrupt workflow and damage user trust. The persistent nature of the attack—malformed data remains in the database until manually repaired—means impact continues beyond the initial attack unless preventive measures are in place.

Affected systems

Tiptap for PHP versions prior to 2.1.1 are vulnerable. Organizations using Tiptap for PHP in production environments, particularly those that accept user-submitted rich-text content and render it server-side, should inventory affected versions immediately. The vulnerability requires authenticated access, so it does not pose a risk from unauthenticated or anonymous users.

Exploitability

Exploitability is straightforward for authenticated users. No special tools, complex techniques, or race conditions are required. An attacker with valid credentials can craft a Tiptap JSON payload with a single line change (setting attrs.href to an array instead of a string) and submit it through normal application flows. The lack of error handling in the Link validation function means the attack succeeds reliably. However, the requirement for authentication limits the attack surface to insider threats, compromised user accounts, or applications that assign credentials too broadly.

Remediation

Upgrade Tiptap for PHP to version 2.1.1 or later. Verify the upgrade with your vendor's release notes to confirm the type-validation fix is included. If immediate patching is not possible, implement input validation at the application layer to enforce that attrs.href is a string before passing it to Tiptap's rendering pipeline, or add try-catch error handling around the Link validation call to prevent crashes. Monitor database entries for malformed Tiptap JSON; entries inserted before the patch will still cause crashes after upgrade and should be cleaned or repaired.

Patch guidance

Update Tiptap for PHP to version 2.1.1 or later. Check your package manager (Composer, npm, or equivalent) and your vendor's security advisory for the exact patched version number. Test the upgrade in a staging environment to ensure compatibility with your application and existing stored content before deploying to production. Once upgraded, consider running a database audit to identify and repair any corrupted Tiptap JSON records that may have been inserted by attackers.

Detection guidance

Monitor application logs for TypeError exceptions originating from Link::isAllowedUri() or preg_match() when processing Tiptap JSON. Track failed HTML rendering operations and look for patterns of failure associated with specific database records. Query the database for Tiptap JSON documents where the attrs.href field is an array rather than a string; these are indicators of malicious or corrupted payloads. In development or test environments, use fuzzing or automated testing to verify that the application gracefully handles type mismatches in Tiptap JSON inputs.

Why prioritize this

Although this is a MEDIUM-severity vulnerability, it should be treated as a priority for any organization using Tiptap for PHP in production. The vulnerability does not require advanced exploitation, affects the availability of critical functionality (content rendering), and creates persistent damage that impacts all users viewing affected records. Authenticated-only access limits scope, but the ease of exploitation combined with the business impact of prolonged outages justifies prompt patching.

Risk score, explained

The CVSS 3.1 score of 6.5 reflects a network-accessible vulnerability requiring authentication, with no confidentiality or integrity impact but high availability impact. The score appropriately captures the denial-of-service nature of the flaw. However, context matters: the persistence of malformed data in the database and the potential to affect multiple users viewing a single corrupted record may justify elevated priority in risk assessment beyond the base CVSS score.

Frequently asked questions

Does this vulnerability affect unauthenticated users or anonymous visitors?

No. The vulnerability requires an authenticated user account. Anonymous or unauthenticated users cannot exploit it directly. However, if an attacker compromises a user account or gains authorized access, they can plant malformed Tiptap JSON that will then crash the application for all subsequent viewers, authenticated or not.

Will upgrading to version 2.1.1 fix corrupted database records that were already inserted?

No. Upgrading fixes the vulnerability and prevents new attacks, but does not automatically repair malformed Tiptap JSON already stored in the database. Those entries will still cause crashes after upgrade. You will need to identify and manually repair or delete corrupted records, or implement a migration script to clean them.

Can this be exploited through indirect means, such as via an API or file upload?

Yes, if your application accepts Tiptap JSON through any input channel—REST APIs, form submissions, file uploads, or integrations—an authenticated attacker can submit malicious JSON through any of those vectors. The vulnerability is in the validation logic, not the input method, so all pathways that feed data to the Link validation function are at risk.

What should we do right now if we cannot patch immediately?

Implement input validation at the application layer to verify that attrs.href is always a string before it reaches Tiptap's rendering pipeline. Wrap the Link validation call in a try-catch block to prevent crashes and log the errors. Audit your database for existing malformed records and quarantine or repair them. Restrict Tiptap editing permissions to trusted users only while you prepare for patching.

This analysis is provided for informational and educational purposes to help security professionals understand and manage CVE-2026-47110. The information is derived from vendor disclosures and public advisories. Security teams should independently verify patch availability, compatibility, and applicability to their specific environment before taking action. No liability is assumed for decisions made based on this analysis. Always consult your vendor's official security advisory for authoritative guidance on affected versions and remediation steps. Source: NVD (public-domain), retrieved 2026-08-02. Analysis generated by SEC.co (claude-haiku-4-5).