Cloudanix VulnDB

CVE-2024-45339

High · 7.1

CVSS

7.1

EPSS

0.3%

Published

Jan 28, 2025

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A logging issue lets attackers with local access overwrite important system files by tricking privileged programs into following a link they create.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Data Tampering
Component
Library
Class
Race Condition
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

In glog, when the default log directory is world-writable, an attacker can predict the log file path of a privileged process and pre-create a symlink pointing to a sensitive target file; the privileged process then follows the symlink and overwrites the target.

Why it matters to the business

Privileged processes using affected logging can be tricked into destroying or corrupting critical system files, leading to denial of service, configuration loss, or privilege escalation on affected Red Hat OpenShift coreos-installer deployments.

How an attack unfolds

An attacker with local access enumerates the predictable log path, creates a symlink to a sensitive file such as /etc/shadow or a configuration file, waits for the privileged process to start logging, and causes the process to follow the symlink and overwrite the target file.

How to fix it

Upgrade coreos-installer, coreos-installer-bootinfra, coreos-installer-bootinfra-debuginfo, coreos-installer-debuginfo, and coreos-installer-debugsource packages on Red Hat OpenShift 4.9 to version 0:0.10.1-1.rhaos4.9.el8 or later; restrict log directory permissions to prevent world-writable access.

How to confirm the fix worked

Verify installed package versions match or exceed the fixed releases, confirm that glog now exits with status 2 when a log file path already exists, and test that no symlink can be followed during log initialization.

Typical attack path

  1. Identify a world-writable directory used for logs by the target process
  2. Predict the exact log file path the privileged process will create
  3. Pre-create a symlink at that path pointing to a sensitive target file
  4. Trigger or wait for the privileged process to initialize logging
  5. Observe or confirm that the sensitive target file has been overwritten

How to detect it

Search system and application logs for unexpected exits with status code 2 mentioning existing log files, inspect for symlinks in log directories that point outside expected paths, and review file modification timestamps on sensitive targets that coincide with log initialization times.

What your security team should do

  • Immediately schedule upgrades to the fixed package versions listed for each affected coreos-installer component
  • Audit and tighten permissions on any directories used for application or system logs
  • Monitor for processes unexpectedly exiting with status code 2 related to log file conflicts
  • Review privileged services that rely on glog for logging and apply least-privilege directory controls

The record

When logs are written to a widely-writable directory (the default), an unprivileged attacker may predict a privileged process's log file path and pre-create a symbolic link to a sensitive file in its place. When that privileged process runs, it will follow the planted symlink and overwrite that sensitive file. To fix that, glog now causes the program to exit (with status code 2) when it finds that the configured log file already exists.

Affected packages

