Research

July 2026 vulnerabilities: what to fix first

A modest score can conceal an already-exploited management entry point. We compare what July's rankings miss and trace Gitea, WordPress and ANGLE patches to explain repair priorities and the behavior to verify after an update.

A vulnerability record on pale parchment carries a score of 5.3 and known exploitation, beside a reminder to check actual exposure first
In this article

1 Why a 5.3-rated flaw belongs near the front

A queue sorted by severity could leave Cisco Secure Firewall Management Center's CVE-2026-20316 waiting. Its score is 5.3, yet attackers were already exploiting it: a low-privilege static account in the system exposes sensitive data to remote callers. Cisco also describes possible privilege escalation in combination with other FMC vulnerabilities and rates the advisory High. The score describes consequences under specified conditions. What that management system controls in your environment, and whether attackers are already using the entry point, need separate attention.

For this July cohort, I would first repair known-exploited management interfaces, build services and public websites that are actually reachable in the local environment, while checking for compromise. Restrict FMC management access and install the branch-specific hotfix. Update TeamCity and inspect build configuration, credentials and outputs. Update affected WordPress installations and review changes made while exposed. Keep browsers, kernels and application dependencies moving through their respective update schedules. The repair notes below retain branch versions, temporary measures and recovery constraints for checking a particular product.

The comparison uses one fixed cohort: 9,808 CVE records published in July, of which 9,763 were active in the original snapshot. Matches in CISA's Known Exploited Vulnerabilities catalog rose from 14 on August 4 to 21 in the September 11 catalog retrieved here. The score analysis stays on August 4 so we can see what the earlier ranking would have missed. Repair information was rechecked on September 13 at 01:27 (UTC+8) so that historical releases do not become today's update advice.

Priority is only the first decision. After Gitea's fix, an unauthorized reader should still get a successful package response, with private-repository fields absent. WordPress needs two input forms to pass through the same integer conversion. ANGLE must remember an object that is no longer current but still uses a buffer. We start with the scoring omissions, then follow those three patches to identify the checks that establish whether an update actually repaired the relevant behavior.

Versions, temporary measures and recovery limits by product — September 13, 2026

Cisco FMC: restrict management access, then install the hotfix for the correct branch. The CVE-2026-20316 advisory offers no workaround that replaces patching. Network restrictions reduce access and may interrupt remote administration. The listed hotfixes for branches 7.0, 7.2, 7.4, 7.6, 7.7 and 10.0 are respectively GB-7.0.9.1-3, HL-7.2.11.1-4, HG-7.4.7.1-3, CY-7.6.5.1-2, AM-7.7.12.1-2 and P-10.0.1.1-2. Match the full download filename in the advisory; these are not interchangeable between branches. Preserve logs and run the vendor's inspection command below. A result containing /var/tmp/license.tmp calls for Cisco TAC assistance with recovery. The affected product is FMC; check the advisory's unaffected-product list for other management modes and appliances.

zgrep "package_info.*license" /var/log/messages*

TeamCity: include both the server and its build outputs in the investigation. CVE-2026-63077 affects reachable on-premises servers through the HTTP(S) agent polling protocol. Authentication is unnecessary, and successful exploitation reaches the server process's operating-system privileges. The first fixed releases were 2025.11.7 and 2026.1.3. The current release announcement includes 2026.2 and maintenance releases 2025.11.8 and 2026.1.4. Update within the existing supported branch first; a move to the new major release additionally needs plugin, database and build compatibility checks. Instances on 2017.1 or later that cannot immediately upgrade can install the vendor's security patch plugin for this flaw. Versions 2017.1–2018.1 require a restart. The plugin covers this vulnerability alone, so maintain external-access restrictions until repair is complete. TeamCity Cloud was handled by the vendor and does not require a customer-installed on-premises patch.

