Improper Restriction of Operations within the Bounds of a Memory Buffer
RIOT 2020.04 has a buffer overflow in the base64 decoder. The decoding function base64_decode() uses an output buffer estimation function to compute the required buffer capacity and validate against the provided buffer size. The base64_estimate_decode_size() function calculates the expected decoded size with an arithmetic round-off error and does not take into account possible padding bytes. Due to this underestimation, it may be possible to craft base64 input that causes a buffer overflow.
CWE-119 - Buffer Overflow
Buffer overflow attacks involve data transit and operations exceeding the restricted memory buffer, thereby corrupting or overwriting data in adjacent memory locations. Such overflow allows the attacker to run arbitrary code or manipulate the existing code to cause privilege escalation, data breach, denial of service, system crash and even complete system compromise. Given that languages such as C and C++ lack default safeguards against overwriting or accessing data in their memory, applications utilizing these languages are most susceptible to buffer overflows attacks.