Skip to content

Commit c5595f4

Browse files
committed
improve alert message for js/polynomial-redos
1 parent 86e33d9 commit c5595f4

2 files changed

Lines changed: 85 additions & 80 deletions

File tree

javascript/ql/src/Performance/PolynomialReDoS.ql

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@ import semmle.javascript.security.performance.PolynomialReDoS::PolynomialReDoS
1616
import semmle.javascript.security.performance.SuperlinearBackTracking
1717
import DataFlow::PathGraph
1818

19-
from Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink, Sink sinkNode
19+
from
20+
Configuration cfg, DataFlow::PathNode source, DataFlow::PathNode sink, Sink sinkNode,
21+
PolynomialBackTrackingTerm regexp
2022
where
2123
cfg.hasFlowPath(source, sink) and
2224
sinkNode = sink.getNode() and
25+
regexp = sinkNode.getRegExp() and
2326
not (
2427
source.getNode().(Source).getKind() = "url" and
25-
sinkNode.getRegExp().(PolynomialBackTrackingTerm).isAtEndLine()
28+
regexp.isAtEndLine()
2629
)
27-
select sinkNode.getHighlight(), source, sink, "This expensive $@ use depends on $@.",
28-
sinkNode.getRegExp(), "regular expression", source.getNode(), source.getNode().(Source).describe()
30+
select sinkNode.getHighlight(), source, sink,
31+
"This $@ that depends on $@ may run slow on strings " + regexp.getPrefixMessage() +
32+
"with many repetitions of '" + regexp.getPumpString() + "'.", regexp, "regular expression",
33+
source.getNode(), source.getNode().(Source).describe()

0 commit comments

Comments
 (0)