WordPress: the current default target is 7.1. Both the official download page and update API offer that version. The query-parameter defect CVE-2026-60137 affects 6.8.0–6.8.5, 6.9.0–6.9.4 and 7.0.0–7.0.1; the historical first-fixed releases are 6.8.6, 6.9.5 and 7.0.2. A separate identifier, CVE-2026-63030, describes the REST batch-route combination affecting versions from 6.9. Keep those ranges distinct. For an affected public site, update core, inspect how plugins and themes pass author filters, and review accounts, files and publishing changes during the exposed period. Temporarily disabling custom entry points or restricting anonymous batch requests removes the corresponding functionality and leaves other plugin call paths to assess; core repair remains necessary.

Two other updates require different acceptance checks. Gitea's Composer source-information issue, CVE-2026-27771, affects 1.26.1 and earlier and was first fixed in 1.26.2. The current default deployment target is 1.27.3; test the combination of package visibility and linked-repository permission. Chrome's ANGLE issue, CVE-2026-14382, has a repair boundary at 150.0.7871.46. For ordinary desktop Stable, the current targets checked here are 153.0.8010.36 on Linux and 153.0.8010.36 or .37 on Windows/macOS, according to the platform's distributed package, followed by a restart. Windows/macOS enterprises on Extended Stable have an official 152.0.7977.120 update. Embedded applications need their supplier to identify the included ANGLE revision; a Chrome version number cannot identify every embedded graphics component.

The essential source changes can be stated early. Gitea's createPackageMetadataResponse checks repository access before returning linked-source fields. WordPress's WP_Query::get_posts normalizes an integer list before constructing the query. ANGLE keeps active transform-feedback membership on the Buffer. Each requires a permanent repair; subsequent sections explain the upstream assertions. If upgrading fails, retain access restrictions or disable the affected feature. Do not downgrade before checking database, configuration and executable compatibility. Public evidence here cannot designate one universally safe oldest rollback release: retain a supported recovery artifact that has passed both business and security regression checks.

The seven additions to KEV also need an inventory check: TeamCity CVE-2026-63077; vCenter CVE-2026-59310; SharePoint CVE-2026-55040; Linux kernel CVE-2026-53362; LiteLLM CVE-2026-59822; Switchvox CVE-2026-9586; and Artifactory CVE-2026-42016. Their products, listing dates and vendor entry points, along with the earlier fourteen, are in current_kev.matched in the comparison attachment. A product match leads to version, enabled-component and network-path checks. Catalog membership counts are not probabilities of attack.

The TeamCity follow-up advisory distinguishes two log signals. com.thoughtworks.xstream.converters.ConversionException warrants investigation of possible attempted or successful exploitation. After repair, com.thoughtworks.xstream.security.ForbiddenClassException can indicate a related attempt blocked by the patch. Inspect unexpected unauthorized agents, including names beginning with scan, but use relevant log timestamps instead of assuming the date in the agent interface marks the attack. Evidence of compromise calls for a review of build configuration, stored credentials and released artifacts. Establishing that the server upgraded cannot complete those separate investigations.

Other additions have practical tradeoffs. LiteLLM's MCP OAuth2-passthrough fallback was first fixed in 1.84.0; its current official release checked here is 1.100.1. If upgrading is temporarily impossible, the advisory permits disabling or restricting MCP routes, which interrupts workflows using those tools. Restoration checks should reject invalid credentials while preserving authorized tool calls. Artifactory CVE-2026-42016 concerns token scope validation, with a first-fixed boundary of 7.133.11. Numerous subsequent security updates make that boundary an inadequate whole-platform deployment recommendation. Use the current branch-specific security advisories and release page to select the package.

vCenter CVE-2026-59310 concerns path handling in the Syslog server and potential code execution by a network-reachable attacker. VMSA-2026-0006.2 covers multiple products and vulnerabilities; use its 3a/3b matrix. It lists 9.1.0.0300, 9.0.2.0100, 8.0 U3k and the 8.0 U2f express patch. VCF 5.x follows the applicable asynchronous patch process; 7.0 requires an extended-support contract and vendor contact. No workaround is listed. Avoid confusing an ESX package on the same page with the vCenter fix, and preserve suite compatibility when updating components. These are repair choices in the current advisory; deployment still requires checking the newest cumulative version supported by the installed suite.

