HTTP2Shell / Node2Shell (CVE-2026-111497): Brotli Decoder Out-of-Bounds Write Hits Node.js, Bun, Python and Envoy

HTTP2Shell, CVE-2026-111497: the same vulnerable Brotli decoder hidden inside Node.js, Bun, Python, Envoy, .NET and cdxgen, with malicious Brotli data entering from both sides.

Executive Summary

HTTP2Shell, first circulated as Node2Shell, is an out-of-bounds write in Google’s reference C Brotli decoder (c/dec/decode.c), tracked as CVE-2026-111497 and GHSA-9v8h-qqgm-4m35. Brotli 1.0.3 through 1.2.0 is affected. A crafted Brotli stream writes past an internal buffer and corrupts adjacent decoder state, which can leak memory, crash the process, or, under the right heap conditions, hand the attacker code execution. The nickname is unrelated to the HTTP/2 protocol; it reflects that HTTP content decoding is the most common path to the decoder.

The bug became a cross-ecosystem problem within three days. Node.js and Bun bundle the library. So do Envoy, the .NET runtime, Chromium, cdxgen’s standalone binaries and a long list of data and document tools. On the Python side, the PyPI Brotli and brotlicffi packages ship the vulnerable decoder, and requests, urllib3, aiohttp and httpx will use either one automatically to decode Content-Encoding: br responses. An application can be exposed without a single import of Brotli in its own code.

Patches exist for the main runtimes; the harder work is finding where the decoder is reachable. The attack runs in both directions: a hostile client can hit a server that inflates request bodies, and a hostile server can hit any client that decodes compressed responses. Webhooks, link previews, crawlers, URL importers and browsing AI agents are in scope, and inbound WAF rules do not cover any of them. Most vulnerable copies are vendored inside runtimes, wheels and static binaries, so manifest-based SCA reports them as clean.

TL;DR for Engineering Teams

What it isOut-of-bounds write in the Brotli C decoder, CVE-2026-111497, CVSS 4.0 9.2 Critical from the CNA (CWE-787 caused by CWE-252, an unchecked return value)
Where it bitesBrotli 1.0.3 to 1.2.0 wherever it is linked or vendored: Node.js 22/24/26, Bun 1.4.3 and earlier, PyPI Brotli and brotlicffi, Envoy and Istio with the Brotli decompressor, .NET BrotliStream and HttpClient auto-decompression, cdxgen standalone binaries and images
Why it mattersUnauthenticated and reachable both inbound (request bodies) and outbound (fetched responses). Imperva showed code execution on a stock Node.js 24.22.0 arm64 build. CISA SSVC on 23 October: exploitation none, automatable no, technical impact total. Not in KEV
Patch statusPartial. Upstream 1.0.10 / 1.1.1 / 1.2.1; Node.js 22.23.4 / 24.22.1 / 26.12.1; Bun 1.4.4; PyPI Brotli 1.2.1 and brotlicffi 1.2.1.0; Envoy and Istio fixed. .NET, PHP, Ruby, DuckDB, ClickHouse, Arrow, libjxl, MuPDF, 7-Zip forks and EDK II unpatched
Immediate actionUpgrade Node.js and Bun, rebuild images, pip install -U “Brotli>=1.2.1” “brotlicffi>=1.2.1.0”, restart processes. Until then, reject br request bodies at the edge and turn off automatic response decoding where services fetch attacker-chosen URLs

Vulnerability Overview

FieldValue
NamesHTTP2Shell, Node2Shell, Python2Shell, Broccoli2Shell (one bug)
VendorGoogle (CNA and upstream); redistributed by Node.js, Bun, PyPI maintainers, Envoy, Microsoft and others
ProductBrotli reference C decoder, c/dec/decode.c
Vulnerability typeOut-of-bounds write, heap memory corruption (CAPEC-100)
CWECWE-787 Out-of-bounds Write; CWE-252 Unchecked Return Value
CVSS4.0 9.2 Critical (CNA): CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. Node.js: High. Red Hat and Amazon Linux: 8.1 (CVSS 3.1). Istio: 7.7 for its own exposure. NVD: awaiting analysis
IdentifiersCVE-2026-111497, GHSA-9v8h-qqgm-4m35, PYSEC-2026-4322 (Brotli), PYSEC-2026-4323 (brotlicffi), Envoy GHSA-3wvj-j6qm-62mr
Reported byKhai Tran and Sylvie Mayer, OpenAI Codex Security. Node.js fix by Matteo Collina and Antoine du Hamel
Patch availableYes upstream and in major runtimes; no for many vendored copies
Active exploitationNot confirmed. CISA SSVC: exploitation none (23 October). Red Hat: no reliable public PoC for code execution
CISA KEVNot listed as of 24 October 2026

Technical Anatomy

Root cause

The flaw sits in block-switch handling. DecodeBlockTypeAndLength() returned a boolean, so callers could not tell “this input is malformed” from “I need more bytes.” The decoder’s fast path also dropped that return value, which is why the CVE record carries CWE-252 alongside CWE-787.

A crafted stream can drive the decoder into a block switch that valid input never produces. The decoder reads the failure as a request for more input and keeps appending attacker bytes to an internal buffer sized for eight bytes. Bytes past that boundary land on adjacent decoder state.

Upstream commit 0ed4268 (“Detect and report invalid stream earlier”) makes the function return a real error code on both the safe and fast paths: BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH (-17). Node.js cherry-picked that commit and exposes the new constant. Memory-safe ports hit the same logic error but fail safely: the Go port andybalholm/brotli can only panic, and the Rust brotli-decompressor returns an error.

Exploit path

  1. Entry point. The attacker puts a Brotli stream in front of a decoder. Inbound, that is a request body with Content-Encoding: br sent to a parser that inflates it (Express 5 and body-parser 2.x do this by default; a plain Node.js http server does not decode bodies on its own). Outbound, it is a response from an attacker-controlled host read by Node or Bun fetch(), urllib3, requests, aiohttp, httpx, Scrapy or libcurl with automatic decoding. File inputs also work: Parquet, JPEG XL, WOFF2, PDF, archives and firmware images.
  2. Vulnerability trigger. The stream encodes an invalid block switch. The fast path ignores the failure, the decoder waits for “more input,” and attacker bytes overrun the eight-byte buffer into neighboring decoder state.
  3. Execution impact. Memory disclosure or a crash at minimum. Imperva’s red team ran attacker-supplied code on an unmodified Node.js 24.22.0 Linux arm64 build, delivered both as a fetch() response and as an Express request body. It took several attempts, has not been released, and was not tested on other builds. For Python, corruption is confirmed under AddressSanitizer; no exploitation attempt has been published.

This article stays at the root-cause level on purpose. Exploit primitives beyond that are left out.

Disclosure timeline

The fix sat in public source for eight months before anyone labeled it a security issue. The CVE record dates public disclosure to 27 February 2026 for that reason, and every project carrying its own copy is now shipping late.

Date (2026)Event
27 FebUpstream commit 0ed4268 lands without a security label
21 OctNode.js ships 22.23.4, 24.22.1, 26.12.1 (High). Google tags Brotli 1.0.10, 1.1.1, 1.2.1. Vercel deploys inbound WAF rules. “Node2Shell” appears
22 OctCVE published by Google; GHSA-9v8h-qqgm-4m35 published; PyPI Brotli 1.2.1 released; Bun 1.4.4 ships; Imperva publishes RCE research. Amazon Linux 2023 lists brotli and nodejs24 as pending
23 Octbrotlicffi 1.2.1.0 on PyPI; CISA SSVC assessment; PYSEC-2026-4322 and -4323 added; GHSA review maps both PyPI packages; Envoy GHSA-3wvj-j6qm-62mr; Debian trixie fixed in 1.1.0-2+deb13u1; Go port fixed; the name “HTTP2Shell” appears
24 OctBun adopts the HTTP2Shell name. More than a dozen vendored copies still unpatched

Two corrections to circulating coverage. OpenAI did not find the bug in February; the root cause was fixed then without being recognized, and OpenAI found the vulnerability during a recent red-teaming exercise. Python also issued no advisory of its own; the Python impact comes from OpenSourceMalware and the PyPA PYSEC records.

Affected Versions

Fixed

PackageVulnerable VersionsFixed VersionNotes
Google Brotli (C)1.0.3 to 1.0.9, 1.1.0, 1.2.01.0.10, 1.1.1, 1.2.1CVE record ranges; source of every other copy
Node.js 22.x< 22.23.422.23.4Bundled copy; OS patch does not fix official binaries or Docker images
Node.js 24.x< 24.22.124.22.1Imperva RCE shown on 24.22.0 arm64
Node.js 26.x< 26.12.126.12.1
Node.js 18.x, 20.x, 23.x, 25.xAllNoneEnd of life
Bun1.4.3 and earlier1.4.4Rebuild bun build –compile executables
PyPI Brotli1.0.4, 1.0.6, 1.0.7, 1.0.8, 1.0.9, 1.1.0, 1.2.01.2.1PYSEC-2026-4322; released versions in range per PyPI
PyPI brotlicffi1.0.9.0 to 1.0.9.2, 1.1.0.0, 1.2.0.0 to 1.2.0.21.2.1.0PYSEC-2026-4323
Envoy1.39.2, 1.38.5, 1.37.7, 1.36.11 and earlier1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12Only with the Brotli decompressor configured
Istio1.31.0 to 1.31.1, 1.30.0 to 1.30.5, 1.29.0 to 1.29.81.31.2, 1.30.6, 1.29.9Only with Brotli decompression enabled; 1.29 is end of life
cdxgen standalone binaries and images13.4.0 and earlier, 12.8.8 and earlier13.5.0, 12.8.9npm install uses system Node instead
Debian brotlibookworm, trixie1.0.9-2+deb12u1, 1.1.0-2+deb13u1Backports keep the old upstream version string; sid unfixed
Alpine 3.24 brotli< 1.2.1-r01.2.1-r0
Go andybalholm/brotliBefore 23 Oct fixFixed 23 OctCrash only
Chromium, Firefox, ngx_brotli, Brotli4j, Ghostscript, SumatraPDFVendor-specificReported fixedElectron apps carry Chromium and Node copies

Not fixed yet

