Sources checked as of October 23, 2026 (UTC) Coverage period: July 25-October 23, 2026, focusing on new announcements and subsequent patches from September to October. Audience: engineers and security responders who maintain Node.js, Java, Python services, containers, build pipelines and development environments.

This article summarizes recent important security risks in Node.js, Java, and Python runtimes, standard libraries, and common server frameworks and dependencies, and provides impact scope, fixed versions, temporary mitigation measures, patch selection, and verification methods.

Assess impact against component versions, enabled features and accessible entry points. Vulnerability facts come from official advisories; dates refer to public disclosure unless an earlier patch release is explicitly noted. We do not infer unconfirmed exploit conditions, CVSS scores or exploitation in the wild. Deployment advice is identified as implementation guidance.

TL;DR: remediation priorities

  1. Update the runtime that actually hosts the service first. Update the corresponding Node.js branch to at least 22.23.4 / 24.22.1 / 26.12.1. Services using Node 24 can upgrade to 24.22.1 within the same major version or a later version that contains the same fixes. S1S2
  2. Update Node application dependencies separately. For Next.js, use 15.5.28 / 16.4.1 as the upgrade baseline; when using React Server Components independently, check the actual installed react-server-dom-* package. Only updating the Node binary does not cover these framework vulnerabilities. S8S9S10S11S12
  3. Java: cover both rounds of updates. Install a vendor build covering both the October 20 CPU and the October 21 CVE-2026-91403 emergency certificate-trust fix. See section 2.2 for Oracle JDK 11-27 out-of-band versions; verify other distributions against their own security packages and full build numbers. Update the corresponding Tomcat branch to 9.0.123 / 10.1.61 / 11.0.27. S16S17S18S20S21S22S23
  4. Python: update the interpreter, application packages and certificate packages separately. See section 2.3 for interpreter baselines; certifi recommends ≥2026.10.19, pip ≥26.2.2, when using uv ≥0.13.4. Every existing venv needs to be checked. For wrap_bio() related codes, correct and non-empty server_hostname must also be passed in. S29S30S31S33S35S36S37
  5. If an immediate upgrade is impossible, reduce exposure at the relevant entry points. Prioritize stopping untrusted Brotli decoding, affected image/paging/archiving processing, and isolating problematic LDAP or authentication entries; keeping TLS certificates and hostnames verified. Inbound WAF cannot cover outbound paths such as applications pulling malicious compressed responses. S3S11S25S27S30S32
  6. Rebuild, replace old processes, and verify through real service paths. Save the lock file and image digest, rebuild the application and image, roll out replacements for all workers/JVM/containers; check the actual process, dependency tree, trust store and business regression tests. A newer command-line version alone does not establish that remediation is complete.
  7. If LiteLLM 1.107.0 was installed or run, follow incident-response procedures. The project confirmed the release compromise on October 21. Isolate affected environments, investigate from a clean environment, rebuild and rotate exposed credentials. Do not start Python/pip in a suspicious environment for checking first. See Section 9 for details. S41

1. Vulnerability Overview and risk assessment

1.1 Prioritize remediation by actual exposure

The deployment priorities below are implementation guidance. Severity labels follow each vendor, including Apache’s Important rating. CVSS 3.1 and 4.0 are different scoring systems; do not rank issues across them by score alone.

Ecosystem / layerKey issuesOfficial grade or verified scorePriority deployment
Node.js native dependencyCVE-2026-111497: Brotli is written out of bounds, and there is a risk of RCENode:HighDecode Brotli data S1S3 in the external request body or external response
Node.js TLS / DNSCVE-2026-105482, 105483, 106069: Parsing and identity verification are inconsistentHighURL crawl, proxy, Webhook, dynamic target address S1S5S6
Node.js HTTP/2CVE-2026-56846, 56848: Memory exhausted and UAFHighNode directly handles untrusted HTTP/2 traffic S7
React / Next.jsRSC / use cache typed arrays RCECritical;CVSS 4.0 9.5Server RSC, related cache components and data path S9S10
Next.js Image optimizationCVE-2026-96889: SVG Image processing RCECritical;CVSS 4.0 9.5Instances on glibc Linux that can handle untrusted images S11
Next.js Server ActionsSpecially crafted request causes CPU to be exhaustedHigh;CVSS 4.0 8.2App Router and at least one Server Action S12
Java TLS TrustCVE-2026-91403: Continue to trust the affected intermediate CACVSS 3.1 9.1TLS/API Scenario S17 using affected trust chain
TomcatJNDIRealm authentication bypass, HTTP/2 cross-request mix-ups, AJP response leakageImportantCorresponding to Realm / Connector / async Servlet path S21S22S23
Spring for GraphQLCVE-2026-59285: Paging deserialization RCEHighJackson 2 + Connection Paging + Exploitable Classpath S25
Spring SecurityCVE-2026-59270: Embedded LDAP known management identity exposedCriticalEmbedded LDAP is enabled and the listening port is accessible to the attacker S27
CPython sslCVE-2026-19445: SNI switching context results in UAFCriticalPython terminates TLS by itself, and meets the context life cycle condition S29
CPython sslCVE-2026-19553: Skip verification when hostname is missingHighwrap_bio() / Related asyncio call missing expected hostname S30
CPython tarfileCVE-2026-82049: Hard link and symbolic link combination bypassHighAutomatically extract untrusted tar archive S32
Django / GeoDjangoCVE-2026-15307: Spatial query write file, SSRF, under the condition RCEHighSpatial queries or related administration interfaces accepting untrusted input S38
Python certificate dependencycertifi: emSign related certificate distrustCritical; GHSA, none known CVETLS client and package management tool S36S37 still using affected CA bundle

Abbreviations: RCE stands for remote code execution, UAF stands for use-after-free, and SSRF stands for server-side request forgery. The direct permissions of RCE are usually the permissions of the process hosting the application and cannot automatically be equivalent to the root permissions.

Recommended sequence: first handles RCE, which is externally reachable and meets the conditions, authentication bypass, cross-user data leakage and certificate authentication issues; at the same time, schedule updates for the public-facing DoS entry point. No need to run attack payloads in production to prove exploitability. Dependencies exist, code paths are reachable, and attack conditions are met. These are three issues that need to be checked separately.

1.2 Three easily confused boundaries

  • Upgrade runtimes and dependencies separately. Security updates for Node, JDK, CPython does not automatically repair standalone installations of Next.js, Spring, Django, certifi or native extensions.
  • The remediation threshold is separate from the current deployment baseline. The first patch for a vulnerability in August is not guaranteed to cover new issues from September to October; Section 2 uses verified subsequent updates as the implementation target.
  • Distinguish a vulnerability from an actual supply-chain compromise. For common vulnerabilities, patches eliminate future attack paths; when malicious packages have been run, the impact of credentials and persistence needs to be investigated. Section 9’s LiteLLM is the officially confirmed event. S41