2 What each score leaves out

Start with a reproducible comparison. For the same 9,763 records, select those whose highest retained CVSS is at least 9, then those whose EPSS is at least 0.10, and compare both with same-day KEV. These are comparison points chosen for this article, not a universal operational policy. Taking the maximum retained CVSS combines multiple sources and CVSS generations. It reproduces the old ledger's ranking, but the result cannot be attributed wholesale to NVD. EPSS uses the August 4, 2026 scores. FIRST defines EPSS as an estimate of exploitation in the wild over the next 30 days, updated daily. The earlier article incorrectly described the probability as applying to a single day; that wording is corrected here.

Selection from one historical snapshot: 9,763 active records and 14 same-day KEV matches.
Selection ruleRecords selectedKEV coveredKEV omitted
CVSS ≥ 91,447104
CVSS ≥ 75,741131
EPSS ≥ 0.01215122
EPSS ≥ 0.102295

CVSS ≥ 9 omits DD-WRT CVE-2021-27137, SonicWall CVE-2026-15410, Cisco FMC CVE-2026-20316 and Microsoft CVE-2026-56155. Lowering the threshold to 7 expands the selection to 5,741 records and still excludes Cisco. EPSS ≥ 0.10 omits Arista CVE-2026-16812, Cisco FMC CVE-2026-20316, Microsoft CVE-2026-56155 and CVE-2026-58644, and Langflow CVE-2026-9198. Even at 0.01, Arista and Cisco remain outside the selection. Known-exploitation evidence therefore needs a direct route into response, without a second score threshold deciding whether it may enter the urgent queue.

The two higher-threshold sets intersect in 16 records and have a union of 1,453, covering twelve of the fourteen historical KEV entries. Cisco FMC CVE-2026-20316 and Microsoft CVE-2026-56155 remain omitted. Adding the second selection contributes only six records beyond CVSS alone. The attachment also compares the first 14, 22, 100, 500 and 1,447 entries in equal-count rankings. At 100 entries, CVSS includes three historical KEV records and EPSS includes twelve. The CVSS top-hundred cutoff is 9.9, with 102 records tied at that score. The program selects among them by lexicographic identifier. None of those tied records is in KEV; the 89 higher-scoring records contain all three matches. Tie order therefore changes some selected members without changing this three-entry coverage. With no asset or remediation-cost data, a hundred identifiers is an equal-count selection. It supplies no measurement of equal budgets or hours saved.

The conclusion is specific to this comparison: both scores used alone exclude cases with already-recorded exploitation, and EPSS covers more of those cases with a shorter selection on this date. No next-month predictive accuracy was measured. KEV confirms listed exploitation while leaving the exploitation status of unlisted vulnerabilities incompletely observed. Same-day EPSS may already incorporate related public signals. A predictive evaluation would freeze the scores first, observe the following 30 days, and account for detection-source coverage. The seven later KEV additions are changes in catalog registration; their attacks need not all have occurred after the score snapshot.

WordPress shows why the conditions behind a score deserve attention. For CVE-2026-60137, the CNA assigns CVSS 3.1 of 5.9 and CISA ADP assigns 9.1; the current NVD record preserves both source-attributed rows. The former vector uses high attack complexity and confidentiality impact, while the latter uses low complexity and adds integrity impact. Repair order for a site depends on whether an entry point passes external data to the query and whether the separate REST-route combination is present. Choosing the larger or smaller score does not resolve those implementation questions.

3 Gitea package metadata exposes a linked repository

Consider an ordinary dependency installation. A developer may read a package published by a team while lacking access to the private repository used to build it. Gitea's Composer endpoint returns package versions, distribution URLs and other metadata. A package linked to a repository can additionally include source.url, source.type and source.reference. The defect occurs when those fields are added: package-read access has been satisfied, but the program has not checked whether the linked repository should also be visible to this caller. The error transfers access assumptions between two resources. The verifiable consequence is disclosure of the repository address, type and version reference.

