CVE-2021-0158 - Improper Input Validation

Severity

67%

Complexity

8%

Confidentiality

98%

Improper input validation in the BIOS firmware for some Intel(R) Processors may allow a privileged user to potentially enable escalation of privilege via local access.

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

CVSS 2.0 Base Score 4.6. CVSS Attack Vector: local. CVSS Attack Complexity: low. CVSS Vector: (AV:L/AC:L/Au:N/C:P/I:P/A:P).

Demo Examples

Improper Input Validation

CWE-20

This example demonstrates a shopping interaction in which the user is free to specify the quantity of items to be purchased and a total is calculated.


               
...

The user has no control over the price variable, however the code does not prevent a negative value from being specified for quantity. If an attacker were to provide a negative value, then the user would have their account credited instead of debited.

Improper Input Validation

CWE-20

This example asks the user for a height and width of an m X n game board with a maximum dimension of 100 squares.


               
.../* board dimensions */
die("No integer passed: Die evil hacker!\n");
die("No integer passed: Die evil hacker!\n");
die("Value too large: Die evil hacker!\n");

While this code checks to make sure the user cannot specify large, positive integers and consume too much memory, it does not check for negative values supplied by the user. As a result, an attacker can perform a resource consumption (CWE-400) attack against this program by specifying two, large negative values that will not overflow, resulting in a very large memory allocation (CWE-789) and possibly a system crash. Alternatively, an attacker can provide very large negative values which will cause an integer overflow (CWE-190) and unexpected behavior will follow depending on how the values are treated in the remainder of the program.

Improper Input Validation

CWE-20

The following example shows a PHP application in which the programmer attempts to display a user's birthday and homepage.


               
echo "Birthday: $birthday<br>Homepage: <a href=$homepage>click here</a>"

The programmer intended for $birthday to be in a date format and $homepage to be a valid URL. However, since the values are derived from an HTTP request, if an attacker can trick a victim into clicking a crafted URL with <script> tags providing the values for birthday and / or homepage, then the script will run on the client's browser when the web server echoes the content. Notice that even if the programmer were to defend the $birthday variable by restricting input to integers and dashes, it would still be possible for an attacker to provide a string of the form:


               
2009-01-09--

If this data were used in a SQL statement, it would treat the remainder of the statement as a comment. The comment could disable other security-related logic in the statement. In this case, encoding combined with input validation would be a more useful protection mechanism.

Furthermore, an XSS (CWE-79) attack or SQL injection (CWE-89) are just a few of the potential consequences when input validation is not used. Depending on the context of the code, CRLF Injection (CWE-93), Argument Injection (CWE-88), or Command Injection (CWE-77) may also be possible.

Improper Input Validation

CWE-20

This function attempts to extract a pair of numbers from a user-supplied string.


               
}
die("Did not specify integer value. Die evil hacker!\n");
/* proceed assuming n and m are initialized correctly */

This code attempts to extract two integer values out of a formatted, user-supplied input. However, if an attacker were to provide an input of the form:


               
123:

then only the m variable will be initialized. Subsequent use of n may result in the use of an uninitialized variable (CWE-457).

Improper Input Validation

CWE-20

The following example takes a user-supplied value to allocate an array of objects and then operates on the array.


               
}
list[0] = new Widget();
die("Negative value supplied for list size, die evil hacker!");

This example attempts to build a list from a user-specified value, and even checks to ensure a non-negative value is supplied. If, however, a 0 value is provided, the code will build an array of size 0 and then try to store a new Widget in the first location, causing an exception to be thrown.

Improper Input Validation

CWE-20

This application has registered to handle a URL when sent an intent:


               
}......
}
}
int length = URL.length();
...

The application assumes the URL will always be included in the intent. When the URL is not present, the call to getStringExtra() will return null, thus causing a null pointer exception when length() is called.

Overview

Type

Intel

First reported 3 years ago

2021-11-17 20:15:00

Last updated 3 years ago

2021-11-22 19:53:00

Affected Software

Intel Celeron N2805

Intel Celeron N2806

Intel Celeron N2807

Intel Celeron N2808

Intel Celeron N2810

Intel Celeron N2815

Intel Celeron N2820

Intel Celeron N2910

Intel Celeron N2920

Intel Celeron N3010

Intel Celeron N3050

Intel Celeron N3060

Intel Celeron N3150

Intel Celeron N3160

Intel Celeron N3350e

Intel Celeron N4020

Intel Celeron N4120

Intel Core i3-1005G1

Intel Core i3-10110U

Intel Core i3-10110Y

Intel Core i3-7100

Intel Core i3-7100H

Intel Core i3-7100T

Intel Core i3-7100U

Intel Core i3-7167U

Intel Core i3-7300

Intel Core i3-7300T

Intel Core i3-7320

Intel Core i3-7350K

Intel Core i3-8100

Intel Core i3-8100T

Intel Core i3-8109U

Intel Core i3-8130U

Intel Core i3-8145U

Intel Core i3-8300

Intel Core i3-8300T

Intel Core i3-8350K

Intel Core i5-10210U

Intel Core i5-10210Y

Intel Core i5-10310Y

Intel Core i5-1035G1

Intel Core i5-1035G4

Intel Core i5-1035G7

Intel Core i5-7200U

Intel Core i5-7260U

Intel Core i5-7267U

Intel Core i5-7287U

Intel Core i5-7300HQ

Intel Core i5-7300U

