Skip to content

Commit a1ee900

Browse files
committed
treat Base64 manipulations as non-sinks
1 parent b49ca6a commit a1ee900

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/CoreKnowledge.qll

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,7 @@ predicate isOtherModeledArgument(DataFlow::Node n, FilteringReason reason) {
205205
exists(DataFlow::FunctionNode f | call = f.getLastParameter().getACall()) and
206206
reason instanceof NextFunctionCallReason
207207
)
208+
or
209+
(exists(Base64::Decode d | n = d.getInput()) or exists(Base64::Encode d | n = d.getInput())) and
210+
reason instanceof Base64ManipulationReason
208211
}

javascript/ql/experimental/adaptivethreatmodeling/lib/experimental/adaptivethreatmodeling/FilteringReasons.qll

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ newtype TFilteringReason =
2929
TArgumentToArrayReason() or
3030
TArgumentToBuiltinGlobalVarRefReason() or
3131
TConstantReceiverReason() or
32-
TBuiltinCallNameReason()
32+
TBuiltinCallNameReason() or
33+
TBase64ManipulationReason()
3334

3435
/** A reason why a particular endpoint was filtered out by the endpoint filters. */
3536
abstract class FilteringReason extends TFilteringReason {
@@ -194,3 +195,9 @@ class BuiltinCallNameReason extends NotASinkReason, TBuiltinCallNameReason {
194195

195196
override int getEncoding() { result = 27 }
196197
}
198+
199+
class Base64ManipulationReason extends NotASinkReason, TBase64ManipulationReason {
200+
override string getDescription() { result = "Base64Manipulation" }
201+
202+
override int getEncoding() { result = 28 }
203+
}

0 commit comments

Comments
 (0)