Vol. I · No. 1Edition: AfternoonEst. 2026AboutSearchRSS

The Sand Paper

Finding grains of sand with grains of sand.
A Journal of Intelligence Transfer
Feature · Security

Patch Day for the Web: Today’s Big Breaches, Explained

Two AI-found PHP flaws, a poisoned AI gateway, an agent swarm aimed at Latin American banks and three leaks in Asia. What happened, who is affected and what to do now.

The short version. Wednesday was a patch-everything kind of day. Two critical flaws in PHP, the language under an estimated 70% of websites, went public with fixes at 7 AM Pacific, and governments told anyone who could not patch to unplug. Hours earlier, someone hijacked the release pipeline of LiteLLM, a popular AI gateway, and shipped a version that steals API keys. A security firm published an inside look at a criminal group that pointed Claude and Grok agents at more than 400 Latin American financial targets. And three data leaks surfaced in Asia, at Nikkei, at a cloud provider used by Japanese police, and at State Bank of India. Here is what happened, who is affected, how each attack worked, and what to do now.

All times below are given in UTC with Pacific time (PT) alongside. Every claim is attributed; the full source list is at the end. Where something is one company's account and nobody else has confirmed it, we say so.

What happened today

php2shell: PHP's two critical flaws

  • CVE-2026-109618 and CVE-2026-109619
  • Unauthenticated remote code execution
  • Fixed in PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35
  • Found with AI by Calif, OpenAI and Wiz

LiteLLM 1.107.0 poisoned

  • AI gateway package on PyPI and Docker
  • Live for about two hours, early Wednesday
  • Steals LLM, cloud and CI credentials
  • Pin 1.106.2 and rotate keys

CARLIY0S: AI agents vs. banks

  • Straiker report, via The Information
  • 400+ Latin American financial targets
  • Claude agents plan; Grok agents mine secrets
  • One firm's account; victims anonymized

Also today: Nikkei said 1.83 million records were stolen from a cloud service it uses for system development. A cyberattack on Arcadia, an Osaka cloud provider, may have exposed details of about 125,000 Japanese police officers and staff. And State Bank of India told stock exchanges that 3,897 customer records turned up on the dark web.

1. php2shell: two critical flaws in PHP

What happened

The PHP project released PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 on Wednesday. The release fixes two critical vulnerabilities that can let an attacker run code on a server without logging in, the PHP Foundation says. The flaws carry the IDs CVE-2026-109618 and CVE-2026-109619, and CISA says they are known as "php2shell."

The official severity score is 9.2 out of 10, according to the PHP Foundation and Google Cloud. A score of 10.0 circulated after the leak; the Foundation says that figure was wrong.

AI was central to the discovery. OpenAI says its models helped researchers in its Patch the Planet initiative find the flaws, and calls this "one of the most impactful vulnerabilities in recent memory." Per Nextgov/FCW, OpenAI says the security firm Calif found a critical flaw using its GPT-5.6 Sol model, while Wiz independently found and reported both. Wiz says it used Wiz Atlas, Gemini 4 Argon and GPT-5.6 Sol.

The PHP Foundation is candid about the history. A Foundation-contracted developer saw the first signs of the memory problem in 2024, during an audit, but the fix stalled for months. "We won't pretend otherwise: the delay was a structural failure," it writes.

