Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCompromise release asset or gain on-path position
-
DeliveryServe malicious phar in place of legitimate build
-
ExploitOperator runs Scotty self-update
-
ExecutionSelfUpdater::update installs phar without integrity check
-
ImpactAttacker code executes as the tool user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Code integrity verification
|
| Exploitation Conditions | Requires that the attacker can tamper with the phar delivered to SelfUpdater::update - e.g. compromise of the GitHub release asset/maintainer token, a malicious mirror, or an on-path MITM of the download (the pre-1.4.3 code performs no signature or hash verification). It also requires user interaction (UI:P): an operator must actively invoke Scotty's self-update. Affected versions are Scotty up to and including 1.4.2 (cpe:2.3:a:spatie:scotty); the fix in 1.4.3 adds ed25519 signature verification, so patched installations that ship the signing key are not exploitable. Limiting factors: the delivery channel is normally GitHub over HTTPS, so plain MITM is impractical without breaking TLS, and exploitation is contingent on a maintainer/release-channel compromise plus a user-triggered update. |
| Impact | This is a supply-chain/self-update integrity flaw (CWE-494) in spatie Scotty's SelfUpdater. The vendor CVSS 4.0 base score is 5.3 (AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L), treating each impact as Low - but this is arguably conservative: successful substitution of the downloaded phar yields arbitrary code execution when the tool next runs, which is a full integrity/availability/confidentiality compromise of the host running Scotty. The countervailing factor is that exploitation is NOT low-complexity in practice: the attacker must be able to tamper with the download (compromise the GitHub release/maintainer account, or achieve an on-path MITM), so I assess AC:H rather than the vendor's AC:L. Exploitation status: no public exploit identified at time of analysis - there is no EPSS score, no CISA KEV listing, and no POC in the references (VulDB advisory and GitHub issue/commit only). The E:X (Exploit Maturity: Not Defined) in the vector confirms exploitation maturity is unspecified. Net: a legitimate integrity/supply-chain weakness worth patching, but not an emergency - it requires a privileged position in the delivery channel plus a user running the self-update, so it is a moderate, targeted-risk issue rather than a mass-exploitable one. Note the CVSS is a 4.0 vector (no 3.1 provided), and the 'Information Disclosure' tag conflicts with the actual weakness class (code integrity / potential code execution). |
| Exploit ScenarioDerived | An attacker who compromises the release channel (GitHub release asset, maintainer token) or achieves an on-path position replaces the Scotty phar served to |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 18, 2026
Missing integrity verification in spatie Scotty's self-update handler (SelfUpdater::update in app/Updater/SelfUpdater.php) allows a tampered release artifact to be downloaded and installed as the running application in versions up to and including 1.4.2. Because the updater fetches the phar without validating a signature or hash, an attacker who can substitute the distributed artifact - for example through a compromised GitHub release or maintainer credential, a malicious mirror, or interception of the download - gains execution of arbitrary PHP within the Scotty process once an operator triggers the self-update; CVSS 4.0 lists PR:N (unauthenticated) with UI:P, so user interaction is required but no prior authentication is. No public exploit code has been identified at time of analysis and the issue is not listed in CISA KEV; the vendor-supplied CVSS 4.0 base score is 5.3, while our independent assessment rates it higher under CVSS 3.1 (AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H) because of the high integrity and confidentiality impact of replacing the application binary.
RemediationAI
Apply the vendor-released patch by upgrading to Scotty 1.4.3 or later, which adds ed25519 signature verification of the downloaded phar and its detached .sig; the fix is published at https://github.com/spatie/scotty/releases/tag/1.4.3 and the code change is https://github.com/spatie/scotty/commit/4b4e11bfc98e3a2159bb2b3d9b040293fcc44744. Confirm after upgrading that the running build contains a populated ReleaseSigningKey::PUBLIC_KEY (the commit ships the base64 public key "znfegvaUBGmI3XrzY9HpeSZLkqSy0ipITlxkqfu0NJs="), since signature enforcement is only meaningful when the correct key is embedded; note that releases signed with a mismatched key are deliberately failed by the build script, so a misconfigured key blocks updates rather than silently bypassing verification. If upgrading is not immediately possible, the most effective compensating control is to disable or restrict use of the Scotty self-update command in production and install new versions manually from a trusted source, accepting the operational cost of losing automated upgrades; additionally pin and verify artifact hashes out-of-band before deployment, restrict which operator accounts may invoke the updater (the flaw still requires a user-triggered update), and protect release-channel credentials - scope the GitHub token, enforce MFA, and monitor release assets for unauthorized modification - since exploitation depends on the ability to substitute the distributed phar or intercept its delivery (plain on-path tampering is impractical over HTTPS without breaking TLS). Detailed advisory information is available at https://vuldb.com/vuln/407451 and https://github.com/spatie/scotty/issues/21.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is an instance of CWE-494 (Download of Code Without Integrity Check) in a self-updating PHP CLI application. Scotty ships as a PHAR archive; the SelfUpdater component retrieves a new phar for a requested version and commits it over the current installation, and prior to 1.4.3 it never verified that the downloaded artifact actually came from Spatie. The upstream fix commit 4b4e11bfc98e3a2159bb2b3d9b040293fcc44744 introduces an ed25519 (libsodium) signing pipeline: a ReleaseSigningKey class holds the base64-encoded public key baked into each build, a SignatureVerifier verifies a detached signature over the message formed by SignatureVerifier::signedMessage($version, $pharContents), and the build workflow signs each phar and publishes a companion .sig file (the updater now also fetches "{$downloadUrl}.sig"). The private key is held in the SCOTTY_RELEASE_SIGNING_KEY repository secret, and the signing script refuses to publish a phar that cannot be verified against the embedded public key, so a key mismatch fails the release rather than shipping an uninstallable artifact. The CPE string cpe:2.3:a:spatie:scotty:*:*:*:*:*:*:*:* is a wildcard vendor/product entry for the spatie Scotty package; per the advisory, the affected range is through 1.4.2 and the fixed build is 1.4.3.
Know when Scotty 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:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Successful phar substitution yields arbitrary code execution (C:H/I:H/A:H); AC:H because it requires compromising the release channel or MITM, UI:R because an operator must run the self-update.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
DescriptionCVE.org
A vulnerability was identified in spatie Scotty up to 1.4.2. Affected is the function SelfUpdater::update of the file app/Updater/SelfUpdater.php of the component Self Update Handler. Such manipulation leads to download of code without integrity check. It is possible to launch the attack remotely. Upgrading to version 1.4.3 is able to address this issue. The name of the patch is 4b4e11bfc98e3a2159bb2b3d9b040293fcc44744. It is advisable to upgrade the affected component.
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.
EUVD-2026-83165
GHSA-m88j-9w7j-676j
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB