<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://cve.radiocsirt.org</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 07 Oct 2026 17:26:19 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-365279</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-365279</link>
      <description>EUVD-2026-365279</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-365279</guid>
    </item>
    <item>
      <title>fkie_cve-2026-52767</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-52767</link>
      <description>&lt;p&gt;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&amp;#39;s openssl_verify() with a loose boolean negation - if (!openssl_verify(...)) { throw ... }. PHP&amp;#39;s openssl_verify has four possible return values: 1, 0, -1, and &amp;#34;false&amp;#34;. The -1 row is the bypass: PHP&amp;#39;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&amp;#39;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&amp;#39;s payload. This issue has been patched in version 4.6.6.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;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&amp;#39;s openssl_verify() with a loose boolean negation - if (!openssl_verify(...)) { throw ... }. PHP&amp;#39;s openssl_verify has four possible return values: 1, 0, -1, and &amp;#34;false&amp;#34;. The -1 row is the bypass: PHP&amp;#39;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&amp;#39;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&amp;#39;s payload. This issue has been patched in version 4.6.6.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-52767</guid>
    </item>
    <item>
      <title>GHSA-mv28-wj57-f57g — YesWiki Vulnerable to Unauthenticated ActivityPub Signature-Verification Bypass via `!openssl_verify(...)` accepting `i…</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-mv28-wj57-f57g</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: yeswiki/yeswiki&lt;/p&gt;
&lt;p&gt;## Summary
`HttpSignatureService::verifySignature()` checks the result of PHP&amp;#39;s `openssl_verify()` with a **loose boolean negation** - `if (!openssl_verify(...)) { throw ... }`. PHP&amp;#39;s `openssl_verify` has four possible return values:&lt;/p&gt;
&lt;p&gt;| return | meaning                                          | `!return` |
| ------ | ------------------------------------------------ | --------- |
| `1`    | signature is valid                               | `false`   |
| `0`    | signature is invalid                             | `true` ✓  |
| `-1`   | the verify call itself failed (internal error)   | **`false` ❌** |
| `false`| input rejected by PHP&amp;#39;s argument validation      | `true` ✓  |&lt;/p&gt;
&lt;p&gt;The `-1` row is the bypass: PHP&amp;#39;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&amp;#39;s `EVP_VerifyFinal()` return `-1` triggers the bypass.&lt;/p&gt;
&lt;p&gt;The two practical paths to `-1` we are aware of:&lt;/p&gt;
&lt;p&gt;1. **DSA / EC public key with an RSA-only algorithm.** `openssl_verify(..., $dsaKey, &amp;#34;RSA-SHA256&amp;#34;)` returns `int(-1)` on PHP 8.3 + OpenSSL 3.x. This is the path the PoC uses; it works against an unmodified `php:8.3-apache` lab and against any deployment using the runtime stack YesWiki&amp;#39;s own docker image ships.
2. **Older PHP + older OpenSSL** where any unrecognised digest name returned `-1` rather than `false`. The reporting research mentions this path; on current stacks `false` is returned instead…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: yeswiki/yeswiki&lt;/p&gt;
&lt;p&gt;## Summary
`HttpSignatureService::verifySignature()` checks the result of PHP&amp;#39;s `openssl_verify()` with a **loose boolean negation** - `if (!openssl_verify(...)) { throw ... }`. PHP&amp;#39;s `openssl_verify` has four possible return values:&lt;/p&gt;
&lt;p&gt;| return | meaning                                          | `!return` |
| ------ | ------------------------------------------------ | --------- |
| `1`    | signature is valid                               | `false`   |
| `0`    | signature is invalid                             | `true` ✓  |
| `-1`   | the verify call itself failed (internal error)   | **`false` ❌** |
| `false`| input rejected by PHP&amp;#39;s argument validation      | `true` ✓  |&lt;/p&gt;
&lt;p&gt;The `-1` row is the bypass: PHP&amp;#39;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&amp;#39;s `EVP_VerifyFinal()` return `-1` triggers the bypass.&lt;/p&gt;
&lt;p&gt;The two practical paths to `-1` we are aware of:&lt;/p&gt;
&lt;p&gt;1. **DSA / EC public key with an RSA-only algorithm.** `openssl_verify(..., $dsaKey, &amp;#34;RSA-SHA256&amp;#34;)` returns `int(-1)` on PHP 8.3 + OpenSSL 3.x. This is the path the PoC uses; it works against an unmodified `php:8.3-apache` lab and against any deployment using the runtime stack YesWiki&amp;#39;s own docker image ships.
2. **Older PHP + older OpenSSL** where any unrecognised digest name returned `-1` rather than `false`. The reporting research mentions this path; on current stacks `false` is returned instead…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-mv28-wj57-f57g</guid>
    </item>
  </channel>
</rss>