How php2shell went from private report to public patchAugust 11, 2026: Calif and OpenAI report the root cause. August 24: Wiz reports its findings. October 20 at about 15:00 UTC, 8 AM Pacific: the two CVE IDs leak online. 19:30 UTC, 12:30 PM Pacific: PHP pre-announces and moves the release up a day. Around 20:00 UTC: Calif mistakenly posts a demo video. October 21 at 07:41 UTC, 12:41 AM Pacific: Chainguard publishes fixed images early. 14:00 UTC, 7 AM Pacific: PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 are released.Timeline · UTC, with Pacific timeFrom report to patchAug 11Calif and OpenAI reportthe same root causeAug 24Wiz reports its findingsto the PHP security teamOct 20 · 15:00The two CVE IDs leak8 AM PT · forums and social mediaOct 20 · 19:30PHP pre-announces12:30 PM PT · release moved up a dayOct 20 · ~20:00Calif posts a demo videoby mistake; copies spreadOct 21 · 07:41Chainguard ships early12:41 AM PT · fixed images, pre-embargoOct 21 · 14:00Patched PHP released7 AM PT · 8.5.12, 8.4.27, 8.3.36, 8.2.35
How the disclosure unfolded. Dates from the PHP Foundation and Wiz; Pacific times converted by The Sand Paper.

The plan was a coordinated release on October 22. It slipped forward a day. On Tuesday at about 15:00 UTC (8 AM PT), the two CVE IDs started circulating online, the PHP Foundation says, though no technical details leaked. PHP then brought the release forward to Wednesday at 14:00 UTC (7 AM PT). Around 20:00 UTC Tuesday, Calif mistakenly published a video of its proof of concept, and copies spread. Then at 07:41 UTC Wednesday (12:41 AM PT), the Foundation says Chainguard "unilaterally broke the embargo" by publishing fixed images early.

The response was unusually loud. The NSA, FBI and CISA urged organizations to patch and to take systems offline if they could not, Nextgov/FCW reports. The UK's NCSC gave the same advice, according to the BBC. Finland temporarily shut its government's public web services, and the Wikimedia Foundation took some systems down as a precaution, the BBC reports.

Who is affected

  • Anyone running PHP to serve web pages. CISA says the flaws "affect all PHP installations serving web requests." Google Cloud lists every version from 5.4 through 8.5.11 as vulnerable.
  • WordPress, Drupal and Joomla sites. Wiz says it demonstrated attacks against all three, Nextgov/FCW reports.
  • People on old PHP. The PHP project is not releasing fixes for PHP 8.1 or earlier, which have reached end of life, Google Cloud says.
  • A very large number of servers. Palo Alto Networks' Unit 42 counted more than 22.6 million internet-exposed instances potentially vulnerable, per Nextgov/FCW.

Is anyone being hacked yet? Accounts differ. CISA said it had "not observed exploitation" as of publication. The BBC quotes Cloudflare CTO Dane Knecht saying the company is "seeing early attacks emerging." The PHP security team says it found no functional exploits at the time of release.

How it worked

Both bugs live in parts of PHP that nearly every request touches: memory management and error handling, the PHP Foundation explains. In the first, a request that hits PHP's memory limit at exactly the wrong moment leaves half-built internal data behind, which PHP later treats as valid. In the second, a fatal error leaves internal state pointing at memory from a previous request, and a later request on the same worker uses it.

On Apache with mod_php, the Foundation says, an unauthenticated request can trigger the first bug before any application code runs. That is why careful site code does not help. Researchers also showed they could read passwords and access credentials from a server's working memory, Nextgov/FCW reports.

How php2shell worksFive steps. An attacker sends a crafted web request with no login. PHP is interrupted mid-setup when it hits its memory limit or a fatal error at the wrong moment. Half-built data, or a pointer to memory from an earlier request, is left behind. Cleanup or the next request on the same worker treats it as valid. The memory corruption lets the attacker run commands as the web server account, exposing files, databases and secrets in memory. The fix is PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35; a firewall rule is only a stop-gap.Attack pathHow php2shell works1A crafted web requestNo login needed. On Apache with mod_php itcan strike before any site code runs.2PHP is interrupted mid-setupIt hits its memory limit, or a fatal error,at exactly the wrong moment.3Bad state is left behindHalf-built data, or a pointer to memorythat belonged to an earlier request.4PHP trusts it laterCleanup, or the next request on the sameworker, treats it as valid.5Corruption becomes controlThe attacker runs commands as theweb server account.What is exposedFiles, databases, and secrets held in memory,such as passwords and access credentials.Fix: 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35A firewall rule buys time. Only the update fixes it.
The attack path in five steps, drawn from the PHP Foundation's and PHP's GitHub advisories.

What to do now

Step 1: If you run your own server or VPS

You do
  • Update PHP now. On a distribution like Ubuntu, install the security update from your package manager rather than compiling upstream.
  • Restart PHP, every worker process, afterward. Then confirm the version that is actually running.
  • If you cannot patch today, take internet-facing PHP systems offline. That is the CISA, NSA and NCSC advice.
  • Watch for PHP worker processes launching shells or downloading tools, CISA says.
Under the hood

Do not be alarmed if your distribution's version number looks lower than 8.5.12. @levelsio hit exactly this with Ubuntu. "Ubuntu and other distros routinely backport security patches to their packaged PHP versions," he quoted in reply. Check your distribution's security notice instead; for Ubuntu that is USN-8948-1.

Step 2: If you are a small business with a hosted website

You do
  • Ask your host or web agency one question today: has PHP been updated for CVE-2026-109618 and CVE-2026-109619?
  • Many managed platforms patch for you. Google Cloud says App Engine standard (PHP 8.2 and newer) updates automatically, while container users must rebuild and redeploy.
  • If you are on PHP 8.1 or older, plan an upgrade. There is no official fix for those versions.
Under the hood

A web application firewall (WAF) rule can buy time, but treat it as temporary. Cloudflare pushed a rule, a user told @levelsio, who replied: "It's only an imperfect STOP GAP solution." CISA agrees a WAF "may provide some protection" until systems are patched.

Step 3: If you just use websites

You do
  • There is little to do directly. The fix is on site owners' side.
  • Expect some sites to be down or "in maintenance" today. The BBC lists several, including parts of Wikipedia.
  • As always, use unique passwords, so that a breach at one site cannot open your others.
Under the hood

Some outages today are deliberate safety moves. @levelsio took every site he runs offline before the patch, then brought them back after installing the Ubuntu fix. To a critic who called it insane, he replied: "It's not insane, it's safety first."

2. LiteLLM 1.107.0: a poisoned AI gateway

What happened

LiteLLM's release pipeline was compromised early Wednesday, and version 1.107.0 was pushed to PyPI and Docker with malware inside, the LiteLLM team says. The malware "steals credentials and loads remote-code execution tools." LiteLLM says the bad releases have been pulled and that all earlier versions are safe. Our source @MiaAI_lab flagged it on X: "If you installed 1.107.0, pin 1.106.2 and rotate your keys."

OX Security notes this is the second time LiteLLM has been hijacked this year, after versions 1.82.7 and 1.82.8 in March. This time the attacker used different tooling and infrastructure, OX says.

Who is affected

LiteLLM spells out the windows, all on Wednesday, October 21:

ArtifactCompromised window (UTC)Pacific time
PyPI litellm==1.107.0, all seven wheels11:39 to 13:234:39 to 6:23 AM
Docker Hub tags v1.107.0, latest, main-latest, main-stable11:46 to 14:204:46 to 7:20 AM
GHCR tags, same names11:46 until unavailable by 13:514:46 to 6:51 AM

You are affected if you installed an unpinned LiteLLM from pip in that window, or started one of those Docker images, the team says. Customers on the private enterprise release were not affected. OX Security adds that the malware runs every time Python starts, even if your project never uses LiteLLM.

How it worked

LiteLLM says the attacker used three engineers' GitHub accounts, apparently through stolen GitHub CLI OAuth tokens. One account overrode branch protection and changed the release workflow. A second approved the production release, and a third deleted workflow records, limiting the logs. The team has not yet found how the tokens were stolen.

The trick was that the malware lived only in the built packages. The official 1.107.0 source tag on GitHub was clean, LiteLLM says, so reading the repository would show nothing wrong. OX Security says the payload calls home to litellm[.]dev, a lookalike domain the attacker bought.

