PHP2Shell and AI-Built Apps: Does It Touch Your Backend?

A companion for people who build apps with AI. What PHP2Shell is, which parts of your app setup can run PHP, and what to ask before you decide it does not touch you.

Timothy Lindblom

Founder, Newly

Published Last updated

PHP2Shell (CVE-2026-109618 and CVE-2026-109619) is a flaw in server-side PHP. The React Native and Expo app on a phone contains no PHP, so the app itself does not run the vulnerable code. Your backend might, for example a WordPress site, a Laravel API or phpMyAdmin. List the hostnames your app talks to, find which ones serve PHP, and ask each host for the fixed build.

What are the key facts?

Facts below were checked against the sources on 24 October 2026. The full incident page, with host-by-host detail, is on red.run.cloud: PHP2Shell live status and affected versions. This page covers the part that page does not: what it means when your product is an app.

QuestionAnswer at 24 October 2026
What is affectedPHP installations serving web requests, including PHP-FPM, Apache mod_php, php-cgi, FrankenPHP and LiteSpeed (PHP advisory)
SeverityCVSS v4.0 9.2 for both CVEs, remote code execution without logging in (GHSA-w8hw-w9fx-j79w, GHSA-6wmf-4rv5-p3rp)
Fixed versions8.5.12 / 8.4.27 / 8.3.36 / 8.2.35
Disclosed21 October 2026
Attempts seenAWS reported a honeypot attempt on 17 October, four days before disclosure, and says it is unclear whether such attempts would succeed on real systems (AWS)
CISA catalogNeither CVE appeared in the Known Exploited Vulnerabilities listing we could read on 24 October 2026

Does PHP2Shell run inside my mobile app?

No. Newly builds a real iPhone and Android app with React Native and Expo, and the project code is yours to download or connect to your own repository. That code is JavaScript and TypeScript compiled into the app. PHP is a server-side language, and the PHP advisory describes installations that serve web requests.

What the app does is call servers. Every API URL in your project is a server that someone has to keep up to date. Some of those servers are run by a provider and some by you. The diagram shows the path.

Request path from the phone app to your backend. The app contains no PHP. Each server it calls may or may not run PHP.Phone appReact Native + ExpoNo PHP hereHosted backendSupabase, Firebase, EAS HostingYour own serverNode, Python, PHP, otherWebsite and admin toolsWordPress, Laravel, phpMyAdminProvider patches its own runtimeDepends on what you choseOften PHP: check first
The phone app never runs PHP. The servers behind it are where the question lands.

Mark the PHP question per server, not per app. An app with a hosted backend and no website may have no PHP at all. An app with a WordPress landing page, a store or a PHP admin panel has at least one place to check.

Which parts of my setup can run PHP?

Part of your setupRuns PHP?How to find out
The app on the phoneNoNothing to check. Expo warns that EXPO_PUBLIC_ values are visible in plain text in the compiled app, so check keys instead (see the Expo docs)
Expo Router API routes on EAS HostingNot by designEAS Hosting is built on Cloudflare Workers running V8 isolates (EAS Hosting). API routes target a WinterCG-compliant environment (API routes)
Supabase or FirebaseProvider-runYou cannot patch it. Read the provider's notice and check your own settings: Supabase says a table in an exposed schema without RLS is readable and writable by any role with a grant (RLS docs)
A server you rentUnknown until you lookLog in and list the services running. A PHP-FPM or Apache service means yes
WordPress, WooCommerce, Laravel, phpMyAdminYesAsk the host which PHP build serves the domain. Updating the CMS or plugins does not change it
A no-code tool or plugin that hosts a page for youUnknownAsk the vendor in writing. Silence stays unknown

How do I find every server my app depends on?

Build a list of hostnames, one line each. Four places hold them:

  • Your project's environment files and app config. Search for values that start with https://, such as an API base URL or a Supabase project URL.
  • Your DNS records. Every subdomain of your domain points somewhere, and the old ones are the ones people forget.
  • Your website builder, store or blog settings, including the login page you use to edit them.
  • Webhook and callback URLs configured in payment, email and analytics dashboards.

Next to each hostname write the language or product behind it. If you cannot name it, the entry is unknown and the next section applies. The list is also the base for the 15-minute check of an AI-built app, which covers keys, database rules and routes.

Response headers are hints

A header such as X-Powered-By can name PHP, and removing it is common. A missing header does not show that PHP is absent, and a version in a header does not show whether the host applied a backport. Use the host's answer.

What do I ask my host?

For every hostname marked PHP or unknown, send the same short message. The UK NCSC advises organisations to identify PHP installations, update internet-facing systems first, and check for compromise before upgrading (NCSC). Your message turns that into three answers you can file:

  1. Which PHP package and version serves my domain, and does it contain the fixes for CVE-2026-109618 and CVE-2026-109619?
  2. When did the update and the restart of PHP workers happen? Workers that were not restarted still run the old code.
  3. Does anything reach the origin without passing the WAF or proxy in front of it?

Hosts differ in who owns the fix. On shared plans the host usually updates PHP, and on a rented server you do. The red.run.cloud pages on what to ask your shared hosting provider and who is responsible for patching cover the wording and the split. If you build apps for clients, the agency client triage page has a way to sort sites by host.

What if PHP serves part of my app's setup?

Update PHP on every runtime that can serve web requests, then restart the workers. PHP calls updating the only complete fix. A distribution may keep an older version number while backporting the fix, so ask for the package changelog and do not compare version strings alone. Branches older than 8.2 no longer get routine updates from the PHP project, so those need a vendor build or an upgrade.

A WAF is a stopgap. Cloudflare says its rules protected free and paid WAF customers from 21 October 2026 03:02 UTC and still tells customers to patch (Cloudflare). PHP also lists temporary settings for the days before an update, including session.upload_progress.enabled=0. On 23 October 2026 PHP added an informational note that a separate issue, to be published as CVE-2026-115560, needs an unusual combination of configuration and code, and that the same setting covers it. Neither note replaces the fixed build.

Which of my app's keys could a PHP server have read?

A PHP worker runs with the access of the site it serves. If that site's config files hold the same keys your app backend uses, those keys were in reach during the window. Supabase's secret key bypasses Row Level Security and belongs only where you control the code (Supabase API keys). If you have evidence of a break-in, such as unknown admin accounts or files, rotate every key that host could read, using the rotation guide. Without evidence, record the keys as unknown exposure and move them off the PHP host. For signs to look for, see was my site exploited via PHP2Shell.

Which settings of mine matter even with no PHP?

PHP2Shell is one of several October 2026 notices. The settings below stay yours whatever language your servers run. Firebase says its Security Rules are the only safeguard blocking access for malicious users and that an app is publicly reachable once deployed (Firebase rules). OWASP lists broken object level authorization as API1:2023 and recommends tests that fail the deploy when the check is missing (OWASP API1). AI features inside your app use credits, so a route anyone can call is also a bill, which the chatbot self-test walks through.

Where do you stand?

Every item starts as unknown, because an unchecked item is unknown. A scan, ours included, cannot move PHP items to confirmed. Only the host or your own server can.

Your PHP2Shell check

  • Detected: You found the problem.
  • Unknown: Not checked yet, or the check could not tell.
  • Confirmed by owner evidence: You checked and kept the proof.
  1. 1. I have a written list of every hostname my app, my website and my admin tools use.

    Evidence: the list, built from your app config, environment files and DNS records.

  2. 2. For each hostname I know whether PHP serves it.

    Evidence: the host's written answer, or your own stack notes naming the language and framework behind each hostname.

  3. 3. Every PHP hostname runs 8.5.12, 8.4.27, 8.3.36, 8.2.35 or a vendor build documented as carrying both fixes.

    Evidence: the package name and version from the host, plus its changelog or advisory page.

  4. 4. PHP workers were restarted after the update.

    Evidence: the host's note with the restart time, or your own deploy log.

  5. 5. I know which app keys a PHP site could read, and any that sat there during the exposure window are rotated.

    Evidence: the list of keys in that host's environment and the date each was replaced.

0 detected5 unknown0 confirmed by owner evidence

Your answers stay in this browser tab. Nothing is saved or sent.

Frequently asked questions

My app was built with AI. Do I need to update anything in it?

Not for PHP2Shell, because the app on the phone contains no PHP. Check what your app talks to instead. Any server, website or admin tool behind it that runs PHP needs the fixed PHP build, applied by you or your host.

Does Supabase or Firebase make me affected?

Both run on the provider's infrastructure, so you cannot patch them yourself. Read the provider's own status or security notice, and keep your own focus on the key and rule settings that are yours.

I use a plugin or a WordPress site next to my app. Is that a problem?

It can be. WordPress runs on PHP, and PHP2Shell is in PHP itself, so updating WordPress or its plugins does not fix it. The PHP build that serves the site has to be updated. Ask your host which build serves the domain and when its workers were restarted.

Cloudflare is in front of my API. Can I wait?

Cloudflare says its WAF rules protected free and paid customers from 21 October 2026 03:02 UTC and also tells customers to patch PHP. A WAF is an extra layer. It does not change the PHP build behind it, and traffic that reaches your origin another way skips it.

Could my app's keys have leaked through a PHP server?

Only if a PHP site could read them. If a service role key, a Stripe secret key or an AI provider key sits in the environment or config files of a PHP host, treat it as readable by that host's PHP workers. If you have any evidence of a break-in, rotate those keys. Without evidence, the question stays unknown.

Will a scan tell me if my backend is patched?

No. A scan from outside can report a version it detects and match it to known vulnerabilities. It cannot see a backport your host applied, which PHP build serves a given hostname, or whether workers restarted. Those answers come from the host.

Sources

All sources were opened on 24 October 2026.

  1. PHP security advisories, October 21 and 23, 2026, php.net
  2. GHSA-w8hw-w9fx-j79w (CVE-2026-109618), php-src security advisories, GitHub
  3. GHSA-6wmf-4rv5-p3rp (CVE-2026-109619), php-src security advisories, GitHub
  4. Critical security issue affecting PHP, UK National Cyber Security Centre
  5. Amazon Threat Intelligence identifies PHP2Shell exploitation prior to public disclosure in MadPot, AWS Security Blog
  6. PHP vulnerabilities and WAF protection, Cloudflare blog
  7. Known Exploited Vulnerabilities Catalog, CISA
  8. Environment variables in Expo, Expo docs
  9. Expo Router API routes, Expo docs
  10. EAS Hosting introduction, Expo docs
  11. Understanding API keys, Supabase docs
  12. Row Level Security, Supabase docs
  13. Security Rules basics, Firebase docs
  14. API1:2023 Broken Object Level Authorization, OWASP API Security Top 10

Continue Learning