🚨 CVE-2026-44253
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 3.9.0 until 4.14.5 and 5.0.0-beta2, the Wazuh cluster protocol in framework/wazuh/core/cluster/common.py allows an authenticated cluster node to exhaust memory on the master. The receive_str() method accepts an attacker-controlled total for InBuffer without a maximum, so a new_str command can request a multi-gigabyte bytearray and repeated requests accumulate in in_str. The divided-message path also retains flag_divided fragments under unique counters in div_msg_box without a count, aggregate-size, or expiration limit. Exploitation can disrupt agent connectivity and alert processing across the monitored environment. This issue is fixed in versions 4.14.5 and 5.0.0-beta2.
🎖@cveNotify
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 3.9.0 until 4.14.5 and 5.0.0-beta2, the Wazuh cluster protocol in framework/wazuh/core/cluster/common.py allows an authenticated cluster node to exhaust memory on the master. The receive_str() method accepts an attacker-controlled total for InBuffer without a maximum, so a new_str command can request a multi-gigabyte bytearray and repeated requests accumulate in in_str. The divided-message path also retains flag_divided fragments under unique counters in div_msg_box without a count, aggregate-size, or expiration limit. Exploitation can disrupt agent connectivity and alert processing across the monitored environment. This issue is fixed in versions 4.14.5 and 5.0.0-beta2.
🎖@cveNotify
GitHub
Fix possible DoS attack in cluster · wazuh/wazuh@d29c5c8
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads. - Fix possible DoS attack in cluster · wazuh/wazuh@d29c5c8
🚨 CVE-2026-44254
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 1.0.0 until 4.14.6 and 5.0.0-beta2, HandleSecureMessage() in src/remoted/secure.c passes a pointer inside its stack buffer to ReadSecMSG(), and src/os_crypto/shared/msgs.c decompresses up to OS_MAXSTR bytes at that offset. For an encrypted agent message on TCP port 1514 that expands to 65,536 bytes, os_zlib_uncompress() writes a terminating null byte beyond the end of the destination buffer. The resulting stack out-of-bounds write in the root-level remoted daemon can crash message processing and disrupt agent communications. This issue is fixed in versions 4.14.6 and 5.0.0-beta2.
🎖@cveNotify
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 1.0.0 until 4.14.6 and 5.0.0-beta2, HandleSecureMessage() in src/remoted/secure.c passes a pointer inside its stack buffer to ReadSecMSG(), and src/os_crypto/shared/msgs.c decompresses up to OS_MAXSTR bytes at that offset. For an encrypted agent message on TCP port 1514 that expands to 65,536 bytes, os_zlib_uncompress() writes a terminating null byte beyond the end of the destination buffer. The resulting stack out-of-bounds write in the root-level remoted daemon can crash message processing and disrupt agent communications. This issue is fixed in versions 4.14.6 and 5.0.0-beta2.
🎖@cveNotify
GitHub
fix(remoted): prevent buffer overflow in message decompression · wazuh/wazuh@9677248
- Use thread-local temporary buffer for decompression to avoid offset-related issues
- Added message length validation after decryption
Assisted-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Added message length validation after decryption
Assisted-By: Claude Sonnet 4.5 <noreply@anthropic.com>
🚨 CVE-2026-53654
Grav is a file-based Web platform. Prior to 3.8.5, the Login plugin twofa_cancel task accepts a client-controlled _redirect field without a nonce and allows an unauthenticated request to set an external http, https, or protocol-relative Location target. Controller::execute() applies the field when taskTwofa_cancel() sets no redirect, and Grav::getRedirectResponse() accepts the target through Uri::isExternal(), enabling phishing redirects from a trusted Grav host. This issue is fixed in version 3.8.5.
🎖@cveNotify
Grav is a file-based Web platform. Prior to 3.8.5, the Login plugin twofa_cancel task accepts a client-controlled _redirect field without a nonce and allows an unauthenticated request to set an external http, https, or protocol-relative Location target. Controller::execute() applies the field when taskTwofa_cancel() sets no redirect, and Grav::getRedirectResponse() accepts the target through Uri::isExternal(), enabling phishing redirects from a trusted Grav host. This issue is fixed in version 3.8.5.
🎖@cveNotify
GitHub
[security] Reject off-site _redirect targets (open redirect via twofa… · getgrav/grav-plugin-login@1535e51
…_cancel)
Controller::execute() now drops a client `_redirect` that points off-site
(Uri::isExternal), closing an open redirect across every login task. The
reported `twofa_cancel` returns without...
Controller::execute() now drops a client `_redirect` that points off-site
(Uri::isExternal), closing an open redirect across every login task. The
reported `twofa_cancel` returns without...
🚨 CVE-2026-61607
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.2, the Grav API plugin POST /api/v1/media pipeline in HandlesMediaUploads::processUploadedFile() validates an SVG filename extension but does not invoke Security::sanitizeSVG(). An attacker with api.media.write permission can store an SVG containing JavaScript, and the server returns the file as Content-Type: image/svg+xml so the script executes when a victim opens it, allowing session data theft and authenticated actions. This issue is fixed in version 1.0.2.
🎖@cveNotify
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.2, the Grav API plugin POST /api/v1/media pipeline in HandlesMediaUploads::processUploadedFile() validates an SVG filename extension but does not invoke Security::sanitizeSVG(). An attacker with api.media.write permission can store an SVG containing JavaScript, and the server returns the file as Content-Type: image/svg+xml so the script executes when a victim opens it, allowing session data theft and authenticated actions. This issue is fixed in version 1.0.2.
🎖@cveNotify
GitHub
Security: relocate JWT secret and harden API file uploads (v1.0.2) · getgrav/grav-plugin-api@d25eedb
- Move the JWT signing secret out of plugins/api.yaml into a protected,
non-committed user/config/plugins/api-private.php, mirroring core's
security-private.php so it is no longer reach...
non-committed user/config/plugins/api-private.php, mirroring core's
security-private.php so it is no longer reach...
🚨 CVE-2026-61690
Grav is a file-based Web platform. Prior to 2.0.1, Grav ZipArchiver::extract() in system/src/Grav/Common/Filesystem/ZipArchiver.php passes archives to ZipArchive::extractTo() without enforcing the system.gpm.archive uncompressed-size, file-count, or nesting-depth limits. Code using Archiver::create('zip') to extract an attacker-controlled archive can exhaust disk space or inodes and make the site unavailable. This issue is fixed in version 2.0.1.
🎖@cveNotify
Grav is a file-based Web platform. Prior to 2.0.1, Grav ZipArchiver::extract() in system/src/Grav/Common/Filesystem/ZipArchiver.php passes archives to ZipArchive::extractTo() without enforcing the system.gpm.archive uncompressed-size, file-count, or nesting-depth limits. Code using Archiver::create('zip') to extract an attacker-controlled archive can exhaust disk space or inodes and make the site unavailable. This issue is fixed in version 2.0.1.
🎖@cveNotify
GitHub
Security: bound ZipArchiver::extract() against decompression bombs (v… · getgrav/grav@1c1003c
…2.0.1)
ZipArchive::extractTo() applies no limit on total uncompressed size, entry
count, or directory depth, so a crafted archive extracted through
ZipArchiver::extract() could fill the disk / ex...
ZipArchive::extractTo() applies no limit on total uncompressed size, entry
count, or directory depth, so a crafted archive extracted through
ZipArchiver::extract() could fill the disk / ex...
🚨 CVE-2026-61842
Grav is a file-based Web platform. Prior to 2.0.2, the Grav Twig content sandbox permits grav.offsetGet('config') to return the raw configuration object and permits json_encode, print_r, yaml_encode, and string filters to serialize that object without passing through GravSecurityPolicy::checkMethodAllowed. A user with page-author permissions can render sandboxed content that exposes plugins.* configuration secrets, including SMTP credentials, API keys, and plugin database credentials. This issue is fixed in version 2.0.2.
🎖@cveNotify
Grav is a file-based Web platform. Prior to 2.0.2, the Grav Twig content sandbox permits grav.offsetGet('config') to return the raw configuration object and permits json_encode, print_r, yaml_encode, and string filters to serialize that object without passing through GravSecurityPolicy::checkMethodAllowed. A user with page-author permissions can render sandboxed content that exposes plugins.* configuration secrets, including SMTP credentials, API keys, and plugin database credentials. This issue is fixed in version 2.0.2.
🎖@cveNotify
GitHub
[security] block Twig sandbox config exfiltration via dump/serialize … · getgrav/grav@7efe705
…filters
A page author could read the whole config tree from sandboxed page content,
bypassing the SandboxConfig redaction two ways: reaching the raw Config via
grav.offsetGet('config&...
A page author could read the whole config tree from sandboxed page content,
bypassing the SandboxConfig redaction two ways: reaching the raw Config via
grav.offsetGet('config&...
🚨 CVE-2026-62666
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, Grav API plugin UsersController::createApiKey(), generate2fa(), and disable2fa() omit the accessGrantsSuper() target check used by sibling user mutation endpoints. A non-super account with api.users.write can mint an API key bound to an access.api.super target through requireApiKeyPermission(), obtain the target's full privileges because key scopes are not enforced, and create persistent super-administrator access; the same missing check also permits rotating or disabling the target's two-factor authentication. This issue is fixed in version 1.0.6.
🎖@cveNotify
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, Grav API plugin UsersController::createApiKey(), generate2fa(), and disable2fa() omit the accessGrantsSuper() target check used by sibling user mutation endpoints. A non-super account with api.users.write can mint an API key bound to an access.api.super target through requireApiKeyPermission(), obtain the target's full privileges because key scopes are not enforced, and create persistent super-administrator access; the same missing check also permits rotating or disabling the target's two-factor authentication. This issue is fixed in version 1.0.6.
🎖@cveNotify
GitHub
security: enforce API key scopes, guard super-admin targets, restrict… · getgrav/grav-plugin-api@dfcc947
… webhook URLs
GHSA-x7hm-jc32-v39j (High): API key `scopes` were persisted at creation but
never consulted in the auth/authz path, so the authenticator returned the full
owning-user ACL and a &...
GHSA-x7hm-jc32-v39j (High): API key `scopes` were persisted at creation but
never consulted in the auth/authz path, so the authenticator returned the full
owning-user ACL and a &...
🚨 CVE-2026-62667
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, the Grav API plugin ApiKeyManager::generateKey() stores a declared scopes array, but ApiKeyAuthenticator::authenticate() does not read keyData[scopes] and returns the owning user's complete identity. AbstractApiController::requirePermission() consequently evaluates the full user ACL, so a key issued for a read-only scope can perform every write, delete, and administrative operation available to the owner. This issue is fixed in version 1.0.6.
🎖@cveNotify
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, the Grav API plugin ApiKeyManager::generateKey() stores a declared scopes array, but ApiKeyAuthenticator::authenticate() does not read keyData[scopes] and returns the owning user's complete identity. AbstractApiController::requirePermission() consequently evaluates the full user ACL, so a key issued for a read-only scope can perform every write, delete, and administrative operation available to the owner. This issue is fixed in version 1.0.6.
🎖@cveNotify
GitHub
security: enforce API key scopes, guard super-admin targets, restrict… · getgrav/grav-plugin-api@dfcc947
… webhook URLs
GHSA-x7hm-jc32-v39j (High): API key `scopes` were persisted at creation but
never consulted in the auth/authz path, so the authenticator returned the full
owning-user ACL and a &...
GHSA-x7hm-jc32-v39j (High): API key `scopes` were persisted at creation but
never consulted in the auth/authz path, so the authenticator returned the full
owning-user ACL and a &...
🚨 CVE-2026-62668
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, the Grav API plugin WebhookController.php accepts webhook URLs after only FILTER_VALIDATE_URL syntax validation, and WebhookDispatcher.php initializes cURL without CURLOPT_PROTOCOLS or CURLOPT_REDIR_PROTOCOLS restrictions. An account with api.webhooks.write can submit file, dict, gopher, private-network, or link-local targets, retrieve local files and delivery response bodies, and pivot requests to internal services or cloud metadata endpoints. This issue is fixed in version 1.0.6.
🎖@cveNotify
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.6, the Grav API plugin WebhookController.php accepts webhook URLs after only FILTER_VALIDATE_URL syntax validation, and WebhookDispatcher.php initializes cURL without CURLOPT_PROTOCOLS or CURLOPT_REDIR_PROTOCOLS restrictions. An account with api.webhooks.write can submit file, dict, gopher, private-network, or link-local targets, retrieve local files and delivery response bodies, and pivot requests to internal services or cloud metadata endpoints. This issue is fixed in version 1.0.6.
🎖@cveNotify
GitHub
security: enforce API key scopes, guard super-admin targets, restrict… · getgrav/grav-plugin-api@dfcc947
… webhook URLs
GHSA-x7hm-jc32-v39j (High): API key `scopes` were persisted at creation but
never consulted in the auth/authz path, so the authenticator returned the full
owning-user ACL and a &...
GHSA-x7hm-jc32-v39j (High): API key `scopes` were persisted at creation but
never consulted in the auth/authz path, so the authenticator returned the full
owning-user ACL and a &...
🚨 CVE-2026-62669
Grav Login Plugin adds login, basic ACL, and session wide messages to Grav. Prior to 3.8.11, the Grav Login plugin login.regenerate2FASecret task checks only that the pending-session user exists rather than requiring $user->authorized. After submitting a victim's correct password, an attacker can invoke taskRegenerate2FASecret() during the pending TOTP challenge, overwrite twofa_secret, read the replacement secret from the response, calculate a valid code, and complete authentication without the victim's second factor. This issue is fixed in version 3.8.11.
🎖@cveNotify
Grav Login Plugin adds login, basic ACL, and session wide messages to Grav. Prior to 3.8.11, the Grav Login plugin login.regenerate2FASecret task checks only that the pending-session user exists rather than requiring $user->authorized. After submitting a victim's correct password, an attacker can invoke taskRegenerate2FASecret() during the pending TOTP challenge, overwrite twofa_secret, read the replacement secret from the response, calculate a valid code, and complete authentication without the victim's second factor. This issue is fixed in version 3.8.11.
🎖@cveNotify
GitHub
security: fix 2FA secret-regeneration bypass and CSRF on regenerate2F… · getgrav/grav-plugin-login@5d1b722
…ASecret
GHSA-7mgc-c7pq-3rr3 (High): taskRegenerate2FASecret gated only on
$user->exists(), so during the 2FA-pending window an attacker with the victim's
password could rotate the ...
GHSA-7mgc-c7pq-3rr3 (High): taskRegenerate2FASecret gated only on
$user->exists(), so during the 2FA-pending window an attacker with the victim's
password could rotate the ...
🚨 CVE-2026-62670
Grav Flex Objects Plugin allows you to build custom collections of objects. Prior to 1.4.3, the Grav Flex Objects Admin Next API requireFlexPermission() method in classes/Api/FlexApiController.php returns without denying access when a directory blueprint omits config.admin.permissions. An authenticated account with only api.access can use the index, show, create, update, delete, export, and media handlers for a permission-less directory even though the core admin.flex-object. authorization fallback would deny the same actions. This issue is fixed in version 1.4.3.
🎖@cveNotify
Grav Flex Objects Plugin allows you to build custom collections of objects. Prior to 1.4.3, the Grav Flex Objects Admin Next API requireFlexPermission() method in classes/Api/FlexApiController.php returns without denying access when a directory blueprint omits config.admin.permissions. An authenticated account with only api.access can use the index, show, create, update, delete, export, and media handlers for a permission-less directory even though the core admin.flex-object. authorization fallback would deny the same actions. This issue is fixed in version 1.4.3.
🎖@cveNotify
GitHub
Fail-open authorization in grav-plugin-flex-objects admin-next API: api.access user gets full CRUD on permission-less directories…
### Summary
The Flex-Objects admin-next REST API (`grav-plugin-flex-objects` + `grav-plugin-api`, routes under `/api/v1`) derives each directory's required permission from the directory blue...
The Flex-Objects admin-next REST API (`grav-plugin-flex-objects` + `grav-plugin-api`, routes under `/api/v1`) derives each directory's required permission from the directory blue...
🚨 CVE-2026-62671
Grav Login Plugin adds login, basic ACL, and session wide messages to Grav. Prior to 3.8.11, the Grav Login plugin login.regenerate2FASecret task accepts a top-level GET request through the TaskServiceProvider task: URI parameter without requiring a login-form nonce, an Origin check, or a Referer check. Under the default SameSite=Lax session cookie policy, an off-site navigation can invoke taskRegenerate2FASecret() in a logged-in victim's session, overwrite the victim's TOTP secret, and force two-factor re-enrollment. This issue is fixed in version 3.8.11.
🎖@cveNotify
Grav Login Plugin adds login, basic ACL, and session wide messages to Grav. Prior to 3.8.11, the Grav Login plugin login.regenerate2FASecret task accepts a top-level GET request through the TaskServiceProvider task: URI parameter without requiring a login-form nonce, an Origin check, or a Referer check. Under the default SameSite=Lax session cookie policy, an off-site navigation can invoke taskRegenerate2FASecret() in a logged-in victim's session, overwrite the victim's TOTP secret, and force two-factor re-enrollment. This issue is fixed in version 3.8.11.
🎖@cveNotify
GitHub
security: fix 2FA secret-regeneration bypass and CSRF on regenerate2F… · getgrav/grav-plugin-login@5d1b722
…ASecret
GHSA-7mgc-c7pq-3rr3 (High): taskRegenerate2FASecret gated only on
$user->exists(), so during the 2FA-pending window an attacker with the victim's
password could rotate the ...
GHSA-7mgc-c7pq-3rr3 (High): taskRegenerate2FASecret gated only on
$user->exists(), so during the 2FA-pending window an attacker with the victim's
password could rotate the ...
🚨 CVE-2026-62672
Grav is a file-based Web platform. Prior to 2.0.4, Grav allowlists the regex_replace filter and function in system/config/security.yaml, and GravExtension::regexReplace() passes an editor-controlled pattern directly to preg_replace(). When security.twig_content.process_enabled is enabled, an authenticated page editor can publish a catastrophically backtracking pattern that consumes PHP worker CPU and denies service to site visitors. This issue is fixed in version 2.0.4.
🎖@cveNotify
Grav is a file-based Web platform. Prior to 2.0.4, Grav allowlists the regex_replace filter and function in system/config/security.yaml, and GravExtension::regexReplace() passes an editor-controlled pattern directly to preg_replace(). When security.twig_content.process_enabled is enabled, an authenticated page editor can publish a catastrophically backtracking pattern that consumes PHP worker CPU and denies service to site visitors. This issue is fixed in version 2.0.4.
🎖@cveNotify
GitHub
security: fail safe on PCRE error in Twig regex_replace (GHSA-37f3) · getgrav/grav@9071162
GHSA-37f3-6p89-6qr9 (Low): the sandboxed regex_replace filter/function passed a
caller-controlled pattern straight to preg_replace. It now returns the subject
unchanged on a PCRE error (e.g. a back...
caller-controlled pattern straight to preg_replace. It now returns the subject
unchanged on a PCRE error (e.g. a back...
🚨 CVE-2026-62673
Grav is a file-based Web platform. Prior to 2.0.4, the Grav .htaccess and webserver-configs/htaccess.txt security rules omit the Apache [NC] flag and therefore compare sensitive directory and file-extension patterns case-sensitively. On a case-insensitive filesystem, an unauthenticated requester can use uppercase directory or extension variants to bypass the rules and retrieve files under user/accounts or user/config, including password hashes and security configuration. This issue is fixed in version 2.0.4.
🎖@cveNotify
Grav is a file-based Web platform. Prior to 2.0.4, the Grav .htaccess and webserver-configs/htaccess.txt security rules omit the Apache [NC] flag and therefore compare sensitive directory and file-extension patterns case-sensitively. On a case-insensitive filesystem, an unauthenticated requester can use uppercase directory or extension variants to bypass the rules and retrieve files under user/accounts or user/config, including password hashes and security configuration. This issue is fixed in version 2.0.4.
🎖@cveNotify
GitHub
security: make .htaccess security rules case-insensitive (GHSA-vwg3-w… · getgrav/grav@8c9d1e7
…8w3-pc79)
GHSA-vwg3-w8w3-pc79 (High): the .htaccess deny rules for sensitive folders and
file types lacked the [NC] flag, so on case-insensitive filesystems (Windows,
macOS, Docker volume mounts ...
GHSA-vwg3-w8w3-pc79 (High): the .htaccess deny rules for sensitive folders and
file types lacked the [NC] flag, so on case-insensitive filesystems (Windows,
macOS, Docker volume mounts ...
🚨 CVE-2026-63407
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.0-rc.16, the Grav API plugin CorsMiddleware returns Access-Control-Allow-Origin: * and permissive OPTIONS responses for authenticated /api/v1 endpoints. JavaScript from any origin can submit an attacker-obtained JWT through the Authorization or X-API-Token header, read the authenticated response, and perform write operations with the token owner's privileges, enabling data exfiltration and account modification. This issue is fixed in version 1.0.0-rc.16.
🎖@cveNotify
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.0-rc.16, the Grav API plugin CorsMiddleware returns Access-Control-Allow-Origin: * and permissive OPTIONS responses for authenticated /api/v1 endpoints. JavaScript from any origin can submit an attacker-obtained JWT through the Authorization or X-API-Token header, read the authenticated response, and perform write operations with the token owner's privileges, enabling data exfiltration and account modification. This issue is fixed in version 1.0.0-rc.16.
🎖@cveNotify
GitHub
[security] Fix cross-origin account takeover via CORS wildcard + JWT … · getgrav/grav-plugin-api@56ae2ca
…in URL
Two intersecting issues let an attacker who obtains a single JWT access
token make fully authenticated cross-origin API requests from any website
(GHSA-hqm9-5xxw-4qxp).
CORS: stop default...
Two intersecting issues let an attacker who obtains a single JWT access
token make fully authenticated cross-origin API requests from any website
(GHSA-hqm9-5xxw-4qxp).
CORS: stop default...
🚨 CVE-2026-63408
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.0-rc.16, the Grav API plugin JwtAuthenticator::extractBearerToken() accepts a JWT from the token URL query parameter on every /api/v1 route, including state-changing endpoints. Request URLs consequently expose valid access tokens through Apache, proxy, and CDN logs, browser history, and Referer headers, allowing a party with access to those records to reuse the token with the owner's API privileges. This issue is fixed in version 1.0.0-rc.16.
🎖@cveNotify
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.0-rc.16, the Grav API plugin JwtAuthenticator::extractBearerToken() accepts a JWT from the token URL query parameter on every /api/v1 route, including state-changing endpoints. Request URLs consequently expose valid access tokens through Apache, proxy, and CDN logs, browser history, and Referer headers, allowing a party with access to those records to reuse the token with the owner's API privileges. This issue is fixed in version 1.0.0-rc.16.
🎖@cveNotify
GitHub
[security] Fix cross-origin account takeover via CORS wildcard + JWT … · getgrav/grav-plugin-api@56ae2ca
…in URL
Two intersecting issues let an attacker who obtains a single JWT access
token make fully authenticated cross-origin API requests from any website
(GHSA-hqm9-5xxw-4qxp).
CORS: stop default...
Two intersecting issues let an attacker who obtains a single JWT access
token make fully authenticated cross-origin API requests from any website
(GHSA-hqm9-5xxw-4qxp).
CORS: stop default...
🚨 CVE-2026-64850
Grav is a file-based Web platform. Prior to 2.0.7, Grav Blueprint::dynamicData() in system/src/Grav/Common/Data/Blueprint.php sends an editor-controlled Class::method provider and arguments to call_user_func_array() without rejecting dangerous callback parameters. An account with admin.pages or api.pages.write can use Grav\Common\Utils::arrayFilterRecursive() as a trampoline with system as the callback, place a command in page frontmatter, and execute that command as the web server user when the page is viewed. This issue is fixed in version 2.0.7.
🎖@cveNotify
Grav is a file-based Web platform. Prior to 2.0.7, Grav Blueprint::dynamicData() in system/src/Grav/Common/Data/Blueprint.php sends an editor-controlled Class::method provider and arguments to call_user_func_array() without rejecting dangerous callback parameters. An account with admin.pages or api.pages.write can use Grav\Common\Utils::arrayFilterRecursive() as a trampoline with system as the callback, place a command in page frontmatter, and execute that command as the web server user when the page is viewed. This issue is fixed in version 2.0.7.
🎖@cveNotify
GitHub
security fix · getgrav/grav@acffa34
Signed-off-by: Andy Miller <rhuk@mac.com>
🚨 CVE-2026-64851
Grav Shortcode Core Plugin allows for the development shortcode plugins that utilize the common format utilized by WordPress and BBCode. Prior to 6.2.2, Grav Shortcode Core passes shortcode syntax through Security::detectXss() because it contains no literal less-than character, then ColorShortcode.php and related attribute handlers concatenate an attacker-controlled parameter into HTML without encoding. An account with admin.pages permission can close the generated attribute and add an event handler, creating stored cross-site scripting that executes for visitors or administrators who view the page. This issue is fixed in version 6.2.2.
🎖@cveNotify
Grav Shortcode Core Plugin allows for the development shortcode plugins that utilize the common format utilized by WordPress and BBCode. Prior to 6.2.2, Grav Shortcode Core passes shortcode syntax through Security::detectXss() because it contains no literal less-than character, then ColorShortcode.php and related attribute handlers concatenate an attacker-controlled parameter into HTML without encoding. An account with admin.pages permission can close the generated attribute and add an event handler, creating stored cross-site scripting that executes for visitors or administrators who view the page. This issue is fixed in version 6.2.2.
🎖@cveNotify
GitHub
escape attributes · getgrav/grav-plugin-shortcode-core@2a55eac
Signed-off-by: Andy Miller <rhuk@mac.com>
🚨 CVE-2026-64852
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.8, the Grav API plugin intercepts the apiKeyGenerate and apiKeyRevoke admin tasks in user/plugins/api/api.php and authorizes the caller with only admin.login. A basic panel user can select another account from the route, create a persistent ApiKeyManager credential bound to that target, and inherit the target's API permissions, including api.super or administrative write access when present. This issue is fixed in version 1.0.8.
🎖@cveNotify
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.8, the Grav API plugin intercepts the apiKeyGenerate and apiKeyRevoke admin tasks in user/plugins/api/api.php and authorizes the caller with only admin.login. A basic panel user can select another account from the route, create a persistent ApiKeyManager credential bound to that target, and inherit the target's API permissions, including api.super or administrative write access when present. This issue is fixed in version 1.0.8.
🎖@cveNotify
GitHub
security fix · getgrav/grav-plugin-api@ed16f0a
Signed-off-by: Andy Miller <rhuk@mac.com>
🚨 CVE-2026-41424
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 4.9.0 until 4.10.4 and 4.14.6, PUT /security/users/{user_id} in api/api/controllers/security_controller.py passes request.get("user") instead of request.context['token_info']['sub'] as current_user. remove_nones_to_dict() removes the resulting None value, so the reserved-account protection in framework/wazuh/security.py cannot verify who is making the request. An authenticated user with the users_admin role can overwrite the password of protected administrator accounts with user IDs at or below 99, including the wazuh superuser, and gain full administrative control. This issue is fixed in versions 4.10.4 and 4.14.6.
🎖@cveNotify
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 4.9.0 until 4.10.4 and 4.14.6, PUT /security/users/{user_id} in api/api/controllers/security_controller.py passes request.get("user") instead of request.context['token_info']['sub'] as current_user. remove_nones_to_dict() removes the resulting None value, so the reserved-account protection in framework/wazuh/security.py cannot verify who is making the request. An authenticated user with the users_admin role can overwrite the password of protected administrator accounts with user IDs at or below 99, including the wazuh superuser, and gain full administrative control. This issue is fixed in versions 4.10.4 and 4.14.6.
🎖@cveNotify
GitHub
fix: validate current user in update-user endpoint · wazuh/wazuh@1a38d11
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads. - fix: validate current user in update-user endpoint · wazuh/wazuh@1a38d11
🚨 CVE-2026-44255
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 4.0.0 until 4.14.6 and 5.0.0-beta2, AuthenticationManager.check_user() in framework/wazuh/rbac/orm.py performs check_password_hash() only when the supplied username exists. A nonexistent username returns immediately, while a valid username causes an expensive bcrypt calculation. An unauthenticated remote attacker can compare authentication response times to enumerate valid Wazuh usernames and use that information in subsequent credential attacks. This issue is fixed in versions 4.14.6 and 5.0.0-beta2.
🎖@cveNotify
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 4.0.0 until 4.14.6 and 5.0.0-beta2, AuthenticationManager.check_user() in framework/wazuh/rbac/orm.py performs check_password_hash() only when the supplied username exists. A nonexistent username returns immediately, while a valid username causes an expensive bcrypt calculation. An unauthenticated remote attacker can compare authentication response times to enumerate valid Wazuh usernames and use that information in subsequent credential attacks. This issue is fixed in versions 4.14.6 and 5.0.0-beta2.
🎖@cveNotify
GitHub
fix: orm hash calculation · wazuh/wazuh@5ecea7b
Wazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads. - fix: orm hash calculation · wazuh/wazuh@5ecea7b