github / github/codeql

JavaScript: Functions flowing through arrays

Abierto
#18,180 1 comentario 0 reacciones 0 asignados Ver en GitHub
question
Lenguaje dominante
CodeQL
Estrellas
10.1k
Forks
2.1k
Merge medio
2 d 15 h
PR fusionados (30 d)
141

Descripción

Taint analysis seems to not work for arrays:
```js
const fs = require('fs')

function readFileHelper(p) {
fs.readFile(p) // <- detected
}

function readFileHelper2(p) {
fs.readFile(p) // <- not detected
}

const reads = [
readFileHelper2
]

const v = process.argv[2];

readFileHelper(v) // work
const res = reads.map(d => d(v)); // not working
for (let d of reads) {
d(v); // not working
}
reads[0](v); // not working
[readFileHelper2].map(d => d(v)); // not working
```
```ql
import javascript

class CommandLineFileNameConfiguration extends TaintTracking::Configuration {
CommandLineFileNameConfiguration() { this = "CommandLineFileNameConfiguration" }

override predicate isSource(DataFlow::Node source) {
DataFlow::globalVarRef("process").getAPropertyRead("argv").getAPropertyRead() = source
}

override predicate isSink(DataFlow::Node sink) {
DataFlow::moduleMember("fs", "readFile").getACall().getArgument(0) = sink
}
}

from CommandLineFileNameConfiguration cfg, DataFlow::Node source, DataFlow::Node sink
where cfg.hasFlow(source, sink)
select source, sink
```
It found `readFileHelper` but not `readFileHelper2`.

There is related issue https://github.com/github/codeql/issues/5177

Pinging gently @erik-krogh

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.