CVE-2026-52767
nicheHTTP Signature Verification Bypass in YesWiki
YesWiki versions 4.6.2 through before 4.6.6 contain a cryptographic signature verification bypass (CWE-347) in HttpSignatureService::verifySignature(). The code checks PHP's openssl_verify() return value with a loose boolean test, so a return of -1 — which OpenSSL's EVP_VerifyFinal() can produce on a failed verification — is treated as truthy, the error is never thrown, and the controller proceeds to process the payload. An unauthenticated network attacker who triggers that -1 condition can submit requests with invalid HTTP signatures that YesWiki silently accepts as verified, spoofing a legitimate signed sender and getting attacker-controlled payloads processed. Any YesWiki instance running an affected version and using the HTTP signature feature is exposed, with high integrity impact and limited availability impact per the CVSS score of 8.2. No public proof-of-concept or in-the-wild exploitation is currently known, and EPSS estimates a 0.2% probability of exploitation within 30 days.
What to do: Upgrade YesWiki to version 4.6.6 or later, which corrects the openssl_verify() result handling. If upgrading is not immediately possible, restrict access to endpoints that accept HTTP-signed activity payloads (e.g., via network filtering or allowlisting trusted senders) and monitor for unexpected processed activity submissions. Verify deployed version by checking the instance's release/version information before and after remediation.
| YesWiki | >= 4.6.2 and < 4.6.6 (fixed in 4.6.6) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
YesWiki is a wiki system written in PHP. From version 4.6.2 to before version 4.6.6, HttpSignatureService::verifySignature() checks the result of PHP's openssl_verify() with a loose boolean negation - if (!openssl_verify(...)) { throw ... }. PHP's openssl_verify has four possible return values: 1, 0, -1, and "false". The -1 row is the bypass: PHP's truthiness rules make -1 a truthy value, so !(-1) === false, the throw is skipped, and the controller proceeds to processActivity(). Any condition that makes OpenSSL's EVP_VerifyFinal() return -1 triggers the bypass. The reachable consequence is the controller silently treats a failed verification as success and processes the attacker's payload. This issue has been patched in version 4.6.6.
- Weakness
- CWE-347
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L
In the news0 stories
No ingested article mentions this CVE yet.