diff --git a/advisories/github-reviewed/2024/03/GHSA-5jpm-x58v-624v/GHSA-5jpm-x58v-624v.json b/advisories/github-reviewed/2024/03/GHSA-5jpm-x58v-624v/GHSA-5jpm-x58v-624v.json new file mode 100644 index 00000000000..23d46192a6e --- /dev/null +++ b/advisories/github-reviewed/2024/03/GHSA-5jpm-x58v-624v/GHSA-5jpm-x58v-624v.json @@ -0,0 +1,66 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-5jpm-x58v-624v", + "modified": "2024-03-25T19:40:50Z", + "published": "2024-03-25T19:40:50Z", + "aliases": [ + "CVE-2024-29025" + ], + "summary": "Netty's HttpPostRequestDecoder can OOM", + "details": "### Summary\nThe `HttpPostRequestDecoder` can be tricked to accumulate data. I have spotted currently two attack vectors \n\n### Details\n1. While the decoder can store items on the disk if configured so, there are no limits to the number of fields the form can have, an attacher can send a chunked post consisting of many small fields that will be accumulated in the `bodyListHttpData` list.\n2. The decoder cumulates bytes in the `undecodedChunk` buffer until it can decode a field, this field can cumulate data without limits\n\n### PoC\n\nHere is a Netty branch that provides a fix + tests : https://github.com/vietj/netty/tree/post-request-decoder\n\n\nHere is a reproducer with Vert.x (which uses this decoder) https://gist.github.com/vietj/f558b8ea81ec6505f1e9a6ca283c9ae3\n\n### Impact\nAny Netty based HTTP server that uses the `HttpPostRequestDecoder` to decode a form.", + "severity": [ + + ], + "affected": [ + { + "package": { + "ecosystem": "Maven", + "name": "io.netty:netty-codec-http" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + }, + { + "fixed": "4.1.108.Final" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/netty/netty/security/advisories/GHSA-5jpm-x58v-624v" + }, + { + "type": "WEB", + "url": "https://github.com/netty/netty/commit/0d0c6ed782d13d423586ad0c71737b2c7d02058c" + }, + { + "type": "WEB", + "url": "https://gist.github.com/vietj/f558b8ea81ec6505f1e9a6ca283c9ae3" + }, + { + "type": "PACKAGE", + "url": "https://github.com/netty/netty" + }, + { + "type": "WEB", + "url": "https://github.com/vietj/netty/tree/post-request-decoder" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-770" + ], + "severity": "MODERATE", + "github_reviewed": true, + "github_reviewed_at": "2024-03-25T19:40:50Z", + "nvd_published_at": null + } +} \ No newline at end of file diff --git a/advisories/github-reviewed/2024/03/GHSA-9xvf-cjvf-ff5q/GHSA-9xvf-cjvf-ff5q.json b/advisories/github-reviewed/2024/03/GHSA-9xvf-cjvf-ff5q/GHSA-9xvf-cjvf-ff5q.json new file mode 100644 index 00000000000..18cf6a16b2a --- /dev/null +++ b/advisories/github-reviewed/2024/03/GHSA-9xvf-cjvf-ff5q/GHSA-9xvf-cjvf-ff5q.json @@ -0,0 +1,77 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-9xvf-cjvf-ff5q", + "modified": "2024-03-25T19:41:37Z", + "published": "2024-03-25T19:41:37Z", + "aliases": [ + "CVE-2024-28850" + ], + "summary": "WP Crontrol vulnerable to possible RCE when combined with a pre-condition", + "details": "### Impact\n\nWP Crontrol includes a feature that allows administrative users to create events in the WP-Cron system that store and execute PHP code [subject to the restrictive security permissions documented here](https://wp-crontrol.com/docs/php-cron-events/). While there is _no known vulnerability in this feature on its own_, there exists potential for this feature to be vulnerable to RCE if it were specifically targeted via vulnerability chaining that exploited a separate SQLi (or similar) vulnerability.\n\nThis is exploitable on a site if one of the below preconditions are met:\n\n* The site is vulnerable to a writeable SQLi vulnerability in any plugin, theme, or WordPress core\n* The site's database is compromised at the hosting level\n* The site is vulnerable to a method of updating arbitrary options in the `wp_options` table\n* The site is vulnerable to a method of triggering an arbitrary action, filter, or function with control of the parameters\n\n### Patches\n\nAs a hardening measure, WP Crontrol version 1.16.2 ships with a new feature that prevents tampering of the code stored in a PHP cron event.\n\nAll PHP cron events are now secured via an integrity check that makes use of an HMAC to store a hash of the code alongside it when the event is saved. When the event runs, the hash is verified to ensure the code has not been tampered with. WP Crontrol will not execute the PHP code if the hash cannot be verified or if a stored hash is not present. If an attacker with database-level access were to modify the code in an event in an attempt to execute arbitrary code, the code would no longer execute.\n\nAny PHP cron events that exist in the database prior to updating to version 1.16.2 will cease to execute until an administrative user re-saves them from the Cron Events screen in the admin area. A notice will be shown in the admin area informing administrative users if this is the case.\n\n### Workarounds\n\nGiven that one or more of the preconditions listed above are met, there are no known workarounds for this issue other than to update WP Crontrol to version 1.16.2 or later.\n\nNote that neither the `DISALLOW_FILE_MODS` constant nor the `DISALLOW_FILE_EDIT` constant prevent this from being exploitable because these constants do not prevent PHP cron events from being _executed_. It's an intended feature of WP Crontrol that PHP cron events in the database will continue to run according to their schedule even if editing PHP cron events is disabled due to one of these constants being defined.\n\n### FAQ\n\n#### Is my site at risk?\n\nYour site is only at risk if at least one of the preconditions listed above are met and an attacker is actively attacking your site in order to exploit this. There is no known vulnerability in this feature on its own.\n\n#### Why is this classified as high severity?\n\nThe CVSS score is used to classify the severity of a vulnerability in isolation, which in this case is high due to the possibility of RCE. The actual risk is likely to be low and is dependent entirely on one of the preconditions being met.\n\n#### How is this any different to an SQLi vulnerability that would allow an attacker to create an Administrator user and then access the theme or plugin editor?\n\nThe difference is in the handling of the `DISALLOW_FILE_MODS` and `DISALLOW_FILE_EDIT` constants. With either one of these constants defined in your wp-config.php file then the plugin and theme editors are disabled. In WP Crontrol the ability to _edit_ PHP cron events in WP Crontrol is also disabled in this case, however PHP cron events in the database will continue to run according to their schedule.\n\n### Thanks\n\nThis issue was identified by John Blackbourn, the author of the WP Crontrol plugin.\n\nThanks go to:\n\n* Calvin Alkan for researching and reporting many vulnerabilities in WordPress plugins and for [publishing the details on the snicco blog](https://snicco.io/vulnerability-disclosure). Calvin's work prompted me to investigate whether the PHP cron event functionality in WP Crontrol could be exploited when attacked via with vulnerability chaining, and he collaborated on this security advisory.\n* Joe Hoyle for collaborating on this advisory.", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H" + } + ], + "affected": [ + { + "package": { + "ecosystem": "Packagist", + "name": "johnbillion/wp-crontrol" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + }, + { + "fixed": "1.16.2" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/johnbillion/wp-crontrol/security/advisories/GHSA-9xvf-cjvf-ff5q" + }, + { + "type": "WEB", + "url": "https://github.com/johnbillion/wp-crontrol/commit/6d1fadcf6dfdd54e55feef27f916b0cfcd602405" + }, + { + "type": "PACKAGE", + "url": "https://github.com/johnbillion/wp-crontrol" + }, + { + "type": "WEB", + "url": "https://github.com/johnbillion/wp-crontrol/releases/tag/1.16.2" + }, + { + "type": "WEB", + "url": "https://snicco.io/vulnerability-disclosure" + }, + { + "type": "WEB", + "url": "https://wp-crontrol.com/docs/php-cron-events" + }, + { + "type": "WEB", + "url": "https://wp-crontrol.com/help/check-php-cron-events" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-494" + ], + "severity": "HIGH", + "github_reviewed": true, + "github_reviewed_at": "2024-03-25T19:41:37Z", + "nvd_published_at": null + } +} \ No newline at end of file diff --git a/advisories/github-reviewed/2024/03/GHSA-rv95-896h-c2vc/GHSA-rv95-896h-c2vc.json b/advisories/github-reviewed/2024/03/GHSA-rv95-896h-c2vc/GHSA-rv95-896h-c2vc.json new file mode 100644 index 00000000000..99599fef6a9 --- /dev/null +++ b/advisories/github-reviewed/2024/03/GHSA-rv95-896h-c2vc/GHSA-rv95-896h-c2vc.json @@ -0,0 +1,97 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-rv95-896h-c2vc", + "modified": "2024-03-25T19:40:26Z", + "published": "2024-03-25T19:40:26Z", + "aliases": [ + "CVE-2024-29041" + ], + "summary": "Express.js Open Redirect in malformed URLs", + "details": "### Impact\n\nVersions of Express.js prior to 4.19.2 and pre-release alpha and beta versions before 5.0.0-beta.3 are affected by an open redirect vulnerability using malformed URLs.\n\nWhen a user of Express performs a redirect using a user-provided URL Express performs an encode [using `encodeurl`](https://github.com/pillarjs/encodeurl) on the contents before passing it to the `location` header. This can cause malformed URLs to be evaluated in unexpected ways by common redirect allow list implementations in Express applications, leading to an Open Redirect via bypass of a properly implemented allow list.\n\nThe main method impacted is `res.location()` but this is also called from within `res.redirect()`.\n\n### Patches\n\nhttps://github.com/expressjs/express/commit/0867302ddbde0e9463d0564fea5861feb708c2dd\nhttps://github.com/expressjs/express/commit/0b746953c4bd8e377123527db11f9cd866e39f94\n\nAn initial fix went out with `express@4.19.0`, we then patched a feature regression in `4.19.1` and added improved handling for the bypass in `4.19.2`.\n\n### Workarounds\n\nThe fix for this involves pre-parsing the url string with either `require('node:url').parse` or `new URL`. These are steps you can take on your own before passing the user input string to `res.location` or `res.redirect`.\n\n### References\n\nhttps://github.com/expressjs/express/pull/5539\nhttps://github.com/koajs/koa/issues/1800\nhttps://expressjs.com/en/4x/api.html#res.location", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N" + } + ], + "affected": [ + { + "package": { + "ecosystem": "npm", + "name": "express" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + }, + { + "fixed": "4.19.2" + } + ] + } + ] + }, + { + "package": { + "ecosystem": "npm", + "name": "express" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "5.0.0-alpha.1" + }, + { + "fixed": "5.0.0-beta.3" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/expressjs/express/security/advisories/GHSA-rv95-896h-c2vc" + }, + { + "type": "WEB", + "url": "https://github.com/koajs/koa/issues/1800" + }, + { + "type": "WEB", + "url": "https://github.com/expressjs/express/pull/5539" + }, + { + "type": "WEB", + "url": "https://github.com/expressjs/express/commit/0867302ddbde0e9463d0564fea5861feb708c2dd" + }, + { + "type": "WEB", + "url": "https://github.com/expressjs/express/commit/0b746953c4bd8e377123527db11f9cd866e39f94" + }, + { + "type": "WEB", + "url": "https://expressjs.com/en/4x/api.html#res.location" + }, + { + "type": "PACKAGE", + "url": "https://github.com/expressjs/express" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-1286", + "CWE-601" + ], + "severity": "MODERATE", + "github_reviewed": true, + "github_reviewed_at": "2024-03-25T19:40:26Z", + "nvd_published_at": null + } +} \ No newline at end of file diff --git a/advisories/github-reviewed/2024/03/GHSA-vfmv-jfc5-pjjw/GHSA-vfmv-jfc5-pjjw.json b/advisories/github-reviewed/2024/03/GHSA-vfmv-jfc5-pjjw/GHSA-vfmv-jfc5-pjjw.json new file mode 100644 index 00000000000..a2c0e18c453 --- /dev/null +++ b/advisories/github-reviewed/2024/03/GHSA-vfmv-jfc5-pjjw/GHSA-vfmv-jfc5-pjjw.json @@ -0,0 +1,85 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-vfmv-jfc5-pjjw", + "modified": "2024-03-25T19:40:36Z", + "published": "2024-03-25T19:40:36Z", + "aliases": [ + "CVE-2024-29034" + ], + "summary": "CarrierWave content-Type allowlist bypass vulnerability which possibly leads to XSS remained", + "details": "### Impact\nThe vulnerability [CVE-2023-49090](https://github.com/carrierwaveuploader/carrierwave/security/advisories/GHSA-gxhx-g4fq-49hj) wasn't fully addressed.\n\nThis vulnerability is caused by the fact that when uploading to object storage, including Amazon S3, it is possible to set a Content-Type value that is interpreted by browsers to be different from what's allowed by `content_type_allowlist`, by providing multiple values separated by commas.\n\nThis bypassed value can be used to cause XSS.\n\n### Patches\nUpgrade to [3.0.7](https://rubygems.org/gems/carrierwave/versions/3.0.7) or [2.2.6](https://rubygems.org/gems/carrierwave/versions/2.2.6).\n\n### Workarounds\nUse the following monkey patch to let CarrierWave parse the Content-type by using `Marcel::MimeType.for`.\n\n```ruby\n# For CarrierWave 3.x\nCarrierWave::SanitizedFile.class_eval do\n def declared_content_type\n @declared_content_type ||\n if @file.respond_to?(:content_type) && @file.content_type\n Marcel::MimeType.for(declared_type: @file.content_type.to_s.chomp)\n end\n end\nend\n```\n\n```ruby\n# For CarrierWave 2.x\nCarrierWave::SanitizedFile.class_eval do\n def existing_content_type\n if @file.respond_to?(:content_type) && @file.content_type\n Marcel::MimeType.for(declared_type: @file.content_type.to_s.chomp)\n end\n end\nend\n```\n\n### References\n[OWASP - File Upload Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html#content-type-validation)\n\n", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:N/A:N" + } + ], + "affected": [ + { + "package": { + "ecosystem": "RubyGems", + "name": "carrierwave" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "3.0.0" + }, + { + "fixed": "3.0.7" + } + ] + } + ] + }, + { + "package": { + "ecosystem": "RubyGems", + "name": "carrierwave" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + }, + { + "fixed": "2.2.6" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/carrierwaveuploader/carrierwave/security/advisories/GHSA-vfmv-jfc5-pjjw" + }, + { + "type": "ADVISORY", + "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-29034" + }, + { + "type": "WEB", + "url": "https://github.com/carrierwaveuploader/carrierwave/commit/25b1c800d45ef8e78dc445ebe3bd8a6e3f0a3477" + }, + { + "type": "PACKAGE", + "url": "https://github.com/carrierwaveuploader/carrierwave" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-436", + "CWE-79" + ], + "severity": "MODERATE", + "github_reviewed": true, + "github_reviewed_at": "2024-03-25T19:40:36Z", + "nvd_published_at": "2024-03-24T20:15:07Z" + } +} \ No newline at end of file