How the poisoned LiteLLM release reached machinesAttackers used stolen GitHub CLI tokens from three developer accounts. At 10:08 UTC one account overrode branch protection and changed the release workflow to build from an attacker-controlled repository. At 11:11 UTC a second account approved the production release. Seven poisoned 1.107.0 wheels were live on PyPI from 11:39 to 13:23 UTC, and Docker tags pointed at a poisoned image from 11:46 to 14:20 UTC. Once installed, cook.pth and sitecustomize.py run at every Python start. The malware steals LLM and cloud keys, browser data and CI tokens, and checks in hourly for new code to run. The GitHub source tag itself was clean.Attack path · Oct 21, UTCA poisoned package1Stolen GitHub CLI tokensThree developer accounts, says LiteLLM.How they were stolen is still unknown.2The release pipeline is rewired10:08: branch protection overridden; thebuild now pulls from an attacker repo.3A second account approves11:11: the production gate passes.4Poisoned 1.107.0 shipsPyPI 11:39 to 13:23. Docker tags11:46 to 14:20.5Install it, and it runscook.pth and sitecustomize.py start withevery Python process, even pip.It stealsLLM and cloud keys,browser data, SSHkeys and CI tokensIt phones homechecks in hourly fornew code to run onyour machineThe GitHub source tag was clean.Only the built packages carried the malware.
From stolen tokens to stolen keys, per LiteLLM's incident timeline and analyses by OX Security, Socket and JFrog.

What to do now

  • Check first, then clean. Run pip show litellm in each environment. Search for litellm-1.107.0.dist-info, cook.pth and sitecustomize.py. Finding one confirms exposure; finding none does not prove you are clean, LiteLLM says.
  • Clean from the shell, outside Python. Delete cook.pth, cook.py, sitecustomize.py and matching __pycache__ files, kill the detached Python process holding /tmp/remote_code_loader.lock, then reinstall litellm==1.106.2. Rebuilding from scratch is better.
  • Assume the secrets are gone. If 1.107.0 ran on a host with internet access, LiteLLM says to assume the theft succeeded. Rotate the instance's cloud role, every provider key stored in the LiteLLM proxy database, the master and virtual keys, and the database password.
  • Small teams: if one developer laptop ran it, treat that laptop as compromised. OX Security also lists SSH keys and CI tokens among the secrets to rotate.
  • Everyone using AI tools: pin versions in production, and give new releases a short cooling-off period before you adopt them.

3. CARLIY0S: AI agents aimed at Latin American banks

What happened

The security startup Straiker published an investigation Wednesday into a group it calls CyberCartel, operating as "Tr4nsHack Team." Straiker says the group used an AI agent system named CARLIY0S to attack more than 400 financial targets across Latin America in a matter of months. The research was shared exclusively with The Information, Benzinga reports. Our source @kimmonismus flagged it on X, writing: "I guess this is just the beginning."

According to The Information's account, the agents "appear to have stolen passwords and customer data and to have accessed people's bank accounts autonomously with little human effort." Straiker says Anthropic has revoked the compromised credential used to reach Claude, and xAI is looking into the activity.

Who is affected

Straiker describes the victims only as Latin American and Mexican financial institutions, banking entities and fintech payment gateways. The stolen-credential store it saw held 4,493 records, it says, including 2,911 email addresses and 903 account numbers. It also lists 391 general API keys, 67 cleartext passwords and 43 database connection strings. Straiker says the material could enable abuse of SPEI, Mexico's interbank payment system.

How it worked

Straiker says a "commander," Claude running in the Cursor IDE, hands goals to specialist agents through the Anthropic API. Three of them debate each target, and a fourth called MAXIMUS returns one decision. A headless browser, routed through residential proxies, logs into a content management system's admin panel and injects code. Five Grok-based "miners" then collect the secrets.