Intel Core i5-7360U

Intel Core i5-7400

Intel Core i5-7400T

Intel Core i5-7440EQ

Intel Core i5-7440HQ

Intel Core i5-7442EQ

Intel Core i5-7500

Intel Core i5-7500T

Intel Core i5-7600

Intel Core i5-7600K

Intel Core i5-7600T

Intel Core i5-7640X

Intel Core i5-7Y54

Intel Core i5-7Y57

Intel Core i5-8200Y

Intel Core i5-8210Y

Intel Core i5-8250U

Intel Core i5-8259U

Intel Core i5-8265U

Intel Core i5-8269U

Intel Core i5-8300H

Intel Core i5-8305G

Intel Core i5-8310Y

Intel Core i5-8350U

Intel Core i5-8365U

Intel Core i5-8400

Intel Core i5-8400B

Intel Core i5-8400H

Intel Core i5-8400T

Intel Core i5-8500

Intel Core i5-8500B

Intel Core i5-8500T

Intel Core i5-8600

Intel Core i5-8600K

Intel Core i5-8600T

Intel Core i7-10510U

Intel Core i7-10510Y

Intel Core i7-1065G7

Intel Core i7-10710U

Intel Core i7-3820

Intel Core i7-4820K

Intel Core i7-4930K

Intel Core i7-5820K

Intel Core i7-5930K

Intel Core i7-6800K

Intel Core i7-6900K

Intel Core i7-7500U

Intel Core i7-7560U

Intel Core i7-7567U

Intel Core i7-7600U

Intel Core i7-7660U

Intel Core i7-7700

Intel Core i7-7700HQ

Intel Core i7-7700K

Intel Core i7-7700T

Intel Core i7-7740X

Intel Core i7-7800X

Intel Core i7-7820EQ

Intel Core i7-7820HK

Intel Core i7-7820HQ

Intel Core i7-7820X

Intel Core i7-7920HQ

Intel Core i7-7Y75

Intel Core i7-8086K

Intel Core i7-8500Y

Intel Core i7-8550U

Intel Core i7-8557U

Intel Core i7-8559U

Intel Core i7-8565U

Intel Core i7-8569U

Intel Core i7-8650U

Intel Core i7-8665U

Intel Core i7-8665UE

Intel Core i7-8700

Intel Core i7-8700B

Intel Core i7-8700K

Intel Core i7-8700T

Intel Core i7-8705G

Intel Core i7-8706G

Intel Core i7-8709G

Intel Core i7-8750H

Intel Core i7-8809G

Intel Core i7-8850H

Intel Core i9-10900X

Intel Core i9-10920X

Intel Core i9-10940X

Intel Core i9-7900X

Intel Core i9-7920X

Intel Core i9-7940X

Intel Core i9-7960X

Intel Core i9-8950HK

Intel Core i9-9820X

Intel Core i9-9900X

Intel Core i9-9920X

Intel Core i9-9940X

Intel Core i9-9960X

Intel Pentium Silver J5040

Intel Pentium Silver N5030

Intel Xeon E-2124

Intel Xeon E-2124G

Intel Xeon E-2126G

Intel Xeon E-2134

Intel Xeon E-2136

Intel Xeon E-2144G

Intel Xeon E-2146G

Intel Xeon E-2174G

Intel Xeon E-2176G

Intel Xeon E-2176M

Intel Xeon E-2186G

Intel Xeon E-2186M

Intel Xeon E-2224

Intel Xeon E-2224G

Intel Xeon E-2226G

Intel Xeon E-2226GE

Intel Xeon E-2234

Intel Xeon E-2236

Intel Xeon E-2244G

Intel Xeon E-2246G

Intel Xeon E-2254ME

Intel Xeon E-2254ML

Intel Xeon E-2274G

Intel Xeon E-2276G

Intel Xeon E-2276M

Intel Xeon E-2276ME

Intel Xeon E-2276ML

Intel Xeon E-2278G

Intel Xeon E-2278GE

Intel Xeon E-2278GEL

Intel Xeon E-2286G

Intel Xeon E-2286M

Intel Xeon E-2288G

Intel Xeon E3-1220 V6

Intel Xeon E3-1225 V6

Intel Xeon E3-1230 V6

Intel Xeon E3-1240 V6

Intel Xeon E3-1245 V6

Intel Xeon E3-1270 V6

Intel Xeon E3-1275 V6

Intel Xeon E3-1280 V6

Intel Xeon E3-1285 v6

Intel Xeon E3-1501L v6

Intel Xeon E3-1501M v6

Intel Xeon E3-1505L v6

Intel Xeon E3-1505M V6

Intel Xeon E3-1535M V6

Intel Xeon W-2123

Intel Xeon W-2125

Intel Xeon W-2133

Intel Xeon W-2135

Intel Xeon W-2145

Intel Xeon W-2155

Intel Xeon W-2175

Intel Xeon W-2195

Intel Xeon W-2223

Intel Xeon W-2225

Intel Xeon W-2235

Intel Xeon W-2245

Intel Xeon W-2255

Intel Xeon W-2265

Intel Xeon W-2275

Intel Xeon W-2295

Intel Xeon W-3175X

Intel Xeon W-3223

Intel Xeon W-3225

Intel Xeon W-3245

Intel Xeon W-3245m

Intel Xeon W-3265

Intel Xeon W-3265m

Intel Xeon W-3275

Intel Xeon W-3275M

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.