Snyk has a proof-of-concept or detailed explanation of how to exploit this vulnerability.
The probability is the direct output of the EPSS model, and conveys an overall sense of the threat of exploitation in the wild. The percentile measures the EPSS probability relative to all known EPSS scores. Note: This data is updated daily, relying on the latest available EPSS model version. Check out the EPSS documentation for more details.
In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.
Test your applicationsUpgrade @intlify/vue-i18n-core to version 12.0.0-alpha.5, 11.4.14 or higher.
@intlify/vue-i18n-core is a @intlify/vue-i18n-core
Affected versions of this package are vulnerable to Improper Encoding or Escaping of Output via the escapeParams function in packages/core-base/src/translate.ts, when a translation call passes both list and named interpolation values simultaneously. The original logic used else if to escape named values, meaning that when a list argument is also present, named values are never passed through escapeHtml. An attacker who controls a named interpolation value can inject unescaped HTML into the rendered output, enabling a cross-site scripting attack.
Note: This is only exploitable when the escapeParameter option is explicitly set to true.
import { createI18n } from 'vue-i18n'
const i18n = createI18n({
legacy: false,
locale: 'en',
escapeParameter: true,
messages: {
en: { withList: '{0} {name}', withoutList: '{name}' }
}
})
const t = i18n.global.t
t('withoutList', { name: '<b>x</b>' })
// <b>x</b> escaped
t('withList', ['a'], { named: { name: '<b>x</b>' } })
// a <b>x</b> not escaped (v11.4.13)
Note: The PoC uses vue-i18n with escapeParameter: true and demonstrates that named values are not escaped when a list argument is also passed.