Follow the response through the code. PackageMetadata, lines 126–155, obtains the package name from the path, looks up versions, loads descriptors including any associated repository, calls createPackageMetadataResponse, then returns through ctx.JSON. In the pre-fix api.go, lines 118–130, the condition is simply pd.Repository != nil. The function then populates Source with the repository's HTMLURL(), the constant git type, and the package version. Repository existence tells the program it found an object; it says nothing about the caller's permission to see it.

Response construction: a readable package links to an inaccessible repository; both responses are HTTP 200 and the fixed response leaves repository fields empty

Scroll sideways to read the illustration.

Figure 1. Package and repository permissions are separate. This caller can read the package but cannot access the repository. Both responses succeed; the fix leaves source.url, source.type and source.reference empty. The paper fields are illustrative, not a raw JSON response.

Fix 5d87a70 passes request context into response construction and calls GetDoerRepoPermission(ctx, pd.Repository, ctx.Doer). A permission lookup error is logged. Source is populated only when HasAnyUnitAccessOrPublicAccess() succeeds. Preserve the predicate's actual meaning: access to any repository unit, or the public-access condition. Rephrasing it as specifically permission to read source code would add a restriction that the predicate does not state. Other package fields continue through the existing construction path, allowing the client to consume metadata it is permitted to read.

This determines why an acceptance test cannot rely only on the HTTP status. The upstream regression test at lines 249–275 links a package to a private repository. An authorized user receives the URL, type and reference. A second user without repository access still receives HTTP 200, with all three fields empty. Returning 403 for that second request might prevent disclosure but could also break package access that was intentionally allowed. Correct repair preserves both the access restriction and legitimate dependency installation.

For an actual deployment, identify Composer packages with repository links, compare those three fields under authorized and unauthorized accounts, and test normal downloading. Temporary containment can restrict access to the relevant package endpoint or remove a sensitive repository association, subject to the package maintainer's approval because consumers may depend on the metadata. This article establishes the response change from source and upstream assertions. It did not run the complete Gitea integration environment or demonstrate an unauthorized clone of private code. Handle any disclosed internal addresses or naming information according to the content actually exposed; source theft is a separate finding.

The dates also change the meaning of a new July vulnerability. The fix was merged in May, the 1.26.2 security advisory appeared in June, and the CVE Program record was published on July 3. A July disclosure queue can therefore include a repair that has been available for some time. Determine exposure from the deployed revision and permission behavior, not from an assumption that the monthly report marks the beginning of a one-month exposure period.

4 WordPress input types bypass normalization

WP_Query constructs content queries in WordPress, and author__not_in excludes specified authors. A caller can express the same request—exclude authors 3 and 7—as the array [3, 7] or the string "3,7". Ordinary values may produce equivalent SQL and identical-looking pages. Their safety processing differs: array members are converted to non-negative integers, while the string skips that branch, is cast to a one-element array, and is joined into the query.

The distinction is visible in pre-fix lines 2399–2406. is_array controls whether array_map('absint', ...) runs, whereas the later implode accepts any value after the cast. A string carrying SQL syntax can consequently remain text inside NOT IN (...). The short excerpt below omits sorting and the surrounding query conditions. It explains the type-dependent branch and is not a standalone vulnerability test.

if ( is_array( $query_vars['author__not_in'] ) ) {
    // array_map( 'absint', ... )
}
$author__not_in = implode( ',', (array) $query_vars['author__not_in'] );

To explain the consequence, continue to the consumer. Within the same class, $where enters the WHERE clause of the complete SELECT, stored in $this->request. Query branches subsequently execute it through $wpdb->get_col or get_results. The dangerous condition is controllable input reaching this construction path. Establishing anonymous HTTP reachability requires the additional caller analysis: which plugin, theme or core path passes which value into the query?

