CVE
CVE-2026-123270, CVE-2026-123797, CVE-2026-123800, CVE-2026-123798, CVE-2026-123802, CVE-2026-123803, CVE-2026-123799, CVE-2026-123801, CVE-2026-123804, CVE-2026-63436, CVE-2026-41678, CVE-2026-41676, CVE-2026-42327, CVE-2026-41681, CVE-2026-44662, CVE-2026-45784, CVE-2026-41898, CVE-2026-41677, CVE-2026-124959, CVE-2026-124249, CVE-2026-19552, CVE-2026-84503, CVE-2026-119610, CVE-2026-124683, CVE-2026-118492, CVE-2026-119743
CWE
CWE-306, CWE-94, CWE-287, CWE-22, CWE-787, CWE-125, CWE-88, CWE-297, CWE-407, CWE-200
Affected Surface
- Go data-streaming service Redpanda Connect (`github.com/redpanda-data/connect`, formerly Benthos) versions `4.39.0` through `4.110.0` in default `streams` mode, and `>= 4.111.0` when started with `--bind-http` without `http.basic_auth` (`CVE-2026-123270`, CVSS 9.8 Critical)
- Java authentication server SuperTokens Core (`io.supertokens:core`) versions `< 11.3.8`, `< 11.4.8`, `< 12.0.11`, `< 12.1.2`, `< 12.2.1`, and `< 12.3.1` across 8 CVEs and 9 additional GitHub Advisories (`CVE-2026-123800` CVSS 9.9 Critical, `CVE-2026-123798` / `CVE-2026-123802` / `CVE-2026-123803` CVSS 8.1 High, `CVE-2026-123797` CVSS 7.5 High, `CVE-2026-123799` / `CVE-2026-123801` CVSS 7.4 High, `CVE-2026-123804` CVSS 6.8 Medium, plus `GHSA-rg6v-28j6-7rj9`, `GHSA-gwhx-68r6-qm37`, `GHSA-qq3r-g9v7-4853`, and `GHSA-9mv6-rgp8-qc98`)
- Maven `org.zeroturnaround:zt-zip` versions `< 1.18.0` (`CVE-2026-63436` / `GHSA-52c6-99qm-3hqr`, High `8.2` GHSA / `6.1` NVD) and crates.io `openssl` (`rust-openssl`) versions `< 0.10.80` across 8 RustSec advisories (`RUSTSEC-2026-0463` / `CVE-2026-41678`, `RUSTSEC-2026-0473` / `CVE-2026-41676`, `RUSTSEC-2026-0474` / `CVE-2026-42327`, `RUSTSEC-2026-0475` / `CVE-2026-41681`, `RUSTSEC-2026-0476` / `CVE-2026-44662`, `RUSTSEC-2026-0477` / `CVE-2026-45784`, `RUSTSEC-2026-0478` / `CVE-2026-41898`, and `RUSTSEC-2026-0479` / `CVE-2026-41677`)
- C++ / Python vector search libraries `nmslib/hnswlib` (through `0.8.0` / `0.10.0-rc.2`, commit `ca42672`) and `spotify/voyager` (through `2.1.0`, commit `72de126`) when calling `loadIndex` on untrusted HNSW index files (`CVE-2026-124959` / `CERT/CC VU#681158`), and CPython `http.cookiejar.CookieJar` (`CVE-2026-124249`, PR `#161570`) and `ssl.get_server_certificate()` (`CVE-2026-19552`, PR `#161507`)
- Python `ansible-core` `ansible.builtin.git` module (`CVE-2026-84503`), GStreamer `gst-plugins-good` `< 1.28.9` (`CVE-2026-119610` / `GStreamer-SA-2026-0095`, CVSS 8.2 High), npm `langium` `3.2.0` through `4.4.0` (`CVE-2026-124683` / `GHSA-297v-g8mm-qj4h`, CVSS 8.7 High, fixed in `4.4.1`) and `langium-sprotty` `< 4.4.2` (`CVE-2026-118492`), and npm `pdfmake` `< 0.3.14` (`CVE-2026-119743`)
Update, 10 November 2026: Late on 9 November (19:16 UTC) and on 10 November 2026 (13:21 UTC), NVD, SuperTokens, and the RustSec Advisory Database published seven additional CVEs (plus nine GitHub Security Advisories) for SuperTokens Core (11.3.8, 11.4.8, 12.0.11, 12.1.2, 12.2.1, and 12.3.1) and seven additional RustSec advisories for the Rust openssl crate (RUSTSEC-2026-0473 through RUSTSEC-2026-0479, requiring openssl >= 0.10.80):
- SuperTokens Core
12.0.11/12.3.1(CVE-2026-123800CVSS 9.9 Critical,CVE-2026-123798/123802/123803CVSS 8.1 High,CVE-2026-123799/123801CVSS 7.4 High,CVE-2026-123804CVSS 6.8 Medium, andGHSA-rg6v-28j6-7rj9/GHSA-gwhx-68r6-qm37):- App-scoped API key escalates to parent
connectionUriDomain(CVE-2026-123800, CVSS 9.9 Critical, commit13c3de170dd4): InMultitenancy.checkPermissionsForCreateOrUpdate(), whentargetTenanttargeted aconnectionUriDomain’s public app and public tenant, the check compared onlysourceTenant.getConnectionUriDomain().equals(targetTenant.getConnectionUriDomain())without verifying thatsourceTenantwas the CUD’s public app (DEFAULT_APP_ID). An API key scoped to a single child app ((cud, app, public)) could rewrite the parent CUD’s configuration (includingapi_keys) or omit the target identifier to modify the base tenant ((null, null, null)). - SAML signature-wrapping and audience bypasses (
CVE-2026-123798,CVE-2026-123802,CVE-2026-123801), cross-tenant WebAuthn lookup (CVE-2026-123803), non-expiring Dashboard sessions (CVE-2026-123799), and CUD refresh auth skip (GHSA-rg6v-28j6-7rj9, CVSS 8.1 High):SAML.verifySamlResponseSignature()called OpenSAMLSignatureValidator.validate()withoutSAMLSignatureProfileValidator(CVE-2026-123798, fixed in11.3.7/11.4.7/12.0.10), accepted assertions that failed the audience check (CVE-2026-123802), and did not consumeRelayStateor enforceInResponseTo(CVE-2026-123801);WebAuthN.signIn()looked up credentials across the entire app without constraining to the requested tenant (CVE-2026-123803);Dashboard.isValidUserSession()never comparedDashboardSessionInfo.expiryagainst current time (CVE-2026-123799);WebserverAPI.assertThatAPIKeyCheckPasses()skipped API-key and IP checks while the CUD list was refreshing (GHSA-rg6v-28j6-7rj9); and--javaagentOpenTelemetry method spans exported database passwords andapi_keysin span attributes (GHSA-gwhx-68r6-qm37). Operators should upgrade past12.0.8to12.0.11,12.1.2,12.2.1,12.3.1,11.4.8, or11.3.8.
- App-scoped API key escalates to parent
- Seven additional
opensslcrate advisories (RUSTSEC-2026-0473throughRUSTSEC-2026-0479, commit28d73fc95e): BecauseRUSTSEC-2026-0474,0476, and0477were fixed in0.10.79and0.10.80, Rust applications should upgradeopensslto>= 0.10.80(0.10.82is current oncrates.io), rather than stopping at0.10.78. The seven advisories cover:Deriver::derive/PkeyCtxRef::derivebuffer overflow on OpenSSL 1.1.x X25519/X448/HKDF (RUSTSEC-2026-0473/CVE-2026-41676,< 0.10.78),X509Ref::ocsp_respondersreturning unvalidated non-UTF-8&str(RUSTSEC-2026-0474/CVE-2026-42327,< 0.10.79),MdCtxRef::digest_finalstack/heap buffer overflow when the output slice is shorter thanEVP_MD_CTX_size(RUSTSEC-2026-0475/CVE-2026-41681,< 0.10.78),CipherCtxRef::cipher_update/Crypter::updatebuffer overflow withEVP_aes_*_wrap_pad(RUSTSEC-2026-0476/CVE-2026-44662,< 0.10.79),CipherCtxRef::cipher_update_inplace7-byte overrun with AES key-wrap-with-padding (RUSTSEC-2026-0477/CVE-2026-45784,< 0.10.80), unchecked PSK and DTLS cookie callback return lengths (RUSTSEC-2026-0478/CVE-2026-41898,< 0.10.78), and*_from_pem_callbackout-of-bounds read on oversized password callback lengths (RUSTSEC-2026-0479/CVE-2026-41677,< 0.10.78).
TL;DR
On 9 November 2026 (13:17 to 18:50 UTC), CERT/CC, NVD, the GitHub Advisory Database, the RustSec Advisory Database, and the Python Security Response Team published 12 advisories affecting streaming data pipelines, authentication servers, AI vector indexes, and core Java, Rust, Python, and JavaScript libraries:
- Redpanda Connect (
redpanda-data/connect, formerly Benthos) unauthenticatedstreams-mode RCE (CVE-2026-123270, CVSS 9.8 Critical, public PoC): Across 100 consecutive releases fromv4.39.0throughv4.110.0(which embedredpanda-data/benthos <= v4.80.0), starting Redpanda Connect instreamsmode (redpanda-connect streams) binds the management HTTP API to0.0.0.0:4195withhttp.basic_auth.enableddefaulting tofalseand no authentication check on/streams/{id}. Any client able to reach TCP port4195canPOST /streams/<id>with a YAML pipeline using thecommand,subprocess,ffi, orsql_rawprocessors to execute arbitrary OS commands as the service account, and can pairinput.http_serverwithoutput.sync_responseto read command output directly in the HTTP response body. Starting inv4.111.0(Benthosv4.81.0), stream CRUD endpoints are disabled by default unless--bind-httpis passed. - SuperTokens Core
< 11.3.6/< 11.4.6/< 12.0.8ghost-tenant API-key bypass (CVE-2026-123797/GHSA-q7mc-f2jm-r4gr, CVSS 7.5 High): Insrc/main/java/io/supertokens/webserver/WebserverAPI.java,checkIPAccess()andassertThatAPIKeyCheckPasses()looked upapi_keysusing the request’s raw tenant ID (new TenantIdentifier(getConnectionUriDomain(req), getAppId(req), getTenantId(req))). When an unauthenticated caller sent a nonexistent tenant path segment (such as/ghosttenant/recipe/role) alongside an older supportedcdi-versionheader (< 5.0),Config.getConfig()threwTenantOrAppNotFoundException, which the auth checks caught and ignored before falling through to app-level handlers that created or listed roles against the app’s public storage without verifying an API key. - Maven
org.zeroturnaround:zt-zip< 1.18.0fluent-API Zip Slip (CVE-2026-63436/GHSA-52c6-99qm-3hqr, GHSA High8.2) andansible-coreansible.builtin.gitargument injection (CVE-2026-84503): WhileZipUtil.unpack()validated entry paths withcheckDestinationFileForTraversal(), the fluentZips.get(zip).unpack().destination(outputDir).process()API insrc/main/java/org/zeroturnaround/zip/Zips.javawrotenew File(destination, entryName)straight to disk without calling the traversal guard. Separately,ansible.builtin.gitinvokedgit(ls-remote,clone,fetch) with the repository URL as a positional argument without a--separator (CVE-2026-84503), allowing a repository URL starting with-(such as--upload-pack=...) to injectgitflags and execute arbitrary commands. - Rust
opensslcrate< 0.10.78aes::unwrap_key()inverted bounds check (RUSTSEC-2026-0463/GHSA-8c75-8mhr-p7r9/CVE-2026-41678, CVSS 8.1 High) andnmslib/hnswlib&spotify/voyagerloadIndex()heap overflow (CVE-2026-124959/CERT/CC VU#681158): Inopenssl0.10.24through0.10.77, the safe public wrapperopenssl::aes::unwrap_key()assertedout.len() + 8 <= in_.len()instead ofout.len() + 8 >= in_.len(), rejecting buffers that were large enough and overflowingoutbyin_.len() - 8 - out.len()bytes whenever a smaller slice was passed. Innmslib/hnswliband Spotify’svoyager,HierarchicalNSW::loadIndex()allocated its level-0 heap buffer using the file header’smax_elements_capacity and then bulk-readcur_element_count * size_data_per_element_bytes into that buffer without checkingcur_element_count <= max_elements_. - CPython
http.cookiejar(CVE-2026-124249) andssl.get_server_certificate()(CVE-2026-19552), GStreamer1.28.9(CVE-2026-119610, CVSS 8.2 High), Eclipse Langium4.4.1/4.4.2(CVE-2026-124683, CVSS 8.7 High), andpdfmake0.3.14(CVE-2026-119743): CPython PR#161570stopshttp.cookiejar.CookieJarfrom deleting another domain’s cookies when an unrelated host returns an expiredSet-Cookieheader with a forgedDomain=attribute, and PR#161507setscheck_hostname=Trueinssl.get_server_certificate(addr, ca_certs=...). GStreamergst-plugins-good 1.28.9fixes a 64 KiB heap over-read in H.264 RTPMTAP16/MTAP24depayloading, Eclipse Langium4.4.1and4.4.2fix quadraticDEDENTline counting inIndentationAwareTokenBuilderand unescaped hover HTML inlangium-sprotty, andpdfmake 0.3.14isolates downloaded URL resources per document by default.
What to do now: Upgrade Redpanda Connect to >= 4.111.0 (and enable http.basic_auth plus bind http.address to 127.0.0.1 if --bind-http is used), SuperTokens Core to 11.3.6, 11.4.6, or 12.0.8, org.zeroturnaround:zt-zip to >= 1.18.0, Rust openssl to >= 0.10.78, GStreamer gst-plugins-good to >= 1.28.9, langium / langium-sprotty to >= 4.4.2, and pdfmake to >= 0.3.14. Do not load untrusted .hnsw / .voyager index files in hnswlib or voyager without pre-validating cur_element_count <= max_elements_ in the binary header.
Affected packages and components
| Ecosystem | Package / Project | CVE / Advisory | Severity | Affected versions | Fixed / safe version |
|---|---|---|---|---|---|
| Go / Binary | Redpanda Connect (github.com/redpanda-data/connect, redpanda-data/benthos) | CVE-2026-123270 | Critical (9.8) | 4.39.0 to 4.110.0 (default streams mode); >= 4.111.0 when --bind-http is enabled without http.basic_auth | 4.111.0 (4.117.0 latest; omit --bind-http or require http.basic_auth) |
| Java / Docker | SuperTokens Core (io.supertokens:core) | CVE-2026-123797 (GHSA-q7mc-f2jm-r4gr) | High (7.5) | < 11.3.6, 11.4.0..11.4.5, 12.0.0..12.0.7 | 11.3.6, 11.4.6, 12.0.8 (commit 1bad648d7b77) |
| Maven | org.zeroturnaround:zt-zip | CVE-2026-63436 (GHSA-52c6-99qm-3hqr) | High (8.2 GHSA / 6.1 NVD) | < 1.18.0 | 1.18.0 (commit 59a76ad576b0) |
| crates.io | openssl (rust-openssl/rust-openssl) | RUSTSEC-2026-0463 (GHSA-8c75-8mhr-p7r9, CVE-2026-41678) | High (8.1) | >= 0.10.24, < 0.10.78 | 0.10.78 (commit 718d07ff8ff7) |
| C++ / PyPI | hnswlib (nmslib/hnswlib), voyager (spotify/voyager) | CVE-2026-124959 (CERT/CC VU#681158) | High (Heap OOB Write) | hnswlib <= 0.8.0 / 0.10.0-rc.2 (ca42672); voyager <= 2.1.0 (72de126) | Validate header cur_element_count <= max_elements_ before loadIndex |
| Python (CPython) | http.cookiejar.CookieJar, ssl.get_server_certificate | CVE-2026-124249, CVE-2026-19552 | Medium (6.3) / Low | CPython branches prior to PRs #161570 (8eb3d2c1c41c) and #161507 (8dde46eaa6ba) | CPython commits 8eb3d2c1c41c and 8dde46eaa6ba |
| PyPI / Linux | ansible-core (ansible.builtin.git) | CVE-2026-84503 | Medium (6.7) | ansible-core versions passing repo URLs to git without -- | Reject leading - in repository URLs / vendor errata |
| C / Linux | GStreamer gst-plugins-good (rtph264depay) | CVE-2026-119610 (GStreamer-SA-2026-0095) | High (8.2) | < 1.28.9 | 1.28.9 |
| npm | langium, langium-sprotty (eclipse-langium/langium) | CVE-2026-124683 (GHSA-297v-g8mm-qj4h), CVE-2026-118492 | High (8.7) / Low (2.0) | langium 3.2.0..4.4.0; langium-sprotty >= 3.0.0, < 4.4.2 | 4.4.1 (CVE-2026-124683), 4.4.2 (CVE-2026-118492) |
| npm | pdfmake (bpampuch/pdfmake) | CVE-2026-119743 | Medium (6.3) | < 0.3.14 | 0.3.14 (commit 73aaed7a9069) |
Technical analysis
1. Redpanda Connect streams-mode unauthenticated RCE (CVE-2026-123270)
Coordinated through CERT/CC by Adrian Pastor (@pagvac), CVE-2026-123270 affects Redpanda Connect (formerly Benthos, github.com/redpanda-data/connect), the Go data-streaming binary, and is distinct from CVE-2026-82266 in the C++ Redpanda broker Admin API on port 9644.
When Redpanda Connect 4.39.0 through 4.110.0 (embedding redpanda-data/benthos <= v4.80.0) starts in multi-stream mode (redpanda-connect streams), two defaults combine:
- Unauthenticated listener on
0.0.0.0:4195: Ininternal/stream/manager/api.go(lines 41-64) andinternal/httpserver/basic_auth.go(line 47), the HTTP server binds0.0.0.0:4195withhttp.basic_auth.enabledset tofalseand registers/streamsand/streams/{id}without an authentication middleware. - Code-executing processors in user-submitted YAML pipelines: Because stream definitions posted to
POST /streams/{id}have access to the same processor catalog as local config files (includingcommand,subprocess,ffi, andsql_rawwithunsafe_dynamic_query), an unauthenticated caller can register a stream that pairsinput.http_serverwithoutput.sync_responseto run arbitrary shell commands and returnstdoutdirectly in the HTTP response body:
# POST http://<target>:4195/streams/inband (Content-Type: application/x-yaml)
input:
http_server:
path: /trigger
pipeline:
processors:
- command:
name: sh
args_mapping: 'root = [ "-c", "id" ]'
output:
sync_response: {}
Once POST /streams/inband returns HTTP 200, sending POST http://<target>:4195/inband/trigger executes sh -c id under the Redpanda Connect service account and returns uid=1000(user) gid=1000(user) groups=1000(user) in the 200 OK response body. Starting in Redpanda Connect v4.111.0 (which upgrades the embedded Benthos core from v4.80.0 to v4.81.0), the /streams CRUD endpoints are no longer registered unless the operator passes --bind-http. However, --bind-http still does not enable authentication on its own, so any >= 4.111.0 deployment using --bind-http must also enable http.basic_auth and bind http.address to a loopback or private management interface.
2. SuperTokens Core 12.0.8 ghost-tenant API-key bypass (CVE-2026-123797 / GHSA-q7mc-f2jm-r4gr)
In SuperTokens Core prior to 11.3.6, 11.4.6, and 12.0.8, WebserverAPI.checkIPAccess() and assertThatAPIKeyCheckPasses() in src/main/java/io/supertokens/webserver/WebserverAPI.java looked up the configured api_keys using the tenant identifier parsed from the request URL path. If an unauthenticated caller placed a nonexistent tenant segment in the URL (for example, PUT /ghosttenant/recipe/role or GET /ghosttenant/recipe/roles), Config.getConfig() threw TenantOrAppNotFoundException, which the API-key check caught and ignored so that tenant-lookup errors could be handled later by the route handler.
However, app-scoped endpoints such as UserRoles operate on the application’s public storage (appIdentifier.getAsPublicTenantIdentifier()) rather than the request’s tenant storage, and the guard forcing those routes to run on the public tenant was only enforced when the request’s cdi-version header was >= 5.0. By sending an older supported cdi-version header (such as cdi-version: 4.0) to /ghosttenant/recipe/role, an unauthenticated caller bypassed assertThatAPIKeyCheckPasses() and created or enumerated roles in the target app. Commit 1bad648d7b77 fixes WebserverAPI.java to resolve api_keys from the app’s public tenant (tenantId = null) and adds supertokens_min_cdi_version (SUPERTOKENS_MIN_CDI_VERSION) so operators can reject legacy CDI headers outright:
--- a/src/main/java/io/supertokens/webserver/WebserverAPI.java
+++ b/src/main/java/io/supertokens/webserver/WebserverAPI.java
@@ -205,9 +206,14 @@ private void assertThatAPIKeyCheckPasses(HttpServletRequest req) throws ServletE
try {
String apiKey = getApiKeyFromRequest(req);
- // first we try the normal API key
+ // Resolve the API keys from the app's public tenant rather than the raw request
+ // tenant. api_keys is @NotConflictingInApp (identical across an app's tenants), so
+ // for a real tenant this is equivalent, but it also resolves for an unknown tenant
+ // segment (e.g. /ghosttenant/...) under a real app
String[] keys = Config.getConfig(
- new TenantIdentifier(getConnectionUriDomain(req), getAppId(req), getTenantId(req)),
+ new TenantIdentifier(getConnectionUriDomain(req), getAppId(req), null),
this.main).getAPIKeys();
3. zt-zip 1.18.0 fluent-API Zip Slip (CVE-2026-63436) and Rust openssl 0.10.78 aes::unwrap_key() OOB write (RUSTSEC-2026-0463)
In org.zeroturnaround:zt-zip < 1.18.0 (CVE-2026-63436 / GHSA-52c6-99qm-3hqr), ZipUtil.unpack() called checkDestinationFileForTraversal() to reject ../ entries with MaliciousZipException. However, the fluent API Zips.get(zip).unpack().destination(outputDir).process() had a separate callback (Zips.UnpackingCallback.process() in src/main/java/org/zeroturnaround/zip/Zips.java) that constructed new File(destination, entryName) directly without calling checkDestinationFileForTraversal(). Commit 59a76ad576b0 makes ZipUtil.checkDestinationFileForTraversal() package-private and calls it in Zips.java before both the directory forceMkdir branch and the file/transformer write branches:
--- a/src/main/java/org/zeroturnaround/zip/Zips.java
+++ b/src/main/java/org/zeroturnaround/zip/Zips.java
@@ -678,7 +678,7 @@ public void process(InputStream in, ZipEntry zipEntry) throws IOException {
}
visitedNames.add(entryName);
- File file = new File(destination, entryName);
+ File file = ZipUtil.checkDestinationFileForTraversal(destination, entryName, new File(destination, entryName));
if (zipEntry.isDirectory()) {
FileUtils.forceMkdir(file);
return;
In the Rust openssl crate (>= 0.10.24, < 0.10.78, RUSTSEC-2026-0463 / GHSA-8c75-8mhr-p7r9 / CVE-2026-41678), the safe public function openssl::aes::unwrap_key() in openssl/src/aes.rs checked that the caller’s mutable output slice out was large enough to hold the unwrapped key (in_.len() - 8 bytes) before calling OpenSSL’s AES_unwrap_key(), but the inequality in the assert! macro was inverted (commit 718d07ff8ff7):
--- a/openssl/src/aes.rs
+++ b/openssl/src/aes.rs
@@ -243,7 +243,7 @@ pub fn unwrap_key(
in_: &[u8],
) -> Result<usize, KeyError> {
unsafe {
- assert!(out.len() + 8 <= in_.len());
+ assert!(out.len() + 8 >= in_.len());
let written = ffi::AES_unwrap_key(
&key.0 as *const _ as *mut _,
Because assert!(out.len() + 8 <= in_.len()) panicked whenever out.len() exceeded in_.len() - 8 and succeeded whenever out was smaller than in_.len() - 8, any caller that passed a short out buffer (or let untrusted input control the ciphertext/output lengths) triggered an out-of-bounds write of in_.len() - 8 - out.len() bytes from safe Rust code.
4. hnswlib and Spotify voyager loadIndex() heap overflow (CVE-2026-124959), CPython (CVE-2026-124249, CVE-2026-19552), and pdfmake 0.3.14 (CVE-2026-119743)
nmslib/hnswlibandspotify/voyagerHNSW header capacity/count mismatch (CVE-2026-124959/CERT/CC VU#681158): In bothhnswlib/hnswalg.h(HierarchicalNSW::loadIndex/loadIndexNoExceptions) and Spotify’svoyager(cpp/src/hnswalg.h), the binary index header stores bothmax_elements_(the capacityM) andcur_element_count(the stored element countC), along withsize_data_per_element_(the byte strideS). Whenload_index()is called with the defaultmax_elements_i = 0,loadIndexsetsmax_elements = max_elements_, allocatesdata_level0_memory_ = (char *)malloc(max_elements * size_data_per_element_), and immediately executesinput.read(data_level0_memory_, cur_element_count * size_data_per_element_)(followed bylinkLists_andelement_levels_loops up tocur_element_count). Because neither loader checkscur_element_count <= max_elements_, a crafted index header withmax_elements_ = 2andcur_element_count = 512(S = 128) allocates a 256-byte heap buffer and writes 65,536 bytes into it (+65,280bytes out of bounds) while passing all file-size and EOF checks.- CPython
http.cookiejarcross-domain cookie deletion (CVE-2026-124249, PR#161570) andssl.get_server_certificate()missing hostname check (CVE-2026-19552, PR#161507): InLib/http/cookiejar.py,_cookie_from_cookie_tuple()checkedelif expires <= self._now:and calledself.clear(domain, path, name)using the rawDomainandPathattributes from theSet-Cookieheader before constructing theCookieobject or consultingself._policy.set_ok(cookie, request). A response fromhttp://attacker.test/carryingSet-Cookie: session=x; Domain=.victim.test; Path=/; Max-Age=0could therefore wipevictim.testsession cookies from a sharedCookieJar. InLib/ssl.py,ssl.get_server_certificate(addr, ca_certs=...)called_create_stdlib_context(ssl_version, cert_reqs=cert_reqs, cafile=ca_certs)withoutcheck_hostname=ca_certs is not None, verifying the CA chain while accepting a certificate issued for any domain. pdfmake0.3.14cross-document virtual file system cache bleed (CVE-2026-119743, commit73aaed7a9069), GStreamer1.28.9(CVE-2026-119610), and Eclipse Langium4.4.1/4.4.2(CVE-2026-124683,CVE-2026-118492): Prior topdfmake 0.3.14,URLResolverwrote every downloaded image, font, or attachment into a process-wide singletonthis.virtualfskeyed only by URL string (if (this.fs.existsSync(url)) return;), ignoring requestheaders(such asAuthorization: Bearer ...) and bypassingsetUrlAccessPolicy()on subsequent cache hits across unrelated documents. Version0.3.14creates an isolatednew VirtualFileSystem(this.sharedVirtualfs)per document and setsurlResourceCaching = falseby default.
IOCs
- Redpanda Connect (
CVE-2026-123270) network and host indicators:- Unauthenticated
GET /streamsreturningHTTP 200on TCP port4195, orPOST /streams/<id>requests containingcommand:,subprocess:,ffi:, orsql_raw:(unsafe_dynamic_query: true) processor blocks. - Unexpected child processes (
sh,bash,curl,python3) spawned by theredpanda-connectorrpkprocess.
- Unauthenticated
- SuperTokens Core (
CVE-2026-123797) request indicators:- HTTP requests to
/<unknown-tenant>/recipe/role,/<unknown-tenant>/recipe/roles, or other app-level management routes carrying a legacycdi-versionheader (< 5.0) without a validapi-keyheader.
- HTTP requests to
Detection and remediation
# 1. Check Redpanda Connect version and whether port 4195 exposes unauthenticated /streams
redpanda-connect --version 2>/dev/null || rpk connect --version 2>/dev/null || true
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:4195/streams 2>/dev/null || true
# 2. Check Maven, Cargo, Python, and npm lockfiles for zt-zip, openssl, hnswlib, voyager, langium, and pdfmake
rg -n 'zt-zip|supertokens|"openssl"|hnswlib|voyager|langium|pdfmake' \
pom.xml build.gradle* Cargo.lock requirements*.txt pyproject.toml uv.lock poetry.lock package.json package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null
# 3. Audit Ansible playbooks and roles for ansible.builtin.git tasks with variable repo URLs
rg -n -C 3 'ansible\.builtin\.git|\bgit:' playbooks/ roles/ 2>/dev/null || true
- Upgrade Redpanda Connect to
>= 4.111.0(4.117.0latest) and lock down port4195: On>= 4.111.0, do not pass--bind-httpunless the streams CRUD API is required; if--bind-httpis used (or on< 4.111.0before upgrading), sethttp.address: 127.0.0.1:4195and enablehttp.basic_auth.enabled: truewith a strong password hash. - Upgrade SuperTokens Core to
11.3.6,11.4.6, or12.0.8: Setsupertokens_min_cdi_version(SUPERTOKENS_MIN_CDI_VERSION: "5.5") if all connected backend SDKs support CDI5.5, and audit therolesandrole_permissionstables for unauthorized entries. - Upgrade
zt-zipto>= 1.18.0, Rustopensslto>= 0.10.78,langium/langium-sprottyto>= 4.4.2,pdfmaketo>= 0.3.14, and GStreamergst-plugins-goodto>= 1.28.9: In Python services usinghnswliborvoyager, never callload_index()on user-uploaded or untrusted index files without verifying that the header’scur_element_countdoes not exceedmax_elements_. In Ansible playbooks usingansible.builtin.git, validate that external repository URLs match^(https?|ssh|git)://and never begin with-.
Timeline
- 2026-09-18 to 2026-09-25: Benthos
v4.81.0(2026-09-18) and Redpanda Connectv4.111.0(2026-09-25) gate thestreams-mode HTTP CRUD routes behind--bind-http. - 2026-11-03 (
18:18 UTC): NVD publishesCVE-2026-63436fororg.zeroturnaround:zt-zip1.18.0(commit59a76ad576b0). - 2026-11-06 to 2026-11-07: GStreamer publishes
SA-2026-0095(gst-plugins-good 1.28.9); CPython merges PR#161507(CVE-2026-19552,8dde46eaa6ba) and PR#161570(CVE-2026-124249,8eb3d2c1c41c). - 2026-11-09 (
13:17to15:17 UTC): NVD andoss-securitypublishCVE-2026-119610(GStreamer),CVE-2026-119743(pdfmake 0.3.14),CVE-2026-124249andCVE-2026-19552(CPython), andCVE-2026-124959/CERT/CC VU#681158(hnswliband Spotifyvoyager). - 2026-11-09 (
16:05to18:50 UTC): RustSec assignsRUSTSEC-2026-0463(GHSA-8c75-8mhr-p7r9/CVE-2026-41678) to theopensslcrate (16:13 UTC); NVD and CERT/CC publishCVE-2026-124683(langium 4.4.1),CVE-2026-123270(Redpanda Connect),CVE-2026-123797(GHSA-q7mc-f2jm-r4gr, SuperTokens Core12.0.8), andCVE-2026-84503(ansible-core); and GitHub publishes the reviewed advisoryGHSA-52c6-99qm-3hqr(CVE-2026-63436) forzt-zip 1.18.0(18:47 UTC).
From research to remediation
Check whether this pattern exists in your codebase
Turn this research into a remediation workflow. Scan dependencies and package manifests for similar supply-chain risk, then prioritize fixes with reachability context.
References
- CERT/CC and Adrian Pastor (@pagvac) advisory and PoC (9 November 2026): CVE-2026-123270 Redpanda Connect unauthenticated streams-mode RCE
- SuperTokens Core Advisory GHSA-q7mc-f2jm-r4gr and commit 1bad648d7b77 (9 November 2026): CVE-2026-123797 ghost-tenant API-key bypass
- zeroturnaround/zt-zip Advisory GHSA-52c6-99qm-3hqr and commit 59a76ad576b0 (9 November 2026): CVE-2026-63436 Zips.unpack path traversal
- RustSec Advisory RUSTSEC-2026-0463 (GHSA-8c75-8mhr-p7r9 / CVE-2026-41678) and rust-openssl commit 718d07ff8ff7 (9 November 2026)
- CERT/CC VU#681158 and Nathan (m00dy.sh) analysis (9 November 2026): CVE-2026-124959 hnswlib and Spotify Voyager loadIndex heap overflow
- oss-security (9 November 2026) and CPython PRs #161570 (CVE-2026-124249: http.cookiejar) and #161507 (CVE-2026-19552: ssl.get_server_certificate)
- GStreamer Security Advisory SA-2026-0095 (CVE-2026-119610), Eclipse Langium commit 6c7070c5fb21 (CVE-2026-124683), and pdfmake commit 73aaed7a9069 (CVE-2026-119743)
- SuperTokens Core commit 13c3de170dd4 (CVE-2026-123800, CVSS 9.9 Critical) and RustSec commit 28d73fc95e (RUSTSEC-2026-0473 to RUSTSEC-2026-0479 for openssl) (9-10 November 2026)