-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
C#: Take more sources and sinks into account when reporting in the te…
…lemetry queries.
- Loading branch information
1 parent
8655032
commit 8a43909
Showing
3 changed files
with
165 additions
and
5 deletions.
There are no files selected for viewing
84 changes: 84 additions & 0 deletions
84
csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsinks/AllSinks.qll
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
/** Provides classes representing various flow sinks for data flow / taint tracking. */ | ||
|
||
private import semmle.code.csharp.dataflow.internal.ExternalFlow | ||
|
||
/** | ||
* Module that adds all sinks to `SinkNode`, excluding sinks for cryptography based | ||
* queries, and queries where sinks are not succifiently explicit. | ||
*/ | ||
private module AllSinks { | ||
private import ParallelSink as ParallelSink | ||
private import Remote as Remote | ||
private import semmle.code.csharp.security.dataflow.CodeInjectionQuery as CodeInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.ConditionalBypassQuery as ConditionalBypassQuery | ||
private import semmle.code.csharp.security.dataflow.ExposureOfPrivateInformationQuery as ExposureOfPrivateInformationQuery | ||
private import semmle.code.csharp.security.dataflow.HardcodedCredentialsQuery as HardcodedCredentialsQuery | ||
private import semmle.code.csharp.security.dataflow.LDAPInjectionQuery as LdapInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.LogForgingQuery as LogForgingQuery | ||
private import semmle.code.csharp.security.dataflow.MissingXMLValidationQuery as MissingXmlValidationQuery | ||
private import semmle.code.csharp.security.dataflow.ReDoSQuery as ReDosQuery | ||
private import semmle.code.csharp.security.dataflow.RegexInjectionQuery as RegexInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.ResourceInjectionQuery as ResourceInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.SqlInjectionQuery as SqlInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.TaintedPathQuery as TaintedPathQuery | ||
private import semmle.code.csharp.security.dataflow.UnsafeDeserializationQuery as UnsafeDeserializationQuery | ||
private import semmle.code.csharp.security.dataflow.UrlRedirectQuery as UrlRedirectQuery | ||
private import semmle.code.csharp.security.dataflow.XMLEntityInjectionQuery as XmlEntityInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.XPathInjectionQuery as XpathInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.XSSSinks as XssSinks | ||
private import semmle.code.csharp.security.dataflow.ZipSlipQuery as ZipSlipQuery | ||
|
||
private class ParallelSink extends SinkNode instanceof ParallelSink::ParallelSink { } | ||
|
||
private class RemoteSinkFlowSinks extends SinkNode instanceof Remote::RemoteFlowSink { } | ||
|
||
private class CodeInjectionSink extends SinkNode instanceof CodeInjectionQuery::Sink { } | ||
|
||
private class ConditionalBypassSink extends SinkNode instanceof ConditionalBypassQuery::Sink { } | ||
|
||
private class ExposureOfPrivateInformationSink extends SinkNode instanceof ExposureOfPrivateInformationQuery::Sink | ||
{ } | ||
|
||
private class HardcodedCredentialsSink extends SinkNode instanceof HardcodedCredentialsQuery::Sink | ||
{ } | ||
|
||
private class LdapInjectionSink extends SinkNode instanceof LdapInjectionQuery::Sink { } | ||
|
||
private class LogForgingSink extends SinkNode instanceof LogForgingQuery::Sink { } | ||
|
||
private class MissingXmlValidationSink extends SinkNode instanceof MissingXmlValidationQuery::Sink | ||
{ } | ||
|
||
private class ReDosSink extends SinkNode instanceof ReDosQuery::Sink { } | ||
|
||
private class RegexInjectionSink extends SinkNode instanceof RegexInjectionQuery::Sink { } | ||
|
||
private class ResourceInjectionSink extends SinkNode instanceof ResourceInjectionQuery::Sink { } | ||
|
||
private class SqlInjectionSink extends SinkNode instanceof SqlInjectionQuery::Sink { } | ||
|
||
private class TaintedPathSink extends SinkNode instanceof TaintedPathQuery::Sink { } | ||
|
||
private class UnsafeDeserializationSink extends SinkNode instanceof UnsafeDeserializationQuery::Sink | ||
{ } | ||
|
||
private class UrlRedirectSink extends SinkNode instanceof UrlRedirectQuery::Sink { } | ||
|
||
private class XmlEntityInjectionSink extends SinkNode instanceof XmlEntityInjectionQuery::Sink { } | ||
|
||
private class XpathInjectionSink extends SinkNode instanceof XpathInjectionQuery::Sink { } | ||
|
||
private class XssSink extends SinkNode instanceof XssSinks::Sink { } | ||
|
||
/** | ||
* Add all models as data sinks. | ||
*/ | ||
private class SinkNodeExternal extends SinkNode { | ||
SinkNodeExternal() { sinkNode(this, _) } | ||
} | ||
} | ||
|
||
/** | ||
* A data flow sink node. | ||
*/ | ||
abstract class SinkNode extends DataFlow::Node { } |
77 changes: 77 additions & 0 deletions
77
csharp/ql/lib/semmle/code/csharp/security/dataflow/flowsources/AllSources.qll
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
/** Provides classes representing various flow sources for data flow / taint tracking. */ | ||
|
||
private import semmle.code.csharp.dataflow.internal.ExternalFlow | ||
|
||
/** | ||
* Module that adds all sources to `SourceNode`, excluding source for cryptography based | ||
* queries, and queries where sources are not succifiently explicit or mainly hardcoded constants. | ||
*/ | ||
private module AllSources { | ||
private import FlowSources as FlowSources | ||
private import semmle.code.csharp.security.cryptography.HardcodedSymmetricEncryptionKey | ||
private import semmle.code.csharp.security.dataflow.CleartextStorageQuery as CleartextStorageQuery | ||
private import semmle.code.csharp.security.dataflow.CodeInjectionQuery as CodeInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.ConditionalBypassQuery as ConditionalBypassQuery | ||
private import semmle.code.csharp.security.dataflow.ExposureOfPrivateInformationQuery as ExposureOfPrivateInformationQuery | ||
private import semmle.code.csharp.security.dataflow.HardcodedCredentialsQuery as HardcodedCredentialsQuery | ||
private import semmle.code.csharp.security.dataflow.LDAPInjectionQuery as LdapInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.LogForgingQuery as LogForgingQuery | ||
private import semmle.code.csharp.security.dataflow.MissingXMLValidationQuery as MissingXmlValidationQuery | ||
private import semmle.code.csharp.security.dataflow.ReDoSQuery as ReDosQuery | ||
private import semmle.code.csharp.security.dataflow.RegexInjectionQuery as RegexInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.ResourceInjectionQuery as ResourceInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.SqlInjectionQuery as SqlInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.TaintedPathQuery as TaintedPathQuery | ||
private import semmle.code.csharp.security.dataflow.UnsafeDeserializationQuery as UnsafeDeserializationQuery | ||
private import semmle.code.csharp.security.dataflow.UrlRedirectQuery as UrlRedirectQuery | ||
private import semmle.code.csharp.security.dataflow.XMLEntityInjectionQuery as XmlEntityInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.XPathInjectionQuery as XpathInjectionQuery | ||
private import semmle.code.csharp.security.dataflow.ZipSlipQuery as ZipSlipQuery | ||
|
||
private class FlowSourcesSources extends SourceNode instanceof FlowSources::SourceNode { } | ||
|
||
private class CodeInjectionSource extends SourceNode instanceof CodeInjectionQuery::Source { } | ||
|
||
private class ConditionalBypassSource extends SourceNode instanceof ConditionalBypassQuery::Source | ||
{ } | ||
|
||
private class LdapInjectionSource extends SourceNode instanceof LdapInjectionQuery::Source { } | ||
|
||
private class LogForgingSource extends SourceNode instanceof LogForgingQuery::Source { } | ||
|
||
private class MissingXmlValidationSource extends SourceNode instanceof MissingXmlValidationQuery::Source | ||
{ } | ||
|
||
private class ReDosSource extends SourceNode instanceof ReDosQuery::Source { } | ||
|
||
private class RegexInjectionSource extends SourceNode instanceof RegexInjectionQuery::Source { } | ||
|
||
private class ResourceInjectionSource extends SourceNode instanceof ResourceInjectionQuery::Source | ||
{ } | ||
|
||
private class SqlInjectionSource extends SourceNode instanceof SqlInjectionQuery::Source { } | ||
|
||
private class TaintedPathSource extends SourceNode instanceof TaintedPathQuery::Source { } | ||
|
||
private class UnsafeDeserializationSource extends SourceNode instanceof UnsafeDeserializationQuery::Source | ||
{ } | ||
|
||
private class UrlRedirectSource extends SourceNode instanceof UrlRedirectQuery::Source { } | ||
|
||
private class XmlEntityInjectionSource extends SourceNode instanceof XmlEntityInjectionQuery::Source | ||
{ } | ||
|
||
private class XpathInjectionSource extends SourceNode instanceof XpathInjectionQuery::Source { } | ||
|
||
/** | ||
* Add all models as data sources. | ||
*/ | ||
private class SourceNodeExternal extends SourceNode { | ||
SourceNodeExternal() { sourceNode(this, _) } | ||
} | ||
} | ||
|
||
/** | ||
* A data flow source node. | ||
*/ | ||
abstract class SourceNode extends DataFlow::Node { } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters