Fedora Account System
Red Hat Associate
Red Hat Customer
=AddRepo()= and =RemoveRepo()= (=package_manager_dnf.go:22-37=) build the destination path with =filepath.Join("/etc/yum.repos.d/", canonicalizeRepoName(name, ".repo"))=. =canonicalizeRepoName()= (=util.go:13-15=) only replaces spaces with underscores and appends a =.repo= suffix — it never strips =/= or =..=. Because =filepath.Join= calls =filepath.Clean= internally, a broker-supplied =name= such as =../../etc/cron.d/evil= resolves outside =/etc/yum.repos.d/=, letting =os.WriteFile= write attacker-controlled content to any root-writable path ending in =.repo=, and =RemoveRepo='s =os.Remove= delete any such path. Neither function is gated by the =allowPatterns= allowlist. The worker's systemd unit runs =User=root=.
This issue has been addressed in the following products: Red Hat Enterprise Linux 10 Via RHSA-2026:96082 https://access.redhat.com/errata/RHSA-2026:96082