Faktory CVE-2026-63404
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain local unprivileged shell on Faktory host
-
DeliveryCompile or stage malicious Redis loadmodule shared library in world-readable path
-
ExploitPre-create /tmp/redis.conf with loadmodule directive pointing to staged library
-
InstallTrigger or await Faktory service restart
-
C2Faktory bootstrapper uses planted config verbatim
-
ExecuteRedis loads attacker module in root-owned process
-
ImpactExecute 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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.
Primary rating from Vendor (github).
CVSS VectorVendor: github
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.
Articles & Coverage 1
Executive ViewAI
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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Privilege escalation to root in the LiteSpeed User-End cPanel Plugin (versions 2.3 through before 2.4.5) lets attackers
UAF in Redis 8.2.1 via crafted Lua scripts by authenticated users. EPSS 12.4%. Patch available.
It was discovered, that redis, a persistent key-value database, due to a packaging issue, is prone to a (Debian-specific
Memory Corruption was discovered in the cmsgpack library in the Lua subsystem in Redis before 3.2.12, 4.x before 4.0.10,
Redis is an open source, in-memory database that persists on disk. Versions 8.2.1 and below allow an authenticated user
Redis before 2.8.21 and 3.x before 3.0.2 allows remote attackers to execute arbitrary Lua bytecode via the eval command.
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
Authenticated remote code execution in OpenC3 COSMOS (Ruby gem 'openc3' versions 5.1.0 through 7.2.1) lets any logged-in
Code injection in OneUptime monitoring via custom JS monitor using vm module. PoC and patch available.
RESP protocol command injection in Predis, the popular PHP client for Redis and Valkey, affects versions 3.0.0-RC1 throu
In applications using jfinal 4.9.08 and below, there is a deserialization vulnerability when using redis,may be vulnerab
An issue was found in Apache Airflow versions 1.10.10 and below. Rated critical severity (CVSS 9.8), this vulnerability
NVD
CVE.org
EPSS
GitHub
Exploit-DB