CVE-2026-2604: Evolution-data-server: evolution data server: arbitrary file deletion via inconsistent uri handling

Published Feb 16, 2026
·
Updated

A flaw was found in evolution-data-server. Inconsistent comparison logic in the addressbook file backend allows a Flatpak application with D-Bus access to craft a malicious URI containing directory traversal sequences. This URI is stored without proper validation during contact creation or modification. Later, during contact deletion, the URI is processed with a less strict check, leading to the deletion of arbitrary files on the host filesystem. This could potentially include critical Flatpak override files.

Other sources

Description

The addressbook file backend implementation in e-book-backend-file.c manages contact photo and logo files stored on disk. When a contact is created or modified, inline image data is converted to a file on disk and the vCard is updated with a file URI pointing to the stored file. When a contact is deleted or its image changes, the old file is removed from disk. Both the PHOTO and LOGO vCard fields go through this same code path. Two different functions implement security checks on these URIs, using inconsistent comparison logic. During contact creation and modification, maybetransformvcardfieldforphoto() calls isbackendowneduri() to determine whether an incoming URI belongs to the backend. This function extracts the directory component with gpathgetdirname() and performs an exact match against the photo directory using strcmp():

dirname = gpathgetdirname (filename); owneduri = bf->priv->photodirname && (strcmp (dirname, bf->priv->photodirname) == 0);

A URI containing ../ sequences will not match, so isbackendowneduri() returns FALSE. The URI is then stored verbatim in the SQLite database without transformation. During contact deletion, bookbackendfileremovecontactssync() calls maybedeleteunuseduris(), which retrieves the stored URIs for both the ECONTACTPHOTO and ECONTACTLOGO fields via checkremoveuriforfield() and passes each to maybedeleteuri(). This function performs a prefix match on the raw, unresolved path using strncmp():

if (bf->priv->photodirname && !strncmp (bf->priv->photodirname, filename, strlen (bf->priv->photodirname))) { d (gprint ("Deleting uri file: %s\n", filename)); / Deleting uris should not cause the backend to fail to update a contact so the best we can do from here is log warnings when we fail to unlink a file from the disk. / if (!removefile (filename, &error)) { gwarning ("Unable to cleanup photo uri: %s", error->message); gerrorfree (error); } }

Since strncmp() only checks that the path starts with the photo directory, a URI containing ../ sequences after the prefix will pass this check. The removefile() function then calls gunlink(), which resolves the ../ sequences, deleting the traversed target file. Because maybedeleteunuseduris() processes both fields independently, a single contact can be used to delete two arbitrary files in one operation. The Evolution backend server exposes the D-Bus service org.gnome.evolution.dataserver.AddressBook, that can be used in order to manage contacts. A Flatpak application with access to this D-Bus service can exploit this issue in order to gain arbitrary file deletion on the host filesystem. A simple proof of concept script shhowcasing this issue can be found in the attached file. Impact

A Flatpak application with D-Bus access to the addressbook service can delete arbitrary files on the host, potentially including Flatpak override files, which are typically used to remove permissions at varying levels of granularity, from app-specific to user- or system-wide. Recommended solution

Canonicalize the file path in maybedeleteuri() using realpath() before performing the prefix comparison, ensuring that ../ sequences are resolved.

Red Hat

Affected Software

1 affected componentFixes available
debian/evolution-data-server<=3.38.3-1+deb11u2, <=3.46.4-2, <=3.56.2-0+deb13u1
3.38.3-1+deb11u33.56.2-8

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/evolution-data-server to a version that resolves this vulnerability.

    Fixed in 3.38.3-1+deb11u3Fixed in 3.56.2-8

Event History

Feb 16, 2026
Data Sourced
via Red Hat·09:29 PM
DescriptionSeverityAffected Software
Jun 1, 2026
Data Sourced
via Debian·03:33 PM
DescriptionAffected Software
Jun 2, 2026
Data Sourced
via Ubuntu·03:33 PM
RemedyDescriptionSeverityAffected Software
Jun 16, 2026
CVE Published
via MITRE·09:35 PM
Data Sourced
via MITRE·09:35 PM
DescriptionSeverityWeakness
Jun 17, 2026
Data Sourced
via NVD·01:20 PM
DescriptionSeverityWeakness
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-2604?

The severity of CVE-2026-2604 is medium, rated at 5.6.

2

How do I fix CVE-2026-2604?

To fix CVE-2026-2604, update the evolution-data-server package to a version that includes the security patches addressing this vulnerability.

3

What impact does CVE-2026-2604 have on my system?

CVE-2026-2604 allows arbitrary file deletion via inconsistent URI handling, potentially leading to loss of important data.

4

Who is affected by CVE-2026-2604?

Users of the evolution-data-server, particularly those running Flatpak applications with D-Bus access, are affected by CVE-2026-2604.

5

What is the nature of the vulnerability in CVE-2026-2604?

CVE-2026-2604 is a vulnerability involving inconsistent comparison logic in the addressbook file backend that allows for directory traversal.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203