p PatchFirst

PatchFirst · Latest vulnerabilities

PHP stack vulnerabilities · Page 28

Vulnerabilities published for PHP in the last 30 days: 178. Listed in the KEV catalogue: 2.

Filter vulnerabilities
PHP

Early warnings

Fresh vulnerability reports from vendor announcements and security news. These warnings do not change the security rating.

  1. php

    No fix published

    PHP: remote code execution

    According to OpenNet, PHP has a remote code execution vulnerability (CVE-2026-115560). The exact affected versions are unspecified. The report does not name a fixed version.

    What to do now: Check whether a PHP update with the fix is available and install it.

    CVE-2026-115560

Vulnerabilities: 7190

  1. CVE-2026-55555

    Low · CVSS 2.3EPSS 0.51%Fix available

    Dompdf: File existence oracle via font-face stylesheet declaration

    Dompdf is an HTML to PDF converter for PHP. Versions 3.15 and prior are vulnerable to a File Existence Oracle attack through the manipulation of the CSS @font-face directive. By providing malicious HTML that references local files via the file:// protocol repeatedly, an attacker can trigger PHP memory exhaustion. Because Dompdf behaves differently depending on whether a referenced local file exists (an existing file is processed repeatedly until it triggers an "Allowed memory size exhausted" crash, whereas a missing file fails fast or is ignored and never hits the memory limit), an attacker can use this observable discrepancy as an oracle to

    • Update to 3.1.6
    Published Updated
  2. CVE-2026-59932

    High · CVSS 7.5EPSS 0.46%Fix available

    PhpSpreadsheet: Gnumeric reader unbounded gzip expansion causes memory exhaustion

    PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. In versions 4.0.0 through 5.8.0, 3.3.0 through 3.10.6, 2.2.0 through 2.4.6, 2.0.0 through 2.1.17, and all releases up to and including 1.30.5, the Gnumeric reader reads attacker-supplied .gnumeric files into memory and, when the file starts with gzip magic bytes, calls gzdecode() on the full compressed contents without enforcing a decompressed-size limit. A very small compressed .gnumeric file can expand to data larger than the PHP memory limit and crash the process during Gnumeric::canRead() before the file is rejected or fully parsed. This is reachable through n

    • Update to 1.30.6
    • Update to 2.1.18
    • Update to 2.4.7
    • Update to 3.10.7
    • Update to 5.8.1
    Published Updated
  3. CVE-2026-59933

    High · CVSS 7.5EPSS 0.46%Fix available

    PhpSpreadsheet: XLS/OLE sector-chain self-loop causes memory exhaustion

    PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. In versions 4.0.0 through 5.8.0, 3.3.0 through 3.10.6, 2.2.0 through 2.4.6, 2.0.0 through 2.1.17, and all releases up to and including 1.30.5, the OLE reader follows sector chains from attacker-controlled XLS/OLE metadata without detecting cycles or enforcing a maximum chain length. A tiny malformed .xls/OLE file can set the small-block depot sector chain to point back to itself. During normal XLS detection, OLERead::read() appends the same sector data repeatedly until the PHP process exhausts memory. This is reachable from Reader\Xls::canRead() and therefore from

    • Update to 1.30.6
    • Update to 2.1.18
    • Update to 2.4.7
    • Update to 3.10.7
    • Update to 5.8.1
    Published Updated
  4. CVE-2026-59931

    High · CVSS 7.7EPSS 0.47%Fix available

    PhpSpreadsheet: SSRF bypass via HTTP redirect in WEBSERVICE() domain whitelist

    PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. In versions 4.0.0 through 5.8.0, 3.3.0 through 3.10.6, 2.2.0 through 2.4.6, 2.0.0 through 2.1.17, and all releases up to and including 1.30.5, the WEBSERVICE() domain whitelist can be bypassed via an HTTP redirect (SSRF). In Calculation/Web/Service.php, the webService() method validates a URL's host against the whitelist set via Spreadsheet::setDomainWhiteList(), then fetches content with file_get_contents($url, false, $ctx); because PHP's HTTP stream wrapper follows 301/302 redirects automatically (up to 20 hops) and the redirect target is never re-validated, an

    • Update to 1.30.6
    • Update to 2.1.18
    • Update to 2.4.7
    • Update to 3.10.7
    • Update to 5.8.1
    Published Updated
  5. CVE-2026-61609

    High · CVSS 7.5EPSS 0.5%Fix available

    Pterodactyl's shared global rate-limit key on login and 2FA checkpoint enables unauthenticated panel-wide authentication lockout (DoS)

    Pterodactyl is a free, open-source game server management panel. From 1.7.0 until 1.13.0, the authentication rate limiter defined in RouteServiceProvider::configureRateLimiting() applied a single global bucket to the login and two-factor checkpoint endpoints instead of keying by IP or account: the fall-through Limit::perMinute(10) covering POST /auth/login and POST /auth/login/checkpoint omitted ->by(), so Laravel derived a constant cache key (md5('authentication')) shared by every request. An unauthenticated attacker sending roughly ten requests per minute from a single IP, most cheaply against the checkpoint endpoint (which has no reCAPTCHA

    • Update to 1.13.0
    Published Updated
  6. CVE-2026-54593

    High · CVSS 8.1EPSS 0.68%Fix available

    Pterodactyl's improper JWT scoping allows subuser to upload files when not explicitly granted `file.create` permissions

    Pterodactyl is a free, open-source game server management panel. Prior to Panel version 1.12.3 and Wings version 1.12.2, the Wings /upload/file endpoint accepted any valid panel-signed JWT that contained server_uuid, user_uuid, and unique_id claims without checking the token's intended purpose; because the Panel issues JWTs carrying those same claims for lower-privilege operations such as WebSocket authentication and file-download links, an authenticated subuser could reuse one of those tokens (for example a WebSocket token obtained with only the websocket.connect permission) by replaying it against /upload/file to write arbitrary files to th

    • Update to 1.12.2
    • Update to 1.12.3
    Published Updated
  7. CVE-2026-45293

    High · CVSS 8.6EPSS 0.25%Fix available

    WordPress Coding Standards (WordPressCS) contains an arbitrary code execution vulnerability

    WordPress Coding Standards is a set of PHP_CodeSniffer rules (sniffs) that enforce WordPress coding conventions. From 0.14.1 until 3.4.1, the WordPress.WP.EnqueuedResourceParameters sniff (active in the WordPress and WordPress-Extra rulesets) reconstructed the $ver argument passed to functions such as wp_enqueue_script() and ran it through eval() inside its is_falsy() method, so a maliciously crafted argument such as 'system'('id') would execute during a scan; as a result, running PHPCS with WordPressCS over untrusted PHP (for example a CI pipeline that lints pull requests, or a developer reviewing third-party code) could lead to arbitrary co

    • Update to 3.4.1
    Published Updated
  8. CVE-2026-55579

    Critical · CVSS 9.8EPSS 0.79%Fix available

    Pheditor: Hardcoded default password 'admin' with no forced change enables full application compromise

    Pheditor is a single-file editor and file manager written in PHP. From version 2.0.1 to before version 2.0.6, Pheditor ships with a hardcoded default password admin (SHA-512 hash stored at pheditor.php:11). There is no mechanism to force a password change on first login. Any deployment using the default credentials grants an attacker full access to the file editor, file upload, and terminal features, enabling arbitrary file read/write and remote code execution. This issue has been patched in version 2.0.6.

    • Update to 2.0.6
    Published Updated
  9. CVE-2026-55578

    High · CVSS 8.8EPSS 0.67%Fix available

    Pheditor: Incomplete command sanitization in terminal feature allows RCE via pipe operator, backtick substitution, and newline injection

    Pheditor is a single-file editor and file manager written in PHP. From version 2.0.1 to before version 2.0.6, the terminal feature in Pheditor uses an incomplete character blocklist to sanitize user-supplied commands before passing them to shell_exec(). After the fix for GHSA-9643-6xjp-vx57 (which added $ to the blocklist), the characters | (single pipe), ` (backtick), and the newline byte (0x0A) remain unblocked. An authenticated user with the terminal permission (enabled by default) can leverage any of these to bypass the TERMINAL_COMMANDS allowlist and execute arbitrary OS commands as the web server user. This issue has been patched in ver

    • Update to 2.0.6
    Published Updated
  10. CVE-2026-54540

    High · CVSS 8.8EPSS 0.73%Fix available

    Authenticated terminal command whitelist bypass in Pheditor

    Pheditor is a single-file editor and file manager written in PHP. Prior to version 2.0.5, there is an authenticated terminal command whitelist bypass. The terminal feature checks whether the submitted command starts with one of the configured TERMINAL_COMMANDS values, then passes the full command string to shell_exec(). Shell command substitution such as $() is not blocked, so an authenticated user with the terminal permission can bypass a restricted command allowlist and execute arbitrary shell commands as the web server user. This issue has been patched in version 2.0.5.

    • Update to 2.0.5
    Published Updated
  11. CVE-2026-48030

    Critical · CVSS 9.9EPSS 7.55%Public exploitFix available

    Pheditor: OS Command Injection in terminal handler via unsanitized 'dir' parameter (CWE-78)

    Pheditor is a single-file editor and file manager written in PHP. From version 2.0.1 to before version 2.0.4, an OS Command Injection vulnerability in the terminal action handler allows any authenticated user to execute arbitrary OS commands by injecting shell metacharacters into the 'dir' POST parameter, completely bypassing the TERMINAL_COMMANDS whitelist and achieving full Remote Code Execution with web server privileges. This issue has been patched in version 2.0.4.

    • Update to 2.0.4
    Published Updated
  12. CVE-2026-43871

    High · CVSS 8.7EPSS 1.03%Fix available

    Apache Thrift, Apache Thrift, Apache Thrift, Apache Thrift: TCompactProtocol varint byte-count limit

    Loop with Unreachable Exit Condition ('Infinite Loop') vulnerability in Apache Thrift Python, Go, PHP and Java bindings.This issue affects Apache Thrift: before 0.24.0. Users are recommended to upgrade to version 0.24.0, which fixes the issue.

    • Update to 0.24.0
    • Update to 0.24.0-2
    Published Updated
  13. GHSA-cmwh-g2h8-c222

    High · CVSS 8.1Fix available

    Poweradmin: OIDC `sub` collation bypass in Poweradmin leading to account takeover

    ## Preface Poweradmin maps OIDC identities into local users through `oidc_user_links.oidc_subject` plus `provider_id`. In the MySQL schema, the OIDC link table explicitly uses `utf8mb4_unicode_ci`, which is case-insensitive and accent-insensitive. OIDC `sub` is a stable external subject identifier and should be matched byte-for-byte within the issuer/provider scope. The confirmed local PoC used two different OIDC users: - Victim subject: `victim-login` - Attacker subject: `victím-login` (`í`, U+00ED) MySQL reported those two subjects as equal under `utf8mb4_unicode_ci`. After the victim linked their OIDC account, the attacker authenticate

    • Update to 4.2.5
    • Update to 4.3.4
    Published Updated
  14. GHSA-rm67-g9ch-vxff

    High · CVSS 8.1Fix available

    Poweradmin: Broken access control (IDOR): any zone owner can modify DNS records in zones they do not own

    ## Affected software - Product: Poweradmin (web front-end for PowerDNS) - Version tested: master, commit 7f28c3a97 (also reachable in the 4.x release line — the record-edit code is the same) - Component: record editing (web UI) - Vulnerability type: Broken Access Control / Insecure Direct Object Reference ## Severity Any authenticated user who owns at least one zone can tamper with records in every other zone on the server. In a shared/multi-tenant Poweradmin install this is effectively a cross-tenant DNS takeover. ## Summary When you save a record edit, Poweradmin checks whether you're allowed to touch the record by looking at a zone id

    • Update to 3.9.11
    • Update to 4.2.5
    • Update to 4.3.4
    Published Updated
  15. GHSA-h4hf-v6w5-897x

    High · CVSS 8.8Fix available

    Poweradmin: API user-update endpoint leads to a non-admin reset any user's password and take over the superuser account

    ### Summary The REST API user-update endpoint (`PUT/PATCH /api/v2/users/{id}` and the V1 equivalent) does not enforce two authorization rules that the web interface enforces. A user who holds the `user_edit_others` permission but is not a superuser can: 1. edit user accounts that belong to a superuser, and 2. set the password of any account, even without the `user_passwd_edit_others` permission. Because of this, a non-admin "user manager" role can send a single API request that changes the administrator's password, then log in as the administrator. This is a full privilege escalation and account takeover. The same actions are explicitly bl

    • Update to 4.2.5
    • Update to 4.3.4
    Published Updated
  16. GHSA-f25v-x6vr-962g

    Critical · CVSS 10Fix available

    Pheditor: Authentication Bypass in Forced Password-Change Flow via Unverified Current Password

    ## Summary The forced password-change flow, triggered when the stored password is still the default (`admin`), does not verify that the password submitted by the client actually matches the current password. Any non-empty value in `pheditor_password` is enough to reach the password-change form, and submitting `pheditor_new_password` / `pheditor_confirm_password` in the same request is enough to set an arbitrary new password and obtain an authenticated session — without ever proving knowledge of the current password. ## Root Cause `pheditor.php` line 163: ```php if (PASSWORD == hash('sha512', 'admin')) { // still default — force change pro

    • Update to 2.0.8
    Published Updated
  17. GHSA-g3hq-hphg-8fhh

    High · CVSS 8.8Fix available

    Pheditor: Terminal command-allowlist bypass via argument injection leads to RCE — surviving vector after the metacharacter-sanitization fixes

    ### Summary pheditor's terminal feature restricts callers to an allowlist of commands (`TERMINAL_COMMANDS`) and rejects shell metacharacters. The allowlist is enforced as a PREFIX match with no argument validation, and the allowlist includes binaries that grant arbitrary command execution through their own options (`find`, `git`, `php`, `tar`, `grep`). A caller can therefore run any command using only allowlisted binaries and no rejected metacharacter, escaping the allowlist restriction the terminal feature relies on. ### Relationship to the prior terminal advisories (this is a surviving, distinct vector) The prior terminal advisories were

    • Update to 2.0.7
    Published Updated
  18. CVE-2026-48012

    Medium · CVSS 4.3EPSS 0.27%Fix available

    Shopware SSO referer trust leading to an arbitrary redirect target

    Shopware is an open commerce platform. Versions 6.7.3.0 through 6.7.10.0 have an open redirect in Shopware's public SSO entry point at `GET /api/oauth/sso/auth`. When the endpoint is reached without the expected SSO session state, the application falls back to the request's `Referer` header and uses that value as the redirect destination. In the validated behavior, the server does not restrict that fallback target to same-origin URLs, does not require a relative path, and does not reject dangerous schemes such as `javascript:`. As a result, an unauthenticated request can turn this endpoint into a reusable redirect primitive whose destination

    • Update to 6.7.10.1
    Published Updated
  19. CVE-2026-48013

    Medium · CVSS 4.1EPSS 0.37%Fix available

    Shopware: SSRF in Media External-Link Endpoint Bypasses IP Validation

    Shopware is an open commerce platform. Prior to 6.6.10.18 and 6.7.10.1, the `/api/_action/media/external-link` endpoint allows authenticated admin users to make server-side HTTP HEAD requests to arbitrary internal IP addresses. While the parallel `uploadFromURL` flow validates target IPs against private/reserved ranges via `FileUrlValidator`, the `linkURL` flow only performs a URL format check (regex for `http://` or `https://` prefix), allowing SSRF to internal network services and cloud metadata endpoints. This issue is fixed in versions 6.6.10.18 and 6.7.10.1.

    • Update to 6.7.10.1
    Published Updated
  20. CVE-2026-47743

    High · CVSS 8.7EPSS 0.38%Fix available

    Shopper: Multiple data integrity and disclosure issues in admin Livewire components

    Shopper is a Headless e-commerce Admin Panel. Prior to 2.8.0, three related defects on admin Livewire components allowed data tampering, sensitive data disclosure, and stored XSS. First, several Livewire components in the admin panel exposed Eloquent model identifiers as public properties without the `#[Locked]` attribute. An authenticated user could rewrite the wire payload from the browser to target any record id, bypassing the implicit scoping enforced by the page routing. Second, `Customers/Create::store()` re-passed a `Hidden` `_password` form field straight into the create payload. The plaintext password was rendered into the HTML and t

    • Update to 2.8.0
    Published Updated

Check your server

Check your installed stack and versions against the current vulnerability feeds.

Check your server →