Ecosystem Package Introduced Fixed
Go github.com/golang/glog 0 1.2.4
Chainguard amass 0 4.2.0-r18
Chainguard caddy 0 2.9.1-r3
Chainguard caddy-fips 0 2.9.1-r3
Chainguard caddy-man 0 2.9.1-r3
Chainguard caddy-src 0 2.9.1-r3
Chainguard cert-exporter 0 2.14.0-r5
Chainguard cert-exporter-fips 0 2.14.0-r5
Chainguard cluster-proportional-autoscaler 0 1.9.0-r5
Chainguard cluster-proportional-autoscaler-compat 0 1.9.0-r5
Chainguard cluster-proportional-autoscaler-fips 0 1.9.0-r3
Chainguard crossplane-provider-family-gcp 0 1.11.2-r4
Chainguard crossplane-provider-family-gcp-compat 0 1.11.2-r4
Chainguard crossplane-provider-gcp 0 1.11.2-r4
Chainguard crossplane-provider-gcp-cloudplatform 0 1.11.2-r4
Chainguard crossplane-provider-gcp-cloudplatform-compat 0 1.11.2-r4
Chainguard crossplane-provider-gcp-compute 0 1.11.2-r4
Chainguard crossplane-provider-gcp-compute-compat 0 1.11.2-r4
Chainguard crossplane-provider-gcp-container 0 1.11.2-r4
Chainguard crossplane-provider-gcp-container-compat 0 1.11.2-r4
Chainguard crossplane-provider-gcp-dns 0 1.11.2-r4
Chainguard crossplane-provider-gcp-dns-compat 0 1.11.2-r4
Chainguard crossplane-provider-gcp-family 0 1.11.2-r4
Chainguard crossplane-provider-gcp-kms 0 1.11.2-r4
Chainguard crossplane-provider-gcp-kms-compat 0 1.11.2-r4
Chainguard crossplane-provider-gcp-pubsub 0 1.11.2-r4
Chainguard crossplane-provider-gcp-pubsub-compat 0 1.11.2-r4
Chainguard crossplane-provider-gcp-storage 0 1.11.2-r4
Chainguard crossplane-provider-gcp-storage-compat 0 1.11.2-r4
Chainguard dgraph 0 24.0.5-r5
Chainguard flux-image-reflector-controller 0 0.33.0-r8
Chainguard flux-image-reflector-controller-fips 0 0.33.0-r6
Chainguard flux-image-reflector-controller-fips-iamguarded-compat 0 0.33.0-r6
Chainguard flux-image-reflector-controller-iamguarded-compat 0 0.33.0-r8
Chainguard flyte 0 1.14.1-r3
Chainguard gatekeeper-3.15 0 3.15.1-r16
Chainguard gatekeeper-3.15-compat 0 3.15.1-r16
Chainguard gatekeeper-3.15-crds 0 3.15.1-r16
Chainguard gatekeeper-3.15-crds-compat 0 3.15.1-r16
Chainguard gatekeeper-3.15-gator 0 3.15.1-r16
Chainguard gatekeeper-3.16 0 3.16.3-r13
Chainguard gatekeeper-3.16-compat 0 3.16.3-r13
Chainguard gatekeeper-3.16-crds 0 3.16.3-r13
Chainguard gatekeeper-3.16-crds-compat 0 3.16.3-r13
Chainguard gatekeeper-3.16-gator 0 3.16.3-r13
Chainguard gatekeeper-3.17 0 3.17.2-r2
Chainguard gatekeeper-3.17-compat 0 3.17.2-r2
Chainguard gatekeeper-3.17-crds 0 3.17.2-r2
Chainguard gatekeeper-3.17-crds-compat 0 3.17.2-r2
Chainguard gatekeeper-3.17-gator 0 3.17.2-r2
Chainguard gatekeeper-3.18 0 3.18.2-r4
Chainguard gatekeeper-3.18-compat 0 3.18.2-r4
Chainguard gatekeeper-3.18-crds 0 3.18.2-r4
Chainguard gatekeeper-3.18-crds-compat 0 3.18.2-r4
Chainguard gatekeeper-3.18-gator 0 3.18.2-r4
Chainguard gatekeeper-fips-3.15 0 3.15.1-r11
Chainguard gatekeeper-fips-3.15-compat 0 3.15.1-r11
Chainguard gatekeeper-fips-3.16 0 3.16.3-r7
Chainguard gatekeeper-fips-3.16-compat 0 3.16.3-r7
Chainguard gatekeeper-fips-3.17 0 3.17.2-r2
Chainguard gatekeeper-fips-3.17-compat 0 3.17.2-r2
Chainguard gatekeeper-fips-3.18 0 3.18.2-r4
Chainguard gatekeeper-fips-3.18-compat 0 3.18.2-r4
Chainguard gitaly-17.5 0 17.5.5-r3
Chainguard gitaly-17.6 0 17.6.4-r2
Chainguard gitaly-17.7 0 17.7.3-r1
Chainguard gitaly-17.8 0 17.8.1-r2
Chainguard gitaly-backup-17.5 0 17.5.5-r3
Chainguard gitaly-backup-17.6 0 17.6.4-r2
Chainguard gitaly-backup-17.7 0 17.7.3-r1
Chainguard gitaly-backup-17.8 0 17.8.1-r2
Chainguard gitaly-backup-fips-17.6 0 17.6.4-r2
Chainguard gitaly-backup-fips-17.7 0 17.7.3-r2
Chainguard gitaly-backup-fips-17.8 0 17.8.1-r2
Chainguard gitaly-compat-17.5 0 17.5.5-r3
Chainguard gitaly-compat-17.6 0 17.6.4-r2
Chainguard gitaly-compat-17.7 0 17.7.3-r1
Chainguard gitaly-compat-17.8 0 17.8.1-r2
Chainguard gitaly-fips-17.6 0 17.6.4-r2
Chainguard gitaly-fips-17.7 0 17.7.3-r2
Chainguard gitaly-fips-17.8 0 17.8.1-r2
Chainguard gitaly-git-17.5 0 17.5.5-r3
Chainguard gitaly-git-17.6 0 17.6.4-r2
Chainguard gitaly-git-17.7 0 17.7.3-r1
Chainguard gitaly-git-17.8 0 17.8.1-r2
Chainguard gitaly-git-fips-17.6 0 17.6.4-r2
Chainguard gitaly-git-fips-17.7 0 17.7.3-r2
Chainguard gitaly-git-fips-17.8 0 17.8.1-r2
Chainguard gitaly-init-cgroups-17.5 0 17.5.5-r3
Chainguard gitaly-init-cgroups-17.6 0 17.6.4-r2
Chainguard gitaly-init-cgroups-17.7 0 17.7.3-r1
Chainguard gitaly-init-cgroups-17.8 0 17.8.1-r2
Chainguard gitaly-init-cgroups-compat-17.5 0 17.5.5-r3
Chainguard gitaly-init-cgroups-compat-17.6 0 17.6.4-r2
Chainguard gitaly-init-cgroups-compat-17.7 0 17.7.3-r1
Chainguard gitaly-init-cgroups-compat-17.8 0 17.8.1-r2
Chainguard gitaly-init-cgroups-fips-17.6 0 17.6.4-r2
Chainguard gitaly-init-cgroups-fips-17.7 0 17.7.3-r2
Chainguard gitaly-init-cgroups-fips-17.8 0 17.8.1-r2
Chainguard go-ipfs-fips 0 0.32.1-r5
Chainguard google-osconfig-agent 0 20250122.00-r2
Chainguard grafana-10.4 0 10.4.15-r2
Chainguard grafana-10.4-oci-compat 0 10.4.15-r2
Chainguard grafana-11.0 0 11.0.10-r2
Chainguard grafana-11.1 0 11.1.11-r1
Chainguard grafana-11.1-oci-compat 0 11.1.11-r1
Chainguard grafana-11.2 0 11.2.10.01-r7
Chainguard grafana-11.2-oci-compat 0 11.2.10.01-r7
Chainguard grafana-fips-10.4 0 10.4.15-r1
Chainguard grafana-fips-10.4-oci-compat 0 10.4.15-r1
Chainguard grafana-fips-11.0 0 11.0.10-r2
Chainguard grafana-fips-11.0-oci-compat 0 11.0.10-r2
Chainguard grafana-fips-11.1 0 11.1.11-r2
Chainguard grafana-fips-11.1-oci-compat 0 11.1.11-r2
Chainguard grafana-fips-11.2 0 11.2.6-r1
Chainguard grafana-fips-11.2-oci-compat 0 11.2.6-r1
Chainguard grafana-mimir 0 2.15.0-r4
Chainguard grafana-mimir-fips 0 2.15.0-r3
Chainguard grafana-mimir-metaconvert 0 2.15.0-r4
Chainguard grafana-mimir-mimirtool 0 2.15.0-r4
Chainguard grafana-mimir-query-tee 0 2.15.0-r4
Chainguard grafana-oci-compat 0 11.0.10-r2
Chainguard grafana-oci-compat 0 11.1.11-r1
Chainguard ipfs 0 0.33.0-r0
Chainguard kube-bench-configs-fips 0 0.10.0-r0
Chainguard kube-bench-fips 0 0.10.0-r0
Chainguard kubeflow 0 1.10.0-r3
Chainguard kubeflow-access-management 0 1.10.0-r3
Chainguard kubeflow-access-management-compat 0 1.10.0-r3
Chainguard kubeflow-access-management-fips 0 1.10.0-r2
Chainguard kubeflow-access-management-fips-compat 0 1.10.0-r2
Chainguard kubeflow-admission-webhook 0 1.10.0-r3
Chainguard kubeflow-admission-webhook-compat 0 1.10.0-r3
Chainguard kubeflow-admission-webhook-fips 0 1.10.0-r2
Chainguard kubeflow-admission-webhook-fips-compat 0 1.10.0-r2
Chainguard kubeflow-fips 0 1.10.0-r2
Chainguard kubeflow-notebook-controller 0 1.10.0-r3
Chainguard kubeflow-notebook-controller-compat 0 1.10.0-r3
Chainguard kubeflow-notebook-controller-fips 0 1.10.0-r2
Chainguard kubeflow-notebook-controller-fips-compat 0 1.10.0-r2
Chainguard kubeflow-pipelines 0 2.4.0-r2
Chainguard kubeflow-pipelines-apiserver 0 2.4.0-r2
Chainguard kubeflow-pipelines-cache-deployer 0 2.4.0-r2
Chainguard kubeflow-pipelines-cache-deployer-compat 0 2.4.0-r2
Chainguard kubeflow-pipelines-cache_server 0 2.4.0-r2
Chainguard kubeflow-pipelines-frontend 0 2.4.0-r2
Chainguard kubeflow-pipelines-metadata-envoy-config 0 2.4.0-r2
Chainguard kubeflow-pipelines-metadata-writer 0 2.4.0-r2
Chainguard kubeflow-pipelines-metadata-writer-compat 0 2.4.0-r2
Chainguard kubeflow-pipelines-persistence_agent 0 2.4.0-r2
Chainguard kubeflow-pipelines-scheduledworkflow 0 2.4.0-r2
Chainguard kubeflow-pipelines-viewer-crd-controller 0 2.4.0-r2
Chainguard kubeflow-profile-controller 0 1.10.0-r3
Chainguard kubeflow-profile-controller-compat 0 1.10.0-r3
Chainguard kubeflow-profile-controller-fips 0 1.10.0-r2
Chainguard kubeflow-profile-controller-fips-compat 0 1.10.0-r2
Chainguard kubeflow-pvcviewer-controller 0 1.10.0-r3
Chainguard kubeflow-pvcviewer-controller-compat 0 1.10.0-r3
Chainguard kubeflow-pvcviewer-controller-fips 0 1.10.0-r2
Chainguard kubeflow-pvcviewer-controller-fips-compat 0 1.10.0-r2
Chainguard kubeflow-tensorboard-controller 0 1.10.0-r3
Chainguard kubeflow-tensorboard-controller-compat 0 1.10.0-r3
Chainguard kubeflow-tensorboard-controller-fips 0 1.10.0-r2
Chainguard kubeflow-tensorboard-controller-fips-compat 0 1.10.0-r2
Chainguard kyverno-1.11 0 1.11.5-r10
Chainguard kyverno-1.11 0 1.11.5-r16
Chainguard kyverno-1.12 0 1.12.7-r2
Chainguard kyverno-1.13 0 1.13.2-r7
Chainguard kyverno-background-controller-1.11 0 1.11.5-r10
Chainguard kyverno-background-controller-1.11 0 1.11.5-r16
Chainguard kyverno-background-controller-1.12 0 1.12.7-r2
Chainguard kyverno-background-controller-1.13 0 1.13.2-r7
Chainguard kyverno-background-controller-fips-1.11 0 1.11.5-r15
Chainguard kyverno-background-controller-fips-1.12 0 1.12.7-r2
Chainguard kyverno-background-controller-fips-1.13 0 1.13.2-r5
Chainguard kyverno-cleanup-controller-1.11 0 1.11.5-r10
Chainguard kyverno-cleanup-controller-1.11 0 1.11.5-r16
Chainguard kyverno-cleanup-controller-1.12 0 1.12.7-r2
Chainguard kyverno-cleanup-controller-1.13 0 1.13.2-r7
Chainguard kyverno-cleanup-controller-fips-1.11 0 1.11.5-r15
Chainguard kyverno-cleanup-controller-fips-1.12 0 1.12.7-r2
Chainguard kyverno-cleanup-controller-fips-1.13 0 1.13.2-r5
Chainguard kyverno-cli-1.11 0 1.11.5-r10
Chainguard kyverno-cli-1.11 0 1.11.5-r16
Chainguard kyverno-cli-1.12 0 1.12.7-r2
Chainguard kyverno-cli-1.13 0 1.13.2-r7
Chainguard kyverno-cli-fips-1.11 0 1.11.5-r15
Chainguard kyverno-cli-fips-1.12 0 1.12.7-r2
Chainguard kyverno-cli-fips-1.13 0 1.13.2-r5
Chainguard kyverno-fips-1.11 0 1.11.5-r15
Chainguard kyverno-fips-1.12 0 1.12.7-r2
Chainguard kyverno-fips-1.13 0 1.13.2-r5
Chainguard kyverno-init-container-1.11 0 1.11.5-r10
Chainguard kyverno-init-container-1.11 0 1.11.5-r16
Chainguard kyverno-init-container-1.12 0 1.12.7-r2
Chainguard kyverno-init-container-1.13 0 1.13.2-r7
Chainguard kyverno-init-container-fips-1.11 0 1.11.5-r15
Chainguard kyverno-init-container-fips-1.12 0 1.12.7-r2
Chainguard kyverno-init-container-fips-1.13 0 1.13.2-r5
Chainguard kyverno-notation-aws 0 1.1-r3

Related vulnerabilities