Crypt::Sodium::XS версий до 0.001000 для Perl имеет потенциальные целочисленные переполнения. Комбинированное шифрование aead, комбинированное создание подписи и функции bin2hex не проверяют, будет ли выходной размер меньше SIZE_MAX, что может привести к целочисленному переносу, вызывающему недостаточный размер выходного буфера. Это может вызвать сбой в bin2hex и других алгоритмах шифрования, кроме aes256gcm.
Для шифрования и подписей aes256gcm буфер недостаточного размера может привести к его переполнению. Столкновение с этой проблемой маловероятно, поскольку длина сообщения должна быть очень большой. Для bin2hex размер ввода должен быть > SIZE_MAX / 2.
Для шифрования Aegis размер ввода должен быть > SIZE_MAX - 32U. Для другого шифрования размер ввода должен быть > SIZE_MAX - 16U. Для подписей размер ввода должен быть > SIZE_MAX - 64U.
Показать оригинальное описание (EN)
Crypt::Sodium::XS versions through 0.001000 for Perl has potential integer overflows. Combined aead encryption, combined signature creation, and bin2hex functions do not check that output size will be less than SIZE_MAX, which could lead to integer wraparound causing an undersized output buffer. This can cause a crash in bin2hex and encryption algorithms other than aes256gcm. For aes256gcm encryption and signatures, an undersized buffer could lead to buffer overflow. Encountering this issue is unlikely as the message length would need to be very large. For bin2hex the input size would have to be > SIZE_MAX / 2 For aegis encryption the input size would need to be > SIZE_MAX - 32U For other encryption the input size would need to be > SIZE_MAX - 16U For signatures the input size would need to be > SIZE_MAX - 64U