Parameter paths: the old code converts array members to integers while a string goes directly to SQL construction; the fix parses both forms to an integer list

Scroll sideways to read the illustration.

Figure 2. Arrays and strings can express the same ID list. Before the patch, only array members undergo integer conversion; afterwards both forms use wp_parse_id_list. The ordinary numbers are explanatory inputs.

The 7.0-branch fix, 74d37a3, routes the value through wp_parse_id_list. Its helper wp_parse_list splits comma- or whitespace-separated strings and filters non-scalar members from arrays. Members then undergo absint and deduplication. The caller checks that the list is nonempty, sorts it, joins integers into the query and writes the normalized list back to query variables. That also preserves a stable representation for equivalent queries whose inputs differ only in order or duplication.

The repaired helper converts values; it is not a strict validator that rejects every non-digit input. Negative values become positive, and the handling of a numeric-prefix string follows PHP's integer conversion. An application that must reject an invalid author identifier still needs its own input rule. Regression checks should cover arrays, comma-separated strings, whitespace, duplicates, empty lists and mixed members, inspect the resulting integer-only query fragment, and confirm that legitimate queries return the expected content. An error page from one hostile string only establishes failure of that request; it may never have reached this branch.

Known exploitation puts this core update near the front of the queue, while the combination of vulnerabilities defines the investigation's scope. The separate official advisory describes a REST batch-route interpretation conflict combined with the query flaw to reach code execution. This section traces the SQL-construction patch; it does not reimplement the complete exploit chain. Site maintainers should inspect enabled REST routes and custom query entry points. Developers should inspect wrappers accepting author__not_in, placing type normalization, authorization and business validation at explicit points.

Recovery consequently has two independent requirements: supported core code that passes the relevant business-query regression, and review of the exposed instance's files, accounts and publishing history. An update can repair query construction while modified themes, implanted files and stolen credentials need separate handling. Version 7.0.2 records the historical first fix. Security releases 7.0.3 and 7.0.4 followed, and the official default is now 7.1. Recovery media should reflect that current deployment decision.

5 ANGLE buffers remain in use after an object switch

ANGLE translates graphics API calls to platform graphics backends. Transform feedback writes shader outputs into buffers. A program may begin recording, pause, select another current object, and later resume. A paused object remains within its active lifecycle, and its output buffer remains in use. The old checks relied too heavily on bindings of the currently selected object, overlooking an active object that was no longer current. This is an object-state defect; the public advisory describes its potential consequence as a sandbox escape.

The new regression test gives the sequence concrete names. TF1 becomes active with B as its output buffer, then pauses. The program selects TF2, then binds the same B as GL_ARRAY_BUFFER. Selecting TF2 has not ended TF1. If the next validation considers only TF2, it may allow B to be reallocated, written or mapped despite that surviving activity. The critical transition is a change in the current object while the old object's use of the buffer continues. Checking the buffer's length or binding target alone cannot reconstruct the missing relationship.

Fix ee21230 links issue 492218546 from the public vulnerability record and adds an active count to Buffer. In TransformFeedback.cpp, lines 139–207, begin increments the count on bound buffers and end decrements it; pause changes only the paused flag. Buffer.h, lines 193–214, combines the existing simultaneous-binding conflict with the active-count check. B can now report active transform-feedback use even while TF1 is no longer current.

State changes: TF1 stays connected to buffer B through begin, pause and selection of TF2; fixed WebGL or hardened contexts reject modification of B while that active use remains

Scroll sideways to read the illustration.

Figure 3. Pausing and selecting another current object do not end TF1's active use of B. The lower panel shows the fixed rejection in WebGL or hardened contexts; GL_INVALID_OPERATION means the operation is invalid in the current state.

Stored state matters only when actual entry points consume it. In validationES2.cpp, lines 3685–3709, validation obtains the target buffer and, for WebGL or hardened contexts, calls hasTFBBindingConflict(). A conflict produces GL_INVALID_OPERATION. The patch updates BufferSubData, mapping, copying and several other consumers, so the new state is used beyond one modification operation. The parent revision's validation uses the earlier binding-conflict check. The repair changes where the activity relationship is recorded and how multiple consumers enforce it; describing this as an added input filter loses the mechanism.

