All High Medium Low
torvalds/linux Race condition / TOCTOU in MPTCP read path (potential use-after-free or memory corruption) MEDIUM
The commit contains multiple MPTCP fixes. The security-relevant portion is a race/TOCTOU hazard in the MPTCP read path (read_sock) where data/descriptor state could become inconsistent under concurrent reads, potentially allowing memory-safety issues (e.g., use-after-free or invalid access). Patch 9 specifically adds a check in the read loop: after consuming a received skb, if the read descriptor count (desc->count) is zero, the loop breaks, ensuring the code does not continue processing with an exhausted descriptor. This helps prevent a window where the kernel could operate on stale or freed data while another thread/process is draining data. The rest of the changes address related TOCTOU/race vectors and memory safety (e.g., rcv_wnd computation in DSS, cleared flags, and safer subflow signaling), collectively reducing security risk. Overall, this is a genuine vulnerability fix for a race condition in the MPTCP read path with MEDIUM confidence.
Commit: 11c31f8e Affected: v7.0-rc6 through v7.1-rc6 (inclusive); fixed in v7.1-rc7 2026-06-05 16:18
torvalds/linux Information disclosure / protocol misuse MEDIUM
The patch mitigates a potential protocol misuse in MPTCP ADD_ADDR handling. Previously, ADD_ADDR (and its echo) could be prepared for transmission on a packet that was not a pure TCP ACK and, in some cases, would be retained in the options list while other suboptions (e.g., DSS) could be in flux, leading to mismatches in ADD_ADDR signaling and HMAC/dss handling. The change makes ADD_ADDR only eligible when the preceding ACK is a pure ACK and ensures other suboptions are dropped when ADD_ADDR is added, avoiding sending ADD_ADDR with stale or conflicting state. This reduces the risk of information leakage or spoofed/incorrect protocol state due to sending ADD_ADDR echoes in non-pure-ACK contexts. It is primarily a correctness/robustness fix with security relevance due to protocol misuse prevention.
Commit: bd34fa02 Affected: <= v7.0-rc6 2026-06-05 15:37
torvalds/linux Denial of Service HIGH
The commit fixes a Denial of Service vector in the BR/EDR signaling path of Linux Bluetooth (L2CAP). Prior to this patch, the BR/EDR signaling channel allowed packets larger than the BR/EDR signaling MTU (MTUsig, defined as 48 octets) to be accepted and parsed. An attacker in radio range could send a single oversized BR/EDR signaling packet (e.g., ~681 bytes) on the fixed-channel CID 0x0001 containing many L2CAP_ECHO_REQ commands. If processed, this could trigger a flood of L2CAP_ECHO_RSP frames (e.g., 168 responses) in a short time, causing CPU/L2CAP stack churn and a DoS. The patch enforces MTU for BR/EDR signaling by rejecting oversized signaling packets with a L2CAP_REJ MTU_EXCEEDED, before any command processing, using the first command header's identifier for the rejection. This fixes the DoS vector by eliminating the processing of oversized packets and preventing echo floods. The patch also defines L2CAP_SIG_MTU as 48 bytes.
Commit: dd214733 Affected: < v7.0-rc6 (pre-patch) 2026-06-05 15:29
torvalds/linux Memory safety / race condition in userfaultfd VMA handling during UFFDIO_COPY retry HIGH
The patch strengthens VMA state validation during UFFDIO_COPY retries in userfaultfd. Previously, mfill_copy_folio_retry() only compared the VMA's uffd_ops before and after the retry. If a VMA was replaced or its mapping changed (e.g., MAP_PRIVATE vs MAP_SHARED) while the VMA lock was released, the replacement could go undetected, leading to incorrect folio handling and potential memory-safety issues (including triggering a BUG() via folio_add_new_anon_rmap or enabling unintended folio injection into the page cache). The fix introduces a new mfill_retry_state struct and helper functions (mfill_retry_state_save, mfill_retry_state_changed, mfill_retry_state_put), and uses DEFINE_FREE to manage cleanup. It saves relevant VMA state before releasing the lock, compares state after reacquiring the lock, and retries or aborts if a change is detected. This mitigates a race condition that could otherwise lead to memory safety vulnerabilities in userfaultfd managed memory operations.
Commit: 85668fda Affected: v7.0-rc5 and earlier in the v7.0 release series (pre-fix). This fix is present in v7.0-rc6. 2026-06-05 15:08
grafana/grafana Access Control / RBAC MEDIUM
The commit improves RBAC/datasource permission handling by mapping legacy datasource actions, including granular permissions (datasources.permissions:read and datasources.permissions:write), to their corresponding Kubernetes RBAC actions. It introduces legacyActionToK8s and expands LegacyDatasourceAction to handle both plain datasource verbs and the nested permissions verbs. This tightens authorization semantics and reduces the risk of mis-mapped permissions that could lead to unintended access (privilege escalation or information disclosure) through incorrect interpretation of datasource-related actions by the RBAC layer.
Commit: 14dec9e8 Affected: < 12.4.0 (vulnerable releases prior to this fix) 2026-06-04 19:53
grafana/grafana Information disclosure / Insecure error handling MEDIUM
The commit fixes an information disclosure / insecure error handling path in plugin settings retrieval. Previously, requesting plugin settings for a plugin that is not installed could surface an error (e.g., Unknown Plugin) including error details or signaling a 404 condition to the UI, potentially enabling plugin-availability enumeration or unrelated error leakage. The fix changes usePluginSettings to swallow 404 errors by returning undefined instead of surfacing an error, effectively treating a missing plugin as a normal absence. Additional small hardening changes include guarding getAppPluginEnabled with an empty-pluginId check and correcting a log message typo. Collectively, these changes reduce information leakage about which plugins are installed and improve error handling for missing plugins.
Commit: 71bd5dda Affected: Grafana 12.0.0 through 12.3.x (prior to 12.4.0) 2026-06-04 15:53
grafana/grafana Header Injection / Information Exposure HIGH
The commit introduces a sanitization step for headers derived from plugin rule metadata (specifically X-Rule-* headers) and propagates origin information via an X-Rule-Origin header. Before this change, plugin-derived metadata could be used to construct HTTP headers that were forwarded to data sources without stripping control characters, potentially enabling header injection or information leakage. The patch adds sanitizeHeaderValue to remove ASCII control characters (including CR and LF) and truncate values to 128 bytes, and applies it when building datasource headers. It also augments the GetEvalCondition to include an Origin metadata key (as '<origin>|<uid>') when available, and updates allowlists so X-Rule-Origin is forwarded consistently across eval paths. Overall, this is a defensive fix to prevent header manipulation and limit header sizes, reducing the risk of header-based attacks and information exposure from plugin-originated metadata.
Commit: 2e70ffaf Affected: Grafana <= 12.4.0 (prior to this patch) 2026-06-03 18:15
grafana/grafana Privilege Escalation / Access Control MEDIUM
The commit refactors authentication/authorization checks for Grafana alerting notification policies from scattered, separate permission lists (READ/READ_EXTERNAL and MODIFY) to centralized ability hooks. It introduces new ability hooks (useNotificationPolicyAbility, useTimeIntervalAbility, useAlertGroupAbility, etc.) and unifies route gating to rely on explicit abilities rather than legacy permission lists. This reduces the risk of authorization bypass due to inconsistent RBAC checks across routes and UI components. It is a real security fix addressing access control consistency for notification policies in the Alerting feature.
Commit: abec7e48 Affected: <=12.3.x (pre-fix); 12.4.0+ includes the fix 2026-06-03 18:14
kubernetes/kubernetes TOCTOU race condition in subPath directory creation (subPath mount path resolution) MEDIUM
Root cause: A race condition (TOCTOU) in subPath directory creation for Kubernetes subPath volumes. The patch changes error handling to tolerate an already-existing subPath directory (ignoring ErrExist) and avoids leaking host filesystem details in user-facing errors. This reduces the window where a malicious actor with access to host paths could influence path resolution during mounting and potentially cause a subPath to reference an unintended host location. The exact code changes indicate an intent to make subPath directory creation idempotent when the directory already exists, rather than failing and exposing host FS details. Additionally, error wrapping was adjusted in subpath implementations to use proper error wrapping (%w) rather than exposing raw strings. Overall, this is a real TOCTOU mitigation in subPath directory creation for container mounts, addressing security concerns around host path leakage and path resolution races.
Commit: 66904291 Affected: v1.36.0-beta.0 and earlier (v1.36 line) 2026-06-01 22:21
kubernetes/kubernetes Information disclosure / Improper access control MEDIUM
This commit hardens kubeadm's dry-run handling of CA certificate materials during the init phase. Key changes include: (1) creating the destination dry-run directory with restrictive permissions (0700) before copying CA artifacts, and (2) copying the actual CA certificate and key from their source paths (rather than a fixed constant path) into the dry-run location. Prior behavior could leave CA material in a dry-run directory with permissive permissions or copy from a potentially incorrect fixed path, increasing the risk of information disclosure or improper access control. The added test verifies that the CA certs/keys are indeed copied into the dry-run directory. Overall, this appears to be a genuine security hardening fix around handling of sensitive CA material in dry-run mode.
Commit: 98e798c5 Affected: v1.36.0-beta.0 and earlier in the v1.36.x line 2026-06-01 22:19
grafana/grafana Authorization / Access control (UI/backend permission alignment) MEDIUM
The commit fixes a frontend authorization mismatch between alerting instance creation and silence creation permissions. Previously the UI gated the silence-creation action based solely on the alertingInstanceCreate permission. The backend gate can accept either action (alertingInstanceCreate or alertingSilencesCreate) for creating silences, but the UI did not consistently reflect that. The patch updates the UI to recognize both permission paths and to surface or suppress the silence-creation action accordingly, reducing the risk of authorization leakage or misrepresentation in the UI. This is an actual fix to access-control alignment between frontend and backend, not a pure cleanup or dependency bump.
Commit: 8425eaa3 Affected: 12.0.0 - 12.4.0 (prior to this patch) 2026-06-01 10:16
facebook/react Denial of Service (resource exhaustion) MEDIUM
The commit implements a safeguard to prevent main-thread stalls and potential denial-of-service via extremely large debug strings in React Flight server-client communication. Previously, very large debug strings (e.g., multi-megabyte values) could be reconstructed and processed on the client when replaying logs or debug info, potentially blocking the main thread and exhausting CPU time. The fix adds a threshold (1,000,000 characters) and replaces oversized strings with a placeholder message indicating omission. This reduces resource usage during server-to-client debug data transmission and log replay. It also normalizes long strings in performance tracking to avoid heavy processing.
Commit: f0dfee38 Affected: 19.2.0 - 19.2.3 (prior to the 19.2.4 fix) 2026-05-30 20:10
torvalds/linux Cryptographic padding handling / potential information leakage in WireGuard encryption MEDIUM
The commit fixes a cryptographic padding handling issue in WireGuard's packet encryption path. Previously, the code could zero-padding and include the trailer (padding) in the skb in a way that could be bypassed if skb data allocation (reallocation) occurred before or during header expansion. This could result in padding not being properly zeroed or not being included in the encrypted trailer when reallocation happened, potentially leaking uninitialized data or compromising padding integrity. The fix changes the order of operations to append the trailer after expanding the head and to initialize padding at the end of the process, ensuring the padding zeros are preserved in all code paths and improving data integrity in the cryptographic padding process.
Commit: f75e3eb0 Affected: 7.0-rc6 and earlier (WireGuard send path in drivers/net/wireguard/send.c); fixed in this commit 2026-05-30 10:46
torvalds/linux Memory safety MEDIUM
The commit adds a guard in arch/x86/kvm/svm/sev.c: setup_vmgexit_scratch to WARN_ON_ONCE when min_len is zero and to jump to the error path. This prevents configuring the vMGEXIT scratch area with a zero-length requirement. Previously, a zero min_len could lead to subsequent memory handling with an invalid scratch region, creating a potential memory-safety regression if the code path trusted a non-zero length. The patch ensures non-zero length for the scratch area and surfaces a warning rather than proceeding with a potentially unsafe setup. This is a defensive fix to guard against future bugs and misconfiguration in KVM SEV scratch handling.
Commit: f185e05d Affected: v7.0-rc6 and earlier (mainline prior to this patch) 2026-05-30 10:43
torvalds/linux Memory safety: buffer underflow in KVM SEV MMIO path MEDIUM
The commit adds a guard to ignore MMIO requests with length 0 in the KVM SEV MMIO exit path. Prior to the patch, a length of 0 could lead to unsafe length-based calculations (e.g., computing end pointers or scratch area setup) that might underflow and cause memory corruption or other memory-safety issues. The patch returns early when len == 0, and continues using len for subsequent scratch setup and MMIO handling only when len is non-zero. This is a defensive fix for a potential buffer underflow in the SEV MMIO path and reduces the risk of memory corruption stemming from zero-length MMIO handling.
Commit: 1aa8a6dc Affected: v7.0-rc6 (KVM SEV MMIO path; patch targets 0-length MMIO handling in sev_handle_vmgexit). 2026-05-30 10:40
grafana/grafana Information Disclosure/Credential exposure HIGH
This commit fixes a credential disclosure risk in Grafana provisioning. Previously, when a provisioning git repository URL used http:// and a token was configured, the token could be sent in cleartext during Git operations because git.NewRepository would attach basic auth unconditionally for HTTP. The validators did not reject this combination. The change adds an allowInsecure flag and updates validation to reject http:// URLs when a token is configured, except when running in development mode (app_mode=development) or when provisioning.allow_insecure is explicitly enabled. It also normalizes the URL scheme to lowercase to catch cases like HTTP://. The behavior for https:// URLs remains unchanged, and http:// is still allowed without a token. This reduces the risk of token leakage over non-TLS transport during provisioning.
Commit: bb674a53 Affected: < 12.4.0 (releases prior to this patch; tracked version 12.4.0 includes the fix) 2026-05-29 17:25
grafana/grafana Path Traversal / KV key integrity MEDIUM
The commit hardens KV key construction and validation by replacing ad-hoc namespace/resource/group validation with apimachinery validators and by switching the per-resource KV path layout from <namespace>/<resource>.<group>/<index-key> to <namespace>/<resource>/<group>/<index-key>, using '/' as the separator. This addresses potential KV key integrity and path-traversal issues where crafted inputs could produce ambiguous or malformed keys, leading to incorrect parsing, leakage, or unintended access across namespaces. The changes also update ListNamespaceResources to parse the new two-segment data layout. Overall, this is a security-oriented hardening of input validation and key encoding rather than a mere dependency bump or test addition.
Commit: 5181b143 Affected: < 12.4.0 2026-05-29 16:25
grafana/grafana Denial of Service (Resource exhaustion via excessive JSON nesting during dashboard parsing) HIGH
The commit implements explicit recursion depth limits when computing dashboard summaries to prevent denial-of-service via crafted dashboards with deeply nested specs/panels. It introduces maxSpecDepth and maxPanelDepth, guards recursive reads for spec and panels, and logs when limits are hit. Tests were added to verify recursion bounds. This changes the parsing/processing code path that could previously recurse without bounds, thereby enabling resource exhaustion under crafted input.
Commit: 40586837 Affected: Grafana 12.3.x and earlier (pre-12.4.0); 12.4.0 includes the fix 2026-05-29 15:25
grafana/grafana Authorization bypass / Access control due to UID truncation HIGH
The commit fixes an input validation/authorization edge-case by increasing the maximum length for role identifiers (role UID and role name) and expanding the storage column for role.uid from 40 to 253 characters. Previously, long role UIDs could be truncated by the storage layer (e.g., MySQL) or by API boundaries, potentially causing mismatches in access-control decisions and allowing misauthorization. The changes unify and enforce a clear maximum length (253) to prevent silent truncation and ensure proper validation before authorization checks.
Commit: 04910a0d Affected: 12.0.0 - 12.4.0 (pre-fix) 2026-05-29 08:46
torvalds/linux Use-after-free / RCU + refcount race in l2tp_session_get_by_ifname HIGH
The commit fixes a potential use-after-free race in l2tp_session_get_by_ifname. Previously, the function took a reference to a session by calling refcount_inc() after matching the session by its ifname. Between the string comparison (strcmp) and the refcount_inc(), another CPU could drop the session's refcount to zero and free the object, yet the reader would continue using the stale pointer. This could result in use-after-free when the caller dereferenced the returned session. The fix switches to refcount_inc_not_zero() and, if the increment cannot be performed (i.e., refcount is zero), it continues walking the list instead of returning a possibly freed object. This brings the ifname getter in line with the other session getters in the file that already use refcount_inc_not_zero().
Commit: 05f95729 Affected: <= v7.0-rc6 (net/l2tp: l2tp_session_get_by_ifname) 2026-05-29 00:05
torvalds/linux Denial of Service (packet loop/recursion in netem/mirred paths) HIGH
The commit adds a per-skb tc_depth field (2 bits) and uses it to bound and detect recursion/duplicate processing in mirred and netem paths. Before this change, crafted traffic containing mirred/netem redirects could loop across devices or back through the backlog, leading to infinite processing, excessive CPU usage, or kernel instability (a Denial of Service). The patch stops duplicate recursion using tc_depth (with a limit MIRRED_DEFER_LIMIT = 3) and increments tc_depth along redirected paths, effectively capping the recursion depth and dropping packets that would cause loops. It also adjusts netem duplication logic to depend on tc_depth and removes a stricter check that prevented certain legitimate multi-netem configurations. Overall, this is a real vulnerability fix for a DoS via packet loops/recursion in netem/mirred.
Commit: 031f1592 Affected: Linux kernel net/sched code in v7.0-rc6 and earlier (prior to this commit). 2026-05-29 00:04
grafana/grafana Authorization bypass / Information disclosure HIGH
Security fix verified. The commit adds per-request authorization filtering when retrieving datasources by type, ensuring that only datasources the caller has read access to are returned. This mitigates an information disclosure/authorization bypass path where unauthorized users could learn about datasources they should not see. The patch implements filtering in GetDataSourcesByType by enumerating the results and validating each datasource against the caller's read permissions. It also highlights a potential risky code path in ListConnections where a plugin-type query could bypass service-level authorization if not carefully wired, which the tests exercise to confirm proper behavior. Overall, this is a genuine vulnerability fix for information disclosure via datasource-type queries.
Commit: a88567ff Affected: < 12.4.0 2026-05-28 22:34
grafana/grafana Access Control / Authorization HIGH
The commit fixes an authorization mapping issue around legacy role-management permissions (roles:read, roles:write, roles:delete) by introducing explicit reconciliation logic for these permissions into Zanzana tuples. It adds dedicated translation paths (RoleManagementToTuples) and safeguards to drop scoped role-management permissions that cannot be safely expressed (e.g., per-role scoped permissions). The changes also include tests that verify the exact tuple mappings for legacy permissions (get on roles and globalroles for read; edit on roles for write; delete on roles for delete) and ensure that unsafe/scoped permutations are omitted. This reduces the risk of privilege misconfigurations or unintended escalation due to improper translation of legacy RBAC permissions into the Zanzana access-control model.
Commit: 1d6f679a Affected: Grafana 12.0.0 through 12.3.x (pre-12.4.0) 2026-05-28 21:34
grafana/grafana Denial of Service (Crash) via nil or invalid request key in resource API HIGH
Summary: The commit adds validation of the request key across all resource server endpoints in the unified-storage component. Prior to this change, a misconfigured client sending a nil request key could trigger an unvalidated code path in the storage-api server, potentially causing a crash (Denial of Service). The patch introduces verifyRequestKey and verifyRequestKeyCollection checks in Create, Update, Delete, Read, List, and Watch handlers, and surfaces invalid input as gRPC InvalidArgument errors instead of panicking or crashing. This is a real security hardening aimed at preventing crash-induced DoS caused by nil/invalid request keys. The accompanying tests also assert that InvalidArgument is returned for invalid keys. Impact: - Vulnerability type: Denial of Service (crash) via nil/invalid request key in resource API - Affected: Grafana Grafana 12.4.0 and earlier (the fix targets 12.4.0 and prior releases) - Fixed by: Input validation on request keys across resource server endpoints, replacing potential panics with structured errors. Rationale: - The storage server previously could crash if a nil or improperly formed request key was processed without validation. By validating at entry points for all relevant RPCs, the server avoids dereferencing nil pointers or entering invalid code paths. The change also standardizes error handling to return InvalidArgument rather than a crash, reducing the attack surface for DoS via malformed requests.
Commit: 1e02b489 Affected: <= 12.4.0 2026-05-28 16:32
grafana/grafana Crash/DoS due to unhandled panic in gRPC handlers HIGH
The commit adds panic recovery interceptors for the gRPC server to catch panics in unary and streaming RPC handlers, log a stack trace, and return a generic Internal error to clients instead of crashing the process. This mitigates a recovery-related crash/DoS vulnerability and reduces potential information leakage by ensuring panics are contained within the RPC handling path. The change wires the new interceptors into the server and also applies them to in-process channels used by some internal clients, with unit tests validating both unary and streaming panic handling.
Commit: 0a55e1d2 Affected: <= 12.3.x (prior to 12.4.0) 2026-05-28 16:31
grafana/grafana Information disclosure MEDIUM
The commit hardens error handling in the dash validator and related Prometheus fetcher to prevent information leakage via user-facing error messages and logs. Previously, upstream error responses could include sensitive details such as the datasource URL and raw response bodies (e.g., Prometheus error messages or internal stack traces). The changes remove or mask these details from user-facing errors (e.g., omitting URL and response bodies in validation errors) and log internal data at DEBUG level for operators. This reduces information disclosure vectors (URLs, error payloads) while preserving enough context for debugging via internal logs.
Commit: 70c85a73 Affected: <= 12.4.0 2026-05-28 13:31
grafana/grafana Authorization bypass / Access control (Cross-tenant isolation violation) HIGH
The commit adds defense-in-depth authorization checks on internal delegated RPCs of the unified-storage resource server (PutBlob, GetBlob, ListManagedObjects, CountManagedObjects, RebuildIndexes). Previously, these internal RPCs could be invoked without validating the originating user's identity or namespace alignment, enabling potential cross-tenant access or information disclosure if the gRPC surface was reachable without the calling service in the request path. The fix introduces a requireUserNamespace gate and enforces resource-level access checks before performing actions, ensuring only properly authenticated/authorized users in the correct namespace can access or modify resources.
Commit: 5353666e Affected: Pre-fix: Grafana 12.x versions prior to 12.4.0 (unified-storage delegated RPCs). Fixed in 12.4.0. 2026-05-28 12:31
grafana/grafana Input Validation / Boundary validation HIGH
Summary of fix: - Introduced centralized git ref validation in apps/provisioning/pkg/repository/git with IsValidRef and commitHashRegex. An empty ref is allowed (defaulted to configured branch); a non-empty ref must be either a valid git branch name or a 7–40 character hex commit SHA. - Added ErrInvalidRef in the repository package to represent invalid refs. - Enforced validation at HTTP boundaries for provisioning endpoints: files and history connectors now reject unvalidated refs before reaching backends (local/git/github). - Updated tests to cover IsValidRef, RefValidation at files parsing, and history boundary checks. What vulnerability was fixed: Before this change, the provisioning API could forward an unvalidated ref value to backends (local, git, GitHub). This opened potential attack surfaces around input validation, including path/ref manipulation or injection risks when refs were concatenated into backend commands or data fetches. The commit explicitly moves ref validation to the HTTP boundary and centralizes ref validation logic, reducing the likelihood of unsafe input propagating to lower layers. Vulnerability type: Input Validation / Boundary validation for git refs (branch names and commit SHAs). Impact pathway: Unvalidated ref values could be forwarded to provisioning backends, enabling injection/manipulation of how refs are resolved by downstream systems.
Commit: 8a8623b2 Affected: Grafana 12.4.0 and earlier (pre-fix 2026-05-28 11:28
grafana/grafana Authorization bypass / Privilege escalation HIGH
The commit adds a destination-folder permission check to PatchLibraryElement to prevent an authorization bypass where an editor of a library element could relocate it into a folder they cannot access or write to. Previously, the route-level guard only verified library.panels:write on the element itself, which could allow moving the element to a folder without validating the caller's permissions on that destination folder. The patch introduces a check that resolves the destination folder scope and requires library.panels:create permission on that folder (with a fallback to the general folder if the destination UID is empty). This is complemented by a unit/integration test that exercises the scenario where a user has edit rights on the element but only read/view rights on the target folder, ensuring relocation is blocked. This constitutes a real vulnerability fix for authorization bypass/privilege escalation related to library element relocation across folders.
Commit: 5877f5c5 Affected: <=12.4.0 2026-05-27 21:34
grafana/grafana Authentication/Authorization - Token reuse across repository URL changes (credential misuse risk) HIGH
Root cause: When updating a provisioning repository, if the repository URL changes and a new token is not supplied, the code could copy the existing secure token from the old repository to the new one and allow access to the new URL with the old token. This enables credential reuse across a URL change and could lead to unauthorized access to the newly pointed repository. What changed: The patch adds a guard RequiresNewTokenForURLChange that detects a URL change between old and new repository objects and requires a new token to be provided. If no new token is present, the update is rejected with an error indicating that a new token is required when changing the repository URL. This check is wired into the admission validator and complemented by tests verifying the behavior. Impacted area: repository provisioning (authentication/authorization path for Git sources).
Commit: 4d13e75a Affected: < 12.4.0 2026-05-27 18:34
grafana/grafana Access Control / Authorization Bypass HIGH
Root cause: Prior to this patch, when updating an existing resource, the authorization check used the folder where the resource currently exists (source) and did not consistently validate the destination folder when the resource was moved across folders. This allowed a user with write access to the source folder to move a resource into a destination folder they could not access. The commit changes the authorization flow to: (1) derive the destination folder from the file path (not from user-supplied JSON), (2) for moves across folders, check permissions on both the source and the destination folders, ensuring the user has the required verb on both. As a result, cross-folder moves are blocked unless the user has access to both folders. This fixes a potential authorization bypass in provisioning resource moves. Vulnerability type: Access Control / Authorization Bypass via folder moves Affected behavior: Moving a resource from a permitted folder to a restricted folder could succeed under older logic; now moves require permissions on both source and destination.
Commit: 940ac768 Affected: < 12.4.0 2026-05-27 13:34
grafana/grafana Information disclosure / cross-tenant data leakage via shared cache MEDIUM
Vulnerability: cross-tenant information disclosure via a shared metrics cache. Before this fix, MetricsCache cached results using only the datasource UID as the key. If multiple orgs used the same datasource UID, a cache entry could be reused across orgs, allowing one org to observe another org's metrics data from the cache. The patch scopes the cache per organization by including orgID in the cache key and in the singleflight key, effectively isolating cache entries per organization. This reduces the risk of information leakage between tenants when using the dashvalidator metrics cache.
Commit: 60ffda0f Affected: Grafana 12.4.0 and earlier (Dashvalidator metrics caching keyed by datasource UID only) 2026-05-27 12:36
grafana/grafana Authorization bypass / Privilege escalation (RBAC enforcement on no-op update) HIGH
The commit fixes an authorization bypass in no-op updates. Previously, when a client sent an update whose payload was identical to the latest stored value, the storage/update path could bypass RBAC checks, potentially allowing a caller with insufficient permissions to trigger a write without proper authorization. The patch adds a server-side guard for no-op updates: if the incoming value equals the latest value, the server now performs an RBAC check (VerbUpdate) for the target resource before returning. If allowed, it returns the current resource version without mutating data; if not allowed, it returns Forbidden. This enforces access control consistently even when no actual data changes occur, mitigating privilege escalation risk in no-op update scenarios.
Commit: 09d9dc30 Affected: <= 12.4.0 2026-05-27 12:34
grafana/grafana Authorization bypass / RBAC enforcement on unified storage search (IAM users resource) HIGH
RBAC enforcement for the iam.grafana.app/users resource in the unified storage search path was missing, allowing potential authorization bypass via /api/users/search. The commit enforces RBAC by extending the access control allowlist to include iam.grafana.app: { users: nil } and adds tests that verify correct authorization behavior for global admin, org editor, and scoped user scenarios. This addresses an authorization bypass risk where users could enumerate other users through the unified storage search filter.
Commit: ec005b84 Affected: <=12.4.0 2026-05-27 10:34
grafana/grafana Authorization bypass / Access control weakness HIGH
The commit implements a server-side access-control fix for the folder hierarchy by introducing an AccessControl map and a batch RBAC-based permission calculation that resolves inherited permissions from parent folders. It adds a per-user permission tier (viewer/editor/admin) and derives an explicit AccessControl map reflecting only the actions granted to the user, intended to mitigate authorization bypass or leakage due to mis-handled inherited permissions. Additionally, it exposes this AccessControl field via the API (FolderAccessInfo.AccessControl) and updates the OpenAPI schemas to document it. The change also includes unit tests that validate the new access calculation logic. The problem this fixes is an authorization weakness where inherited permissions and per-folder access could be inconsistently computed or exposed, potentially allowing leakage or mis-privileged actions if parent-chain inheritance was not properly accounted in the previous flow. The patch moves authorization checks to a batch RBAC path, derives a consistent tier, and returns a restricted AccessControl map mirroring the user’s granted actions.
Commit: e4523539 Affected: <=12.3.x 2026-05-27 07:55
grafana/grafana XSS and URL injection HIGH
This commit implements frontend URL sanitization and encoding to fix potential XSS and URL injection in provisioning UI. It introduces safe rendering for profile URLs, encodes usernames for profile links, and sanitizes all externally provided URLs used in provisioning components (PullRequestButtons, RepositoryActions, RepositoryOverview, ResourceTreeView, and HistoryView). Specifically, it adds getAuthorProfileUrl with encodeURIComponent, uses textUtil.sanitizeUrl on server-provided URLs (newPullRequestURL, compareURL, sourceURL, webhook URLs, and constructed repo links), and switches author rendering to a safe link path (TextLink) when a profile URL is present. It also adds tests to verify sanitization of javascript: URLs and proper encoding. Overall, this addresses input validation and potential XSS/URL-injection vectors via crafted URLs or usernames in the provisioning frontend.
Commit: 97ea75b9 Affected: <=12.4.0 (Grafana 12.x provisioning frontend) 2026-05-27 04:55
vercel/next.js Memory Safety / Use-After-Free due to unsafe lifetime transmute in ReadRef IntoIterator HIGH
The commit fixes a latent memory-safety vulnerability in Turbopack's ReadRef<T> IntoIterator implementation. Previously, the IntoIterator path was implemented by fabricating &'static references via transmute (transmute_copy) to expose items through the standard Iterator trait. Those fabricated references were only valid while the ReadRef lived; once the backing storage could be evicted, dropped, or moved (e.g., due to async work, futures, or caller-side drops), the lifetime constraint could be violated, leading to a use-after-free when iterated items were later dereferenced. The patch replaces the unsafe by-value iterator with a sound, clone-free variant (ReadRefIter) and adapts all call sites to avoid exposing &'static references. This eliminates the lifetime hoisting that previously allowed references to escape into futures, Vecs, or serialization code, thereby preventing potential memory corruption or panics (e.g., during JSON serialization as observed in the bug report).
Commit: 1b77dba6 Affected: 16.0.0 - 16.2.1 (pre-fix) 2026-05-26 19:49
kubernetes/kubernetes Bypass / Privilege escalation (corrupt-object deletion bypass) HIGH
The commit changes the unsafe-delete path for corrupt objects to ensure corruption is detected at the latest revision. Previously, there existed a path (IgnoreStoreReadError) that could skip transform/decode and allow deletion of a corrupt object without performing full validation, potentially bypassing admission checks and finalizers. The new implementation (ExpectTransformOrDecodeError) always attempts to transform/decode and only proceeds with delete if that attempt fails; if the object turns out to be decodable after all, the delete is rejected with an InvalidObj error. This mitigates a security edge case that could have allowed tampering or bypass of security controls via corrupt object deletion.
Commit: 650b8e7f Affected: v1.36.0-beta.0 and earlier in the 1.36.x line 2026-05-26 19:40
kubernetes/kubernetes Race condition / data race in scheduling nomination vs. activation MEDIUM
The commit fixes a race condition between pod nomination and moving a pod to the active scheduling queue. Previously, a pod could be moved to the active queue before its nomination was recorded, creating a window where the scheduler could pop the pod from the queue without an associated nomination, leading to timing-based misbehavior or inconsistencies in scheduling decisions. The patch ensures nomination is recorded before moving to the active queue by: - Recording nomination in Add() before moveToActiveQ() - Recording nomination in Update() before moveToActiveQ() - Documenting that queue signaling is the caller’s responsibility (no implicit wakeup signals inside add/moveToActiveQ) - Adding tests to verify that gated pods are nominated and that nomination happens prior to activation
Commit: 6bca5530 Affected: v1.36.0-beta.0 (and earlier in the 1.36.x line) 2026-05-26 19:37
kubernetes/kubernetes Metadata handling / Server-managed fields sanitation during create-via-update and create-via-apply MEDIUM
The commit adds a wipe of object system fields on create-via-update and create-via-apply paths by calling rest.WipeObjectMetaSystemFields(objectMeta) during the Update flow. This hardens input handling by ensuring clients cannot set or contend with server-managed metadata (e.g., managedFields, creationTimestamp, resourceVersion) when performing certain update/patch pathways, aligning behavior with create requests. The change reduces the risk that client-supplied system fields could escape server sanitation and cause inconsistencies or race conditions. This is a defensive security hardening focused on metadata handling during specific update/patch flows; it is not a broad vulnerability in isolation but mitigates a class of metadata-tampering issues.
Commit: 6fda3b80 Affected: v1.36.0-beta.0 and earlier (1.36.x prior to this commit) 2026-05-26 19:31
kubernetes/kubernetes Information disclosure / Metadata leakage HIGH
The commit fixes a vulnerability where resources could leak or inherit sensitive system metadata when created via update (create-via-update) or create via apply. Specifically, during update-based creation paths, the API server could carry over or reflect system fields such as UID, CreationTimestamp, SelfLink, DeletionTimestamp, and DeletionGracePeriodSeconds from the input ObjectMeta, or from an existing resource, into the newly created object. The patch wipes these system fields before finalizing the creation, ensuring that new objects receive fresh identity information and do not disclose potentially sensitive metadata from an existing resource or from the payload. The accompanying test suite asserts that after creation via POST, PUT (create-via-update), and SSA apply, these fields are cleared, and new governance metadata is assigned by the server.
Commit: e8742a6b Affected: v1.36.0-beta.0 2026-05-26 19:28
kubernetes/kubernetes Authorization bypass / Policy evaluation desynchronization MEDIUM
The commit refactors admission CEL object caching to introduce a LazyObject wrapper for VersionedObject and VersionedOldObject, ensuring that any mutation via Set() clears the cached CEL (ref.Val) representation. Prior to this change, the system cached the CEL representation (celVal) of an object and did not invalidate it when the underlying runtime.Object was mutated during admission. This creates a desynchronization risk between the object state and its CEL evaluation, which could lead to an authorization bypass or incorrect policy decisions during mutating admission. The fix enforces cache invalidation on mutation, causing CEL evaluations to reflect the latest object state, thereby stabilizing policy evaluations during admission and reducing the risk of policy desynchronization. In short: it changes caching of CEL representations from a separate cached field to a LazyObject that invalidates the CEL value on Set(), reducing the window where policy evaluations could run against stale object state.
Commit: 5e55dd07 Affected: v1.36.0-beta.0 (tracked) and earlier in the v1.36.x line 2026-05-26 19:17
kubernetes/kubernetes Race condition MEDIUM
The commit threads context through node shutdown paths in kubelet, propagating cancellation and timeouts into shutdown-related operations (pod termination, volume unmount waits, and node-status synchronization). Previously, shutdown routines could race or continue long-running operations without a shared cancellation context, potentially leaving resources in an inconsistent state or exposing sensitive information during teardown in edge cases. By passing a contextual ctx through killPods, WaitForAllPodsUnmount, and related shutdown flows (including Windows preshutdown handling), the shutdown process can be canceled promptly, reducing race windows and improving reliability and security during teardown.
Commit: 66cb1856 Affected: v1.36.0-beta.0 and earlier (pre-patch in the 1.36.x line) 2026-05-26 19:10
kubernetes/kubernetes Input validation / Resource exhaustion HIGH
The commit adds per-item maxBytes validation for device attribute strings in ResourceSlice validation. Specifically, each string value in a DeviceAttribute.StringValues list is now validated against a per-item maximum length (DeviceAttributeMaxValueLength, 64 bytes). The validation results are annotated with origin 'maxBytes' and marked as covered by declarative validation. This hardens input validation to prevent potential resource exhaustion or abuse from excessively long string values in device attributes. Tests have been updated to enforce the boundary behavior and to reflect the maxBytes constraint.
Commit: e079ab4a Affected: Unreleased; planned for v1.37.0+ (alpha since 1.37) 2026-05-26 19:07
kubernetes/kubernetes Input Validation / Denial of Service prevention HIGH
The commit adds per-item maxBytes validation for DeviceAttribute.StringValues and annotates errors with origin 'maxBytes'. This enforces a maximum length for each string value in resource attributes to prevent resource exhaustion or validation bypass caused by oversized inputs. Tests were updated to cover boundary conditions. This constitutes a genuine security fix for DoS/Resource exhaustion via oversized input in resource validation.
Commit: 7fb3ca25 Affected: v1.36.0-beta.0 and earlier (pre-change) 2026-05-26 18:52
kubernetes/kubernetes Input validation / Configuration validation MEDIUM
The commit integrates declarative validation into REST create/update strategies by merging declarative validation with existing handwritten validation. Specifically, it updates validation flow so that when a strategy implements DeclarativeValidationStrategy, the runtime will first run handwritten validation (Validate/ValidateUpdate), then run declarative validation (ValidateDeclaratively) and merge the results, performing migration checks. It also wires declarative validation into BeforeCreate/BeforeUpdate paths and introduces configuration hooks (DeclarativeValidationConfigurer, DeclarativeValidationConfig) to tailor declarative validation per strategy. This reduces the risk that invalid configurations bypass API boundary validation, strengthening input/configuration validation and policy enforcement at REST boundaries. The change is a defensive hardening of input validation rather than a user-facing feature, and it affects internal API server validation flows across create and update operations. A real vulnerability analogous to this change would be a scenario where declarative validation could run independently of handwritten validation, or where its errors were not merged with handwritten validation errors, allowing invalid configurations to be accepted if only one validation path fired. By ensuring declarative and handwritten validations are merged, this patch mitigates that risk and tightens validation coverage across API boundaries. Affected behavior summary: - Before: If a strategy implemented DeclarativeValidationStrategy, declarative validation might not be consistently applied in conjunction with handwritten validation during create/update flows. - After: For create/update operations, handwritten validation results are computed and then declarative validation is invoked (when applicable), with merged errors returned to the caller. This ensures both validation sources contribute to the final decision. Security posture impact: improves input/configuration validation coverage, reducing chances of misconfigurations or invalid resources slipping through API validation. It does not introduce a new exposure and is aimed at reducing a potential validation bypass vector.
Commit: 30c76c18 Affected: <= v1.36.0-beta.0 2026-05-26 18:37
kubernetes/kubernetes Command Injection MEDIUM
The commit fixes a potential command injection vulnerability in kubectl cp where the path inside the container could be interpolated into a shell command (tar pipeline) without proper escaping. Prior to this fix, paths containing shell metacharacters (e.g., spaces, quotes, semicolons) could terminate the tar command and inject arbitrary commands into the remote shell (e.g., uname -a) executed inside the pod/container. The patch adds proper quoting and escaping for the path and uses a remote executor to ensure safer command construction, reducing the risk of command injection when copying files to/from pods.
Commit: 5c0362e8 Affected: v1.36.0-beta.0 and earlier 2026-05-26 18:28
kubernetes/kubernetes Endpoint spoofing / duplicate IP handling leading to potential misrouting or information exposure MEDIUM
The commit implements a real security-oriented fix for endpoint spoofing by handling duplicate IPs across local and remote endpoints in the HNS-backed proxy. Previously, if two endpoints shared the same IP (one local, one remote), the system could end up with conflicting endpoint mappings, potentially allowing traffic to be misrouted or leaked between services. The fix introduces: (1) enhanced endpoint enumeration that returns a map of endpoints and a separate map of duplicate-IP remote endpoints, (2) logic to delete remote endpoints that share an IP with a local endpoint, and (3) integration with the proxy sync flow to clean up such duplicates and adjust refcounts. In addition, a new path in the proxier ensures that stale/remote endpoints with duplicate IPs are deleted during synchronization, preventing spoofing scenarios where a remote endpoint could shadow or conflict with a local one.
Commit: a97495fc Affected: v1.36.0-beta.0 and earlier (Windows HNS proxy, before this patch) 2026-05-26 18:24
kubernetes/kubernetes HTTP Method Restriction / Access Control (read-only endpoints) HIGH
This commit adds explicit HTTP method restrictions on kubelet endpoints to harden access control for read-only paths. Specifically: - kubelet_server_journal.go now rejects methods other than GET and POST for journal-related queries, returning 405 Method Not Allowed and an Allow header listing GET and POST. - Additional read-only endpoints registered via the RESTful server are wrapped with a GET-only filter (GETOnlyRestfulFilter) so that only GET requests are processed; non-GET requests receive 405 with an Allow header indicating the permitted methods. The change reduces the attack surface by preventing abuse of unsupported HTTP methods (e.g., PUT, DELETE, PATCH) against kubelet read endpoints that could otherwise trigger unintended behavior or side effects. Tests were added to verify the method-gating behavior for journal endpoints and other read-only endpoints. Overall this is a security hardening fix rather than a dependency or cleanup only change.
Commit: 7f605824 Affected: v1.36.0-beta.0 and earlier (1.36.x releases prior to this patch) 2026-05-26 18:24
kubernetes/kubernetes Input validation (IP validation) HIGH
The commit adds explicit IP validation for the IP address used by the apiserver endpoint reconciler. It introduces a ValidateIP(ip net.IP) error method on endpoint reconcilers and calls this validation during CompletedConfig.New to ensure that the public address (advertise-address) is valid for endpoint reconciliation. This prevents invalid or misconfigured IPs from being embedded into the endpoints managed by the reconciler, addressing a robustness/input-validation weakness that could lead to misrouting, service disruption, or potential information disclosure when endpoints contain unusable or non-routable addresses. The change also adds a safety net in test setup to disable endpoint reconciliation for loopback/external addresses unless explicitly overridden, further hardening configuration paths. In short: before this patch, misconfigured advertise-addresses could propagate into Endpoints, enabling disruption or misrouting; after the patch, invalid IPs are rejected at startup via IP validation.
Commit: 6448bfa3 Affected: v1.36.0-beta.0 and earlier (master before the fix) 2026-05-26 18:23
kubernetes/kubernetes Privilege Escalation / Authorization bypass in reconciliation logic due to ownership checks MEDIUM
The commit changes the CronJob controller to validate and filter Jobs using an OwnerReference UID index, ensuring only Jobs owned by the CronJob are reconciled. Previously, reconciliation could include Jobs by matching OwnerReference.Name, which could allow a Job that pretends to be owned by a CronJob (via matching name) to be considered for reconciliation even when its actual owning UID did not match. The fix mitigates a potential authorization/safety bypass in the reconciliation loop by using a UID-based ownership check via an index (jobControllerUIDIndex) instead of solely relying on the Job's OwnerReference.Name.
Commit: 4fd1a1c0 Affected: v1.36.0-beta.0 and earlier (CronJob Controllerv2 in Kubernetes) 2026-05-26 18:20
kubernetes/kubernetes Command Injection MEDIUM
The commit improves quoting of the source path used in a shell command when kubectl cp copies data to a pod. Before this fix, the code embedded the source path directly into a shell command (tar cf - <path> | tail -c+N) without proper quoting. If an attacker can influence the source path and inject special characters (notably a single quote), they could terminate the current quoted string and inject additional shell commands, potentially leading to arbitrary command execution (command injection) during the tar streaming step. The patch wraps the path in single quotes and escapes embedded single quotes inside the path, mitigating the injection risk by ensuring the path is treated as a literal argument to tar rather than executable shell code.
Commit: e7440a68 Affected: All releases prior to the fix introduced by this commit (i.e., v1.36.0-beta.0 and earlier). 2026-05-26 18:16
kubernetes/kubernetes RBAC/Privilege Escalation MEDIUM
This commit appears to be a real security hardening fix rather than a mere dependency bump. It introduces a dedicated RBAC path for the API server to access the kubelet API: adding a specific ClusterRole (system:kubelet-api-admin) and a ClusterRoleBinding (kubeadm:apiserver-kubelet-client) bound to the API server's kubelet client certificate. This replaces a broader/unrestricted RBAC setup, tightening least-privilege access for the apiserver-to-kubelet communication. The patch also includes tests and constants to ensure the binding exists and is correctly named. Additionally, there is a small code cleanup that removes an Organization field from the kubelet client certificate config, aligning certificate attributes with the new RBAC controls and avoiding potential over-granting via certificate attributes.
Commit: 165a309d Affected: <= v1.36.0-beta.0 (prior to this change); targeted at 1.36.x and earlier releases 2026-05-26 18:10
kubernetes/kubernetes Input validation / Validation lifecycle enforcement MEDIUM
This commit alters the declarative validation enforcement model from per-tag enforcement to lifecycle-based enforcement. It removes the DeclarativeEnforcement flag and relies on lifecycle prefixes (alpha/beta/standard) together with the DeclarativeValidationBeta gate to determine whether declarative validation is enforced. The changes aim to reduce the possibility of bypassing declarative validation by aligning enforcement with resource lifecycle, tightening input validation consistency across API server components. Overall, this appears to be a security-focused improvement to input validation and validation lifecycle handling, rather than a simple cleanup or dependency bump.
Commit: 7c66c6aa Affected: v1.36.0-beta.0 (tracked version) and earlier in the v1.36.x line 2026-05-26 18:04
kubernetes/kubernetes Authorization bypass / Access control HIGH
The commit fixes an authorization graph update path in the Kubernetes node authorizer graph populator. Previously, when a Pod’s NodeName and UID were preserved, there were rare cases where ExtendedResourceClaimStatus (the synthesized resource claims for extended resources) could change after a pod was bound, but the fast-path in updatePod would incorrectly skip rebuilding the authorization graph if PodStatusResourceClaimStatuses remained unchanged. This could leave the authorization graph stale, causing incorrect access decisions for nodes attempting to read synthesized ResourceClaims. The patch adds a check to also compare the PodExtendedResourceClaimStatus (ExtendedResourceClaimStatus) and updates tests to cover the scenario where ExtendedResourceClaimStatus changes to reflect newly synthesized claims. As such, it prevents an authorization edge from being omitted and ensures proper access control for synthesized resource claims.
Commit: f01363b4 Affected: v1.36.0-beta.0 (and earlier 1.36.x releases prior to this patch) 2026-05-26 17:52
kubernetes/kubernetes Resource exhaustion (ephemeral-storage) / DoS HIGH
The commit fixes a real vulnerability where ephemeral-storage eviction logic did not account for restartable init containers (sidecars) in InitContainers. Previously, only certain per-container thresholds were checked, allowing a restartable init container to exceed its ephemeral-storage limit without triggering eviction, risking resource exhaustion/DoS on the node. The patch enumerates restartable init containers and adds their ephemeral-storage limits to the eviction threshold map so the existing per-container comparison can enforce the limit on these containers as well.
Commit: d7f380f7 Affected: Kubernetes v1.36.0-beta.0 and earlier (1.36 line) prior to this fix 2026-05-26 17:49
grafana/grafana Authorization bypass / Information disclosure via initial watch backfill in Unified Storage HIGH
The commit fixes an authorization bypass in the initial-events backfill path for the Watch RPC in Unified Storage. Prior to the fix, when a client subscribed to Watch with SendInitialEvents=true, the backfill emitted every item from the backend without consulting the per-item authorization checker. This allowed an attacker with restricted permissions to enumerate or infer the existence of items they should not have access to, via the initial events stream. The patch applies the same ItemChecker used for streamed events to the initial backfill during ListIterator processing, ensuring backfilled items respect per-item permissions. The change also includes tests (e.g., TestWatchInitialEventsRespectsItemChecker) to validate that backfill respects the item checker.
Commit: 51a459e8 Affected: Grafana 12.4.0 and earlier (Unified Storage backfill path) 2026-05-26 15:55
grafana/grafana Denial of Service (resource exhaustion) / Rate limiting abuse MEDIUM
The commit introduces a per-tenant VectorSearch query embedding cache (FIFO eviction) and a per-tenant rate limiter (tumbling-window) to mitigate resource-exhaustion and DoS scenarios arising from abusive or heavy usage of VectorSearch. It also adds fail-closed behavior if the rate limiter is unavailable, and exposes new configuration knobs to enable/disable the features and tune caps (cache max per tenant, rate limit per tenant, and rate limit window). In short, this is a genuine security-related hardening aimed at preventing DoS via abuse of the VectorSearch backend.
Commit: 98d5c8f4 Affected: Versions prior to 12.4.0 (e.g., 12.3.x and earlier) 2026-05-26 09:52
torvalds/linux Memory safety (null pointer dereference) and improper cleanup on allocation failure in tracing code MEDIUM
Two memory-safety issues were addressed in this commit: 1) hist_field_name(): Previously, when the formatted histogram field name overflowed the local buffer, the function returned NULL, which could be passed to strcat and cause a crash or memory corruption. The fix changes the behavior to return a zero-length string (empty string) in truncation cases, avoiding NULL pointers being passed to string-ops and reducing crash risk. 2) tracing_map_elt_free on allocation failure: When elt_alloc() fails, the code previously attempted to call map->ops->elt_free(), which may not be safe since the allocation failed and the object isn’t fully initialized. The patch ensures elt_free is only invoked on successfully allocated elements by introducing a private __tracing_map_elt_free() helper and calling it in the failure path, while the public tracing_map_elt_free() wrapper only calls elt_free for fully initialized elements. Overall, these changes improve memory-safety in the tracing subsystem by avoiding NULL-dereference scenarios and unsafe cleanup paths during allocation failures.
Commit: 23884007 Affected: Linux kernel v7.0-rc6 and earlier in the tracing subsystem; fixed in trace-v7.1-rc4. 2026-05-25 23:49
torvalds/linux Use-after-free HIGH
This commit bundle hardens several DRM memory-management and buffer-export paths, addressing use-after-free (UAF) and memory-safety issues observed in previous code paths. Key changes include: 1) AMDXDNA: prevent exporting private buffers via DMA-Buf by adding a private_buffer flag and returning -EOPNOTSUPP if an export is attempted on such buffers, reducing the risk of leaking internal buffers or lifetimes. 2) DRM GEM LRU/locking refactor: replace per-LRU locks with a device-wide gem_lru_mutex to guard LRU manipulations, reducing races that could lead to use-after-free or premature object reuse. 3) V3D: fix UAF in error-code paths and ensure proper GEM object reference handling on error. 4) Misc driver hardening and cleanup (bridge reset GPIO handling, IRQ cleanup paths, etc.). Overall, the fixes target use-after-free and memory-safety vulnerabilities in the DRM/GEM stack rather than a simple dependency bump or test-only change.
Commit: 71d9e156 Affected: Pre-7.0-rc6 (before this commit); fixed in v7.0-rc6 and newer 2026-05-25 23:46
torvalds/linux TOCTOU race leading to MAC address spoofing / unauthorized VF MAC configuration HIGH
The commit fixes a real TOCTOU race and MAC address validation flaw in the ENETC PF/ VF mailbox path. Previously, enetc_msg_pf_set_vf_primary_mac_addr() read the VF-provided MAC directly from the DMA buffer, validated it, and then re-read the same DMA buffer to program hardware. Between validation and programming, a malicious VF could overwrite the DMA buffer, bypassing validation and causing the PF to program an arbitrary MAC (multicast, broadcast, or all-zero), enabling MAC spoofing. The patch introduces two mitigations: - It snapshots the message content into a private kernel buffer (via kzalloc and memcpy) before processing, eliminating the TOCTOU window. - It validates the MAC address with is_valid_ether_addr() on the snapshot and rejects invalid addresses, preventing spoofing vectors like all-zero or multicast MACs. These changes apply to the ENETC PF MAC-set path and address the specific TOCTOU race reported by Sashiko. The fix thus hardens VF-to-PF MAC configuration against spoofing and race conditions.
Commit: c666fa63 Affected: v7.0-rc6 and earlier (enetc PF driver; prior to this patch) 2026-05-25 23:44
torvalds/linux Information disclosure (kernel memory leakage via GPIO short-read in ADM1266 GPIO accessors) HIGH
The commit fixes an information disclosure vulnerability in ADM1266 GPIO accessors under hwmon/pmbus. Previously adm1266_gpio_get() and adm1266_gpio_get_multiple() performed a 2-byte block read and combined read_buf[0] and read_buf[1] without ensuring two bytes were actually returned. If the I2C device returned 0 or 1 bytes (short block-read), read_buf[1] could be uninitialized stack memory, and the resulting pins_status/status value would leak kernel stack bits to userspace via gpiolib (sysfs or ioctls). The patch adds a check for ret < 2 and returns -EIO, preventing use of potentially garbage data and eliminating the leak.
Commit: a7232f68 Affected: v7.0-rc6 and earlier (up to this patch) 2026-05-25 23:28
torvalds/linux Memory safety vulnerability: NULL pointer dereference in ARM FF-A (firmware) bus/driver binding MEDIUM
The commit fixes a potential NULL pointer dereference in the ARM FF-A firmware (arm_ffa) bus/driver binding path. Previously, ffa_device_match would dereference the id_table pointer retrieved from the ffa_driver, even if that id_table was NULL. The patch adds a guard to return early when id_table is NULL and also requires a non-NULL id_table when registering a driver. This hardens against memory-safety issues (NULL pointer dereference) in the FF-A bus/driver binding code path, which could crash the kernel under certain firmware/client conditions.
Commit: dd3802fc Affected: Up to v7.0-rc6 (pre-patch); fixed in commit dd3802fc4f6b52201a93330d44981a66bd6ef883 2026-05-25 23:23
torvalds/linux Use-after-free HIGH
The commit targets a use-after-free in the TLS over sockmap verdict receive path. Specifically, when a receiver socket is inserted into a sockmap with a BPF_SK_SKB_VERDICT program and TLS RX is configured after insertion, sk_psock_verdict_data_ready() could call tcp_read_skb() and drain the receive queue without advancing copied_seq. This could leave tls_decrypt_sg() walking a dangling frag_list, resulting in a use-after-free. The regression test added in this commit exercises the full vulnerable sequence and asserts that after the fix, data is decrypted correctly. The fix introduces a guard (tls_sw_has_ctx_rx) to sk_psock_verdict_data_ready(), mirroring the existing behavior for the non-verdict path, so that when a TLS RX context is present, the code defers to the saved_data_ready path (sock_def_readable) instead of draining the queue directly. This prevents the UAF and ensures correct TLS data processing.
Commit: 33644bd3 Affected: 7.0-rc1 through 7.0-rc5 (pre-fix); fixed in 7.0-rc6 2026-05-25 23:07
torvalds/linux Use-After-Free (UAF) due to race between readers and writers in net_shaper data path HIGH
The commit fixes a race in the net_shaper data path where a reader could observe a valid entry and then the entry could be replaced/freed by a writer, leading to a use-after-free (UAF). The previous implementation relied on XA marks (VALID) to gate access, but marks are not stored atomically with the entry, allowing a reader to continue using a pointer that has been replaced and potentially freed. The patch introduces an explicit valid field with acquire/release semantics, checks validity before dereferencing, and frees entries via kfree_rcu, thereby eliminating the race window and preventing UAF on readers.
Commit: b8d75193 Affected: v7.0-rc6 and earlier (before this patch) 2026-05-25 23:04
grafana/grafana Insecure Direct Object Reference (IDOR) / payload-URL UID mismatch HIGH
The commit fixes a vulnerability where PUT /api/datasources/uid/:uid used the payload UID to identify the target datasource, enabling an attacker to update a different datasource by mismatching the UID in the URL and the payload. Before the fix, the handler constructed the target datasource from the payload UID (cmd.UID), allowing unauthorized cross-resource updates if the payload UID did not match the URL UID. The patch adds a validation that returns 400 when the payload UID (cmd.UID) is non-empty and does not equal the URL UID, and then uses the URL UID to fetch the datasource for the update. This enforces consistency between the URL and payload UIDs and prevents IDOR/parameter-tampering in this endpoint.
Commit: e99df481 Affected: < 12.4.0 2026-05-25 16:34
grafana/grafana Input validation / metadata.name derivation consistency for global variables MEDIUM
The commit adds enforcement that global variable metadata.name must be derived from the variable's spec name and the folder scope, and rejects mismatches on create/update. Specifically, it derives a canonical name (status--<folderUID> when a folder is present) and validates any provided metadata.name against that derived value. This blocks a potential input validation vulnerability where an attacker could supply a mismatched metadata.name (or omit it to rely on server-side derivation) and cause inconsistent ownership/namespace mapping or misconfiguration. The change also tightens update behavior to prevent changing the effective name or folder scope of an existing variable. Overall, this is a real security-oriented validation fix, not just a dependency bump or test-only change.
Commit: cc7ea527 Affected: <=12.4.0 2026-05-22 17:25
victoriametrics/victoriametrics Integer/Time parsing overflow (input validation for time parsing) MEDIUM
This commit adds explicit overflow checks in time parsing to prevent int64 overflow when computing nanoseconds for relative times. Specifically, ParseTimeAt now computes nsec := currentTimestamp + int64(d) and if nsec < 0 it returns an error indicating the value is outside the allowed time range, instead of allowing wraparound. Additionally, relative duration parsing in ParseDuration is bounded by min/max valid values and returns an error when the parsed duration is outside those limits. These changes tighten input validation for time parsing, reducing the risk of negative or out-of-range timestamps being produced from crafted inputs, which could otherwise lead to incorrect time calculations, crashes, or logic errors in time-dependent components.
Commit: 0c9a011e Affected: <= 1.139.0 (prior to this fix) 2026-05-22 12:16
victoriametrics/victoriametrics Information disclosure / Access control HIGH
The commit adds enforcement to ensure vmselect/victoriametrics does not serve queries outside configured retention boundaries when the -denyQueriesOutsideRetention flag is enabled. Specifically, it introduces a storage-level checkTimeRange that validates a query's time range against both -retentionPeriod and -futureRetention, and wires this check into the query paths used by vmselect (e.g., SearchTSIDs and related metric/name searches). In addition, the HTTP error response for violations is changed from 503 to 400. Previously, some code paths did not uniformly enforce the future retention window and relied on limited checks, which could allow querying data outside retention boundaries. The patch thus closes that gap, reducing information-disclosure / access-control risks by preventing queries whose time ranges lie outside the allowed retention windows.
Commit: c41e967e Affected: 1.139.0 and earlier 2026-05-22 12:16
flutter/flutter Memory safety (buffer underflow/overflow) in APNG fdAT chunk parsing HIGH
The commit fixes a memory-safety vulnerability in the APNG (animated PNG) decoder related to parsing fdAT chunks. Previously, the demux/decoder could underflow/overflow when handling malformed fdAT data because it unconditionally subtracted a 4-byte sequence number from the fdAT chunk data length, without verifying that the chunk contained at least 4 bytes. The patch adds explicit bounds checks for fdAT (kFrameDataSequenceNumberSize = 4) and for fcTL, and ensures the CRC/data handling logic operates only on valid ranges. As a result, malformed APNG data that would have caused a buffer overflow or memory corruption is now rejected gracefully (returning null or skipping invalid chunks) instead of corrupting memory. This addresses a potential memory-safety vulnerability in the APNG decoder.
Commit: 9cf97ce9 Affected: Flutter engine APNG decoding paths prior to this patch, specifically v1.16.3 and earlier 2026-05-21 20:55
grafana/grafana Privilege escalation / Access control bypass MEDIUM
The patch adds explicit validations in the folder update/move workflow to prevent interacting with the special K6 folder. Specifically, it blocks updating (moving) the K6 folder itself and prevents moving any other folder into the K6 folder. Prior to this patch, a user with folder-move permissions could relocate the K6 folder or place other folders under K6, which could bypass intended boundary protections around a privileged/legacy folder and potentially enable privilege escalation or information exposure. The fix enforces a dedicated protection boundary around the K6 folder at the API validation layer and updates tests to cover these scenarios, indicating a security-focused constraint rather than a generic refactor.
Commit: 05686bc9 Affected: Grafana 12.4.0 and earlier 2026-05-21 17:46
grafana/grafana Information Disclosure / Access Control MEDIUM
Root cause: The datasource proxy previously accepted and threaded the global Grafana settings (*setting.Cfg) through the data source proxy path into the token provider. This could allow the data source proxy to touch and potentially expose sensitive Azure configuration (e.g., client secrets, Azure-specific settings) when building an access token, especially when DataProxyLogging was enabled or an Azure-authenticated route was used. The commit introduces a focused DataSourceProxySettings struct and lazy-loading of Azure settings via a resolver callback, replacing direct usage of *setting.Cfg with this narrower structure. This hardening reduces exposure by restricting what the proxy can see and by deferring access to Azure config until actually needed. It also reduces the surface area through which sensitive config could be disclosed or misused in proxy/auth flows.
Commit: 0fedd316 Affected: <= 12.4.0 2026-05-21 09:43
vercel/next.js Path traversal / Improper subpath resolution in exports/imports handling HIGH
The commit adds a targeted fix to Turbopack's subpath resolution for exports and imports. It introduces a distinction between Export and Import resolution paths (ExportImport enum) and enforces that exports subpath resolutions are treated as relative exports (prefixing with "./"), while imports may map to external packages. This prevents subpath entries in the exports map from resolving to external packages or unintended paths, addressing a class of mis-resolution vulnerabilities where an attacker could influence which module gets loaded via a subpath. The change aligns with Node.js exports/imports semantics where exports must be relative (starting with ./) and imports may reference external packages. Overall, this is a genuine security fix for improper package resolution and path traversal risk within turbopack.
Commit: 40d7843d Affected: < 16.2.2 (pre-fix turbopack subpath resolution for exports/imports) 2026-05-20 08:40
victoriametrics/victoriametrics Information disclosure (sensitive header values leakage through logs/outputs) HIGH
The commit adds RegisterSecretFlag for several *headers flags in vmalert components (datasource.headers, notifier.headers, remoteRead.headers, remoteWrite.headers). This hardening prevents sensitive header values from being exposed in logs or outputs when flags are dumped or printed for debugging/config purposes. Prior to this change, header flag values could be disclosed if the application logged or displayed flag values during startup or error handling, representing an information-disclosure vulnerability.
Commit: 548e6ef6 Affected: <= 1.139.0 2026-05-19 17:40
vercel/next.js Information disclosure HIGH
The commit fixes a cross-parameter information disclosure in the segment cache that occurs when using prefetch={true} with cachedNavigations and pages with param fallback. Previously, a Full prefetch could cause the cache to be re-keyed using a potentially incomplete set of varyParams, potentially combining param-specific content into a single cache entry keyed by a vary path with Fallbacks. A subsequent lookup for a different param value could read content from this mixed cache entry, leaking information across param values. The fix pins the cache entry to its concrete vary path for Full fetches (i.e., skips re-keying when fetchStrategy === FetchStrategy.Full), aligning Full prefetch behavior with the non-Full (cachedNavigations-disabled) path where the server does not provide varyParams. This mitigates cross-param information disclosure. The change also adjusts test coverage to validate non-leaking behavior.
Commit: 085311e3 Affected: Next.js 16.2.x prior to this patch (i.e., 16.2.2 and earlier) 2026-05-19 17:04
grafana/grafana Open Redirect MEDIUM
The commit adjusts error handling and redirect logic in Grafana's Kubernetes short URL goto flow to minimize open redirect risk. It differentiates 404 errors from the API group and other 404 scenarios to avoid permanent redirects in misrouted error cases, prevents caching of misdirected redirects, and generally ensures error paths redirect back to the application URL rather than issuing redirects to user-supplied or external targets. This reduces exposure to open redirects and unintended information disclosure via the short URL service.
Commit: fb462e63 Affected: 12.4.0 2026-05-19 15:52
torvalds/linux Memory safety / mmap bounds overflow in QAIC DRM/GEM mmap path (qaic_gem_object_mmap) MEDIUM
The commit adds explicit bounds/overflow checks in the QAIC mmap path (drivers/accel/qaic/qaic_data.c) to prevent out-of-bounds remapping when mapping a QAIC buffer into user space. Specifically, qaic_gem_object_mmap now computes remap_start, remap_end, and length with overflow-safe helpers (check_add_overflow, check_sub_overflow) and clamps the remapped length to fit within the user VMA. If the computed remap would overflow the VMA, it returns an error (-EINVAL). This mitigates a memory-safety vulnerability where an mmap remap could run beyond the user’s VMA, potentially corrupting kernel or DMA memory or leaking information. The triage notes list other changes (reservation handling, cleanup, etc.) as stability/correctness fixes; the security-relevant portion is the QAIC mmap bounds/overflow fix.
Commit: 396db75a Affected: <= v7.0-rc6 2026-05-16 05:19
torvalds/linux Memory safety: null pointer dereference and out-of-bounds access HIGH
The commit aggregates Ceph client fixes that address memory-safety issues in kernel Ceph client code, including potential null pointer dereferences and out-of-bounds accesses. Specific fixes cover: null-checks and safer decoding paths in decode_choose_args (crush map), safer osdmap_decode paths, a guard in __ceph_x_decrypt to validate plaintext length, handling of NULL i_snap_realm in quota checks, adjustments to xattr preallocation logic to avoid blob size miscalculations, and general memory-management hardening in the crush/xattr/osdmap paths. Collectively, these changes reduce crash conditions and potential exploitation from malformed Ceph map/xattr data or edge cases in quota handling.
Commit: fcbf68d3 Affected: v7.0-rc6 2026-05-16 05:16
grafana/grafana Information Disclosure MEDIUM
The commit fixes a potential information disclosure by wrapping internal errors from batch authorization checks in an internal server error type. Previously, when a batch authz check failed, the server could propagate the underlying internal error details back to clients (e.g., via the error message 'batch authz check failed: <inner-error>'). The change wraps the inner error with an internal error, reducing leakage of sensitive internals and standardizing error handling for authorization failures.
Commit: 3cb5eade Affected: 12.4.0 and earlier 2026-05-15 16:04
grafana/grafana TOCTOU (Race condition) in authorization/mutation flow HIGH
The commit is marked as addressing a TOCTOU (time-of-check-to-time-of-use) race condition in the dashboard/global template variables service, including guard changes for folder handling, access checks, and limiting mutations to Admins/Editors. The diffs show additions aimed at guarding access (guard folder handler, check for accessClient) and changes to how global variables are handled across v2beta1, plus tests around folder access. The presence of a specific TOCTOU fix in the changelog and the accompanying code changes (guarded access paths, permission checks around mutations, and tests) indicate this is a genuine vulnerability fix addressing a race condition rather than a mere dependency bump or non-security code cleanup.
Commit: eda920b8 Affected: <=12.4.0 (Grafana 12.4.x and earlier on the affected line) 2026-05-15 15:04
torvalds/linux Information disclosure via ptrace (memory/dumpability metadata leakage) HIGH
The patch addresses an information-disclosure risk in ptrace access for tasks that have no associated memory management (mm == NULL), i.e., kernel threads. Previously, ptrace_may_access could grant access to such tasks more permissively, potentially leaking details about kernel threads and their memory-dumpability state to unprivileged or insufficiently privileged callers. The fix adds a new per-task flag (user_dumpable) to cache the last known dumpability and introduces task_still_dumpable() to decide if a task is still dumpable for ptrace checks. For tasks without an MM, access now requires either CAP_SYS_PTRACE (via the caller’s privileges) or the task having been dumpable in the past, preventing leakage of kernel-thread details in common scenarios. This aligns with the Qualys advisory and hardens ptrace-related information disclosure.
Commit: 31e62c2e Affected: All versions prior to this patch in the 7.x series, i.e., before 7.0-rc6 (pre-patch). 2026-05-14 20:37
torvalds/linux Memory safety / potential out-of-bounds access in TLS SK_MSG scatterlist wrapping during sg_chain HIGH
The commit fixes an off-by-one in how the sg_chain length is computed when a sk_msg scatterlist ring wraps (end < start) in TLS SK_MSG handling. Previously, the code used MAX_SKB_FRAGS - start + 1 as the chain length and started chaining from data[start], which could place the chain pointer at data[MAX_SKB_FRAGS] − effectively an off-by-one that risks reading/writing beyond the intended sg array during the wrap scenario. The patch converts to ARRAY_SIZE(msg_pl->sg.data) for the chain length and removes the start-offset, ensuring the entire sg.data array is considered when wrapping. This addresses a subtle memory-safety vulnerability in the wrap path for TLS SK_MSG, preventing potential out-of-bounds access and related memory corruption or disclosure via the chained scatterlist structure.
Commit: 285943c6 Affected: <= v7.0-rc6 (all versions prior to the fix in commit 285943c6e7ca309bbea84b253745154241d9788a). 2026-05-14 20:34
grafana/grafana Authorization bypass / Access control HIGH
The commit fixes an authorization check bug in K8s Dashboards folder permission verification. Previously the code checked the folder access subresource and interpreted CanEdit (mapping to folders:write) as the gate for creating dashboards. This excluded users who only had dashboards:create permission on the folder but lacked folders:write, effectively denying legitimate dashboard creation for those RBAC configurations. The patch replaces the folder subresource check with a direct dashboards:create permission check scoped to the target folder via the accessClient.Check mechanism. This aligns permission semantics across enterprise custom RBAC and OSS resource permission levels and ensures that dashboard creation is allowed when dashboards:create is granted, even if folders:write is not.
Commit: 6d05d927 Affected: < 12.4.0 2026-05-14 19:16
grafana/grafana Input validation / Authentication context integrity MEDIUM
The commit implements a security-hardening: it validates that the Authenticate request contains a non-empty Namespace and propagates that namespace into the request context. If the namespace is missing or empty, the function now returns an AUTHENTICATE_CODE_FAILED with an error (errExpectedNamespace) and does not dispatch to downstream authn clients. This prevents potential mis-scoping of authentication/authorization flows that could occur if the namespace context were absent or defaulted. Prior to this fix, an Authenticate request without a valid namespace could be processed further, potentially leading to ambiguous or insecure authentication context.
Commit: 90d83066 Affected: < 12.4.0 (prior to Grafana 12.4.0) 2026-05-14 16:16
redis/redis Use-after-Free HIGH
This commit appears to fix a genuine use-after-free vulnerability concern. The race occurs when evicting a blocked client during an unblock and re-executing a pending command. Previously, the engine could access a client after it had been freed during processCommandAndResetClient. The fix guards against this by checking the return value of processCommandAndResetClient; if the client was freed, it exits the execution unit and returns early, preventing use-after-free in subsequent logic. The accompanying test case exercises eviction of a blocked client to ensure no use-after-free occurs during unblock.
Commit: 5c355b68 Affected: <= 8.6.2 (pre-fix); vulnerable prior to this commit; patched in this change 2026-05-14 15:56
redis/redis Use-After-Free (memory safety) in scripting engine during FULLSYNC HIGH
Summary: - The commit fixes a use-after-free vulnerability in Redis replication when a full synchronization (FULLSYNC) happens while a timed-out script is still running on a replica. The scripting engine could be freed during FULLSYNC (due to emptyData/scriptingReset) while a script was still executing, leading to a use-after-free and potential memory corruption or crash. - The fix adds a guard at the start of readSyncBulkPayload to delay processing of the FULLSYNC payload if a long-running command (script) is yielding, ensuring the scripting engine is not freed while a script is still using it. - This is a real vulnerability fix (CVE-2026-23631). The change is not a mere dependency bump; it addresses a race between replication and the scripting engine. The repository shows the patch in replication.c and accompanying integration tests to validate the scenario. Impact: - Affected versions: Redis 8.6.x prior to 8.6.2 (i.e., versions that include the vulnerable behavior but not this fix). - Vulnerability type: Use-After-Free in the scripting engine during FULLSYNC on replicas. - Severity: HIGH (memory-safety issue with potential crash or memory corruption under exploitation conditions). - Affected scenario: A replica running a long-running or timed-out script experiences FULLSYNC, during which the scripting engine could be freed while still in use by the script. Root cause analysis: - FULLSYNC processing could free the functions engine (scripting engine) as part of the sync flow. If a long-running script was still executing, this could result in a use-after-free. - The fix ensures that readSyncBulkPayload returns early when inside a yielding long command, effectively delaying FULLSYNC processing until the script completes. Verification rationale: - The commit includes a guarded check in readSyncBulkPayload to skip processing when isInsideYieldingLongCommand() is true, preventing the premature freeing of the scripting engine during FULLSYNC. - The accompanying integration test extends replication scenarios to explicitly cover the case where a long-running script is present during fullsync, verifying that the replica remains responsive post-fullsync once the script ends. - The CVE identifier provided in the commit (CVE-2026-23631) aligns with a memory-safety use-after-free scenario.
Commit: 837ca7f8 Affected: < 8.6.2 2026-05-14 15:55
vercel/next.js Denial of Service (DoS) via server action forwarding loop in middleware-forwarded requests HIGH
This commit implements a real security fix for a Denial of Service (DoS) scenario caused by an infinite forward loop in server action handling when middleware rewrites a POST to a route that doesn’t bundle the action. The changes add: (1) a guard in action forwarding that prevents forwarding a request that already carried x-action-forwarded, avoiding repeated forwards across workers; (2) logic to propagate a not-found header and 404 response so the client gets a proper UnrecognizedActionError instead of a generic error. Together these prevent resource exhaustion (memory/time) from forwarding loops.
Commit: 20892dd4 Affected: Next.js 16.x prior to the fix, specifically 16.2.2 and earlier 2026-05-14 15:28
redis/redis Double-free / Memory safety HIGH
A double-free memory safety vulnerability exists during RDB/RESTORE loading of a stream when a consumer's Pending Entries List (PEL) contains a duplicate entry for the same pending ID. In the flawed path, if inserting into the consumer's PEL fails (due to a duplicate), the code would call streamFreeNACK(s, nack) even though the NACK is already owned by the group's PEL (cgroup->pel). This could lead to freeing the same object twice during stream/group teardown, causing a crash or memory corruption. The fix modifies the error path to stop freeing the NACK in this case and rely on decrRefCount(o) for cleanup, consistent with ownership where the NACK belongs to cgroup->pel. This eliminates the double-free scenario and resolves the vulnerability in affected versions.
Commit: fab099cd Affected: 8.6.x prior to this fix; specifically 8.6.2 and earlier in the 8.6 line. 2026-05-14 07:28
flutter/flutter Spoofing / Shader registry collision leading to potential bypass of engine internals HIGH
This commit addresses a security vulnerability in Impeller's shader registry where user-supplied shaders (Flutter GPU user shaders, FragmentProgram/RuntimeEffect shaders, and Impeller's own shaders) were registered into a shared ShaderLibrary keyed only by (entrypoint name, stage). If a user shader exposed an entrypoint with the same name as an engine-internal entrypoint, a collision could occur, enabling eviction or shadowing of engine-internal pipelines via the hot-reload/dirty-stage path. The fix namespaces user shader entrypoints with a scope-prefixed name (MakeUserScopedName) and routes all RegisterFunction / UnregisterFunction / GetFunction calls through this scoped key. It also caches the scoped name per RuntimeEffectContents and ensures engine-internal entrypoints (which are compile-time constants) remain unscoped. Tests are added for MakeUserScopedName and GetLibraryId to validate behavior. In short, this is a hardening against spoofing/collisions in the shader registry that could otherwise allow a user shader to evict or shadow engine internals.
Commit: 3e4e8b37 Affected: < v1.16.3 2026-05-13 21:46
grafana/grafana Privilege escalation via incorrect identity scope resolution in IAM write path HIGH
The commit fixes the resolution of identity scopes for id-scoped mappers (e.g., users, teams, service accounts) by introducing a UIDScope(name) method on the Mapper and using UIDScope(name) when translating scopes for write operations. Previously, resolveScope could pass an id-scoped form (serviceaccounts:id:<uid>) into ResolveUIDScopeForWrite, which is fragile and may mis-resolve the identity scope, potentially causing incorrect permission assignments. The patch ensures that id-scoped resources are consistently translated to the UID-based scope (serviceaccounts:uid:<uid>) for the identity store lookup, preventing mis-granting or mis-application of permissions. Additional tests for service accounts were added to validate the authorization behavior.
Commit: a9b87ae8 Affected: < 12.4.0 (pre-fix versions that rely on id-scoped mappers; the fix is included in 12.4.0) 2026-05-13 19:40
grafana/grafana Information disclosure via verbose error handling / reduced error detail exposure MEDIUM
This commit implements a security-oriented change to error handling for Kubernetes NotFound errors when dealing with folder resources referenced by dashboards. Specifically, when the Kubernetes apiserver returns NotFound for the folders resource, the code now maps that condition to the legacy /api/dashboards/db behavior by returning a 400 Bad Request with a generic folder-not-found message, instead of propagating internal NotFound details. This reduces information disclosure about internal Kubernetes/folder structures to API clients. The change is complemented by tests covering folder-not-found mappings and unrelated-NotFound cases, indicating intentional handling to avoid leaking internal error information while preserving expected behavior for non-folder NotFound.
Commit: 91e2732c Affected: 12.4.0 2026-05-13 15:40
grafana/grafana Access Control / Authorization HIGH
The commit adds strict validation to admission handling of ResourcePermission objects. Previously the code only checked that the group/resource was registered and enabled, and for duplicates, but did not validate that the requested permission Kind and Verb were actually allowed for the target resource. The fix introduces: - Retrieval and verification of a mapper for the target group/resource and guards against missing mapper after the IsEnabled check. - Per-permission validation that the Kind is allowed by the resource's mapper (AllowsKind) and that the Verb is valid (ActionSet returns no error). - Early rejection with clear BadRequest errors when Kind or Verb are not permitted or when a mapper is missing. This hardens admission validation against misconfigurations that could otherwise grant or imply permissions that are not enforceable by the resource’s mapper, reducing the risk of authorization bypass or privilege escalation via crafted ResourcePermission objects. Tests were added to cover these validation rules. In short: this is a real security fix for access control validation in the IAM/resourcepermission admission flow.
Commit: 84dad311 Affected: < 12.4.0 (i.e., Grafana 12.x releases prior to 12.4.0) 2026-05-13 13:41
grafana/grafana Deserialization / Information disclosure (Bleve index format handling) MEDIUM
This commit adds a compatibility gate for Bleve index formats when loading remote snapshots. It introduces a maxSupportedIndexFormat value (derived from the Bleve scorch format versions the process can read) and a check to drop any remote snapshot whose IndexFormat is unknown or newer than what is supported. This hardening prevents potential unsafe/deserialization-related handling of untrusted snapshots by ensuring only supported index formats are processed. The change is focused on input validation and deserialization safety for remote snapshots rather than adding a new feature or performance improvement. It also surfaces a warning if the format cannot be detected.
Commit: d7d174f1 Affected: Grafana 12.4.0 and earlier versions that load remote Bleve index snapshots (Bleve index formats) 2026-05-13 13:40
grafana/grafana Authorization bypass / Access control HIGH
The commit implements a fix for an authorization boundary issue related to ServiceAccount resource permissions by (a) wiring a RestConfigProvider into the SA permissions flow and (b) preserving the user-visible UID across translation for authorization checks while using an internal numeric ID for RBAC decisions. Specifically, it translates the resource UID to an internal ID for permission checks, but preserves the original UID in the request (via :resourceUID) for the Kubernetes adapter, preventing UID↔ID mismatches that could lead to an authorization bypass. The change also injects the RestConfigProvider into the permissions wiring and propagates UID-preserving behavior through the API adapters and tests. In short: before this patch, RBAC checks could be performed against a possibly incorrect/internal ID without consistently preserving the UID context for the Kubernetes adapter, creating a potential bypass vector. The patch aligns UID handling with internal IDs to strengthen access control for ServiceAccount resources.
Commit: 62e5413a Affected: 12.4.0 and earlier (pre-fix in commit 62e5413a33771fad1a0cd5ffd4f945123323f75c) 2026-05-13 12:40
grafana/grafana DoS / Memory exhaustion via unbounded HTTP header length in data proxy path HIGH
The commit fixes a DoS/memory-safety risk in Grafana's Data Source plugin proxy by capping the forwarded client User-Agent when forward_user_agent is enabled. Prior to this change, an attacker could supply a very long or unbounded User-Agent header, which would be appended to the proxy UA and forwarded downstream, potentially causing resource exhaustion or memory issues in the data proxy path. The patch introduces a 255-byte cap for the original client User-Agent and truncates any excess before forwarding. Tests were added to verify the truncation behavior.
Commit: 83838c58 Affected: <=12.3.x (pre-12.4.0 releases where DataProxyForwardUserAgent could forward unbounded client UA) 2026-05-13 09:34
grafana/grafana Information Disclosure via Public Dashboards MEDIUM
The patch adds guards and behavior changes around public dashboards to prevent unintended data fetches and potential information disclosure. Specifically: - publicDashboardQueryHandler now returns an empty result and does not trigger a backend fetch when panelId is undefined or NaN, guarding against broken or malicious requests to /api/public/dashboards/{token}/panels/{panelId}/query. - In the v2 serialization path, public dashboard mode forces QueryVariable refresh to never, preventing automatic data fetches from variables when exposed publicly. These changes address edge cases where public dashboards could inadvertently query data and expose information, or where invalid panel identifiers could invoke unintended backend behavior. Overall, this is a vulnerability fix intended to prevent information disclosure via public dashboards by avoiding unnecessary/invalid queries and by freezing variable refresh in public mode.
Commit: 789756c3 Affected: < 12.4.0 2026-05-13 08:04
flutter/flutter Command Injection HIGH
Commit 583dec70ff3a56f9dc99d985a3aaf714bfd229f2 Harden dev tooling Bash scripts by quoting environment and URL variables used in redirections and condition checks. Prior to this fix, several scripts used unquoted variable expansions (e.g., log_file in dev/bots/codelabs_build_test.sh, STAGING_DIR in dev/bots/docs.sh, WRAPPER_TEMP_DIR and WRAPPER_SRC_URL in dev/tools/repackage_gradle_wrapper.sh). Unquoted expansions are vulnerable to word-splitting and, in certain contexts, command injection if an attacker can influence the variable values. The changes mitigate these risks by quoting variables and using safer path concatenation, reducing the risk of arbitrary command execution and potential log leakage in CI/developer tooling.
Commit: 583dec70 Affected: <= v1.16.3 2026-05-12 21:04
grafana/grafana Denial of Service (DoS) / Memory exhaustion HIGH
This commit fixes a DoS/Memory Exhaustion risk in Grafana's provisioning files API by introducing a configurable max_file_size limit and enforcing it at the repository boundary. Previously, large provisioning payloads could be read/parsed without a strict upper bound, potentially exhausting memory or CPU resources while handling file reads/writes. The change adds: (1) a default max_file_size (5 MiB) configurable via provisioning.max_file_size; (2) enforcement at the boundary for both reads and writes; (3) 413 (Request Entity Too Large) responses for oversized writes/reads; (4) tests validating under/over-limit behavior and unlimited (0 or negative) semantics. This significantly mitigates DoS risks from oversized provisioning payloads.
Commit: 7c62aaa7 Affected: < 12.4.0 2026-05-12 20:04
grafana/grafana Input validation / Credential handling (GitHub App GHES provisioning) MEDIUM
The commit adds support for GitHub Enterprise Server (GHES) connections and hardens the handling of GitHub App credentials used in provisioning connections. It introduces new validation to ensure a privateKey is provided, forbids a clientSecret, and enforces that appID is numeric. These changes reduce the risk of credential leakage or misconfiguration when configuring GitHub App-based provisioning against GHES, addressing a potential credential handling/input validation vulnerability. The patch also adds GHES-specific repository/connection types and wires them into the provisioning API. Overall, this is a real hardening/change to credential handling for GHES provisioning and a functional extension to support GitHub Enterprise alongside GitHub.com.
Commit: bd7dd427 Affected: <=12.4.0 (Grafana 12.x releases up to 12.4.0 prior to this patch) 2026-05-12 13:04
torvalds/linux Use-after-free / memory safety race in reuseport BPF handling (RCU-related) MEDIUM
Summary of the issue: - The patch fixes a memory-safety race in the handling of reuseport BPF programs (both classic BPF and eBPF for reuseport) under concurrent detach/usage. Previously, when detaching a reuseport program (via reuseport_attach_prog or reuseport_detach_prog) the code could free the program data structures too early, potentially while other threads were reading the program (in the reuseport select path). This could lead to use-after-free and memory-corruption scenarios, evidenced by a KASAN report showing vmalloc-out-of-bounds in reuseport_select_sock and related call paths. What the fix does: - Introduces an RCU-based defer for freeing reuseport BPF programs. Specifically, sk_reuseport_prog_free() now defers freeing for classic BPF programs by scheduling an RCU callback (sk_reuseport_prog_free_rcu) that ultimately calls bpf_release_orig_filter() and bpf_prog_free(). Non-classic (eBPF) reuseport programs are freed via bpf_prog_put() as before. - The deferral ensures that any in-flight readers of the reuseport code paths do not encounter freed memory, addressing the race between detaching a program and concurrent UDP lookups/packet delivery. Vulnerability type and impact: - Type: Use-after-free / memory safety issue in reuseport BPF handling under concurrent access (RCU-related). - Impact: Potential memory corruption or kernel crash under adversarial timing of reuseport program detach while traffic is being processed. This is a security-relevant bug due to kernel memory safety, which could be exploited to crash the system or leak/reuse freed memory under specific conditions. - Affected versions: prior to this commit (7.0-rc6 and earlier in the v7.0-rc6 track). Rationale for the assessment: - The commit explicitly defers freeing the cBPF/eBPF reuseport program until after an RCU grace period and adjusts the free path to avoid prematurely freeing memory accessed by readers in reuseport_select_sock. The repro described in the message (a thread sending UDP traffic while the program is detached) aligns with a classical UAF risk. The KASAN report cited in the commit notes the vmalloc-out-of-bounds access in reuseport_select_sock, consistent with a use-after-free related issue that the RCU-based fix addresses. The fix is a targeted memory-safety correction rather than a mere code cleanup or dependency bump. Is this a real vulnerability fix? Yes. - is_real_vulnerability: true - is_version_bump: false - vulnerability_type: Use-after-free / memory safety race in reuseport BPF handling (RCU-related)
Commit: 18fc650c Affected: 7.0-rc6 and earlier in the 7.0-rc6 track; fixed by commit 18fc650ccd7fe3376eca89203668cfb8268f60df 2026-05-11 03:07