{"id":"CVE-2026-86469","aliases":["AZL-99993","DEBIAN-CVE-2026-86469","EUVD-2026-72488","GHSA-847x-vxjh-whpv","UBUNTU-CVE-2026-86469"],"status":"published","title":"Glib2: toctou symlink race in `g_file_create_replace_destination` fallback path","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","severity":{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00141,"percentile":0.03479,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-59"],"published":"2026-09-07T16:00:13Z","modified":"2026-11-06T07:45:42Z","affected":[{"source":"osv","ecosystem":"Azure Linux:3","package":"glib","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2.78.6-11"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.74.6-2","2.74.6-2+deb12u1","2.74.6-2+deb12u2","2.74.6-2+deb12u3","2.74.6-2+deb12u4","2.74.6-2+deb12u5","2.74.6-2+deb12u6","2.74.6-2+deb12u7","2.74.6-2+deb12u8","2.74.6-2+deb12u9","2.75.0-1","2.75.2-1","2.75.3-1","2.75.3-2","2.75.3-3","2.75.4-1","2.76.0-1","2.76.1-1","2.76.2-1","2.76.3-1","2.76.4-1","2.76.4-2","2.76.4-3","2.76.4-4","2.77.0-1","2.77.1-1","2.77.1-2","2.77.2-1","2.77.3-1","2.78.0-1","2.78.0-2","2.78.1-1","2.78.1-2","2.78.1-3","2.78.1-4","2.78.2-1","2.78.3-1","2.78.3-2","2.78.4-1","2.78.4-2","2.78.4-2.1","2.78.4-3","2.78.4-4","2.78.4-5","2.78.4-6","2.78.4-7","2.79.0+git20240110~g38f5ba3c-1","2.79.0+git20240110~g38f5ba3c-2","2.79.0+git20240119~62ee8bf6-1","2.79.1-1","2.79.1-1.1~exp1","2.79.2-1","2.79.3-1","2.79.3-2","2.79.3-3","2.80.0-1","2.80.0-10","2.80.0-2","2.80.0-3","2.80.0-4","2.80.0-5","2.80.0-6","2.80.0-7","2.80.0-8","2.80.0-9","2.80.1-1","2.80.2-1","2.80.2-2","2.80.3-1","2.80.4-1","2.81.0-1","2.81.1-1","2.81.1-2","2.81.1-3","2.81.2-1","2.82.0-1","2.82.0-2","2.82.1-1","2.82.2-1","2.82.2-2","2.82.2-3","2.82.3-1","2.82.3-2","2.82.4-1","2.82.4-2","2.83.2-1","2.83.2-2","2.83.3-1","2.83.3-2","2.83.4-1","2.83.5-1","2.84.0-1","2.84.0-2","2.84.1-1","2.84.1-2","2.84.1-3","2.84.2-1","2.84.3-1","2.84.4-1","2.84.4-2","2.84.4-3","2.84.4-3~deb13u1","2.84.4-3~deb13u2","2.84.4-3~deb13u3","2.84.4-3~deb13u4","2.84.4-3~deb13u5","2.85.1-1","2.85.1-2","2.85.2-2","2.85.3-1","2.85.4-1","2.86.0-1","2.86.0-2","2.86.0-3","2.86.0-4","2.86.0-5","2.86.0-6","2.86.0-7","2.86.1-1","2.86.1-2","2.86.2-1","2.86.3-1","2.86.3-2","2.86.3-3","2.86.3-4","2.86.3-5","2.87.1-1","2.87.2-1","2.87.2-2","2.87.2-3","2.87.3-1","2.87.3~gitlab0-1","2.87.5-1","2.88.0-1","2.88.1-2","2.88.2-1","2.88.3-1","2.88.3-2","2.88.3-3","2.89.2-1","2.89.3-1","2.89.3-2","2.89.3-3","2.89.3-4","2.89.3-5","2.89.4-2","2.90.0-1","2.90.1-2"]},{"source":"osv","ecosystem":"Debian:13","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.84.3-1","2.84.4-1","2.84.4-2","2.84.4-3","2.84.4-3~deb13u1","2.84.4-3~deb13u2","2.84.4-3~deb13u3","2.84.4-3~deb13u4","2.84.4-3~deb13u5","2.85.1-1","2.85.1-2","2.85.2-2","2.85.3-1","2.85.4-1","2.86.0-1","2.86.0-2","2.86.0-3","2.86.0-4","2.86.0-5","2.86.0-6","2.86.0-7","2.86.1-1","2.86.1-2","2.86.2-1","2.86.3-1","2.86.3-2","2.86.3-3","2.86.3-4","2.86.3-5","2.87.1-1","2.87.2-1","2.87.2-2","2.87.2-3","2.87.3-1","2.87.3~gitlab0-1","2.87.5-1","2.88.0-1","2.88.1-2","2.88.2-1","2.88.3-1","2.88.3-2","2.88.3-3","2.89.2-1","2.89.3-1","2.89.3-2","2.89.3-3","2.89.3-4","2.89.3-5","2.89.4-2","2.90.0-1","2.90.1-2"]},{"source":"osv","ecosystem":"Debian:14","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.84.3-1","2.84.4-1","2.84.4-2","2.84.4-3","2.84.4-3~deb13u1","2.84.4-3~deb13u2","2.84.4-3~deb13u3","2.84.4-3~deb13u4","2.84.4-3~deb13u5","2.85.1-1","2.85.1-2","2.85.2-2","2.85.3-1","2.85.4-1","2.86.0-1","2.86.0-2","2.86.0-3","2.86.0-4","2.86.0-5","2.86.0-6","2.86.0-7","2.86.1-1","2.86.1-2","2.86.2-1","2.86.3-1","2.86.3-2","2.86.3-3","2.86.3-4","2.86.3-5","2.87.1-1","2.87.2-1","2.87.2-2","2.87.2-3","2.87.3-1","2.87.3~gitlab0-1","2.87.5-1","2.88.0-1","2.88.1-2","2.88.2-1","2.88.3-1","2.88.3-2","2.88.3-3","2.89.2-1","2.89.3-1","2.89.3-2","2.89.3-3","2.89.3-4","2.89.3-5","2.89.4-2","2.90.0-1","2.90.1-2"]},{"source":"osv","ecosystem":"Ubuntu:Pro:14.04:LTS","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.38.0-1ubuntu1","2.38.1-1","2.39.1-0ubuntu1","2.39.1-0ubuntu2","2.39.1-0ubuntu3","2.39.2-0ubuntu1","2.39.2-0ubuntu2","2.39.3-0ubuntu4","2.39.4-0ubuntu1","2.39.90-0ubuntu1","2.39.91-0ubuntu2","2.39.91-0ubuntu3","2.39.92-2","2.40.0-1","2.40.0-1ubuntu1","2.40.0-2","2.40.2-0ubuntu1","2.40.2-0ubuntu1.1","2.40.2-0ubuntu1.1+esm1","2.40.2-0ubuntu1.1+esm2","2.40.2-0ubuntu1.1+esm3","2.40.2-0ubuntu1.1+esm4","2.40.2-0ubuntu1.1+esm6","2.40.2-0ubuntu1.1+esm7","2.40.2-0ubuntu1.1+esm8"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.46.1-1","2.46.1-2","2.47.1-1","2.47.3-3","2.47.4-1","2.47.5-1","2.47.6-1","2.48.0-1ubuntu3","2.48.0-1ubuntu4","2.48.1-1~ubuntu16.04.1","2.48.2-0ubuntu1","2.48.2-0ubuntu3","2.48.2-0ubuntu4","2.48.2-0ubuntu4.1","2.48.2-0ubuntu4.2","2.48.2-0ubuntu4.3","2.48.2-0ubuntu4.4","2.48.2-0ubuntu4.5","2.48.2-0ubuntu4.6","2.48.2-0ubuntu4.7","2.48.2-0ubuntu4.8","2.48.2-0ubuntu4.8+esm1","2.48.2-0ubuntu4.8+esm3","2.48.2-0ubuntu4.8+esm4","2.48.2-0ubuntu4.8+esm5","2.48.2-0ubuntu4.8+esm6"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.54.1-1ubuntu1","2.55.2-2ubuntu1","2.56.0-2ubuntu1","2.56.0-4ubuntu1","2.56.1-2ubuntu1","2.56.2-0ubuntu0.18.04.1","2.56.2-0ubuntu0.18.04.2","2.56.3-0ubuntu0.18.04.1","2.56.4-0ubuntu0.18.04.2","2.56.4-0ubuntu0.18.04.3","2.56.4-0ubuntu0.18.04.4","2.56.4-0ubuntu0.18.04.5","2.56.4-0ubuntu0.18.04.6","2.56.4-0ubuntu0.18.04.7","2.56.4-0ubuntu0.18.04.8","2.56.4-0ubuntu0.18.04.9","2.56.4-0ubuntu0.18.04.9+esm3","2.56.4-0ubuntu0.18.04.9+esm4","2.56.4-0ubuntu0.18.04.9+esm5","2.56.4-0ubuntu0.18.04.9+esm6"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.62.1-1","2.63.1-2","2.63.1-2ubuntu1","2.63.3-1","2.63.3-3","2.63.5-2","2.64.0-1","2.64.1-1","2.64.2-1~fakesync1","2.64.3-1~ubuntu20.04.1","2.64.6-1~ubuntu20.04.1","2.64.6-1~ubuntu20.04.2","2.64.6-1~ubuntu20.04.3","2.64.6-1~ubuntu20.04.4","2.64.6-1~ubuntu20.04.6","2.64.6-1~ubuntu20.04.7","2.64.6-1~ubuntu20.04.8","2.64.6-1~ubuntu20.04.9","2.64.6-1~ubuntu20.04.9+esm1","2.64.6-1~ubuntu20.04.9+esm2"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.68.4-1ubuntu1","2.70.1-1","2.70.2-1","2.71.0-2","2.71.1-1","2.71.2-1","2.71.3-1","2.72.0-1","2.72.1-1","2.72.4-0ubuntu1","2.72.4-0ubuntu2","2.72.4-0ubuntu2.2","2.72.4-0ubuntu2.3","2.72.4-0ubuntu2.4","2.72.4-0ubuntu2.5","2.72.4-0ubuntu2.6","2.72.4-0ubuntu2.7","2.72.4-0ubuntu2.8","2.72.4-0ubuntu2.9","2.72.4-0ubuntu2.10","2.72.4-0ubuntu2.11"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.78.0-2","2.78.1-4","2.78.3-1","2.78.3-2","2.79.1-1","2.79.2-1~ubuntu1","2.79.3-3ubuntu5","2.80.0-6ubuntu1","2.80.0-6ubuntu3","2.80.0-6ubuntu3.1","2.80.0-6ubuntu3.2","2.80.0-6ubuntu3.4","2.80.0-6ubuntu3.5","2.80.0-6ubuntu3.6","2.80.0-6ubuntu3.7","2.80.0-6ubuntu3.8","2.80.0-6ubuntu3.9","2.80.0-6ubuntu3.10"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.88.0-1","2.88.1-2","2.89.2-1","2.89.3-3","2.89.3-4","2.90.0-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"glib2.0","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.86.0-2","2.86.1-1","2.86.1-2","2.86.2-1","2.86.3-1","2.86.3-4","2.87.2-2","2.87.2-3","2.87.3-1","2.88.0-1","2.88.0-1ubuntu0.1"]}],"products":[{"vendor":"red hat","product":"red hat enterprise linux 10"},{"vendor":"red hat","product":"red hat enterprise linux 6"},{"vendor":"red hat","product":"red hat enterprise linux 7"},{"vendor":"red hat","product":"red hat enterprise linux 8"},{"vendor":"red hat","product":"red hat enterprise linux 9"},{"vendor":"red hat","product":"red hat hardened images"},{"vendor":"red hat","product":"red hat openshift ai (rhoai)"},{"vendor":"red hat","product":"red hat openshift container platform 4"},{"vendor":"red hat","product":"red hat openshift container platform 5"}],"references":[{"url":"https://access.redhat.com/security/cve/CVE-2026-86469","tags":["vdb-entry","x_refsource_REDHAT"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2473839","tags":["issue-tracking","x_refsource_REDHAT"]},{"url":"https://gitlab.gnome.org/GNOME/glib/-/blob/main/gio/glocalfileoutputstream.c"},{"url":"https://gitlab.gnome.org/GNOME/glib/-/work_items/4044","tags":["exploit"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-86469","tags":["web"]},{"url":"https://github.com/advisories/GHSA-847x-vxjh-whpv"},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-86469","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-86469","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-86469","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-86469","title":"Glib2: toctou symlink race in `g_file_create_replace_destination` fallback path","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","status":"published","published":"2026-09-07T16:00:13.925Z","modified":"2026-11-06T07:45:42.653Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"medium","assessor":"cna"}],"cwes":["CWE-59"],"updated_at":"2026-11-06T08:57:32.08691Z"}],"euvd":[{"id":"EUVD-2026-72488","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","status":"published","published":"2026-09-07T16:00:13Z","modified":"2026-11-06T07:45:42Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-06T09:04:28.113071Z"}],"ghsa":[{"id":"GHSA-847x-vxjh-whpv","title":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION...","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","status":"published","published":"2026-09-07T18:31:32Z","modified":"2026-09-07T18:31:38Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"cwes":["CWE-59"],"updated_at":"2026-11-02T15:11:27.823827Z"}],"nvd":[{"id":"CVE-2026-86469","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","status":"published","published":"2026-09-07T16:17:30.713Z","modified":"2026-11-06T08:17:37.87Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"medium","assessor":"secondary"}],"cwes":["CWE-59"],"updated_at":"2026-11-06T11:59:57.113048Z"}],"osv":[{"id":"DEBIAN-CVE-2026-86469","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","status":"published","published":"2026-09-07T16:17:30.713Z","modified":"2026-11-07T09:47:31.533521041Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-07T10:14:39.995311Z"},{"id":"UBUNTU-CVE-2026-86469","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","status":"published","published":"2026-09-07T16:17:00Z","modified":"2026-11-04T09:30:03.522420092Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"medium"}],"updated_at":"2026-11-04T09:34:03.871859Z"},{"id":"AZL-99993","title":"CVE-2026-86469 affecting package glib 2.78.6-11","description":"A flaw was found in GLib2. When g_file_replace() is used with G_FILE_CREATE_REPLACE_DESTINATION and creating the .goutputstream-XXXXXX temporary file fails, the library unlinks the destination and recreates it without exclusive creation or symlink protection. A local attacker who can write to the destination directory can win that race and redirect the write to another file.","status":"published","published":"2026-09-07T16:17:30Z","modified":"2026-11-05T05:40:51Z","updated_at":"2026-11-05T16:41:35.156479Z"}]}}