The added TransformFeedbackBufferModificationWhileNotCurrent test begins TF1, pauses it, binds TF2, and expects errors from glBufferData, glBufferSubData and glMapBufferRange. A separate ChangeBufferWhilePaused test preserves successful begin and draw, rejects modification during pause, then confirms that drawing succeeds after resume. One checks the non-current-object path; the other protects legitimate lifecycle behavior. Both are needed to explain what the patch is intended to preserve.

This is an analysis of source and upstream regression assertions. The complete ANGLE graphics backends were not run here, and no sandbox escape was reproduced. Chrome's advisory identifies versions before 150.0.7871.46 and assigns Chromium severity High; the 9.6 score in current CVE/NVD data comes from CISA ADP. Enterprise clients should complete their supported-channel update and restart, then check for old processes that remain online. Temporarily disabling WebGL can reduce a graphics entry point only if the policy actually applies to the target application, at the cost of features such as 3D visualization. It does not cover every native graphics path in that application.

For developers, the transferable review question is whether restrictions stored only on a current handle or request overlook objects still alive in the background. For asynchronous jobs, caches, file mappings and graphics resources, determine who owns an active relationship, which transition removes it, and whether all consumers read the same state. These are useful ownership and state-test questions. The mere existence of pause or switch operations in another system is insufficient to identify the same vulnerability.

6 Grouping changes the apparent lesson of the month

The earlier article emphasized that three cause families account for 61.8% of active records: authority and object binding, 2,449; memory and lifetime, 1,817; interpreter boundaries, 1,770. Those record-level classifications still produce the same arithmetic. Using them to prioritize an organization's engineering investment needs additional evidence. Remove Oracle's 1,108 records alone, and the remaining 8,655 have a different top three: memory 1,817, interpreter boundaries 1,761, and authority 1,615. Authority moves from first to third. One publisher's sample composition can change the ranking; annual engineering allocation also needs local code, assets, defects and incidents.

Recalculation by explicit vendor–product pairs shows further differences. Of 837 Linux records, 443 concern memory and 207 state or ordering. Of 487 Chrome records, 187 concern memory and 132 request or channel trust. A single CVE may mention several Windows versions, so product groups overlap. Summing them would double-count vulnerabilities. The attachment retains the exact product labels and within-group cause counts, without silently turning aliases into supposedly verified assets. It helps readers select the part relevant to their technology stack before inspecting the specific mechanisms.

Patch grouping requires stronger relationship evidence. Both WordPress identifiers were addressed in the 7.0.2 core release. On that branch, they can share an update action while retaining distinct affected conditions. Merging only this vendor-confirmed relation changes historical KEV from fourteen identifiers to thirteen groups. CVSS ≥ 9 covers nine groups and EPSS ≥ 0.10 covers eight; their four and five omitted identifiers remain unchanged. The other 9,761 records remain unpaired. This sensitivity check concerns one verified release relationship and supplies no estimate of the month's actual number of change tickets.

Oracle's quarterly CPU provides an update-program entry point. The July 21 cohort contains 1,097 Oracle records referencing it, across many products, components, branches and packages. A shared quarterly advisory cannot establish a single installation. The current July CPU page lists 1,448 new security patches; the previous article recorded 1,449. This revision uses the current page while leaving v1 bytes untouched. Follow the risk matrix and patch-availability documents for the installed product. Even two Coherence identifiers with identical descriptions establish only similarity in public text, not one shared root cause.

The distinction resembles problems examined in empirical research. The Attack of the Clones separates shared code, affected versions and actual installation state. Allodi's vulnerability-trade study distinguishes identifiers, exploit entries and shared packages. This article adopts the method of establishing the observation unit without borrowing effect sizes from those historical populations. SOSEC can measure public records and their relationships. An enterprise's repair burden also depends on instance counts, downtime, compatibility and rollback constraints.