Whether there are confirmed exploitation in the wild should be based on official disclosures. The vendor did not mention the exploitation activities and cannot prove that there is no attack; remediation should be performed based on the actual attack surface.

2. Quick check of fixed version and deployment baseline

2.1 Node.js、React、Next.js

component/branchRecommended version baselineInstructions for use
Node.js 22.x22.23.4Security release S1S2 on October 21st
Node.js 24.x24.22.1Applies to the 24.x branch; 24.22.0 does not contain the October 21 security patch S1S2
Node.js 26.x26.12.1Security release in the same batch S1S2
Node.js 20 and earlier upstream branchesMigrate to a supported branchNode 20 does not accept this upstream fix; the vendor extended support must be verified separately S3
Next.js 15.x15.5.28Updated on October 14 S8
Next.js 16.x16.4.1Same as above S8
Standalone RSC 19.0 / 19.1 / 19.2 / 19.3 branch19.0.9 / 19.1.10 / 19.2.9 / 19.3.1Check the three react-server-dom-* packages separately; not just look at the top layer react S10
Next actually loaded sharp≥0.35.5Official temporary fix conditions for the SVG vulnerability; does not replace other Next.js patches S11

Node officially lists the affected maintenance branches for the October vulnerability, but does not provide the initially introduced patch version item by item, so the precise starting version of each vulnerability cannot be determined based on the maintenance branch range alone. When deploying, give priority to using the above version of the same branch or a subsequent version confirmed to contain the same fixes.

2.2 Java: October CPU plus out-of-band certificate update

This table applies to Oracle JDK. The second column covers only the October 20 CPU; the third includes the October 21 out-of-band release. The CPU versions alone do not cover all Java risks discussed here. S16S17S18

branchOctober 20 CPUOracle released out of band on October 21
1111.0.3311.0.33.0.2
1717.0.2117.0.21.0.2
2121.0.1321.0.13.0.2
2525.0.525.0.5.0.2
2727.0.127.0.1.0.2
88u511The public release table still shows 8u511; the specific security build and trust chain repair must be checked, and cannot be determined based on the short version number alone

**Java 8 needs to be checked against the full build information:**Oracle The alert lists 8u511 as an affected version, and the release list lists subsequent updates with the same short name. The patch status cannot be distinguished based on the “8u511” short version number alone. You should confirm the specific security build and trust chain fixes. S17S18

Temurin, Corretto, Zulu, Microsoft Build of OpenJDK, release version OpenJDK, etc., check according to their respective announcements and complete package/build numbers. For example, the official release record of Adoptium states that the relevant build is repackaged to add the eMudhra fix; the same name of the upstream version does not mean that the package content is the same. The .0.2 suffix rules for Oracle cannot be mechanically applied to other publishers. S20

Java application componentsRecommended version baselineRemarks
Tomcat 9 / 10.1 / 119.0.123 / 10.1.61 / 11.0.27Check branch by branch; Tomcat 10.0 has stopped maintenance S21S22S23
Spring for GraphQL 2.0.x2.0.5(OSS)Commercial support is also 2.0.4.1 S25
Spring Security 7.1 / 7.07.1.1 / 7.0.7(OSS)Corresponds to the minimum fix version announced in August; you need to check the subsequent security bulletin S27S28 before deployment
Spring Security 6.5 / 6.4 / 5.8 / 5.76.5.12 / 6.4.19 / 5.8.28 / 5.7.26The announcement is listed as a commercial support fix; migration is evaluated when there is no corresponding support, and it cannot be assumed that Maven Central is available for free S27

Spring upgrades should respect the project’s Spring Boot BOM, Java minimum version and compatibility lines. Do not directly force all Spring modules to the same number just to get a patch.

2.3 CPython, Django and certificate dependencies

The second column of the table below focuses on the TLS issue disclosed in September; the branch differences for tarfile are shown in section 5.3. The October 21 releases also updated bundled certificate tooling, so the last column includes those later deployment baselines. S29S30S33S35

CPython branchSeptember security batch minimum versionRecommended deployment baseline
3.103.10.22Last release from upstream, EOL; arrange migration or verify release extension support S34
3.113.11.173.11.17, and update pip/certifi in each environment individually
3.123.12.153.12.15, and update pip/certifi in each environment individually
3.133.13.163.13.17
3.143.14.83.14.9
3.15The final 3.15.0 release includes both TLS fixes S31S473.15.1

The upstream security versions of 3.11 and 3.12 may only be released in source code; when using the operating system package, check the vendor’s backport advisory and the complete package version, and there is no requirement to forcibly replace the system Python with a self-compiled version. S33S34

independent dependencyRecommended version baselineDescription
Django 5.2 / 6.0 / 6.15.2.18 / 6.0.9 / 6.1.2Incorporate subsequent correction S38S39 on October 6
certifi≥2026.10.19GHSA initial patch is .18; PSF recommends .19 to preserve compatibility for unaffected certificates S36S37
pip≥26.2.2The built-in copy of certifi needs to be updated separately S35S37
uv (if used)≥0.13.4Update S37 according to actual installation method

These baselines cover the listed fixes. Another medium-severity issue in tar_filter was disclosed on October 22. As of October 23, 2026, an official maintenance version containing this fix has not yet been confirmed; therefore, 3.13.17 / 3.14.9 / 3.15.1 cannot be considered to have covered all tarfile issues. See Section 5.4. S40

2.4 Verifying distribution backports

Implementation principles applicable to Ubuntu, Debian, RHEL and other software packages:

  1. Record the operating system version, repository source, full package version, and vendor security bulletin number.
  2. Confirm that the advisory covers the specific CVE and identifies a fixed package for the relevant distribution release.
  3. Compare the binaries/libraries loaded by the actual running process, not just the upstream short version.
  4. When there is no evidence of a vendor patch, leave it “to be confirmed” and don’t take it as the only conclusion that the version number looks old or new.

There are differences in the apt/RPM package versions and backport strategies of different distributions. The security bulletin and complete package version of each distribution should prevail.

3. Node.js / JavaScript ecosystem: Analysis of Causes and remediation

3.1 CVE-2026-111497: Brotli native decoder out-of-bounds write

Disclosure: 2026-10-21; Node official grade: High. Affected builds of Node 22.x, 24.x, 26.x require patch section 2.1 to be installed. Node The announcement does not list a numerical CVSS score. S1

