Multiple memory corruption vulnerabilities have been discovered in the ncurses library, which various programs use on multiple operating systems like Portable Operating System Interface (POSIX) OS, Linux OS, macOS, and FreeBSD.
Threat actors can chain these vulnerabilities with environment variable poisoning attacks to gain escalated privileges and run codes under the name of the target program or perform other malicious actions.
Memory corruption is one of the common vulnerabilities found in modern programs that could allow threat actors to gain unauthorized access by modifying a program’s memory. The impact of this vulnerability ranges from leaking sensitive information to executing arbitrary code with escalated privileges.
However, Microsoft has disclosed these vulnerabilities with the ncurses maintainers, which have now been successfully patched.
With DoControl, you can keep your SaaS applications and data safe and secure by creating workflows tailored to your needs. It’s an easy and efficient way to identify and manage risks. You can mitigate the risk and exposure of your organization’s SaaS applications in just a few simple steps.
CVE-2023-29491: Memory Corruption via malformed data
This vulnerability exists in the ncurses library before 6.4 20230408, which could allow threat actors with local privileges to trigger security-based memory corruption. This can be done with the help of malformed data in the terminfo database file, which is found in $HOME/.terminfo, or with environment variables like TERMINFO or TERM.
This particular vulnerability is associated with several internal things, such as Heap out-of-bounds during terminfo database file parsing, parameterized string type confusion, stack information leak, and denial of service with canceled strings.
Terminfo database file consists of optional extended entries like Boolean, numeric, and strings. These entries are user-defined entries and are parsed by the _nc_read_termtype function, which was found to be capable of writing beyond the boundaries of a heap-allocated chunk.
The ncurses source code looks for CANCELLED_STRING and converts them to ABSENT_STRING, which is done only for ordinary strings, whereas extended strings do not get converted. Additionally, strings beginning with “k” are treated as keypad functionality, which can allow a threat actor to specify an extended string, resulting in ncurses dereference eventually causing a denial of service.
Microsoft has published a complete report about these vulnerabilities, providing detailed information about variable poisoning, exploitation, and other information.
Users are recommended to upgrade to the latest version of the ncurses library in order to prevent this vulnerability from getting exploited.