Botan before 3.6.0, when certain GCC versions are used, has a compiler-induced secret-dependent operation in lib/utils/donna128.h in donna128 (used in Chacha-Poly1305 and x25519). An addition can be skipped if a carry is not set. This was observed for GCC 11.3.0 with -O2 on MIPS, and GCC on x86-i386. (Only 32-bit processors can be affected.)
{
"binaries": [
{
"binary_version": "2.4.0-5ubuntu1",
"binary_name": "botan"
},
{
"binary_version": "2.4.0-5ubuntu1",
"binary_name": "libbotan-2-4"
},
{
"binary_version": "2.4.0-5ubuntu1",
"binary_name": "libbotan-2-dev"
},
{
"binary_version": "2.4.0-5ubuntu1",
"binary_name": "python3-botan"
}
]
}{
"binaries": [
{
"binary_version": "2.12.1-2build1",
"binary_name": "botan"
},
{
"binary_version": "2.12.1-2build1",
"binary_name": "libbotan-2-12"
},
{
"binary_version": "2.12.1-2build1",
"binary_name": "libbotan-2-dev"
},
{
"binary_version": "2.12.1-2build1",
"binary_name": "python3-botan"
}
]
}{
"binaries": [
{
"binary_version": "2.19.1+dfsg-2ubuntu1+esm1",
"binary_name": "botan"
},
{
"binary_version": "2.19.1+dfsg-2ubuntu1+esm1",
"binary_name": "libbotan-2-19"
},
{
"binary_version": "2.19.1+dfsg-2ubuntu1+esm1",
"binary_name": "libbotan-2-dev"
},
{
"binary_version": "2.19.1+dfsg-2ubuntu1+esm1",
"binary_name": "python3-botan"
}
],
"availability": "Available with Ubuntu Pro: https://ubuntu.com/pro"
}{
"binaries": [
{
"binary_version": "2.19.3+dfsg-1ubuntu2+esm1",
"binary_name": "botan"
},
{
"binary_version": "2.19.3+dfsg-1ubuntu2+esm1",
"binary_name": "libbotan-2-19"
},
{
"binary_version": "2.19.3+dfsg-1ubuntu2+esm1",
"binary_name": "libbotan-2-dev"
},
{
"binary_version": "2.19.3+dfsg-1ubuntu2+esm1",
"binary_name": "python3-botan"
}
],
"availability": "Available with Ubuntu Pro: https://ubuntu.com/pro"
}