The problem occurs in the native decoding logic when handling the malformed Brotli compressed stream, which can lead to out-of-bounds writes. The official description of Vercel confirms that the research demonstration involves process memory leaks and command execution. Whether an attacker can reach the decoder depends on whether the application or dependency actually decodes the data it controls. S3

Both directions need to be checked at the same time:

  • inbound: The framework or middleware automatically decompresses the Brotli request body submitted by the user.
  • **outbound:**HTTP Clients, image grabbers, etc. access attacker-controllable sources and automatically decompress the returned content.

Disabling Brotli compression of responses sent to browsers does not remove a decoding entry point. Inbound WAF protection also does not cover applications fetching and decoding external responses. S3

**Patch direction:**Node Move the Brotli upstream fix into the native dependency, and supplement illegal decoding status checking and error propagation. When maintaining a self-compiled version, you should use the official security release or the complete patch of the matching branch. You cannot just change the version statement of a JavaScript package. S4

Interim implementation suggestions: stop unnecessary untrusted Brotli decoding; check the automatic decompression behavior of the middleware and HTTP client; if the business must accept this format, complete the processing in the patched environment as soon as possible. Adjusting Accept-Encoding is merely an act of negotiation and should not stand alone as evidence that a malicious response has been blocked.

3.2 TLS / DNS three High: The verification object is inconsistent with the actual target

All three were disclosed on October 21, with the official upgrade threshold set out in Section 2.1. S1

IdentifierIssue confirmedAffected branches
CVE-2026-105482dns.resolve Truncation of names containing NUL22.x / 24.x / 26.x
CVE-2026-105483IP in full-width numeric form causes certificate hostname verification to be bypassed24.x / 26.x
CVE-2026-106069Hostname that can be loosely interpreted as IP results in TLS verification bypass22.x / 24.x / 26.x

DNS The essence of the problem is that the string checked by the upper layer is different from the name actually parsed by the lower layer. The official patch rejects NUL at the parsing entry and adds regression coverage. S6

TLS Two items involve name normalization, consistency of IP interpretation and certificate matching. Patch so that non-standard IP input is rejected or handled correctly to avoid confusing the actual IP endpoint with the certificate domain identity. S5

Actual troubleshooting suggestions for : gives priority to checking the code of the receiving user URL, dynamic proxy target or Webhook address; unified standardization and allow list judgment, rejects NUL/control characters, confirms legal IPv4, IPv6 and internationalized domain names still work. Whether SSRF can be further formed requires the application of link evidence, which cannot be directly deduced from the name CVE.

Do not use NODE_TLS_REJECT_UNAUTHORIZED=0 or rejectUnauthorized: false to eliminate post-upgrade checksum errors. The address, certificate and business configuration should be corrected.

3.3 July HTTP/2 High-risk and permission model issues

The following issues disclosed in July still need to be included in the investigation. It is recommended to directly use the October security version baseline in Section 2.1 when deploying. S7

CVECauses and effectsFirst fixed version
CVE-2026-56846The retained HTTP/2 header block is not properly included in the maxSessionMemory budget and can exhaust memory; Impact 22.x / 24.x22.23.2 / 24.18.1
CVE-2026-56848HTTP/2 re-enters the sending path during packet collection, causing a heap UAF; impact 22.x / 24.x / 26.x22.23.2 / 24.18.1 / 26.5.1
CVE-2026-58043--permission The path prefix boundary match is too wide, and files outside the allowed list may be accessed.Same as the three maintenance lines above

All three are officially High. The first two items give priority to checking whether HTTP/2 is processed by Node itself; the third item only has corresponding meaning when using the permission model and relying on this boundary. Permission model items cannot all be described as network RCE that does not require authentication. S7

Temporarily terminating HTTP/2 on a separate, updated proxy and limiting backend sources is a deployment option to reduce exposure; resource quotas can only control the consequences of resource exhaustion and cannot patch UAF.

3.4 October React / Next.js: two items RCE and one item DoS

A. RCE in RSC / use cache functions returning typed arrays

Public date: 2026-10-14; Critical, CVSS 4.0 9.5. Official advisory identifiers:

  • React:GHSA-xqc2-xf4c-x3h3。
  • Next.js:GHSA-673q-mjm6-r5xr。S9S10

The React upstream issue involves multiple typed arrays combined with attacker-controllable values in the RSC response. The three affected react-server-dom-* package versions are 19.0.0—19.0.8, 19.1.0—19.1.9, 19.2.0—19.2.8, 19.3.0; see chapter Section 2.1. Pure browser-side React, or applications that do not use frameworks/plug-ins that support RSC at all, do not fall within the scope of this item. S10

Next.js downstream announcement lists 16.0.0—16.4.0, revised in 16.4.1; the scenario is App Router, Cache Components, and use cache functions that return multiple typed arrays. There is no official reliable general workaround, and users of affected versions are required to upgrade in time. It is not appropriate to just rely on manual searches for “this function does not seem to exist” to end the processing. S9

B. SVG Image Optimization RCE

CVE-2026-96889/GHSA-2464-fhr4-w9xw, 2026-10-14, Critical, CVSS 4.0 9.5. The problem occurs in the upstream native library used for image optimization. Officials pointed out that the RCE risk exists in the glibc Linux scenario. S11

The official version fields are:

  • >=10.0.0 <=15.5.27;
  • >16.0.0 <=16.4.0。

The official uses a strict lower bound of >16.0.0 for the 16.x branch, but this range statement is not enough to prove that 16.0.0 is safe. The actual upgrade target is uniformly 15.5.28 / 16.4.1. S11

The official temporary solution is to ensure that Next actually loads sharp ≥0.35.5. Lock files, nested dependencies, and deployment images may still hold old instances, so just adding a new version of the sharp dependency at the top level is not enough, the final dependency tree should be checked and rebuilt. S11

C. Server Actions CPU exhausted

**GHSA-p3m5-59mp-jv5r, 2026-10-14, High, CVSS 4.0 8.2.**Next affects 13.0.0—15.5.27, 16.0.0—16.4.0, fixes 15.5.28 /16.4.1. The conditions are App Router and at least one Server Action; malicious requests can keep CPU occupied for a long time, blocking subsequent requests in the same process. Applications with Pages Router or without Server Actions are not affected by this. S12

There is no official workaround that can replace the upgrade. Rate limits, concurrency limits and resource quotas can reduce damage, but cannot be used as a conclusion for patch verification.

3.5 Earlier Next.js in the same window Serious problem

The following items are intended to avoid missing deployments that are still stuck on pre-August-September versions; it is not recommended to just move up to the old fix thresholds in the table now.

