Skip to main content

Faktory CVE-2026-63404

HIGH
Insecure Temporary File (CWE-377)
2026-08-25 security-advisories@github.com
7.3
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Obtain local unprivileged shell on Faktory host
  2. Delivery
    Compile or stage malicious Redis loadmodule shared library in world-readable path
  3. Exploit
    Pre-create /tmp/redis.conf with loadmodule directive pointing to staged library
  4. Install
    Trigger or await Faktory service restart
  5. C2
    Faktory bootstrapper uses planted config verbatim
  6. Execute
    Redis loads attacker module in root-owned process
  7. Impact
    Execute arbitrary code as root

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Secure temp file creation
Exploitation Conditions

Exploitation requires: (1) a local unprivileged user account on the target host; (2) Faktory deployed via the official systemd unit file, which runs both Faktory and its redis-server child as root - non-systemd or non-root deployments significantly reduce impact; (3) the ability to write to /tmp, which is world-writable by default on Linux; and (4) Faktory must start or restart after the attacker stages /tmp/redis.conf, providing a reliable window during any reboot or service restart. Exploitation is NOT possible from a remote unauthenticated attacker - local account access is mandatory. Non-default configurations that run Faktory as an unprivileged user under systemd reduce the privilege escalation impact to lateral movement rather than root access.

Impact

The CVSS 4.0 score of 7.3 with vector AV:L/AC:L/AT:P/PR:L reflects a realistic assessment: exploitation requires local unprivileged access and a specific timing condition (AT:P) - the attacker must stage the malicious file before Faktory starts or restarts. Despite requiring local access, the impact metrics are all High because full code execution as root is achievable via the Redis loadmodule mechanism. No KEV listing and no public exploit code exist at time of analysis, which tempers urgency somewhat, but the attack path is mechanically straightforward for any local user on a multi-tenant Linux host running Faktory under systemd. The EPSS score was not provided in the source data, so comparative probability ranking against the broader CVE population cannot be stated. The real-world risk is highest in shared hosting or CI/CD environments where multiple unprivileged users share a host and Faktory is managed as a system service - environments that regularly restart services (e.g., after updates or reboots) provide reliable exploitation windows without any race-condition timing skill required.

Exploit ScenarioDerived

An unprivileged local user on a Faktory host creates /tmp/redis.conf containing a loadmodule directive pointing to a compiled shared library they have staged in a world-readable directory, then waits for a routine system reboot or Faktory service restart. When Faktory's bootstrapper runs, it finds the pre-existing /tmp/redis.conf, accepts it verbatim, and passes it to redis-server running as root; Redis loads the attacker's module, granting them a root shell. No public exploit code has been identified at time of analysis, but the technique requires only standard Linux tools and publicly documented Redis module APIs.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 25, 2026

Local privilege escalation to root is possible in Faktory background job server versions before 1.10.0 through an insecure temporary file flaw in its embedded Redis bootstrapper. The bootstrapper writes Redis startup configuration to the world-writable path /tmp/redis.conf and never validates or overwrites the file on subsequent boots, allowing a local unprivileged user to pre-plant a malicious config before Faktory starts. Because the official systemd unit runs both Faktory and its Redis child process as root, an attacker-supplied loadmodule directive in that config enables arbitrary native code execution as root. No public exploit has been identified at time of analysis, and the issue is fixed in version 1.10.0.

RemediationAI

Upgrade Faktory to version 1.10.0, which is confirmed fixed via the GitHub release at https://github.com/contribsys/faktory/releases/tag/v1.10.0 and the patch commit at https://github.com/contribsys/faktory/commit/0fb44c0a2b3c554857b53563ad0cf61295cd0c41. The fix relocates the Redis configuration file from /tmp to the operator-controlled StorageDirectory with 0600 permissions and always overwrites it on startup, removing both the world-writable path and the existence-check race. If immediate upgrade is not possible, a compensating control is to remove write access to /tmp for non-root users (e.g., via a private /tmp namespace using systemd's PrivateTmp=true directive in the Faktory unit file), which prevents pre-staging of the malicious config; note that this may affect other software relying on shared /tmp access. Restricting local user accounts on the Faktory host to trusted personnel also reduces the exploitable attack surface but does not eliminate the vulnerability.

Affected ProductsAI

