Add a superclass for credential nodes

This commit is contained in:
Ed Minnix
2023-08-22 11:31:14 -04:00
parent 3219edc603
commit ee6cb96d07
2 changed files with 12 additions and 19 deletions

View File

@@ -58,12 +58,7 @@ abstract class CredentialsSink extends Expr {
* credentials.
*/
class CredentialsApiSink extends CredentialsSink {
CredentialsApiSink() {
this = any(PasswordParameter p).asExpr() or
this = any(UsernameParameter p).asExpr() or
this = any(CryptoKeyParameter p).asExpr() or
this = any(CredentialParameter p).asExpr()
}
CredentialsApiSink() { this = any(CredentialSinkNode csn).asExpr() }
}
/**

View File

@@ -6,32 +6,30 @@ import java
private import semmle.code.java.dataflow.DataFlow
private import semmle.code.java.dataflow.ExternalFlow
/**
* A node which represents the use of a credential.
*/
abstract class CredentialSinkNode extends DataFlow::Node { }
/**
* A node representing a password being passed to a method.
*/
class PasswordParameter extends DataFlow::Node {
PasswordParameter() { sinkNode(this, "credential-password") }
class PasswordSink extends CredentialSinkNode {
PasswordSink() { sinkNode(this, "credential-password") }
}
/**
* A node representing a username being passed to a method.
*/
class UsernameParameter extends DataFlow::Node {
UsernameParameter() { sinkNode(this, "credential-username") }
class UsernameSink extends CredentialSinkNode {
UsernameSink() { sinkNode(this, "credential-username") }
}
/**
* A node representing a cryptographic key being passed to a method.
*/
class CryptoKeyParameter extends DataFlow::Node {
CryptoKeyParameter() { sinkNode(this, "crypto-parameter") }
}
/**
* A node representing a credential being passed to a method.
*/
class CredentialParameter extends DataFlow::Node {
CredentialParameter() { sinkNode(this, "credential-other") }
class CryptoKeySink extends CredentialSinkNode {
CryptoKeySink() { sinkNode(this, "crypto-parameter") }
}
/**