DateIdentifier / scenarioFirst fix; current action
2026-08-25GHSA-2xp9-vwfh-vxw4: AVIF image optimization native library RCE, Critical15.5.24 / 16.3.3; now 15.5.28 / 16.4.1 S13
2026-08-25CVE-2026-75604: RCE, Critical when Pages Router and App Router are used simultaneously on Windows, and Cache Components is not enabled; versions >=13.4.0 <15.5.24, >=16.0.0 <16.3.315.5.24 / 16.3.3; Linux/macOS are not affected by this specific Windows issue S14
2026-09-22GHSA-vcvr-r3jv-pc5j: the Node image-generation path in next/og processes untrusted SVG, Critical; 16.2.0—16.3.516.3.6; the Edge implementation is outside this issue’s scope, and 15.x is not an affected branch for this RCE S15

4. Java ecosystem: Runtime trust, containers and frameworks are handled separately

4.1 JDK: Regular CPU and CVE-2026-91403 are two-tier updates

The Java SE risk matrix for Oracle CPU on October 20 lists 55 new security patches, 49 of which are marked as exploitable over the network without authentication. This does not mean that there are 55 Critical, nor does it mean that there are 49 directly exploitable RCE paths for each Java web service; it must be understood in conjunction with the components, APIs, user interactions and deployment conditions in the matrix. S16

The next day’s CVE-2026-91403 (CVSS 3.1 9.1) deals with another type of risk: a set of intermediate CA related to the eMudhra event that is no longer trusted. It affects TLS peer authentication and communication confidentiality/integrity and cannot be described as a JVM memory corruption vulnerability. S17

The Oracle advisory lists the version released on October 20th as affected, so the out-of-band update on October 21st also needs to be installed. See section 2.2 for the specific version. GraalVM also has corresponding affected products, and the fixed version should be subject to its exclusive security bulletin. S17S18

Temporary official measures: Back up first, and then remove the specified root certificate from each actually used truststore:

  • emSign ECC Root CA - G3, Oracle alias emsigneccrootcag3 [jdk].
  • AAA Certificate Services, Oracle alias comodoaaaca [jdk]. S19

JDK 11 and later, the official example is:

keytool -delete -cacerts -alias "emsigneccrootcag3 [jdk]"
keytool -delete -cacerts -alias "comodoaaaca [jdk]"

Use keytool from the target JDK for these commands and confirm that they are operating on the actual trust store of the application. Java 8 uses the path corresponding to jre/lib/security/cacerts; customizing the truststore must be handled separately, and other publishers may have different aliases. Removing the root certificate will expand the scope of rejection, and regression-test legitimate service certificate chains. S19

The official also provides the option to enable revocation checking, but the effect depends on the actual TLS implementation, revocation service reachability and failure strategy. For general deployments, prioritize installing full vendor updates to avoid treating two JVM switches as evidence that all TLS libraries have been fixed.

4.2 Tomcat: Authentication bypass and cross-user request isolation

The following three items were published on 2026-10-20; the repaired version entry is dated October 12. The official grade of Apache is Important. S21S22S23

CVEConfirmed affected versionsNecessary scenarios/results
CVE-2026-1012969.0.0.M1—9.0.122;10.1.0-M1—10.1.60;11.0.0-M1—11.0.26JNDIRealm Configures non-GSSAPI SASL authentication mechanism, credential verification is missing, and incorrect passwords may also pass
CVE-2026-1013569.0.118—9.0.122;10.1.55—10.1.60;11.0.22—11.0.26HTTP/2’s asynchronous Servlet error handling incorrectly recycles/reuses objects, causing requests or responses being mixed between users
CVE-2026-103119Only confirm 11.0.0-M25—11.0.26Large AJP non-blocking writes can cause a buffer under-read, exposing previous response data in later requests.

The corresponding fix is 9.0.123 / 10.1.61 / 11.0.27; AJP is only listed as Tomcat 11 according to the announcement, and cannot be expanded to three branches with the same problem. S21S22S23

The JNDIRealm patch fixes a verification gap in the actual authentication process, where “the application login interface looks normal” cannot be used instead of verification. Realm, SASL mechanisms should be checked for the actual configuration of the service, and tests must fail for incorrect passwords. S24

Interim implementation suggestions: isolate the affected authentication path; suspend HTTP/2 processing of Tomcat when business permits; close useless AJP. Only restricting direct access to the AJP port cannot prove that traffic entering through the legal front proxy will not be affected. After the official update, asynchronous concurrent requests from two independent users should be tested to confirm that there is no cross-talk between identities and responses.

4.3 Spring for GraphQL:CVE-2026-59285

Public date: 2026-08-20; High. affected 2.0.0—2.0.4, repaired 2.0.5 (OSS) or 2.0.4.1 (commercial support). S25

This is an unsafe deserialization risk in paging queries. The official requirement is that the following conditions must be met at the same time:

  1. Use Spring for GraphQL.
  2. Deserialize JSON using Jackson 2.x.
  3. Provide Connection paging field to the outside world.
  4. The classpath contains specific classes that can perform unexpected logic during instantiation or deserialization.

A malicious GraphQL request may cause RCE when the conditions are met. It cannot be reduced to “all Java programs using Jackson can be exploited”. S25

Why 2.0.4 is insufficient: In June, CVE-2026-41699 had given patch baselines such as 2.0.4, and in August the announcement clearly included 2.0.4 into the new scope of influence. Therefore, the repair record must be updated according to subsequent announcements, and the minimum version of the old CVE cannot be used. S26

When upgrade is temporarily unavailable, affected pagination fields accessible to untrusted callers can be suspended; narrowing down the deserializable types and class paths is an in-depth measure. Regressions should cover legal cursors, paginated results, and exception input rejections, and check the actual component versions within the final application JAR.

CVE-2026-59270, 2026-08-20, Critical. embedded UnboundIdContainer registers known administrator credentials by default and listens on all network interfaces. When the component is enabled and the port is reachable, an attacker can read or modify directory data; projects that generally introduce Spring Security will not automatically expose LDAP. S27

Affected area:

branchaffectedFirst fix/acquisition channel
7.17.1.07.1.1 OSS; also commercial 7.1.0.1
7.07.0.0—7.0.67.0.7 OSS; also commercial 7.0.6.1
6.5 / 6.46.5.0—6.5.11;6.4.0—6.4.186.5.12/6.4.19, commercial
5.8 / 5.75.8.0—5.8.27;5.7.0—5.7.255.8.28/5.7.26, commercial

Source: S27. Troubleshoot the spring.ldap.embedded.* automatic configuration and direct instantiation code; close the component when it is not needed for production, and check the actual listening address. When the business really needs it, first limit the calling sources and then complete the component upgrade.