PackageVulnerable VersionsFixed VersionNotes
.NET runtimeBundles 1.1.0NoneBrotliDecoder, BrotliStream, HttpClient auto-decompression
PHP brotli extensionCurrentPending (PR #105)
Ruby brotli gemCurrentPending (issue #64)
DuckDB, ClickHouseCurrentPending (PR #27791, PR #127419)Parquet input
Apache Arrow bundled buildBundles 1.0.9NoneParquet input
libjxl, MuPDF, NanaZip, 7-Zip-zstd, p7zipCurrentNoneFile-format input
EDK II, UEFIToolCurrentNoneFirmware images
GraalJS / v8-jsi, YDBCurrentNone
Debian nodejs, Amazon Linux 2023 brotli and nodejs24CurrentPendingDistro packages lag upstream

Pure Java, JavaScript and C# ports (pdf.js, iText, HtmlUnit) are not affected.

Exposure Analysis

EnvironmentRisk LevelReason
Internet-facing Node.js APIs on Express 5 / body-parser 2.xCriticalexpress.json() inflates br bodies by default; unauthenticated reach
Services fetching attacker-chosen URLs (webhooks, link previews, URL import, image proxies, OIDC discovery)CriticalHostile server returns a br response; inbound WAF rules never see it
Browsing AI agents and crawlersCriticalEvery fetched page is attacker input to an auto-decoding client
Envoy / Istio with the Brotli decompressorHighProxy decodes before application controls apply
CI/CD runners, build tools, SBOM generators (cdxgen binaries)HighScan and download untrusted input; runners hold tokens and signing keys
Data pipelines (DuckDB, Arrow, ClickHouse) on third-party ParquetHighFile-borne trigger, no fix yet
.NET services with HttpClient auto-decompressionHighNo fix yet
Developer workstations, Electron appsMediumTwo embedded copies per Electron app; local secrets
Apache / Nginx default configsLowEncoder only; request bodies not decoded by default

The Python exposure has a trap built in. Earlier urllib3 2.6.x decompression fixes told users to move to at least Brotli 1.2.0 or brotlicffi 1.2.0.0, and the urllib3[brotli] extra enforced those floors. Teams that followed that guidance landed on the last vulnerable releases. Any environment with either package installed, directly or through an extra, decodes br responses in requests and aiohttp automatically.

Real-World Impact

No in-the-wild exploitation has been reported. CISA’s SSVC entry on 23 October records exploitation as none and automatable as no, with total technical impact, and Red Hat reports no reliable public PoC for code execution. Published PoC code reportedly reaches code execution only against deliberately weakened builds. That gap will close: the patch diff is public, the trigger condition is small, and downstream release notes already describe reachable paths in plain language. Vendure states its Shop API accepts Brotli request bodies, so an unauthenticated request reaches the vulnerable code. Bulwark webmail describes a signed-in user pointing the server at a calendar or WebDAV host that returns a crafted response.

The realistic scenarios follow the outbound path. An attacker registers a webhook or submits a URL, the backend fetches it, the response decodes, and the attacker lands in a process that usually holds cloud credentials, database secrets and service tokens. CI runners and SBOM generators that scan untrusted artifacts sit in the same position with higher-value secrets. Inbound, any Express 5 API that accepts JSON is reachable with one POST. Memory disclosure is the lower bar; leaked heap from a shared process can expose other users’ request data.

Scale comes from install base, not telemetry. Node.js and requests sit under most server-side web code, and the vendored list covers browsers, the .NET runtime, data warehouses and firmware tooling. Phoenix is not quoting a Shodan figure, because exposure depends on decoder configuration and fetch behavior that banner scans cannot see.

Detection Guidance

Log indicators

SignalWhereMeaning
Content-Encoding containing br on requests (any case, including gzip, br)Edge proxy, WAF, API gateway logsInbound attempts; legitimate clients rarely send Brotli bodies to JSON APIs
BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH or error -17Application logs on patched Node.js and Brotli 1.2.1Malformed block switch rejected; likely a probe
SIGSEGV / SIGABRT or heap-corruption aborts in node, bun, python, envoyContainer restarts, journald, crash reportersPossible trigger on an unpatched host, especially after a br request or outbound fetch
Outbound fetches to new or user-supplied hosts answering Content-Encoding: brEgress proxy logsOutbound path; correlate with webhook, preview and import features
Parquet, JPEG XL, WOFF2 or PDF uploads followed by worker crashesIngestion logsFile-borne trigger against unpatched tooling

Scanner coverage

Do not trust early-week scan results. The CVE record names only github.com/google/brotli, and reporting on 24 October said the GHSA still listed no affected package. The GHSA page has since been reviewed and maps brotli >=1.0.3,<1.2.1 and brotlicffi >=1.0.3,<1.2.1.0, and OSV carries the PYSEC entries. Re-run pip-audit, Dependabot, Safety and Phoenix SCA ingestion, then confirm by hand that findings appear.

Manifest scanning still misses most copies. The decoder inside Node.js, Bun, Envoy, .NET, cdxgen binaries and wheels never appears in a lockfile. Distro backports cut the other way: Debian’s fixed 1.0.9-2+deb12u1 still reads as 1.0.9, so naive version matching yields false positives. Node.js cherry-picked the fix, so judge Node by the Node version, not process.versions.brotli.

Advisory data for HTTP2Shell changed daily this week, and it will keep changing as vendored copies get fixed. Phoenix Blue, Phoenix Security’s free threat intelligence feed, follows issues like this one as they move: from a quiet upstream commit to a published CVE, from one runtime to every product that vendors the same code, and from claimed RCE to demonstrated RCE. Sign up free at phxintel.security.

Protect yourself with the latest threat intelligence, get free access to Phoenix Blue Today

Verification steps for teams

  1. Inventory runtimes, including base images: docker run –rm <image> node -v and bun –version. Below 22.23.4, 24.22.1, 26.12.1 or 1.4.4 is vulnerable.
  2. Check Python lockfiles and live environments: grep -RniE ‘^(brotli|brotlicffi)[=<>~ ]’ requirements*.txt poetry.lock uv.lock Pipfile.lock and python -c “import brotli; print(brotli.__version__)”, repeated for brotlicffi. Look for extras such as urllib3[brotli], httpx[brotli] and aiohttp[speedups].
  3. Find vendored native copies: find / -name ‘libbrotlidec*’ 2>/dev/null, plus strings -a <binary> | grep -m1 BrotliDecoderDecompressStream across build artifacts, Electron bundles, cdxgen binaries and site-packages.
  4. Search proxy config for envoy.compression.brotli.decompressor, including Istio EnvoyFilter manifests.
  5. Map every outbound fetch feature to its runtime and HTTP client and mark it reachable or not.
  6. Regenerate SBOMs from built images rather than source manifests and diff them against the tables above.

Remediation Guidance

Immediate actions

  1. Upgrade Node.js to 22.23.4, 24.22.1 or 26.12.1 and Bun to 1.4.4. Rebuild and redeploy every image and compiled executable; a running process keeps the old decoder until it restarts.
  2. Upgrade Python: pip install -U “Brotli>=1.2.1” “brotlicffi>=1.2.1.0”, pin those floors in lockfiles and constraints files, and restart long-running workers.
  3. Upgrade system libbrotli where Node, libcurl or Python link it dynamically (Debian nodejs, libcurl on Debian 12 and Ubuntu 24.04), then restart the processes that loaded it.
  4. Upgrade Envoy to 1.36.12, 1.37.8, 1.38.6, 1.39.3 or 1.40.0 and Istio to 1.30.6 or 1.31.2 where the Brotli decompressor is on. Plan the move off Istio 1.29.
  5. Upgrade cdxgen standalone binaries and images to 12.8.9 or 13.5.0.
  6. Move workloads off Node.js 18.x, 20.x, 23.x and 25.x.
  7. Rotate credentials held by any internet-facing process that ran a vulnerable decoder on untrusted br input. Memory disclosure leaves no clean trail.

Temporary mitigations

Inbound, reject requests whose Content-Encoding contains br before any proxy or body parser decodes them, on direct-to-origin routes as well as the CDN. In Express, put a guard ahead of every parser or set inflate: false:

app.use((req, res, next) => {
  const ce = (req.headers['content-encoding'] || '').toLowerCase();
  if (ce.split(',').some(v => v.trim() === 'br')) return res.status(415).end();
  next();
});

Outbound, dropping br from Accept-Encoding does not help, because a server can send Brotli regardless. Disable automatic decoding for untrusted fetches and check Content-Encoding before reading the body; in urllib3, use preload_content=False and read with decode_content=False. Node.js fetch() has no published workaround, so the runtime upgrade is the only fix there.

For Python services where Brotli is optional, uninstall both Brotli and brotlicffi and drop extras such as httpx[brotli]; clients fall back to gzip and deflate. For Next.js, images.unoptimized stops the optimizer fetching and decoding remote images. For Envoy and Istio, remove the Brotli decompressor or disable both its directions, and leave gzip and zstd entries that share the envoy.filters.http.decompressor name. For .NET, disable Brotli in HttpClientHandler.AutomaticDecompression on clients that fetch untrusted URLs. Quarantine third-party Parquet with Brotli-compressed columns until DuckDB, Arrow and ClickHouse ship fixes. Vercel and Azure WAF rules cover inbound traffic only.

Phoenix Security Recommendations

HTTP2Shell is a vendored-library problem first, so the work is separating “the advisory applies to this artifact” from “this decoder is reachable with untrusted input in production.”

Contextual deduplication collapses the same CVE reported by SCA on requirements.txt, by container scanning on the Node base image and by the distro scanner on libbrotli into one finding per asset. Without it, one Node service can surface as three tickets with three owners and three version strings, one of them a Debian backport false positive.

Binary and SBOM evidence closes the manifest gap. Phoenix ingests image-level SBOMs and runtime package evidence, so a Node 24.22.0 binary, a Bun-compiled executable, a cdxgen binary or a .NET service carrying Brotli 1.1.0 shows up even when no lockfile names Brotli. Mark those as vendored so owners know a dependency bump will not fix them.

Reachability analysis ranks what is left. An internet-facing Express 5 service with express.json(), a webhook worker fetching customer URLs and an Envoy mesh with the Brotli decompressor go first. A batch job with Brotli installed and no untrusted fetches waits. Attack surface management supplies the internet-facing half and ties it to the owning team.

Run it as a remediation campaign:

  1. Create the HTTP2Shell campaign scoped to CVE-2026-111497, GHSA-9v8h-qqgm-4m35, PYSEC-2026-4322 and PYSEC-2026-4323, with fixed versions as targets.
  2. Assign owners automatically through vulnerability ownership attribution on repositories, images and services.
  3. Track fixes per asset with separate states for patched, mitigated (br rejected or auto-decode off) and no vendor fix.
  4. Verify runtime exposure after redeploy from the running image digest and Node version, not the merged pull request.

Download the campaign config. Import it into Phoenix to find every vulnerable Brotli, brotlicffi and Bun version across your assets.

Phoenix Security correlates vulnerable decoder copies with running workloads, finds internet-exposed and fetch-heavy services through attack surface management, and assigns each to an owner, shrinking a cross-ecosystem CVE into a backlog teams can close.

External References

  1. CVE record (cvelistV5, with CISA ADP SSVC)
  2. NVD
  3. GitHub Advisory GHSA-9v8h-qqgm-4m35
  4. PyPA PYSEC-2026-4322 (Brotli)
  5. PyPA PYSEC-2026-4323 (brotlicffi)
  6. Node.js October 2026 security releases
  7. Node.js v22.23.4 release notes
  8. google/brotli commits 0ed4268, 50a9b70, b418fa8, da98063
  9. google/brotli releases v1.0.10, v1.1.1, v1.2.1
  10. Envoy advisory GHSA-3wvj-j6qm-62mr
  11. ISTIO-SECURITY-2026-007
  12. Debian security tracker
  13. OpenSourceMalware, Node2Shell affects Python
  14. Imperva, Node2Shell from Brotli data to RCE
  15. The Hacker News, Brotli decoder flaw also affects Bun, Python and other software (24 Oct 2026)
  16. Patch the Planet
  17. Broccoli2Shell vendored-copy tracker
  18. Vendure, October 2026 Node.js releases
  19. Microsoft, Azure WAF for CVE-2026-111497
Sarah is a cybersecurity researcher and product security specialist with over a decade of experience helping organisations identify and remediate vulnerabilities at scale. With a background in software engineering and threat intelligence, she has worked with Fortune 500 companies across financial services and healthcare sectors. Sarah is passionate about making security accessible and actionable for development teams.

Discuss this blog with our community on Slack

Join our AppSec Phoenix community on Slack to discuss this blog and other news with our professional security team

From our Blog

LiteLLM was backdoored for the second time this year. Version 1.107.0 shipped a credential stealer in all seven PyPI wheels and the official Docker images, including latest. The attacker drove BerriAI’s own release pipeline with GitHub tokens scraped from gateway logs. No CVE exists, so CVE-based scanners see nothing.
Francesco Cipollone
Phoenix Security’s latest platform release tackles the three points where AI security tools break down: unverified findings, firewalls nobody can live with, and remediation that stops at a ticket. Grounded verification, real exception workflows, and PR-first remediation replace guesswork with proof, and tickets with merged code.
Alex Evangelou
Anthropic’s models found 29,439 candidate vulnerabilities in open source. Its dashboard shows 516 patched upstream. That 1.75% is the real story. Vulnerability management now depends on prioritisation, ownership and how fast you consume upstream fixes, because exploits arrive in minutes and median KEV remediation sits at 43 days.
Francesco Cipollone
Phoenix Security now ships two open-source clients — a full v1.27 CLI and a Model Context Protocol server — so security teams can query risk posture from the terminal or from Claude, Cursor, and ChatGPT. Same data, same risk math as the dashboard, now reachable from wherever the question gets asked.
Jorge Vico Castillo
Derek

Derek Fisher

Head of product security at a global fintech

Derek Fisher – Head of product security at a global fintech. Speaker, instructor, and author in application security.

Derek is an award winning author of a children’s book series in cybersecurity as well as the author of “The Application Security Handbook.” He is a university instructor at Temple University where he teaches software development security to undergraduate and graduate students. He is a speaker on topics in the cybersecurity space and has led teams, large and small, at organizations in the healthcare and financial industries. He has built and matured information security teams as well as implemented organizational information security strategies to reduce the organizations risk.

Derek got his start in the hardware engineering space where he learned about designing circuits and building assemblies for commercial and military applications. He later pursued a computer science degree in order to advance a career in software development. This is where Derek was introduced to cybersecurity and soon caught the bug. He found a mentor to help him grow in cybersecurity and then pursued a graduate degree in the subject.

Since then Derek has worked in the product security space as an architect and leader. He has led teams to deliver more secure software in organizations from multiple industries. His focus has been to raise the security awareness of the engineering organization while maintaining a practice of secure code development, delivery, and operations.

In his role, Jeevan handles a range of tasks, from architecting security solutions to collaborating with Engineering Leadership to address security vulnerabilities at scale and embed security into the fabric of the organization.

Jeevan Singh

Jeevan Singh

Founder of Manicode Security

Jeevan Singh is the Director of Security Engineering at Rippling, with a background spanning various Engineering and Security leadership roles over the course of his career. He’s dedicated to the integration of security practices into software development, working to create a security-aware culture within organizations and imparting security best practices to the team.
In his role, Jeevan handles a range of tasks, from architecting security solutions to collaborating with Engineering Leadership to address security vulnerabilities at scale and embed security into the fabric of the organization.

James

James Berthoty

Founder of Latio Tech

James Berthoty has over ten years of experience across product and security domains. He founded Latio Tech to help companies find the right security tools for their needs without vendor bias.

christophe

Christophe Parisel

Senior Cloud Security Architect

Senior Cloud Security Architect

Chris

Chris Romeo

Co-Founder
Security Journey

Chris Romeo is a leading voice and thinker in application security, threat modeling, and security champions and the CEO of Devici and General Partner at Kerr Ventures. Chris hosts the award-winning “Application Security Podcast,” “The Security Table,” and “The Threat Modeling Podcast” and is a highly rated industry speaker and trainer, featured at the RSA Conference, the AppSec Village @ DefCon, OWASP Global AppSec, ISC2 Security Congress, InfoSec World and All Day DevOps. Chris founded Security Journey, a security education company, leading to an exit in 2022. Chris was the Chief Security Advocate at Cisco, spreading security knowledge through education and champion programs. Chris has twenty-six years of security experience, holding positions across the gamut, including application security, security engineering, incident response, and various Executive roles. Chris holds the CISSP and CSSLP certifications.

jim

Jim Manico

Founder of Manicode Security

Jim Manico is the founder of Manicode Security, where he trains software developers on secure coding and security engineering. Jim is also the founder of Brakeman Security, Inc. and an investor/advisor for Signal Sciences. He is the author of Iron-Clad Java: Building Secure Web Applications (McGraw-Hill), a frequent speaker on secure software practices, and a member of the JavaOne Rockstar speaker community. Jim is also a volunteer for and former board member of the OWASP foundation.

Join our Mailing list!

Get all the latest news, exclusive deals, and feature updates.

The IKIGAI concept
Protected By
Shield Security PRO