p PatchFirst

PatchFirst · Latest vulnerabilities

PHP stack vulnerabilities · Page 23

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. GHSA-7mpf-4465-7fc2

    Low · CVSS 2Fix available

    Winter: Stored XSS through Backend List widget image columns

    ### Impact `Backend\Widgets\Lists::evalImageTypeValue()` interpolated the resolved image URL into a single-quoted `src` attribute without escaping it. Where a list column of type [`image`](https://wintercms.com/docs/v1.2/docs/backend/lists#image) rendered an attacker-influenced value, that value could break out of the attribute and inject arbitrary attributes — including event handlers — into the backend list, executing in the session of whichever backend user viewed it. Winter core ships no `image` list column, so a default installation is unaffected. Exploitation requires a plugin that renders attacker-influenced values through one. The

    • Update to 1.2.14
    Published Updated
  2. CVE-2026-54491

    High · CVSS 7.1EPSS 0.38%Fix available

    Koel: Incomplete fix for CVE-2026-47260 — systemic SSRF in podcast & radio fetch paths

    Koel is a free, open-source music streaming solution. Prior to 9.7.1, outbound podcast and radio fetch paths perform a point-in-time App\Helpers\Network::isPublicHost() or isSafeUrl() check without pinning the validated address, and most paths lack redirect-hop validation and do not revalidate every redirect target. PhanAn\Poddle\Poddle::fromUrl(), PodcastService::getStreamableUrl(), PodcastService::isPodcastObsolete(), App\Rules\HasAudioContentType, and App\Rules\SafeUrl can therefore follow an attacker-controlled redirect to an internal address or connect after DNS rebinding changes a public resolution to a private one. These paths are reac

    • Update to 9.7.1
    Published Updated
  3. CVE-2026-54493

    High · CVSS 7.7EPSS 0.41%Fix available

    Koel: Authenticated Full-Read SSRF via Subsonic Internet Radio Stations

    Koel is a free, open-source music streaming solution. Prior to 9.7.0, the Subsonic-compatible createInternetRadioStation.view and updateInternetRadioStation.view routes accept an authenticated user's streamUrl without the SafeUrl and HasAudioContentType checks used by the regular radio API. app/Http/Requests/Subsonic/CreateInternetRadioStationRequest.php and app/Http/Requests/Subsonic/UpdateInternetRadioStationRequest.php pass the stored URL through app/Services/RadioService.php to app/Services/Radio/RadioStreamProxy.php, where RadioStreamProxy::openStream() calls fopen($url, 'r', false, $context). Streaming /radio/stream/{id} returns the ups

    • Update to 9.7.0
    Published Updated
  4. CVE-2026-54494

    Medium · CVSS 5.3EPSS 0.43%Fix available

    Koel: Full-read SSRF via podcast enclosure URL: isPublicHost() filter_var guard does not reject NAT64 (64:ff9b::/96) or 6to4 (2002::/16) IPv6-transition wrappers of internal IPv4

    Koel is a free, open-source music streaming solution. Prior to 9.7.1, App\Helpers\Network::isPublicHost() uses filter_var() with FILTER_FLAG_NO_PRIV_RANGE and FILTER_FLAG_NO_RES_RANGE, which treats NAT64 64:ff9b::/96 and 6to4 2002::/16 wrappers of private, loopback, or link-local IPv4 addresses as public. An authenticated user can place such an address in a podcast RSS <enclosure url> and reach app/Values/Podcast/EpisodePlayable.php through EpisodePlayable::createForEpisode(), where isSafeUrl() accepts the target and Http::sink($file)->get($url) fetches it. On a host with NAT64 or 6to4 routing, Koel can request internal services or cloud meta

    • Update to 9.7.1
    Published Updated
  5. CVE-2026-54492

    Medium · CVSS 4.3EPSS 0.41%Fix available

    Koel: Authenticated Blind SSRF via Subsonic Podcast Channel Creation

    Koel is a free, open-source music streaming solution. Prior to 9.7.0, the Subsonic-compatible createPodcastChannel.view route accepts an authenticated user's private URL because app/Http/Requests/Subsonic/CreatePodcastChannelRequest.php does not apply the SafeUrl validation used by the regular podcast API. app/Http/Controllers/Subsonic/CreatePodcastChannelController.php passes the URL to app/Services/Podcast/PodcastService.php, where PodcastService::addPodcast() and createParser() invoke Poddle::fromUrl() during channel creation, causing immediate server-side requests to loopback, Docker bridge, or RFC1918 HTTP destinations. The confirmed imp

    • Update to 9.7.0
    Published Updated
  6. CVE-2026-55694

    High · CVSS 7.1EPSS 0.29%Fix available

    Snipe-IT: Chained Information Disclosure and IDOR Leads to Full EULA File Takeover

    Snipe-IT is an IT asset/license management system. Prior to 8.6.3, a restricted user can request /api/v1/users/{target_id}/eulas to obtain another user's randomized EULA filename and then download the signed file through /account/stored-eula-file/{filename}. The primary /stored-eula-file/{filename} route correctly denies access, but app/Http/Controllers/ProfileController.php and app/Http/Controllers/Api/UsersController.php do not consistently enforce ownership and target-user authorization. This issue is fixed in version 8.6.3.

    • Update to 8.6.3
    Published Updated
  7. CVE-2026-55643

    High · CVSS 7.6EPSS 0.3%Fix available

    Snipe-IT: Tenant Isolation Bypass in FMCS Floater Mode

    Snipe-IT is an IT asset/license management system. Prior to 8.6.3, a company-scoped user in FMCS floater mode can access users whose company_id is null because broad API queries and bulk web actions do not consistently apply isCurrentUserHasAccess. The /api/v1/users and /api/v1/users/{id}/licenses endpoints can expose personal data and assigned licenses, /users/bulkeditsave can modify out-of-scope profiles, and /users/merge can soft-delete users and transfer assigned assets. This issue is fixed in version 8.6.3.

    • Update to 8.6.3
    Published Updated
  8. CVE-2026-55703

    Medium · CVSS 4.3EPSS 0.34%Fix available

    Snipe-IT: Maintenance Record Disclosure via Missing Authorization on GET

    Snipe-IT is an IT asset/license management system. Prior to 8.6.3, any activated account can request /maintenances/{id} and read maintenance records for assets in the same company without asset or maintenance permission. app/Http/Controllers/MaintenancesController.php show() renders the record without authorize(), while company-scoped route-model binding only prevents access to other companies. Disclosed fields include asset tags, suppliers, purchase costs, notes, and dates. This issue is fixed in version 8.6.3.

    • Update to 8.6.3
    Published Updated
  9. CVE-2026-61807

    Medium · CVSS 6.3EPSS 0.21%Fix available

    Snipe-IT: Stored DOM XSS via table selected-count IDs

    Snipe-IT is an IT asset/license management system. Prior to 8.6.2, a stored manufacturer or supplier name passed as the table component $name becomes data-selected-count-id in resources/views/partials/bootstrap-table.blade.php. Client-side code reads the browser-decoded countId, uses it as a selector, concatenates countId.substring(1) into an HTML string, and passes the string to jQuery .after(). A crafted name can therefore execute JavaScript when an authenticated user views the manufacturer detail page or supplier detail page, potentially exposing data or actions available to that session. This issue is fixed in version 8.6.2.

    • Update to 8.6.2
    Published Updated
  10. CVE-2026-55519

    Medium · CVSS 5.4EPSS 0.37%Fix available

    Snipe-IT: Improper Authorization in File Deletion (IDOR)

    Snipe-IT is an IT asset/license management system. Prior to 8.4.1, an authenticated user with generic asset edit permission can delete files attached to assets outside the user's ownership or company assignment. The destroy() methods in app/Http/Controllers/Api/UploadedFilesController.php and app/Http/Controllers/UploadedFilesController.php authorize update against the object class instead of the resolved object instance, creating an insecure direct object reference. This issue is fixed in version 8.4.1.

    • Update to 8.4.1
    Published Updated
  11. CVE-2026-55482

    Medium · CVSS 6.3EPSS 0.33%Fix available

    Snipe-IT: Multi-Tenancy Bypass via Bulk Asset Update

    Snipe-IT is an IT asset/license management system. Prior to 8.4.1, a non-superadmin can use app/Http/Controllers/Assets/BulkAssetsController.php update() to submit company_id directly without Company::getIdForCurrentUser(), allowing assets to be moved across company boundaries and breaking multi-tenant isolation. This issue is fixed in version 8.4.1.

    • Update to 8.4.2
    Published Updated
  12. CVE-2026-55483

    Medium · CVSS 4.9EPSS 0.35%Fix available

    Snipe-IT: Privilege Escalation via Missing admin Permission Check in User Creation

    Snipe-IT is an IT asset/license management system. Prior to 8.6.0, an authenticated user with users.create permission can submit the admin permission while creating a user because store() in app/Http/Controllers/Users/UsersController.php strips superuser permission but does not strip admin permission. The created account can obtain administrative privileges. This issue is fixed in version 8.6.0.

    • Update to 8.6.0
    Published Updated
  13. CVE-2026-50550

    Medium · CVSS 5.8EPSS 0.27%Fix available

    Snipe-IT: 2FA reset privilege bypass

    Snipe-IT is an IT asset/license management system. Prior to 8.5.0, a user who can edit other users can reset a superadmin's two-factor authentication through app/Http/Controllers/Api/UsersController.php postTwoFactorReset(). The endpoint authorizes update access but does not enforce canEditAuthFields before clearing two_factor_secret and two_factor_enrolled. This issue is fixed in version 8.5.0.

    • Update to 8.5.0
    Published Updated
  14. CVE-2026-49870

    Medium · CVSS 5.9EPSS 0.4%Fix available

    Snipe-IT: TOTP Brute-Forceable Due to Missing Rate Limiting on `POST /two-factor`

    Snipe-IT is an IT asset/license management system. Prior to 8.6.1, POST /two-factor has no rate limiting, lockout, or attempt counter, allowing an attacker with valid credentials to submit unlimited TOTP guesses against the three accepted codes created by config/google2fa.php window=1. A successful guess creates a fully authenticated session. When two_factor_enabled is 1, POST /account/profile with two_factor_optin=0 can disable two-factor authentication without OTP reverification, while required mode 2 prevents that opt-out. An administrator can also use POST /api/v1/users/two_factor_reset to clear another user's secret. This issue is fixed

    • Update to 8.6.0
    Published Updated
  15. CVE-2026-49976

    Medium · CVSS 6.5EPSS 0.49%Fix available

    Snipe-IT: User Account Escalation via CSV Import

    Snipe-IT is an IT asset/license management system. Prior to 8.6.1, a user with the import permission can use CSV update mode to overwrite the email address of a non-admin user and then request a password reset to take over that account. app/Importer/UserImporter.php applies the canEditAuthFields gate by unsetting username, email, password, and activated on the model, but app/Importer/ItemImporter.php sanitizeItemForUpdating() rebuilds the update array from the raw CSV row in $this->item, restoring the unauthorized values. The app/Http/Controllers/ImportController.php import path checks import permission but does not require users.edit. This i

    • Update to 8.6.0
    Published Updated
  16. CVE-2026-64850

    High · CVSS 8.7EPSS 0.47%Fix available

    Grav: Remote code execution via unrestricted callable in Blueprint::dynamicData()

    Grav is a file-based Web platform. Prior to 2.0.7, Grav Blueprint::dynamicData() in system/src/Grav/Common/Data/Blueprint.php sends an editor-controlled Class::method provider and arguments to call_user_func_array() without rejecting dangerous callback parameters. An account with admin.pages or api.pages.write can use Grav\Common\Utils::arrayFilterRecursive() as a trampoline with system as the callback, place a command in page frontmatter, and execute that command as the web server user when the page is viewed. This issue is fixed in version 2.0.7.

    • Update to 2.0.7
    Published Updated
  17. CVE-2026-52889

    Critical · CVSS 9.8EPSS 1.27%Fix available

    Formie: Server-Side Template Injection in Formie Hidden field defaults

    Formie is a Craft CMS plugin for creating forms. Prior to 3.1.27, Formie can pass request-derived Hidden field defaults such as HTTP User Agent, Referer URL, Current URL, Current URL without Query String, Query Parameter, and Cookie Value to Craft's Twig rendering layer during front-end form rendering. An unauthenticated attacker can place Twig syntax in one of these request-controlled inputs when a public form contains an affected Hidden field. Hidden::getFrontEndInputOptions() then assigns the value to defaultValue and calls renderString, causing server-side template evaluation rather than treating the request data as a plain string. Depend

    • Update to 3.1.27
    Published Updated
  18. CVE-2026-49289

    High · CVSS 7.5EPSS 0.78%Fix available

    SimpleSAMLphp SAML2: Possible DoS via XPath Transform

    The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. In 4.19.2 and 4.20.2, the library permits attacker-controlled XPath transforms while processing XML signatures in specially crafted SAML messages. XPath evaluation can consume uncontrolled processing resources, allowing a remote unauthenticated attacker to deny service to any entity relying on SimpleSAMLphp or directly on the SAML2 library. The mitigation limits the number of transforms, permits only transform algorithms identified by the SAML 2.0 Core specification, and specifically rejects XPath transforms. This issue is fixed in versions 4.19.3 and 4.20.3.

    • Update to 4.19.3
    • Update to 4.20.3
    Published Updated
  19. CVE-2026-49283

    High · CVSS 8.7EPSS 0.47%Fix available

    SimpleSAMLphp HTTP-Artifact TLS validator confusion allows cross-IdP authentication bypass

    The SimpleSAMLphp SAML2 library is a PHP library for SAML2 related functionality. Prior to versions 4.19.3, 4.20.2, 5.0.6, and 6.2.1, the HTTPArtifact::receive() flow can treat an unsigned embedded SAML Response as cryptographically valid for the wrong identity provider. SOAPClient::addSSLValidator() attaches a TLS-based validator to the outer SOAP ArtifactResponse, while the embedded Response receives a validator that delegates to the outer message and is later checked against metadata selected from the embedded response issuer rather than necessarily the artifact issuer. SOAPClient::validateSSL() returns normally when the TLS public key doe

    • Update to 4.19.3
    • Update to 4.20.2
    • Update to 5.0.6
    • Update to 6.2.1
    Published Updated
  20. CVE-2026-52854

    High · CVSS 8.6EPSS 0.58%Fix available

    mediawiki/maps: Stored XSS through the overlays parameter in the display_map parser function

    Maps is a MediaWiki extension that enables visualization of geographic data through dynamic embedded maps. Prior to version 12.1.3, the display_map parser function in the Leaflet service accepts attacker-controlled HTML in the overlays parameter, and resources/leaflet/jquery.leaflet.js uses the overlay name as a Leaflet layer-control label without escaping it. A wiki user with the edit permission can store malicious wikitext that causes script execution when another user previews or views the affected map. The script executes in the viewing user's browser session and can access data or perform actions available to that user. This issue is fix

    • Update to 12.1.3
    Published Updated

Check your server

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

Check your server →