**Related authentication issue: CVE-2026-47841 (High).**WebAuthn User authentication is set to REQUIRED, and after the HTTP session is serialized by distributed storage, incorrect object identity comparison may invalidate the authentication requirement. The attack also requires the attacker to have possession of the user authenticator device, not arbitrary remote login without a device. For the corresponding affected versions of 7.1, 7.0, 6.5, and 6.4, the patch baseline is consistent with these branches in the above table; verification should cover cross-node sessions and still require PIN/biometric verification. S28

5. Python ecosystem: interpreter, standard library, framework and certificates

5.1 CVE-2026-19445: SSLContext UAF in SNI callback

Publication date: 2026-09-30; PSF Level: Critical. In Python server TLS, sni_callback switches the connection to another SSLContext, and when the original context has no other surviving references, the unauthenticated TLS client may crash the service or call a pointer in a released object. S29

The core is that the Python object is inconsistent with the underlying TLS callback life cycle. The original context has been released, and the underlying layer may still hold the state required for the callback; the interpreter native patch needs to be used to fix the reference life cycle. S47

Scope: Python code that only acts as a TLS client is not affected by this item; the normal mode of the listening socket holding the original context for a long time does not fall into the specific failure path described in the announcement. After Nginx terminates TLS, it only hands over the local HTTP to Python, and Python directly handles SNI by itself, which is a different attack surface. S29

Corresponding to 3.10—3.14 fixed version, see section 2.3. The official version of 3.15 has been repaired, and 3.15.1 can actually be selected. Only updating the pip dependency cannot replace the interpreter’s _ssl implementation. S33S35S47

Official temporary mitigation: keeps strong references to all SSLContext that have set the SNI callback until the end of the server life cycle. This needs to cover the actual dynamic creation and switching paths; the custom OpenSSL 1.1.1 build should also check the renegotiation conditions in conjunction with the official issue record and give priority to complete updates. S29S47

5.2 CVE-2026-19553: The hostname flag is turned on, but the hostname is missing when calling

Public date: 2026-09-30; High. WhenSSLContext.check_hostname=True, if wrap_bio() is not passed in server_hostname, the original implementation may silently skip hostname verification. Successful certificate chain verification does not mean that the target domain name has also been matched. S30

Remediation requires both steps:

  • Install the interpreter security release listed in section 2.3.
  • Check the wrap_bio(), related asyncio.create_connection() / loop.start_tls() paths, explicitly pass in the expected and non-empty hostname, and keep certificate verification turned on. S30

**Compatibility differences that cannot be omitted:**3.10, 3.11, 3.12 are for compatibility, only DeprecationWarning is issued for some cases where hostname is missing; 3.13 and later raise ValueError. 3.12 backport also clearly distinguishes None from empty strings: a new warning is added for None, and an error is still reported for empty strings. Therefore, low-branch users cannot assume that the originally missing domain name verification has been automatically restored simply by upgrading. S31S33

In a test environment, use a trusted-chain certificate with a mismatched hostname and confirm that the actual application TLS client rejects it. Merely reading the check_hostname Boolean value does not constitute complete acceptance.

Public date: 2026-09-14; High. In CPython 3.13 and earlier related implementations, the combination of hard links and symbolic links in untrusted tar can bypass the data / tar extraction filter, exposing the contents of files outside the unpacking directory in the unpacking tree, or modifying their permissions and modification times. S32

Confirmed impacts of this vulnerability include file content exposure and metadata modification; these impacts alone are not sufficient to demonstrate arbitrary overwriting of external file content or unconditional implementation of RCE.

For the corresponding patch baselines of 3.10—3.13, see Section 2.3. Python 3.14 has been exempted from this specific issue due to os.link() behavior changes since 3.14.0b1, so the affected scope of the 3.10—3.13 branch above does not apply. S33

Temporary and in-depth measures: suspend automatic extraction of untrusted archives; use isolated low-privilege worker processes and new exclusive directories when business must be processed, deny symbolic links, hard links and device entries by business, and limit the number of files and decompression resources. These are deployment recommendations.

filter="data" is more suitable for general untrusted archives than the full trust strategy, but the filter itself on the old version also has this vulnerability, and adding this parameter alone cannot replace the update. The filter is also not a full file system sandbox. S32S45

5.4 Supplementary risk: CVE-2026-114583 (Medium) and patch release status

PSF disclosed in 2026-10-22 that tarfile.tar_filter’s processing of specific link names can be bypassed, allowing subsequent members to write outside the unpacking directory, with a level of Medium. Official fix PR was merged that day; as of October 23, 2026, no official maintenance release containing this commit has been confirmed. S40

Therefore:

  • This item is listed separately as Medium.
  • Interpreter versions released on October 21st cannot be considered to have included this fix.
  • The process that still uses filter="tar" to handle untrusted archives should track release backport; isolate or suspend this processing path for a short period of time. When switching to data and rejecting links, you must also confirm that it meets business requirements, and changing the filter cannot be described as an unconditional sandbox.

5.5 GeoDjango: CVE-2026-15307 and subsequent fixes in October

2026-08-04, Django official High. spatial query implicitly passes certain strings/dictionaries to GDALRaster, and the driver may write files or initiate network requests; RCE may be formed when there are specific paths and subsequent execution conditions. Staff with spatial field model viewing permissions may also access this path through the admin changelist. S38

The initial fix is 5.2.17 / 6.0.8, which restricts the input types accepted by spatial lookups. This change may affect the original business of using string/dictionary to express raster; simply wrapping untrusted input into GDALRaster does not mean verifying it. S38

On October 6, CVE-2026-87890 (Moderate) was repaired: VRT expressed in bytes can reference external resources and still triggers network requests; on the same day, the nested geometry DoS protection of CVE-2026-15830 was also strengthened. The latter two cannot be upgraded to describe the new high-risk RCE, but indicate that the deployment baseline should be 5.2.18 / 6.0.9 / 6.1.2. S39

The implementation checks the two entry points of API and administration interface, restricts untrusted spatial lookup, file write permissions and outbound access; after updating, regression-test valid spatial queries and rejection of prohibited input. Ordinary Django applications that do not use GeoDjango should not directly apply this RCE conclusion.

5.6 certifi / pip: Certificate trust must cover every copy

GHSA-6q48-6c7w-9gw2, 2026-10-20, Critical, known CVE not listed. This is the certificate distrust update caused by the eMudhra intermediate CA incident. It cannot be summarized as the cryptography mechanism of HTTPS or that all root certificates have been cracked. S36

The certifi advisory originally listed 2026.10.18 as a patch; PSF later explicitly recommended 2026.10.19 to preserve compatibility with unaffected root certificates. The operating baseline is .19. S36S37

Need to distinguish:

Trust material locationWhy you need to check separately
Operating system CA packageSystem trust material for the image or host
certifi in venvCA bundle actually used by applications or Requests etc.
pip built-in certifiIs a different copy than the externally installed certifi
uv / Other packaging toolsFollow the tool’s own updates and trusted sources
Customized CA files, packaged snapshotsMay continue to override default trusted sources for systems or packages

The above is a checklist based on different packaging locations. PSF requires updating related tools, existing virtual environments and rebuilding the image; only updating the host CA or reinstalling the interpreter cannot prove that all copies have been refreshed. S35S37

When upgrading from the old pip secure bootstrap, PSF provides the commands for fixed wheel and SHA-256, see appendix S37. Do not turn off TLS verification or add --trusted-host to bypass certificate issues.

6. Formal remediation process

The following commands are for confirmed trusted environments. When executing, the existing package manager, lock file and deployment process of the project should be combined to avoid mixing npm/pnpm/yarn or pip/uv/Poetry to generate conflicting lock files.

Handle an exception first: If you suspect that the environment has run the compromised package in Section 9, isolate it first and check the disk, lock file and image record from a clean environment; do not run the following Python/pip command first. S41

6.1 Establish a ledger that can correspond to real traffic

Each service records at least:

  • External entry point, reverse proxy, direct connection path to the origin site, and background queue/scheduled tasks.
  • The actual startup command, running account, binary path, process or container identity.
  • Runtime full version, publisher/repository, package full version, or image digest.
  • Framework and transitive dependencies, lock files, native libraries, and trust store paths.
  • Corresponding to whether the vulnerability condition exists, patch target, restart scope, responsible person and verification result.

Development machines, CI runners, build containers, and background tasks should also be checked according to their paths to untrusted content; don’t just update the public-facing web container.

6.2 Node.js: Determine the runtime first, then update application dependencies

Check in actual service environment:

node -p 'JSON.stringify({execPath:process.execPath,node:process.version,openssl:process.versions.openssl,brotli:process.versions.brotli},null,2)'
npm ls next react react-dom react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack sharp --all
npm audit --omit=dev

node -p should be executed using the service’s actual executable or within an actual container; it checks for newly launched processes and does not itself prove that the old worker has been replaced. Node can add the patch to the built-in Brotli while retaining the original library version string. Therefore, do not rely solely on process.versions.brotli to determine whether it has been repaired. You should combine it with the Node security version or the vendor’s backport evidence. S2S4

npm ls is used to see the actual dependency tree; missing packages or peer conflicts may also produce non-zero exit codes, so you should read the specific output. npm audit is used as a dependency checking aid and cannot replace Node binary and native library checking.

Use mise to manage the environment of Node 24, which can be updated as follows:

mise use -g [email protected]
mise exec [email protected] -- node -p 'process.version + " " + process.execPath'

mise use -g configures the global version; the project’s local configuration still needs to be checked separately. If the service has fixed the old absolute path, container base image, or environment of a different account, the corresponding configuration must be updated and the service must be restarted. The command itself does not replace an old running process. S43

In the Next project, execute the corresponding command according to the selected branch. For Next 15:

# Next 15 分支
npm install --save-exact [email protected]

For Next 16:

# Next 16 分支
npm install --save-exact [email protected]

Check the React/RSC compatible dependencies, lock files and final sharp instance, and then build according to the project process. Use the updated lock file in CI for reproducible installation, and check the version in the running image after building. Do not use uncontrolled automatic repair across major versions as the default solution for this emergency.

6.3 Java: Verify publisher, actual JVM and embedded components

Preliminary inventory:

java -XshowSettings:properties -version

The java.home, java.runtime.version and publisher in the output should be aligned with the JVM actually used by the service. For JVM with attach permission, jcmd of JDK can be used to check the target process, not just the login shell.

Check dependencies in trusted projects and select based on actual build tools:

./mvnw dependency:tree '-Dincludes=org.apache.tomcat.embed:*,org.springframework.security:*,org.springframework.graphql:*'

./gradlew dependencyInsight --dependency tomcat-embed-core --configuration runtimeClasspath
./gradlew dependencyInsight --dependency spring-security-core --configuration runtimeClasspath
./gradlew dependencyInsight --dependency spring-graphql --configuration runtimeClasspath

These build commands may execute plug-ins and resolve dependencies online, and only run on trusted projects. Check the final JAR/WAR or the actual JAR in the image and do not substitute build file declarations for the final artifact. Spring Boot embedded Tomcat requires rebuilding the application; updating a separate Tomcat installation in the system will not modify the copy in the application package.

After the runtime is updated, check the customized javax.net.ssl.trustStore, application-self-loaded KeyStore, jlink runtime, GraalVM/native image and other delivery forms item by item. Applications that already have customized trust materials cannot end the check just because the JDK directory becomes new.

6.4 Python: Interpreter-by-interpreter and virtual environment processing

Within the actual venv/container confirmed to be trusted:

python - <<'PY'
import sys
import ssl
import importlib.metadata as metadata

print("executable:", sys.executable)
print("version:", sys.version)
print("openssl:", ssl.OPENSSL_VERSION)
print("verify_paths:", ssl.get_default_verify_paths())
for name in ("pip", "certifi", "Django", "urllib3", "Brotli", "litellm"):
    try:
        print(name + ":", metadata.version(name))
    except metadata.PackageNotFoundError:
        print(name + ": not installed")
PY

python -m pip --version
python -m pip check

This script only collects information and does not perform version qualification determination. ssl.get_default_verify_paths() is the default path information and cannot prove that all third-party clients use the same trust store; it should be confirmed based on the application configuration.

After completing the trusted pip boot upgrade of appendix S37, update the certificate dependencies according to project constraints, for example:

python -m pip install --upgrade 'certifi>=2026.10.19'

# 仅适用于当前就选择 Django 5.2 的项目
python -m pip install --upgrade 'Django>=5.2.18,<5.3'

python -m pip check

The project’s requirements/lock file needs to be updated at the same time, otherwise the next deployment may revert to the old version. When using uv, Poetry, or an enterprise package repository, use their existing locking and publishing processes; do not manually modify packages just within a production container.

The project’s existing pip-audit workflow can be used to check for known dependency vulnerabilities in a trusted environment; it is not a malicious code scanner and does not cover all interpreter, system library and trust store risks. S44

It is not recommended to force the system /usr/bin/python3 to point to a new compiled version. Use release security updates or project isolation runtimes to avoid breaking management tools that rely on system Python. This is an implementation choice and is not an additional fix requirement for this vulnerability.