The inclusion clock affects the total as well. We use CVE Program datePublished from July 1, 2026 at 00:00 UTC up to, but excluding, August 1 at 00:00 UTC, pinned at a373dbeddf97334f61e32d748cc24096303612ab. The identifier year can reflect assignment or publication and cannot simply be treated as the record's reservation date. The active July cohort contains 236 identifiers from before 2026; a CVE-2026-* filter would lose them. The historical NVD receipt window returned 9,919 records, 111 more; the original analysis placed their CVE Program publication dates outside July. Publication, database receipt, patch release and observed exploitation are separate events. Calendar proximity by itself establishes no causal relationship.

Review coverage also needs a precise scope. The v1 ledger preserves field-level review of every record and 9,763 cause classifications. It marks 377 records for additional primary-advisory, patch or source inspection; only fifteen are SOURCE_TRACED, while 5,084 are SPECIFIC_RECORD, 2,573 DESCRIPTION_SPECIFIC, 1,808 BROAD_RECORD and 283 undetermined. These labels reflect the available material and the earlier review judgments; they do not establish source-verified root causes for every entry. This revision adds three detailed source cases, regrouping and current-state checks without upgrading all historical labels. The 354 records lacking CVSS remain present, and missing scores are never treated as zero.

7 What to check after the update

Suppose you maintain a public TeamCity server, WordPress with a custom author filter, and Gitea for internal developers. All three need updates, but restoration requires different work. TeamCity calls for a review of build authority and altered outputs. WordPress calls for tracing external input into queries and checking site files and accounts. Gitea calls for comparing source fields across accounts while confirming dependency installation still works. Internal placement changes reachability; it does not remove the underlying permission error.

For the three source cases, the minimum acceptance conditions are distinct: authorized and unauthorized readers of the same package receive appropriately different source fields; equivalent author-ID inputs pass through one integer-normalization path while preserving correct business results; and, in WebGL or hardened contexts, buffer modification is rejected through active, paused and non-current states while legitimate resume still works. Application maintainers can perform the first two checks in an authorized test environment. ANGLE's source regression belongs with browser or embedded-graphics maintainers. Ordinary endpoint administrators verify the supported channel, package identity, actual restarted version and business pages, without sending vulnerability requests to public systems.

Cisco's 5.3 is the useful number to remember from this cohort: a high-score filter can omit an already-exploited management entry point. Known exploitation and local reachability belong in the repair order; the mechanism determines what to test after updating. Compatibility, compromise scope and recovery still require evidence from the actual installation. Those findings determine when service can resume and which investigations must remain open.

Reproduction data, script and checks not completed

Reproduction material has two versions. The original v1 ledger retains schema sosec.july-2026-cve-census.v1, observation cutoff 2026-08-05T13:52:42+08:00 and exact-byte SHA-256 4a1dc999f6f4bee4d5257d46fe32f984039f51765e551c09b3c34653cde40574. The v2 comparison contains selected identifiers, intersections and unions, tie handling, product groups, publisher sensitivity and September KEV. The calculation script runs with the v1 ledger and fixed KEV input saved in the same directory. Run node analyze-july-cve.mjs result.json to recompute the output without network access. V2 retains the input sources and digests; a later catalog must not overwrite this result.

This revision checked the three source cases' current CNA and NVD records, official releases and pinned patches. The NVD change-history endpoint returned 404 during retrieval and its detail page did not expose readable history, so no trend is inferred from historical enrichment status. Complete Gitea, WordPress and ANGLE product tests were not executed here. Upstream assertions and our source-derived analysis are identified accordingly. With no local inventory, downtime costs or private incident records, there is no calculated enterprise risk-reduction percentage. Readers can independently recompute the public selection sets; operational acceptance still needs their own instances and business controls.

Research basis

