DevSecOps for startups on AWS: patched, scanned and written down.
For a team of two to fifteen engineers on AWS, DevSecOps is not a separate department. It is the security part of running production: knowing what you run, rebuilding it when a fix ships, keeping access tight, and being able to say within hours whether a new CVE touches you. We do that work inside our monthly DevOps plans, not as an extra product.
No separate security retainer. Most teams start with the five-day readiness review, which covers access, keys and public exposure.
Checked: 23 Oct 2026
Sources: PHP Foundation, NVD, AWS Security Blog, GitLab patch releases 19.5.1, 19.4.2, 19.4.1, 19.3.2, Rapid7, SecurityWeek, NVD Copy Fail, ALAS, Red Hat RHSB-2026-009, CISA KEV.
Checked: 23 Oct 2026
Six months of CVEs that landed on ordinary startup stacks.
No exotic setup needed: a PHP app, a self-hosted GitLab, a Linux node running containers.
| CVE | What it is | Fixed | Exploited / KEV | If you run on AWS |
|---|---|---|---|---|
| CVE-2026-109618, CVE-2026-109619 "PHP2Shell" | Unauthenticated remote code execution in PHP itself, before your code runs. mod_php, PHP-FPM, FrankenPHP and others. | 21 Oct 2026 (8.2.35, 8.3.36, 8.4.27, 8.5.12) | Attempt seen by AWS on 17 Oct, before disclosure. Not in KEV at 21 Oct. | PHP is in your image or on your instance. You rebuild or upgrade. AWS WAF's PHP rule group is a mitigation, not a fix. |
| CVE-2026-110264 | GitLab: unauthenticated RCE through a crafted regex. CVSS 10.0. | 21 Oct 2026 | Not in KEV | Self-managed GitLab on EC2 or EKS is yours to upgrade. gitlab.com was patched first. |
| CVE-2026-97229 | GitLab: RCE via regex in .gitlab-ci.yml. CVSS 10.0. | 12 Oct 2026 | Public proof of concept from Rapid7. No confirmed exploitation. | Worst where public projects and self-registration are on. |
| CVE-2026-93577 | GitLab: authenticated RCE in the CI config regex compiler. CVSS 9.9. | 23 Sep 2026 | No reports | Any user who can push CI config can reach it. |
| CVE-2026-85706 | GitLab: unauthenticated file read. Exposes gitlab-secrets.json, database credentials and tokens. CVSS 10.0. | 10 Sep 2026 | KEV 11 Sep 2026. Attempts seen one day after the patch. | Patching is not enough: rotate CI variables, runner and deploy tokens, and any AWS keys stored in GitLab, then read CloudTrail. |
| CVE-2026-19478 | GitLab: unauthenticated code injection via GraphQL. CVSS 9.4. | 17 Aug 2026 | Not in KEV | Same as above: self-managed only. |
| CVE-2026-31431 "Copy Fail" | Linux kernel: any local user to root. Public exploit works on Amazon Linux 2023 and Ubuntu 24.04. | Public 22 Apr; Amazon Linux kernels 5 May 2026 | KEV 1 May 2026 | On ECS or EKS nodes you run, one compromised container becomes the node. On Fargate, the host kernel is AWS's to patch. |
| CVE-2026-53362 | Linux kernel IPv6 out-of-bounds write: container escape where unprivileged user namespaces are allowed. | Red Hat 1 Jul; Amazon Linux 2023 7 Jul 2026 | KEV 27 Aug 2026 | Roll your nodes onto the new AMI. Amazon Linux 2 core is not affected. |
Dates are the vendor fix or advisory date. "KEV" is CISA's Known Exploited Vulnerabilities catalog, by date added.
For internet-facing software the gap between a fix and an attack is now hours to a day, and sometimes negative. The numbers from this year's reports say the same thing:
- Exploitation of vulnerabilities is "now the most common initial access vector for breaches. It has risen to 31%" (Verizon 2026 Data Breach Investigations Report).
- In the same report, "only 26% of the CISA KEV vulnerabilities had been fully remediated", and the median time to patch them was 43 days (Verizon DBIR 2026).
- Mandiant puts the mean time to exploit at "an estimated -7 days", meaning exploitation routinely starts before a patch exists (M-Trends 2026).
- AWS saw a PHP2Shell attempt in its honeypots on 17 October, four days before the fix shipped, and told security leaders to "measure patch and mitigation timelines in hours" for critical, internet-facing systems (AWS Security Blog).
On the day PHP2Shell shipped, a common question in the Hacker News thread was not how to fix it but when Amazon Linux 2023 would get the package. That wait is real, which is why a mitigation step and an inventory matter as much as the patch itself.
See AWS's shared responsibility model, the Amazon Linux 2 FAQ and the Amazon Linux security centre.
Checked: 23 Oct 2026
AWS security for startups: who patches what, service by service.
"AWS handles security" is half true. AWS patches what it operates. Everything you put on top, including the operating system inside your container image, is yours. Here is the split for the services startups actually use.
| Where it runs | AWS patches | You patch |
|---|---|---|
| Lambda | The execution environment and the managed runtimes (Node.js, Python and the rest) | Your dependencies; container-image functions and custom runtimes, by rebuilding and redeploying; moving off deprecated runtimes |
| ECS or EKS on Fargate | The host and its kernel, through Fargate platform versions | Everything in your image: base OS packages, language runtime, libraries. Rebuild and force new tasks |
| ECS or EKS on EC2 | Publishes updated ECS-optimized, EKS-optimized and Bottlerocket AMIs | Rolling your nodes onto them, and rebooting. Plus everything in your images. Pods share the node kernel, so a kernel bug can turn one bad pod into a node compromise |
| Plain EC2 | The hypervisor and hardware | The whole operating system and everything on it: kernel, packages, PHP, nginx, agents |
| RDS and Aurora | The host operating system | Scheduling engine minor version upgrades, or turning on automatic minor upgrades with a maintenance window you chose |
| Self-hosted GitLab on EC2 | Nothing above the hypervisor | All of it: GitLab upgrades, the bundled database, the OS, and rotating secrets after a file-read bug like CVE-2026-85706 |
| Your app dependencies and container images | Nothing | All of it, on every service above. This is where most findings live |
Amazon Linux 2 reached end of support on 30 June 2026 and "is no longer receiving standard security updates" (AWS). It shows: the Amazon Linux security centre lists "No Fix Planned" for PHP2Shell in AL2's core PHP package, and for the KEV-listed kernel bug CVE-2025-39964 on the AL2 core kernel. If old AMIs, old ECS nodes or a long-lived bastion still run AL2, moving them to Amazon Linux 2023 is the patch.
Teams coming from Heroku feel this gap most. The platform used to rebuild the stack under you; on AWS that job moves to whoever owns the pipeline. Our Heroku to AWS migrations set up the rebuilds as part of the move.
AWS's own Startup Security Baseline covers the account controls. This section is the part that keeps running after setup.
Prioritisation data: VulnCheck 1H-2026, FIRST EPSS.
Patch management for startups on AWS: how DevSecOps works day to day.
On AWS, most patch management for startups is not running apt upgrade on a server. It is rebuilding things from fresh inputs and rolling them out with the same pipeline you use for features. If the pipeline is good, patching is a normal deploy. If it isn't, patching is a scary event, and scary events get postponed.
| Practice | What it looks like on AWS | When |
|---|---|---|
| Image rebuilds | Images rebuilt from a fresh base image on a schedule, not only when the app changes. ECR enhanced scanning (Amazon Inspector) on push and continuously | Weekly, and on demand for a critical |
| AMI rotation | ECS and EKS nodes replaced with the latest optimized AMI: managed node group update, Karpenter drift or an Auto Scaling instance refresh. No hand-patched long-lived hosts | Monthly, and within the deadline for a kernel KEV |
| Database minor versions | RDS and Aurora minor upgrades in a set maintenance window, tried on staging first | As released, in the window |
| Dependency update PRs | Dependabot or Renovate, grouped weekly so the team sees one PR, not forty. Security updates go out on their own, straight away | Continuous |
| SBOM | A software bill of materials produced at build time and kept with the image, so "do we run X version Y anywhere" is a query, not an afternoon | Every build |
| Secrets scanning | Push protection on the repository host, plus a scan of history once. Secrets in Secrets Manager or Parameter Store, never in CI variables if it can be avoided | Every push |
| Least privilege | IAM Identity Center with MFA for people, short-lived roles for CI (see which CI platforms support OIDC to AWS), no long-lived access keys, task roles scoped per service | Set once, reviewed quarterly |
| Instance metadata | IMDSv2 required on every instance and launch template, hop limit 1 where containers run on the node | Set once, enforced by Config |
| Detection and audit | GuardDuty in every region you use, an organisation CloudTrail trail to a separate account, alerts routed to a person | Set once, answered daily |
Prioritise by exploitation, not by CVSS alone.
Most scanner findings will never matter: only about 1.4% of CVEs published in the first half of 2026 made it into CISA's KEV catalog (VulnCheck). So we sort findings by three questions. Is it in KEV, or is there credible exploitation? Is the affected component reachable from the internet? What does EPSS, FIRST's exploit prediction score, say about the next 30 days? CVSS breaks ties.
KEV alone is not enough either. VulnCheck measured a median of 80 days from CVE publication to KEV listing in the first half of 2026, and kernel bugs from 2018, 2022 and 2025 were added to KEV this year. A kernel fix that is "not in KEV yet" still goes out with the next AMI rotation. Most teams still sort by CVSS score alone, which is how a medium that is being exploited waits behind a dozen criticals that never will be.
What to skip at seed stage.
A SIEM, a 24/7 security operations centre, a SAST suite that files a thousand tickets on day one, and a cloud security platform licence when Security Hub's standard checks would do. Add them when a customer contract or a SOC 2 scope asks, not before. Our DevOps for startups guide maps the rest of the work by stage, and AWS for startups covers the account setup underneath it.
Fig. 1
Illustrative: not a client account. A PHP2Shell-type event on ECS Fargate, times from the advisory. Versions from the PHP Foundation, mitigations from AWS, packages from ALAS.
Our CVE response process, from advisory to patched production.
The best public write-ups this year, like Cloudflare's on Copy Fail, open with whether they were affected, then give a timeline, the fix and the mitigation. Ours follows five steps.
- Triage against your inventory, within hours. SBOMs, ECR and Inspector findings, AMI IDs and the Terraform tell us where the component runs and whether it faces the internet.
- An "are we affected" note to you. Yes, no or partly, which services, and what happens next. Short enough to forward to a customer.
- Fix or mitigation. The patch, or a mitigation first if the distro package lags.
- Verification. Running versions checked, a rescan, and a look through logs for signs of exploitation from before the advisory.
- Write-up. What was affected, what we did, timestamps. Filed where your auditor and your security questionnaire answers can point to it.