6.5 Rebuild and replace the running instance

It is recommended that the following steps be taken as a complete change:

  1. Obtain the patch from the original trusted source and save the version/hash and dependency lock.
  2. Return key functions in a near-production environment and confirm that native extensions are compatible with JVM/framework.
  3. Update the runtime, application dependencies and actual trust store; refresh the base image and system CA for the container, do not just reuse the old layer.
  4. Rebuild applications and images, and replace service, worker, queue consumer, and scheduled task instances on a rolling basis.
  5. Recheck the version and configuration in the new running instance and confirm that all old copies have exited.
  6. Observe error rates, latency, CPU/memory, TLS handshake failures, and process crashes.

Rollback should give priority to retaining safe runtime and patch dependencies, and rolling back application configuration or business changes. If you have to return to an old product with vulnerabilities, the corresponding entry restrictions should be restored simultaneously, and the responsible person and the minimum recovery period should be clearly defined.

7. Temporary Mitigation and Patch Selection

7.1 Coverage boundary of temporary measures

The following are implementation suggestions based on the announced utilization conditions. Unless the official plan is noted, the vendor does not guarantee that all variants can be completely blocked.

riskTemporary measures that can be takenThe part that cannot be deemed completed based on this
Brotli decodingStop untrusted input decoding; check inbound and outbound automatic decompressionInbound WAF or turning off response compression does not cover all decoding entries S3
Next.js typed arrays RCEUpgrade immediately; temporarily isolate affected services if necessaryThere is no official reliable universal workaround S9
Next.js SVG RCEOfficial plan: Ensure the actual sharp ≥0.35.5; suspend relevant optimization entry points when business permitsDoes not cover other Next/RSC issues S11
Tomcat Realm / HTTP/2 / AJPIsolate the corresponding path and close unnecessary connectorsStill need the corresponding branch repair package S21S22S23
GraphQL DeserializationSuspend affected Connection fields; restrict untrusted callersOnly request length limit cannot fix type/deserialization problem S25
Spring embedded LDAPDisable when not needed; limit the reach of the real listening portDefault administrative identity and directory integrity still need to be checked S27
CPython SNI UAFOfficial plan: Keep the relevant SSLContext strong reference until the end of the serviceAll create/switch paths must be covered S29
Python hostname skipOfficial solution: Pass expected server_hostname correctlyCannot just check check_hostname flag or ignore warning S30S31
Untrustworthy tarDisable/quarantine extraction, reject non-essential links and device entriesNeither filters nor resource quotas are universal sandboxes S32S40S45
Certificate trust eventUpdate the correct CA material; Java trust can be restricted according to the official mitigationDisabling TLS verification increases risk S19S37

7.2 Select patch based on delivery method

Delivery methodPrioritize repair methodsEvidence that should be retained
Distribution-managed runtimeManufacturer’s corresponding security updatesFull package version, announcement, repository source
Official Binary/Runtime ManagerOfficial security release from the same branchVersion, source and digest, actual execution path
Self-compiled Node / CPythonThe matching branch’s official source release or the vendor’s complete patch setCommit set, build parameters, dependent libraries and regression results
Spring / Next / DjangoCompatible with in-branch updates, rebuilding dependency locks and final applicationsFinal dependency tree, actual version in JAR/package/image
Custom trust storeOfficial withdrawal plan or vendor update confirming the withdrawalActual usage path, material change, TLS success and rejection tests
A compromised environmentRebuild from clean and trustworthy products and conduct separate incident investigationHistorical package/image digest, installation record, credential rotation record

7.3 Key patch mechanism and review focus

  • Brotli: pays attention to whether the boundary check and error return of the native decoding status are complete before entering the build; only replacing the JavaScript package cannot change the code statically compiled into Node. S4
  • Node DNS/TLS: focuses on input rejection, address normalization, distinction between IP SAN and DNS identities, and DNS callback/Promise The parsing path and TLS hostname match test. S5S6
  • Tomcat JNDIRealm: focuses on whether the authentication process actually verifies the credentials, rather than just obtaining a directory context; prioritizing the official version and not treating a single source file replacement as a complete binary patch. S24
  • CPython ssl: focuses on Python reference ownership and the life cycle of the underlying SSLContext; wrap_bio() backports while having branch compatibility differences, and you must read the actual implementation of the branch used. S31S47
  • Certificate distrust: Such updates may appear as trusted material or deny list changes rather than obvious API changes. The same batch of Node also includes the rejection mechanism of the affected intermediate CA; the respective trust sources of Java and Python still need to be verified separately. S19S37S46

**Independent Brotli binding should also be checked.**Google upstream released 1.0.10 / 1.1.1 / 1.2.1 on the same day to fix CVE-2026-111497. Python native extensions or JNI artifacts that embed the same affected C implementation need to be independently updated/rebuilt; it cannot be inferred that all pure Java decoders are affected, nor can it be assumed that upgrading Node automatically replaces copies in other languages. S42

8. Verification and follow-up checks

8.1 Minimum verification checklist

Check itemsEvidence required
runtimeFull version or vendor backport evidence correct in real process/container
application dependenciesNext/RSC/sharp, Tomcat/Spring, and Django/certifi in the final deployment products have reached the corresponding threshold
Replacement rangeAll worker/JVM/container copies and background tasks have been replaced with new ones, and the old instances have exited.
TLSValid domain certificates succeed; mismatched hostnames and invalid chains fail according to policy; custom trust stores are included
eMudhra distrustThe certificate chain built by the affected intermediate CA was rejected during actual runtime, or there is evidence that the specific vendor’s security build/corresponding rejection list has been deployed; the case cannot be closed based on the general TLS test or the Java 8 short version number.
Node decoding and imagesNormal compressed response, upload, image optimization and RSC functions are available; untrusted source policy is in effect
Java Authentication and IsolationWrong password rejected; independent user concurrent asynchronous requests without identity/response mixing; LDAP listening as expected
Python SNI / ArchiveNormal multi-domain name TLS business is stable; archiving rejects path traversal and disallowed links, and files outside the directory are not modified
Data and functional regressionPaging, spatial query, permission check and background tasks passed the existing tests of the project
Resources and ObservationsThere is no abnormal increase in CPU, memory, error rate, latency and TLS errors.
TraceabilitySave upgrade time, package/image digest, configuration changes, verification results and unresolved items

These are implementation acceptance recommendations and do not require an attack script to be produced for each CVE. Verification involving crashes, resource exhaustion, and archive out-of-bounds should use upstream regression testing or project controlled test data in an isolated environment.

8.2 Patching and intrusion investigation are different tasks