Research basisPreserves the 9,808-record v1 cohort and its 2026-08-05T13:52:42+08:00 observation cutoff. Historical comparisons use its 9,763 PUBLISHED records and August 4 EPSS and KEV. The September 12 revision separately publishes v2 comparisons, September 11 KEV and current vendor releases, with pinned Gitea, WordPress and ANGLE source, patches and upstream tests. Record classification, 377 historical primary-source deep dives and source analysis are separate evidence levels. No whole-cohort dynamic exploitation, enterprise risk measurement or repair-cost measurement was performed.

SourcePinned July CVE Program cohort / CISA KEV 2026.08.04 and 2026.09.11 / FIRST EPSS / Vendor advisories, pinned source and regression tests / SOSEC recalculation

Evidence confidence High

8Evidence and sources

8.1Timeline

  1. Inclusion window opens

    Cohort follows CVE Program publication dates in UTC.

  2. WordPress core security release

    Version 7.0.2 repairs the query defect and combination path; historical branch ranges remain separate.

  3. Historical scores and catalog fixed

    KEV intersection is 14; EPSS uses this date's scores.

  4. Later KEV intersection expands

    Catalog 2026.09.11 includes 21 records from the July cohort.

  5. Combined scores still omit known exploitation

    The two high-threshold sets cover twelve historical KEV entries and omit one Cisco FMC and one Microsoft entry.

8.2Sources and material

  1. Original July record ledger v1https://sosec.io/static/research/july-2026-cve-census-v1.json
  2. Selection, grouping and current KEV comparison v2https://sosec.io/static/research/july-2026-cve-comparison-v2.json
  3. Pinned CVE Program cohorthttps://github.com/CVEProject/cvelistV5/tree/a373dbeddf97334f61e32d748cc24096303612ab
  4. FIRST EPSS definitionhttps://www.first.org/epss/
  5. CISA official KEV datahttps://github.com/cisagov/kev-data
  6. Cisco FMC advisory and hotfixeshttps://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-fmc-static-cred-BET3Cjh
  7. TeamCity initial advisory and patch pluginhttps://blog.jetbrains.com/teamcity/2026/07/cve-2026-63077/
  8. TeamCity exploitation-investigation updatehttps://blog.jetbrains.com/teamcity/2026/08/cve-2026-63077-update/
  9. TeamCity current branch releaseshttps://blog.jetbrains.com/teamcity/2026/09/teamcity-20262/
  10. Pinned Gitea fix and testshttps://github.com/go-gitea/gitea/commit/5d87a70af929dba47402fbea7d59f34e5913b3b4
  11. Gitea 1.27.3https://github.com/go-gitea/gitea/releases/tag/v1.27.3
  12. WordPress query-defect advisoryhttps://github.com/WordPress/wordpress-develop/security/advisories/GHSA-fpp7-x2x2-2mjf
  13. WordPress combination-path advisoryhttps://github.com/WordPress/wordpress-develop/security/advisories/GHSA-ff9f-jf42-662q
  14. Pinned WordPress repairhttps://github.com/WordPress/wordpress-develop/commit/74d37a344cbf28e9187a1a5ca71b33d186bcd333
  15. Current WordPress downloadhttps://wordpress.org/download/
  16. Pinned ANGLE repair and regression testshttps://chromium.googlesource.com/angle/angle/+/ee21230bc87855404b87b97b738091cd04b0d3f3
  17. Current ordinary Chrome Stablehttps://chromereleases.googleblog.com/2026/09/stable-channel-update-for-desktop_0808145027.html
  18. Current Chrome Extended Stablehttps://chromereleases.googleblog.com/2026/09/extended-stable-update-for-desktop.html
  19. Current Oracle July CPU pagehttps://www.oracle.com/security-alerts/cpujul2026.html
  20. The Attack of the Clones, IEEE S&P 2015https://users.umiacs.umd.edu/~tudor/papers/OAKLAND-2015.pdf
  21. Economic Factors of Vulnerability Trade and Exploitation, CCS 2017https://arxiv.org/pdf/1708.04866