GitHub Advisoryadvisory · npm

GHSA-882j-4vj5-7vmj Cache Poisoning Vulnerability

MEDIUM Published 2024-03-22 Modified 2024-03-22 Official page ↗
Aliases
CVE-2024-29042
Ecosystem
npm
Packages
translate
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weaknesses
CWE-20
Reviewed
2024-03-22

Affected packages

• npm translate: < 3.0.0 → fixed in 3.0.0

Description

Summary An attacker controlling the second variable of the `translate` function is able to perform a cache poisoning attack. They can change the outcome of translation requests made by subsequent users. Details The `opt.id` parameter allows the overwriting of the cache key. If an attacker sets the `id` variable to the cache key that would be generated by another user, they can choose the response that user gets served. PoC Take the following simple server allowing users to supply text and the language to translate to. ```javascript import translate from "translate"; import express from 'express'; const app = express(); app.use(express.json()); app.post('/translate', async (req, res) => { const { text, language } = req.body; const result = await translate(text, language); return res.json(result); }); const port = 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); }); ``` We can send the following request to poison the cache: ``` {"text":"I hate you", "language":{"to":"nl","id":"undefined:en:nl:google:I love you"}} ``` Now, any user that attempts to translate "I love you" to Dutch, will get "I hate you" in Dutch as the response. Impact An attacker can control the results other users may get

Related

Alias · CVE (1)

  • CVE-2024-29042 Translate is a package that allows users to convert text to different languages on Node.js and the browser. vulnerability

Weakness · CWE (1)

  • CWE-20 Improper Input Validation weakness

References