Check existing logs for unusual decoding errors, worker/JVM crashes, suspicious file writes, directory data changes, authentication exceptions, outbound requests, and credential usage records. These signs need to be judged in context: a crash or OOM is not proof of successful exploitation; the absence of alerts does not prove that a system was unaffected.

When unauthorized modifications, compromised credentials, or confirmed malicious dependencies are discovered, evidence should be preserved, the relevant instances isolated, affected credentials rotated from a trusted environment, and the system rebuilt. The patch will not revoke tokens that have been obtained by the attacker or restore data that has been modified.

9. Supply chain security incident: LiteLLM 1.107.0 compromise

**Official confirmation date: 2026-10-21.**LiteLLM reported that its release pipeline was compromised. PyPI’s litellm==1.107.0 and some Docker/GHCR products of the same period contained secret stealing and remote control malicious code, and the related products have been withdrawn. S41

To determine the impact, you should check the historical installation records and image digest; labels such as latest, main-latest, and main-stable now point to clean images, which does not prove that the products pulled at the time of the incident were clean. The official recommendation at that time was to temporarily pin 1.106.2; this recommendation was based on this incident, and other security announcements still need to be checked during deployment. S41

For environments where related products have been installed or run:

  1. Isolate and preserve installation records, images, and logs, and inspect them from a clean environment.
  2. Do not start Python/pip in a suspicious environment first; malicious .pth / sitecustomize.py may be executed again after startup.
  3. Rebuild hosts, venvs/containers from trusted sources; cannot just uninstall or downgrade packages.
  4. Revoke/rotate cloud credentials, LLM provider keys, LiteLLM keys and database credentials based on actual accessibility and review abnormal usage. S41

This is a confirmed supply chain incident and requires consideration of malicious code execution, credential leakage, and persistence risks when dealing with it. As of October 23, 2026, officials were still investigating the initial intrusion.

The following source verification date is 2026-10-23, including the project’s official security announcement, official code repository and vendor’s instructions. The main text [Sx] corresponds to this appendix; when performing updates, you should check whether the supplier has released subsequent revisions.

S1 — Node.js: 2026-10-21 Security Notice

S2 — Node.js: Official release instructions for three maintenance lines

S3 — Vercel: Node.js Brotli RCE security advisory

S4 — Node.js: Brotli official patch submission

S5 — Node.js: TLS address normalization patch

S6 — Node.js: DNS NUL verification patch

S7 — Node.js: 2026-07-29 Security Notice

S8 — Next.js: 2026-10-14 security update

S9 — Next.js:typed arrays / use cache RCE

S10 — React:React Server Components RCE

S11 — Next.js:SVG Image Optimization RCE

S12 — Next.js:Server Actions DoS

S13 — Next.js: AVIF Image optimization RCE

S14 — Next.js:Windows RCE

S15 — Next.js:next/og ImageResponse RCE

S16 — Oracle: October 2026 CPU

S17 — Oracle: CVE-2026-91403 out-of-band alarm

  • Purpose: 2026-10-21, JSSE certificate trust risk, affected products and CVSS 3.1 9.1.
  • Link: Oracle Security Alert

S18 — Oracle: JDK official version and download

  • Purpose: Distinguish between CPU on October 20th and the out-of-band version on October 21st; distinguish limitations of the short version of Java 8.
  • Link: JDK release list
  • Link: Oracle Java Download page

S19 — Oracle: eMudhra temporary withdrawal plan

S20 — Eclipse Adoptium: Release build record

  • Purpose: Temurin is repackaged due to the certificate incident; the Oracle version suffix cannot be mechanically applied.
  • Link: Adoptium Release Scorecards

S21 — Apache Tomcat 9 Security Notice

S22 — Apache Tomcat 10 Security Notice

S23 — Apache Tomcat 11 Security Notice

S24 — Apache Tomcat: JNDIRealm patch commit

S25 — Spring:GraphQL CVE-2026-59285

S26 — Spring:GraphQL CVE-2026-41699

S27 — Spring Security:CVE-2026-59270

S28 — Spring Security:CVE-2026-47841

S29 — PSF: CVE-2026-19445 Independent Security Advisory

S30 — PSF: CVE-2026-19553 Independent Security Advisory

S31 — CPython: wrap_bio official patch and 3.12 backport

S32 — PSF: CVE-2026-82049 Independent Security Advisory

S33 — CPython: Official security release at the end of September/early October

S34 — CPython: 3.10 last safe release

  • Purpose: 3.10.22 and end of upstream life cycle.
  • Link: Python 3.10.22

S35 — CPython: 2026-10-21 emergency maintenance version

S36 — certifi: emSign certificate distrust announcement

S37 — PSF: Impact of eMudhra / emSign on Python users

The pip boot upgrade command provided by the official instructions cited by S37 is as follows. Only be used in Python environments that have been confirmed to be trustworthy; if there is suspicion of poisoning in Section 9, first isolate and rebuild according to the incident process. It fixes the wheel content hash and subsequently updates other dependencies according to the project process.

python -m pip install "pip @ https://files.pythonhosted.org/packages/3f/06/3e4420302363fbb71be3c7f35ce042f54bfca330e3e66b3a2e3c4cca579f/pip-26.2.2-py3-none-any.whl#sha256=fd7f4dfa8190e014013b9f08f3e973f4e4c26ffd179a204895533a7254813a70"

S38 — Django: 2026-08-04 safe release

  • Usage: CVE-2026-15307, GeoDjango Exploitation conditions, initial fixes and compatibility changes.
  • Link: Django 6.0.8 / 5.2.17

S39 — Django: 2026-10-06 safe release

S40 — PSF / CPython: Latest tar_filter side note

S41 — LiteLLM: Official Supply Chain Incident Report, October 21

S42 — Google Brotli: official secure version

  • Purpose: Independent Brotli 1.0.10 / 1.1.1 / 1.2.1 and cross-language embedded copy verification basis.
  • Link: Brotli releases

S43 — mise: use command official documentation

  • Purpose: Specify tool version and command semantics of global configuration.
  • Link: mise use

S44 — PyPA: pip-audit official project

  • Purpose: Python The purpose and capability boundaries of dependency vulnerability auditing.
  • Link: pip-audit

S45 — Python: tarfile extraction filter document

  • Purpose: data strategy, default behavior changes, and restrictions that cannot replace the sandbox.
  • Link: tarfile extraction filters

S46 — Node.js: Intermediate CA rejection mechanism

  • Purpose: This eMudhra related trust chain processing is not equivalent to the cryptographic invalidation of all root certificates.
  • Link: Node.js PR #66871

S47 — CPython: SNI UAF technical notes and fixes