<?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>Tue, 06 Oct 2026 14:57:41 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-274632</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-274632</link>
      <description>EUVD-2026-274632</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-274632</guid>
    </item>
    <item>
      <title>fkie_cve-2026-27898</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-27898</link>
      <description>&lt;p&gt;Vaultwarden is an unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs. Prior to version 1.35.4, an authenticated regular user can specify another user’s cipher_id and call &amp;#34;PUT /api/ciphers/{id}/partial&amp;#34; Even though the standard retrieval API correctly denies access to that cipher, the partial update endpoint returns 200 OK and exposes cipherDetails (including name, notes, data, secureNote, etc.). This issue has been patched in version 1.35.4.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Vaultwarden is an unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs. Prior to version 1.35.4, an authenticated regular user can specify another user’s cipher_id and call &amp;#34;PUT /api/ciphers/{id}/partial&amp;#34; Even though the standard retrieval API correctly denies access to that cipher, the partial update endpoint returns 200 OK and exposes cipherDetails (including name, notes, data, secureNote, etc.). This issue has been patched in version 1.35.4.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-27898</guid>
    </item>
    <item>
      <title>GHSA-w9f8-m526-h7fh — Vaultwarden has Unauthorized Access via Partial Update API on Another User’s Cipher</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-w9f8-m526-h7fh</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: vaultwarden&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;In the test environment, it was confirmed that an authenticated regular user can specify another user’s `cipher_id` and call:&lt;/p&gt;
&lt;p&gt;```
PUT /api/ciphers/{id}/partial
```&lt;/p&gt;
&lt;p&gt;Even though the standard retrieval API correctly denies access to that cipher, the partial update endpoint returns **200 OK** and exposes `cipherDetails` (including `name`, `notes`, `data`, `secureNote`, etc.).&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;`put_cipher_partial` retrieves the target Cipher but does **not perform ownership or access control checks** before returning `to_json`.
Authorization checks present in the normal update API are missing here.
src/api/core/ciphers.rs:717&lt;/p&gt;
&lt;p&gt;```rust
let Some(cipher) = Cipher::find_by_uuid(&amp;amp;cipher_id, &amp;amp;conn).await else {
    err!(&amp;#34;Cipher doesn&amp;#39;t exist&amp;#34;)
};&lt;/p&gt;
&lt;p&gt;if let Some(ref folder_id) = data.folder_id {
    if Folder::find_by_uuid_and_user(folder_id, &amp;amp;headers.user.uuid, &amp;amp;conn).await.is_none() {
        err!(&amp;#34;Invalid folder&amp;#34;, &amp;#34;Folder does not exist or belongs to another user&amp;#34;);
    }
}&lt;/p&gt;
&lt;p&gt;// Move cipher
cipher.move_to_folder(data.folder_id.clone(), &amp;amp;headers.user.uuid, &amp;amp;conn).await?;&lt;/p&gt;
&lt;p&gt;// Update favorite
cipher.set_favorite(Some(data.favorite), &amp;amp;headers.user.uuid, &amp;amp;conn).await?;&lt;/p&gt;
&lt;p&gt;Ok(Json(cipher.to_json(&amp;amp;headers.host, &amp;amp;headers.user.uuid, None, CipherSyncType::User, &amp;amp;conn).await?))
```&lt;/p&gt;
&lt;p&gt;By comparison, the standard update API includes an explicit authorization check:
src/api/core/ciphers.rs:688&lt;/p&gt;
&lt;p&gt;```rust
if !cipher.is_write_accessible_to_user(&amp;amp;headers.user.uuid, &amp;amp;conn).await {
    err!(&amp;#34;Ci…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: vaultwarden&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;In the test environment, it was confirmed that an authenticated regular user can specify another user’s `cipher_id` and call:&lt;/p&gt;
&lt;p&gt;```
PUT /api/ciphers/{id}/partial
```&lt;/p&gt;
&lt;p&gt;Even though the standard retrieval API correctly denies access to that cipher, the partial update endpoint returns **200 OK** and exposes `cipherDetails` (including `name`, `notes`, `data`, `secureNote`, etc.).&lt;/p&gt;
&lt;p&gt;## Description&lt;/p&gt;
&lt;p&gt;`put_cipher_partial` retrieves the target Cipher but does **not perform ownership or access control checks** before returning `to_json`.
Authorization checks present in the normal update API are missing here.
src/api/core/ciphers.rs:717&lt;/p&gt;
&lt;p&gt;```rust
let Some(cipher) = Cipher::find_by_uuid(&amp;amp;cipher_id, &amp;amp;conn).await else {
    err!(&amp;#34;Cipher doesn&amp;#39;t exist&amp;#34;)
};&lt;/p&gt;
&lt;p&gt;if let Some(ref folder_id) = data.folder_id {
    if Folder::find_by_uuid_and_user(folder_id, &amp;amp;headers.user.uuid, &amp;amp;conn).await.is_none() {
        err!(&amp;#34;Invalid folder&amp;#34;, &amp;#34;Folder does not exist or belongs to another user&amp;#34;);
    }
}&lt;/p&gt;
&lt;p&gt;// Move cipher
cipher.move_to_folder(data.folder_id.clone(), &amp;amp;headers.user.uuid, &amp;amp;conn).await?;&lt;/p&gt;
&lt;p&gt;// Update favorite
cipher.set_favorite(Some(data.favorite), &amp;amp;headers.user.uuid, &amp;amp;conn).await?;&lt;/p&gt;
&lt;p&gt;Ok(Json(cipher.to_json(&amp;amp;headers.host, &amp;amp;headers.user.uuid, None, CipherSyncType::User, &amp;amp;conn).await?))
```&lt;/p&gt;
&lt;p&gt;By comparison, the standard update API includes an explicit authorization check:
src/api/core/ciphers.rs:688&lt;/p&gt;
&lt;p&gt;```rust
if !cipher.is_write_accessible_to_user(&amp;amp;headers.user.uuid, &amp;amp;conn).await {
    err!(&amp;#34;Ci…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-w9f8-m526-h7fh</guid>
    </item>
    <item>
      <title>WID-SEC-W-2026-0594 — Vaultwarden: Mehrere Schwachstellen</title>
      <link>https://cve.radiocsirt.org/vuln/wid-sec-w-2026-0594</link>
      <description>&lt;p&gt;Ein entfernter, authentisierter Angreifer kann mehrere Schwachstellen in Vaultwarden ausnutzen, um Sicherheitsmaßnahmen zu umgehen, erweiterte Privilegien zu erlangen, vertrauliche Informationen offenzulegen und Daten zu manipulieren.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Ein entfernter, authentisierter Angreifer kann mehrere Schwachstellen in Vaultwarden ausnutzen, um Sicherheitsmaßnahmen zu umgehen, erweiterte Privilegien zu erlangen, vertrauliche Informationen offenzulegen und Daten zu manipulieren.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/wid-sec-w-2026-0594</guid>
    </item>
  </channel>
</rss>
