{"resultsPerPage":1,"startIndex":0,"totalResults":1,"format":"NVD_CVE","version":"2.0","timestamp":"2026-05-04T04:35:43.432","vulnerabilities":[{"cve":{"id":"CVE-2021-21277","sourceIdentifier":"security-advisories@github.com","published":"2021-02-01T15:15:13.340","lastModified":"2024-11-21T05:47:54.963","vulnStatus":"Modified","cveTags":[],"descriptions":[{"lang":"en","value":"angular-expressions is \"angular's nicest part extracted as a standalone module for the browser and node\". In angular-expressions before version 1.1.2 there is a vulnerability which allows Remote Code Execution if you call \"expressions.compile(userControlledInput)\" where \"userControlledInput\" is text that comes from user input. The security of the package could be bypassed by using a more complex payload, using a \".constructor.constructor\" technique. In terms of impact: If running angular-expressions in the browser, an attacker could run any browser script when the application code calls expressions.compile(userControlledInput). If running angular-expressions on the server, an attacker could run any Javascript expression, thus gaining Remote Code Execution. This is fixed in version 1.1.2 of angular-expressions A temporary workaround might be either to disable user-controlled input that will be fed into angular-expressions in your application or allow only following characters in the userControlledInput."},{"lang":"es","value":"angular-expressions son \"angular's nicest part extracted as a standalone module for the browser and node\".&#xa0;En angular-expressions anteriores a la versión 1.1.2, existe una vulnerabilidad que permite una Ejecución de Código Remota si llama a \"expression.compile(userControlledInput)\" donde \"userControlledInput\" es texto que proviene de la entrada del usuario.&#xa0;La seguridad del paquete podría omitirse usando una carga útil más compleja, utilizando una técnica \".constructor.constructor\".&#xa0;En términos de impacto: si ejecuta angular-expressions en el navegador, un atacante podría ejecutar cualquier script del navegador cuando el código de la aplicación llame a expression.compile(userControlledInput).&#xa0;Si ejecuta angular-expressions en el servidor, un atacante podría ejecutar cualquier expresión de Javascript, obteniendo así una ejecución de código remota.&#xa0;Esto se corrigió en la versión 1.1.2 de angular-expressions. Una solución temporal podría ser deshabilitar la entrada controlada por el usuario que se alimentará en angular-expressions en su aplicación o permitir solo seguir caracteres en el userControlledInput"}],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N","baseScore":8.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"CHANGED","confidentialityImpact":"LOW","integrityImpact":"HIGH","availabilityImpact":"NONE"},"exploitabilityScore":3.1,"impactScore":4.7},{"source":"nvd@nist.gov","type":"Primary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":2.8,"impactScore":5.9}],"cvssMetricV2":[{"source":"nvd@nist.gov","type":"Primary","cvssData":{"version":"2.0","vectorString":"AV:N/AC:L/Au:S/C:P/I:P/A:P","baseScore":6.5,"accessVector":"NETWORK","accessComplexity":"LOW","authentication":"SINGLE","confidentialityImpact":"PARTIAL","integrityImpact":"PARTIAL","availabilityImpact":"PARTIAL"},"baseSeverity":"MEDIUM","exploitabilityScore":8.0,"impactScore":6.4,"acInsufInfo":false,"obtainAllPrivilege":false,"obtainUserPrivilege":false,"obtainOtherPrivilege":false,"userInteractionRequired":false}]},"weaknesses":[{"source":"security-advisories@github.com","type":"Secondary","description":[{"lang":"en","value":"CWE-74"}]},{"source":"nvd@nist.gov","type":"Primary","description":[{"lang":"en","value":"CWE-94"}]}],"configurations":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:a:peerigon:angular-expressions:*:*:*:*:*:node.js:*:*","versionEndExcluding":"1.1.2","matchCriteriaId":"EF59E19D-CD5E-4B96-8445-154B8B913012"}]}]}],"references":[{"url":"http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html","source":"security-advisories@github.com","tags":["Broken Link","Vendor Advisory"]},{"url":"https://github.com/peerigon/angular-expressions/commit/07edb62902b1f6127b3dcc013da61c6316dd0bf1","source":"security-advisories@github.com","tags":["Patch","Third Party Advisory"]},{"url":"https://github.com/peerigon/angular-expressions/security/advisories/GHSA-j6px-jwvv-vpwq","source":"security-advisories@github.com","tags":["Vendor Advisory"]},{"url":"https://www.npmjs.com/package/angular-expressions","source":"security-advisories@github.com","tags":["Product"]},{"url":"http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html","source":"af854a3a-2127-422b-91ae-364da2661108","tags":["Broken Link","Vendor Advisory"]},{"url":"https://github.com/peerigon/angular-expressions/commit/07edb62902b1f6127b3dcc013da61c6316dd0bf1","source":"af854a3a-2127-422b-91ae-364da2661108","tags":["Patch","Third Party Advisory"]},{"url":"https://github.com/peerigon/angular-expressions/security/advisories/GHSA-j6px-jwvv-vpwq","source":"af854a3a-2127-422b-91ae-364da2661108","tags":["Vendor Advisory"]},{"url":"https://www.npmjs.com/package/angular-expressions","source":"af854a3a-2127-422b-91ae-364da2661108","tags":["Product"]}]}}]}