mirror of
https://github.com/github/codeql.git
synced 2026-04-30 11:15:13 +02:00
add taint-step for serialize-javascript
This commit is contained in:
@@ -29,7 +29,8 @@ private class PlainJsonParserCall extends JsonParserCall {
|
||||
callee = DataFlow::moduleImport("parse-json") or
|
||||
callee = DataFlow::moduleImport("json-parse-better-errors") or
|
||||
callee = DataFlow::moduleImport("json-safe-parse") or
|
||||
callee = AngularJS::angular().getAPropertyRead("fromJson")
|
||||
callee = AngularJS::angular().getAPropertyRead("fromJson") or
|
||||
callee = DataFlow::moduleImport("serialize-javascript")
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,17 @@ module Shared {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A call to `serialize-javascript`, which prevents XSS vulnerabilities unless
|
||||
* the `unsafe` option is set.t
|
||||
*/
|
||||
class SerializeJavascriptSanitizer extends Sanitizer, DataFlow::CallNode {
|
||||
SerializeJavascriptSanitizer() {
|
||||
this = DataFlow::moduleImport("serialize-javascript").getACall() and
|
||||
not this.getOptionArgument(1, "unsafe").mayHaveBooleanValue(true)
|
||||
}
|
||||
}
|
||||
|
||||
private import semmle.javascript.security.dataflow.IncompleteHtmlAttributeSanitizationCustomizations::IncompleteHtmlAttributeSanitization as IncompleteHTML
|
||||
|
||||
/**
|
||||
@@ -359,6 +370,9 @@ module DomBasedXss {
|
||||
|
||||
private class UriEncodingSanitizer extends Sanitizer, Shared::UriEncodingSanitizer { }
|
||||
|
||||
private class SerializeJavascriptSanitizer extends Sanitizer, Shared::SerializeJavascriptSanitizer {
|
||||
}
|
||||
|
||||
private class IsEscapedInSwitchSanitizer extends Sanitizer, Shared::IsEscapedInSwitchSanitizer { }
|
||||
|
||||
private class QuoteGuard extends SanitizerGuard, Shared::QuoteGuard { }
|
||||
@@ -497,6 +511,9 @@ module ReflectedXss {
|
||||
|
||||
private class UriEncodingSanitizer extends Sanitizer, Shared::UriEncodingSanitizer { }
|
||||
|
||||
private class SerializeJavascriptSanitizer extends Sanitizer, Shared::SerializeJavascriptSanitizer {
|
||||
}
|
||||
|
||||
private class IsEscapedInSwitchSanitizer extends Sanitizer, Shared::IsEscapedInSwitchSanitizer { }
|
||||
|
||||
private class QuoteGuard extends SanitizerGuard, Shared::QuoteGuard { }
|
||||
@@ -534,6 +551,9 @@ module StoredXss {
|
||||
|
||||
private class UriEncodingSanitizer extends Sanitizer, Shared::UriEncodingSanitizer { }
|
||||
|
||||
private class SerializeJavascriptSanitizer extends Sanitizer, Shared::SerializeJavascriptSanitizer {
|
||||
}
|
||||
|
||||
private class IsEscapedInSwitchSanitizer extends Sanitizer, Shared::IsEscapedInSwitchSanitizer { }
|
||||
|
||||
private class QuoteGuard extends SanitizerGuard, Shared::QuoteGuard { }
|
||||
|
||||
Reference in New Issue
Block a user