Illustrative timeline, not a client account.
- Advisory published.
PHP releases 8.2.35, 8.3.36, 8.4.27 and 8.5.12. We query the SBOMs: two services run PHP 8.3 on a Debian-based image; one is behind a public load balancer, one is an internal worker.
- "Are we affected" note sent.
Yes, two services, one internet-facing. Mitigation going on now, patched images to follow, next update in four hours.
- Mitigation live.
The AWS WAF PHP managed rule group enabled on the public load balancer, and
session.upload_progress.enabled=0shipped as a config change. These are mitigations, not fixes: the patched images still have to ship. - Patched images.
Images rebuilt on the fixed base, scanned in CI, deployed to staging, smoke-tested, then rolled to production. ECS replaces the running tasks.
- Verified.
Every running task reports the fixed version. Inspector findings closed. Load balancer and WAF logs searched back to before the advisory, since exploitation started before disclosure.
- Write-up.
One page with the timeline, the versions before and after, and one follow-up: the worker image was three months stale and now rebuilds weekly.
On Amazon Linux or Ubuntu packages the patched step waits for the distro. For PHP2Shell, Amazon Linux 2023 published fixed PHP packages the day after the release, and AL2 core PHP has no fix planned. The mitigation step is what covers that gap.
SOC 2 sets no day counts. Auditors look for a documented program that you actually follow (Linford & Co), and tools like Vanta track your deadlines as audit evidence.
Vulnerability management for startups: how fast we fix, by severity and plan.
This is the core of a vulnerability management policy for startups, written so you can paste it into your own: one table, one rule for when the clock starts. The clock starts when a fix or a mitigation is public and the issue affects your environment. Business days are ours, in support hours.
| Severity | Essentials | Growth | Scale |
|---|---|---|---|
| Known exploited (KEV) and internet-facing | 5 business days | 2 business days | 24 hours |
| Critical | 10 business days | 5 business days | 3 business days |
| High | 30 business days | 15 business days | 10 business days |
| Medium and low | Next monthly cycle | ||

"Fixed" means patched in production, or a documented mitigation in place with the patch scheduled, when no patch exists for your platform yet. Exceptions are written down with a reason and a review date, which is what an auditor asks to see.
Why write it down? SOC 2 auditors don't bring their own numbers. They read your policy, then check whether your tickets met it. A strict promise you miss is a finding; a realistic one you keep is evidence.
Buff strips are fixed price, blue are monthly. Prices in USD, excluding tax.
What's included, and what it costs.
Start with the review. In five days we read your accounts, IAM, keys, public exposure, pipelines and images, and you get a ranked fix list.
Then a plan. Everything in sections 03 to 05 is part of the work on every plan: rebuilds, AMI rotation, database minor versions, dependency PRs, scanning, access reviews, GuardDuty triage and the CVE response process. The plans differ in hours, response time and the deadlines above.
Not included: 24/7 SOC or MSSP monitoring, penetration testing (we coordinate with a pen-test firm you choose and fix what it finds), and signing compliance reports, which is an independent CPA firm's job. The review fee comes off month one if you start within 30 days. All prices.
The same plans are sold as managed DevOps, where we own the running of things, and fractional DevOps, where you direct the hours. Security work counts against the plan's hours like any other task; AWS charges for Inspector, GuardDuty and Security Hub go on your bill, unmarked. If you want to check your setup yourself first, the production readiness checklist has the security rows. If the app was built with Lovable, Replit or Bolt, start with the vibe-coded app security checklist.
Questions about DevSecOps for startups.
What is DevSecOps for a startup?
Security work done inside the same pipeline and routine as the rest of operations, by the same people. In practice: images and nodes rebuilt on a schedule, dependency updates merged weekly, scanning in CI, tight IAM, GuardDuty and CloudTrail on, and a written process for when a serious CVE lands. No separate team, no separate tooling project.
How fast should a startup patch a critical CVE?
For anything known to be exploited and reachable from the internet, in hours to a few days. AWS's own advice after PHP2Shell was to "measure patch and mitigation timelines in hours" for critical, internet-facing systems, which is why our process puts a mitigation first. For other criticals, days rather than weeks. The table in section 05 is what we propose to commit to per plan. Whatever you choose, write it down and meet it; that is what a SOC 2 auditor checks.
Do we need a security engineer?
Not usually below fifteen engineers, unless security is the product or a large customer requires a named owner. The work in this page is mostly operations work done consistently. Hire a security engineer when questionnaires, pen-test findings and policy work fill a week every week; until then, an owner for the routine and a pen-test firm once a year cover most of it.
Does AWS patch Fargate for us?
AWS patches the Fargate hosts and their kernel, through the Fargate platform versions it runs. It does not patch your container image. The OS packages, language runtime and libraries inside it are yours, so PHP2Shell on Fargate still meant rebuilding and redeploying.
Is Amazon Linux 2 still safe to run?
It reached end of support on 30 June 2026 and no longer gets standard security updates. Some vulnerabilities are already marked "No Fix Planned" for AL2 core packages, including PHP2Shell in PHP and a KEV-listed kernel bug. Plan the move to Amazon Linux 2023 now, starting with anything internet-facing.
Do you do penetration testing?
No. We prepare for it, scope it with the pen-test firm you choose, give them a clean environment, and fix the findings within the deadlines above. Testing your own work is not independent, and buyers know it.