Faktory versions prior to 1.10.0 are affected when deployed using the official systemd unit, which runs both Faktory and its embedded redis-server child process as root. The vulnerability is confirmed via the GitHub security advisory GHSA-j2vx-rpwf-w77v and the v1.10.0 release tag at https://github.com/contribsys/faktory/releases/tag/v1.10.0. No CPE string was provided in the source data; the affected component is the storage/redis.go bootstrapper within the contribsys/faktory Go module.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Faktory is a language-agnostic background job server that embeds a Redis instance for job storage, bootstrapped via storage/redis.go. The vulnerability is classified as CWE-377 (Insecure Temporary File): the bootstrapper wrote its Redis configuration to the fixed path /tmp/redis.conf using an existence check rather than an atomic create-or-replace, and with permissions that allowed pre-creation by any local user. Because /tmp is globally writable and lacks sticky-bit protections against file pre-staging, a race window exists between system boot and Faktory startup. Redis's loadmodule directive accepts a filesystem path to a native shared library, which Redis loads into its own process - when that process runs as root under systemd, this becomes a direct local-to-root privilege escalation vector. The fix (commit 0fb44c0) moves the configuration file to the operator-controlled StorageDirectory using filepath.Join and always overwrites it with mode 0600, eliminating both the predictable path and the existence-check race.

Know when Redis gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 7.3 HIGH
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.8 HIGH

Local unprivileged account required (PR:L, AV:L); scope changes to root Redis process (S:C); loadmodule grants full code execution so C/I/A all High.

3.1 AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Faktory is a language-agnostic background job server. In versions prior to 1.10.0, the embedded Redis bootstrapper is vulnerable to an insecure temporary file flaw that lets a local unprivileged user hijack the Redis configuration and escalate to root. It writes its startup configuration to a fixed, predictable, world-writable path, /tmp/redis.conf, only creating the file if it does not already exist and never validating it on later boots. Because /tmp is world-writable, a local unprivileged user can pre-create /tmp/redis.conf with attacker-chosen Redis directives before Faktory starts, and Faktory will use the planted file verbatim. Faktory only overrides the unixsocket, dir, and logfile options, leaving directives such as bind, protected-mode, requirepass, and loadmodule attacker-controlled. This lets an attacker silently expose the entire job queue over an unauthenticated network port with no visible error to the administrator. Because the official systemd unit runs Faktory, and the redis-server child it spawns, as root, an attacker can also supply a loadmodule directive to execute arbitrary native code in the root-owned Redis process, escalating from a local unprivileged user to root. This issue is fixed in version 1.10.0.

Executive ViewAI

Why It Matters

Faktory background job server versions before 1.10.0 contain a local privilege escalation vulnerability that allows unprivileged users to gain root access through insecure Redis configuration file handling. Organizations running Faktory on systems with local users face complete system compromise risk. Immediate upgrade to version 1.10.0 is required to eliminate this critical control gap.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
Low
niche background job server, limited enterprise production footprint
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Redis

View all
CVE-2026-48172 CRITICAL POC
10.0 May 21

Privilege escalation to root in the LiteSpeed User-End cPanel Plugin (versions 2.3 through before 2.4.5) lets attackers

CVE-2025-49844 CRITICAL POC
9.9 Oct 03

UAF in Redis 8.2.1 via crafted Lua scripts by authenticated users. EPSS 12.4%. Patch available.

CVE-2022-0543 CRITICAL POC
10.0 Feb 18

It was discovered, that redis, a persistent key-value database, due to a packaging issue, is prone to a (Debian-specific

CVE-2018-11218 CRITICAL POC
9.8 Jun 17

Memory Corruption was discovered in the cmsgpack library in the Lua subsystem in Redis before 3.2.12, 4.x before 4.0.10,

CVE-2025-46817 HIGH POC
7.0 Oct 03

Redis is an open source, in-memory database that persists on disk. Versions 8.2.1 and below allow an authenticated user

CVE-2015-4335 CRITICAL POC
10.0 Jun 09

Redis before 2.8.21 and 3.x before 3.0.2 allows remote attackers to execute arbitrary Lua bytecode via the eval command.

CVE-2016-8339 CRITICAL POC
9.8 Oct 28

A buffer overflow in Redis 3.2.x prior to 3.2.4 causes arbitrary code execution when a crafted command is sent. Rated cr

CVE-2026-77602 CRITICAL POC
9.9 Sep 23

Authenticated remote code execution in OpenC3 COSMOS (Ruby gem 'openc3' versions 5.1.0 through 7.2.1) lets any logged-in

CVE-2026-27574 CRITICAL POC
9.9 Feb 21

Code injection in OneUptime monitoring via custom JS monitor using vm module. PoC and patch available.

CVE-2026-84372 CRITICAL POC
9.8 Sep 01

RESP protocol command injection in Predis, the popular PHP client for Redis and Valkey, affects versions 3.0.0-RC1 throu

CVE-2021-31649 CRITICAL POC
9.8 Jun 24

In applications using jfinal 4.9.08 and below, there is a deserialization vulnerability when using redis,may be vulnerab

CVE-2020-11981 CRITICAL POC
9.8 Jul 17

An issue was found in Apache Airflow versions 1.10.10 and below. Rated critical severity (CVSS 9.8), this vulnerability

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy