Upgrade Semgrep past v1.75.0
Problem to solve
Upgrading the GitLab semgrep analyzer to semgrep v1.75.0 or beyond, causes the analyzer to flag vulnerabilities where previously it did not.
For example:
As of semgrep v1.75.0, Improper neutralization of input during web page generation Cross-site Scripting is now being detected in rule-express_xss.js#L27.
The rule:
mode: taint
pattern-sources:
- patterns:
- pattern: $REQ
- pattern: function ($REQ, $RES, ...) {...}
- patterns:
- pattern: $REQ
- pattern: function $FUNC($REQ, $RES, ...) {...}
pattern-propagators:
- pattern: $ARR.push($IN)
from: $IN
to: $ARR
pattern-sanitizers:
- pattern: "encodeURI(...)"
- pattern: "encodeURIComponent(...)"
pattern-sinks:
- pattern: $RES.send(...)
- pattern: $RES.write(...)
Code:
router.get('/safe/1', (req, res) => {
var name = encodeURI(req.query.name);
// ok: rules_lgpl_javascript_xss_rule-express-xss
res.send('index', { title: name });
})
Proposal
Research this change and its effect on the rules currently shipped with semgrep.
Edited by Craig Smith