Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Security updates and disclosure

Which Exponential versions receive security fixes, how fixes are published, how a host follows releases and rolls updates out to customer sites, how to check that files were not changed, what else needs updates, and how…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/hosting/security/security-updates-and-disclosure.md

On this page

Security updates and disclosure

This page is for the security lead and the system administrators of a host who keep many Exponential sites up to date, and for support staff who receive a report about a possible vulnerability. It says which versions are supported, how a fix reaches a site, and how to report a problem. The policy itself is the repository's SECURITY.md; the update routine is 13.15 Keeping up to date.

Contents

  1. Supported versions
  2. How fixes are published
  3. Following releases
  4. Rolling updates out
  5. Checking files after an update
  6. Everything else that needs updates
  7. Reporting a vulnerability
  8. Telling customers
  9. Checklist

Supported versions

From SECURITY.md:

VersionSupported
6.0.x, current line: main (dev-main) and the next tag cut from ityes
6.0.x, released tags v6.0.0 to v6.0.14fixed by upgrading to the newest 6.0.x
5.x, 4.x, 3.x and olderno

Security fixes are made on main and published with the next 6.0.x release. Sites on older lines, including those that still run the product its creator discontinued after almost 18 years, get no fixes; plan their migration (Migrating customers: overview).

How fixes are published

A published tag is never changed. A fix for a problem in an earlier tag reaches you as the next release, not as a corrected copy of the old one. Releases are immutable tags on Packagist and GitHub, with changelogs. For a host this means:

  • the version number a site reports is reliable: the same version is the same code everywhere;
  • "is this site patched?" is answered by comparing its version with the release that fixed the problem;
  • every extension is its own Composer package with its own releases; follow those too.

Following releases

composer outdated                 # what is newer than the locked versions
composer audit                    # known vulnerabilities in the locked dependencies
composer show se7enxweb/exponential   # the version a site runs

Run these per installation from a central job and collect the results, or use the Setup > Updates and packages screen of the ezupdate extension, whose check for updates changes nothing (ezupdate, Automated updates with ezupdate). Keep composer.lock in each site's version control so the result is the same on every machine.

Rolling updates out

  1. Read the changelog and the upgrade notes of the release (Upgrading, Chapter 11).
  2. Update a copy first (a staging copy of the customer's site, or a representative test site).
  3. Then the live site: composer update <package>, the database updates the release names, then php bin/php/console exp:velocity deploy (or autoloads, cache clear and a PHP-FPM reload by hand).
  4. Check file consistency (below).
  5. Smoke test the front page and the administration sign-in.

For many sites at once: Upgrading customer sites and Deploying changes. Use maintenance mode where the update needs database changes.

Note

Whether security updates are applied by the host automatically, within a fixed window, or only on the customer's approval is a decision for each plan. The sources set no time frame; the host chooses one and states it in its service description (SLA options).

Checking files after an update

Setup > Upgrade check compares every file with the release's share/filelist.md5 ("Check file consistency") and the schema with the release's ("Check database consistency"). Both only read. The same from a shell, without a database:

php bin/php/checkmanifest.php --all                 # exit 0 when nothing is modified or missing
php bin/php/checkmanifest.php --all --extensions    # also extensions with their own manifest

A modified kernel file nobody changed deserves a look; see Compromised site (The upgrade check).

Everything else that needs updates

  • PHP, the database server and the operating system.
  • Velocity's engine (its releases fix security issues too), then exp:velocity deploy.
  • FrankenPHP's binary: version and checksums are pinned in [FrankenPHPSettings] Version and Sha256[]; change them together.
  • The customer's own extensions: review them for the patterns fixed in the kernel (SQL built from request data, shell commands without escapeshellarg(), output without escaping), and regenerate extensions made by the RAD wizards before their fix (RAD tools: security, 6.0.13 hardening notes).
  • request-shield, when installed, as its own package.

Reporting a vulnerability

Report security issues privately, never in a public issue tracker or discussion:

SECURITY.md says a first answer can be expected within one business day. Include:

  • the version (composer show se7enxweb/exponential, or the tag or commit) and the PHP version;
  • the engine that serves the site (Velocity, FrankenPHP, Apache or nginx with PHP-FPM) and the database;
  • what an attacker can do, and the steps to reproduce it.

Leave out passwords, secrets and personal data, including those of the customer whose site showed the problem. The reporter is told whether the report is accepted and kept informed while a fix is prepared; an accepted issue is fixed on main and released with the next 6.0.x version. Problems in a third-party extension go to that extension's maintainers; the help's report page explains the trackers.

Telling customers

When a release fixes a security problem, a host may choose to:

  • inform affected customers which sites were updated and when;
  • for sites that cannot be updated at once, document the gap with a date to close it, as the Security review checklist asks;
  • never publish details of an unfixed problem before the project has released the fix.

Checklist

  • To do: Every site on the newest 6.0.x, or the gap documented with a date.
  • To do: composer outdated and composer audit run regularly for every installation; composer.lock in version control.
  • To do: Updates tested on a copy first; file consistency checked after every update.
  • To do: PHP, database server, operating system, Velocity's engine and extensions included in the routine.
  • To do: A named owner who reads release notes and receives security mail.
  • To do: Support staff know the private reporting route and never use a public tracker for security reports.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x