Inside CARLIY0S, as Straiker describes itA commander, Claude running in the Cursor IDE, sets objectives. Three Claude agents named STRIKER, GHOST and FABLE debate each target, and an arbiter called MAXIMUS returns one decision. If a model refuses, the system falls back to stored local attack code. A headless browser, routed through residential proxies, logs in to a content management system and injects code for remote execution. Automated payloads then scan databases, hunt credentials and map the internal network. Five Grok "miners" collect secrets into a stolen-credential database Straiker says held 4,493 records.Attack path · per StraikerInside CARLIY0SCommanderClaude in the Cursor IDE sets the objectiveSTRIKERGHOSTFABLEthree agents debate each targetMAXIMUS arbitratesand returns one decisionIf a modelrefuses: storedlocal code1Headless browser, residential proxiesTraffic is made to look like ordinaryhome users in Mexico.2Into the site’s admin panelOnce logged in, injected Groovy scriptsgive remote code execution.Database scanCredential huntNetwork mapFive Grok “miners”collect secrets into “FinancialSoft,” a stolen-credential store Straiker says held 4,493 records.One firm’s account. Victims are anonymized.
The CARLIY0S system as Straiker describes it. Model names and roles are from Straiker's report; none of it has been independently confirmed.

What to do now

  • If you bank in Latin America: no institution has been named, so there is no specific account to check. Turn on transaction alerts and treat unexpected calls or messages about your account with suspicion.
  • If you run a fintech or a small financial firm: the stolen material Straiker lists is mostly secrets. Rotate API keys, signing keys and database passwords on a schedule, and keep them out of code and config files.
  • If you run AI agents: Straiker's advice is to know what each agent can reach, test it against real attacks, and keep a way to cut its access fast.

Also today: three data leaks in Asia

Nikkei: 1.83 million records

Japanese media group Nikkei, owner of the Financial Times, said 1.83 million records were stolen from a cloud service it uses for system development, IT Pro reports. The access began in the early hours of October 7. About 150,000 records contained a name, email address, postal address, phone number or date of birth, and about 120,000 included an email address. Nikkei says no credit card information leaked, and it has disabled the credentials used. It does not yet know how they were stolen. It is the third breach to hit the company in the last few weeks, IT Pro says.

What to do: Nikkei says it is contacting everyone affected. Be wary of emails that use Nikkei's name to ask for logins or payment.

Arcadia: about 125,000 Japanese police officers and staff

A cyberattack on Arcadia, a cloud provider in Minoh, Osaka Prefecture, may have exposed details of about 125,000 police officers and staff. The Japan Times reports this, citing National Police Agency sources. Names and email addresses at 20 prefectural police forces are involved. The data sat in an emergency safety-check system, so many addresses are believed to be personal phone accounts. More than 18,000 email addresses from people and businesses signed up for crime alerts may also be exposed. No misuse has been confirmed, the sources said.

What to do: if you signed up for a prefectural police crime-alert email, watch for phishing that uses police branding.

State Bank of India: 3,897 customer records

State Bank of India told stock exchanges on Wednesday that it found 3,897 customer records with personal information among about 375,000 records on the dark web, The Hindu reports. The exposed details include mobile numbers, dates of birth, names, email and home addresses, and loan-related data. SBI says its core operations are unaffected and it has hired an independent cybersecurity agency to investigate. The Internet Freedom Foundation says SBI learned of the leak from outside agencies and had not said whether it had told affected customers.

What to do: the Foundation warns that affected customers are the most likely to get calls from people posing as SBI staff "who can recite their account details back to them." A caller who knows your details is not proof they are from the bank. Hang up and call the number on your card.

How to check if you're affected

What we left out

A hacker group claimed on BreachForums to have breached the Rajasthan Police website, India Today reports, but the paper says it cannot confirm the claim. Rajasthan Police had not commented. We left it out until it is confirmed.

Sources

php2shell

LiteLLM

CARLIY0S

Also today

More from the Security deskAll features