SB2020101806 - Multiple vulnerabilities in Lua



SB2020101806 - Multiple vulnerabilities in Lua

Published: October 18, 2020 Updated: November 19, 2020

Security Bulletin ID SB2020101806
Severity
Medium
Patch available
YES
Number of vulnerabilities 4
Exploitation vector Remote access
Highest impact Code execution

Breakdown by Severity

High 25% Medium 75%
  • Low
  • Medium
  • High
  • Critical

Description

This security bulletin contains information about 4 secuirty vulnerabilities.


1) Out-of-bounds read (CVE-ID: CVE-2020-15889)

The vulnerability allows a remote attacker to perform a denial of service (DoS) attack.

The vulnerability exists due to getobjname heap-based buffer over-read within the youngcollection() function in lgc.c that uses markold for an insufficient number of list members. A remote attacker can perform a denial of service attack.


2) Heap-based buffer overflow (CVE-ID: CVE-2020-15888)

The vulnerability allows a remote attacker to execute arbitrary code on the target system.

The vulnerability exists due to a boundary error during interaction between stack resizes and garbage collection in ldo.c file. A remote attacker can pass specially crafted data to the application, trigger heap-based buffer overflow and execute arbitrary code on the target system.

Successful exploitation of this vulnerability may result in complete compromise of vulnerable system.


3) Memory corruption (CVE-ID: CVE-2020-15945)

The vulnerability allows a remote attacker to perform a denial of service (DoS) attack.

The vulnerability exists due to a segmentation fault in changedline in ldebug.c (e.g., when called by luaG_traceexec) because it incorrectly expects that an oldpc value is always updated upon a return of the flow of control to a function. A remote attacker can pass specially crafted data to the application and crash it.


4) Buffer overflow (CVE-ID: CVE-2020-24342)

The vulnerability allows a remote attacker to execute arbitrary code on the target system.

The vulnerability exists due to a stack redzone cross in luaO_pushvfstring because a protection mechanism wrongly calls luaD_callnoyield twice in a row. A remote attacker can pass specially crafted data to the application, trigger memory corruption and execute arbitrary code on the target system.

Successful exploitation of this vulnerability may result in complete compromise of vulnerable system.


Remediation

Install update from vendor's website.