CVE-2020-1421 - Access of Resource Using Incompatible Type ('Type Confusion')

Severity

88%

Complexity

27%

Confidentiality

98%

A remote code execution vulnerability exists in Microsoft Windows that could allow remote code execution if a .LNK file is processed.An attacker who successfully exploited this vulnerability could gain the same user rights as the local user, aka 'LNK Remote Code Execution Vulnerability'.

CVSS 3.1 Base Score 8.8. CVSS Attack Vector: network. CVSS Attack Complexity: low. CVSS Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H).

CVSS 2.0 Base Score 9.3. CVSS Attack Vector: network. CVSS Attack Complexity: medium. CVSS Vector: (AV:N/AC:M/Au:N/C:C/I:C/A:C).

Demo Examples

Access of Resource Using Incompatible Type ('Type Confusion')

CWE-843

Access of Resource Using Incompatible Type ('Type Confusion')

CWE-843

Access of Resource Using Incompatible Type ('Type Confusion')

CWE-843

The following Perl code is intended to look up the privileges for user ID's between 0 and 3, by performing an access of the $UserPrivilegeArray reference. It is expected that only userID 3 is an admin (since this is listed in the third element of the array).


               
print "\$UserPrivilegeArray = $UserPrivilegeArray\n";
print "Regular user!\n";
print "Admin!\n";

In this case, the programmer intended to use "$UserPrivilegeArray->{$userID}" to access the proper position in the array. But because the subscript was omitted, the "user" string was compared to the scalar representation of the $UserPrivilegeArray reference, which might be of the form "ARRAY(0x229e8)" or similar.

Since the logic also "fails open" (CWE-636), the result of this bug is that all users are assigned administrator privileges.

While this is a forced example, it demonstrates how type confusion can have security consequences, even in memory-safe languages.

Overview

Type

Microsoft Windows

First reported 4 years ago

2020-07-14 23:15:00

Last updated 4 years ago

2020-07-23 19:48:00

Affected Software

Microsoft Windows 10 64-bit

Microsoft Windows 10 32-bit

Microsoft Windows 10 1607 64-bit

1607

Microsoft Windows 10 1607 32-bit

1607

Microsoft Windows 10 1709 64 bit

1709

Microsoft Windows 10 1709 32-bit

1709

Microsoft Windows 10 1803 on x64

1803

Microsoft Windows 10 1809 on ARM64

1809

Microsoft Windows 10 1809 on x64

1809

Microsoft Windows 10 1903 64-bit

1903

Microsoft Windows 10 1909 64-bit

1909

Microsoft Windows 10 2004 on x64

2004

Microsoft Windows Server 2016

Microsoft Windows Server 2016 1909

1909

Microsoft Windows Server 2019

Stay updated

ExploitPedia is constantly evolving. Sign up to receive a notification when we release additional functionality.

Get in touch

If you'd like to report a bug or have any suggestions for improvements then please do get in touch with us using this form. We will get back to you as soon as we can.