Supplying the Ministry of Defence? Which DCC level your contracts need, and what to do next.

Read it

Zarco / Blog / Analysis

Black October: AI, stolen secrets and the attack paths between them

What October 2026’s PHP, OpenCode, Railway and LiteLLM disclosures reveal about application exposure, credential risk and adversarial testing.

“Black October” is the name some reporting has given to this month’s run of security incidents. It is a memorable label. It can also blur four different stories into one.

For a business, the useful work sits underneath the label: for each disclosure, what was exposed, what access it could enable, and what evidence would show that remediation is actually complete.

This piece looks at four incidents using information available on 24 October 2026. Grouping them together does not establish a common attacker, a shared entry point or AI involvement at every stage. Several investigations are still provisional, and that distinction matters.

Context: Reporting on the “Black October” label.

PHP2Shell: when the runtime is the exposure

On 21 October, PHP released fixes for CVE-2026-109618 and CVE-2026-109619, two critical vulnerabilities that can permit unauthenticated remote code execution. The PHP project identified web-serving deployments as affected, with particularly high risk for Apache mod_php.

Its advisories describe flaws involving interrupted memory handling and stale internal state. They sit in the runtime beneath application code, which makes the runtime’s patch status an important part of the application’s security posture.

The initial fixed releases were 8.2.35, 8.3.36, 8.4.27 and 8.5.12. On 23 October, PHP also published follow-up guidance about an unusual combination of session-upload configuration and application code. Operators should review the latest upstream and distributor advice, including backported fixes.

One practical trap: a version detected on a developer’s terminal does not establish the patch status of every deployed worker or container. Verification has to cover the runtime that is actually serving requests.

Source: PHP security announcements, 21–23 October 2026.

Exploitation attempts came before disclosure

Amazon Threat Intelligence reported a PHP2Shell exploitation attempt in its MadPot telemetry dated 17 October, four days before public disclosure, and observed further attempts around the release window.

AWS said explicitly that it was unclear whether those attempts would have succeeded against real-world systems. That framing is worth keeping. Attempted exploitation, demonstrated exploitability and confirmed compromise are three separate findings.

AWS also described how AI-assisted analysis can reduce the effort needed to turn technical disclosures into working exploits. That supports a practical concern about response speed. It does not establish how the actor behind the 17 October attempt developed its payload.

For incident review, the timeline should begin with the first credible evidence of possible exposure. Installing an update addresses the vulnerability from that point forward; the historical investigation asks whether access occurred before it.

Source: Amazon Threat Intelligence: PHP2Shell activity before disclosure.

OpenCode: provider credentials became the target

OpenCode reported a Console breach affecting 1.4% of users.

Source: OpenCode’s public disclosure.

For teams using developer platforms, the question this raises is reach: what can a stored credential actually do? An AI-provider key can carry spending authority and access to provider functionality. Other development credentials may grant repository or deployment permissions.

An assessment can map where credentials are stored, which systems can retrieve them, what permissions they carry and how revocation is verified. Separating keys by environment and workload also makes suspicious usage easier to attribute.

The objective is to establish the consequences of a credential being exposed, and the controls that limit those consequences.

Railway: environment variables carried downstream risk

Railway’s 21 October disclosure said an unauthorised party may have accessed encrypted customer environment variables and obtained decrypted contents for some of them. Railway noted that these values could contain API keys, database credentials and registry credentials.

Although its initial analysis suggested a subset of users might be affected, Railway recommended that all users rotate stored environment variables and relevant credentials as a precaution, and review downstream service logs.

The important distinction is between encryption at rest and access during operation. Applications and platform services need decrypted secrets to function, so security depends on which identities can retrieve those values and what the values authorise elsewhere.

Rotation is also more than generating new values. Dependent workloads need updating, replacement credentials need to be confirmed working, and old credentials need to be checked as revoked.

Source: Railway: Security disclosure, 21 October.

LiteLLM: from an exposed key to the release pipeline

LiteLLM reported that a compromised version, 1.107.0, was published to PyPI and container registries on 21 October. Its incident notice described credential-stealing malware and identified the affected artifacts.

The company’s 23 October investigation gives the fuller account. A master key committed publicly in May had not been revoked. The attacker used that key to access an internal agent platform, obtained an organisation owner’s GitHub token and acquired further credentials. Those permissions enabled changes to the release process and the publication of malicious artifacts.

That is a documented chain across several trust boundaries: exposed secret, internal service, repository authority and software distribution.

It also shows why deleting an exposed value from visible code is not the end of the matter. Whether the credential is still valid, and what it can still reach, are separate questions that need their own answers.

Sources: LiteLLM incident notice and canonical attack-chain investigation.

What these disclosures mean for security testing

Our assessment is that the most useful testing connects individual weaknesses to the authority and assets they expose.

A runtime flaw, an over-powerful token and a permissive release workflow call for different tests. They can also interact. An application assessment needs a defined scope that says which of those relationships it will examine.

Useful objectives include:

  • Establish whether an exposed application can reach a designated sensitive resource.
  • Verify separation between customer workspaces and privileged functions.
  • Examine whether a test credential can exceed its intended permissions.
  • Validate whether release controls remain effective under an agreed compromised-identity scenario.
  • Confirm that remediation breaks the demonstrated path.

These are assessment objectives, not a promise that every environment contains an exploitable path. Testing results must state the access provided, the coverage achieved and the limitations.

Connect findings to verified remediation

A finding should identify the observed behaviour, the evidence supporting it and the specific control that needs to change.

Remediation may involve application code, runtime updates, narrower permissions, credential replacement or changes to deployment workflows. Implementation then needs its own acceptance criteria and proportionate functional checks.

The final security test should repeat the relevant scenario against the changed environment and record the result. Where a mitigation covers only one path, the report should say so.

The practical response to October’s disclosures is a repeatable loop: establish exposure, investigate credible signs of access, make targeted changes and verify their effect.

→Contact

Tell us what you need.

A tender deadline, an insurer's questionnaire, a system you want tested, or a job you'd like AI to take off your team's hands. We reply within one working day, UK hours.

  • A 30-minute first call, with no obligation
  • A fixed quote before any work starts
  • A UK-based team you can talk to directly