Package: libstring-compare-constanttime-perl Version: 0.321-3 Severity: important X-Debbugs-Cc: [email protected]
Dear Maintainer, I noticed on Trixie that my code using String::Compare::ConstantTime would randomly crash. In debugging it, I isolated the problem to the patch included in Debian for CVE-2024-13939 seen here: https://sources.debian.org/patches/libstring-compare-constanttime-perl/0.321-3/ The patch constructs a memory address from two different pointers, which, if the high bits of one pointer does not match the high bits of the other pointer, points to a random memory location. Reading from that location causes a segfault: + unsigned char *s; + unsigned char r; + uintptr_t mask; + + /* Orchestrate a dummy compare which never matches and whose run-time does + * not stand out if a_len != b_len */ + r = (a_len != b_len); + /* Branching-less: s = (r) ? b : a */ + mask = 0u - r; + s = (unsigned char *)(((uintptr_t)b & mask) | ((uintptr_t)a & ~mask)); + + for (i = 0; i < b_len; i++) { + r |= *s++ ^ *b++; } For more details and a reproducer, see: https://github.com/hoytech/String-Compare-ConstantTime/pull/21/#pullrequestreview-4345646603 Thanks, -- Matthew Horsfall (alh) -- System Information: Debian Release: 13.5 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 6.16.3+deb13-amd64 (SMP w/4 CPU threads; PREEMPT) Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: sysvinit (via /sbin/init) LSM: AppArmor: enabled Versions of packages libstring-compare-constanttime-perl depends on: ii libc6 2.41-12+deb13u3 ii perl 5.40.1-6 ii perl-base [perlapi-5.40.1] 5.40.1-6 libstring-compare-constanttime-perl recommends no packages. libstring-compare-constanttime-perl suggests no packages. -- no debconf information

