News for hackers. Stuff that matters.
Re:20% of all Node.js modules found vulnerable to injection ... by tonyarkles on Monday March 12, 2018 @11:18AM (#16568687)
Further on:

> 18,924 of all 51,627 call sites are found to be statically safe (36.66%)

> The templates for the vast majority of call sites have at most one hole, and very few templates contain more than five.

If you've got a dependency that calls eval or exec, those aren't great odds that they're doing it safely.

Re:20% of all Node.js modules found vulnerable to injection ... by acdha on Monday March 12, 2018 @12:02PM (#16569023)
That still requires you to know whether either is being called with user-provided values before you can say it's unsafe.

If, for example, someone had a utility which resized user-uploaded images you couldn't say simply calling exec to run something like ImageMagick was unsafe before checking whether it used the user's filename.

Re:20% of all Node.js modules found vulnerable to injection ... by tonyarkles on Monday March 12, 2018 @02:25PM (#16570224)
I think that's what they're saying in those quoted lines though. That 36% appeared to be statically-safe (i.e. the string sent to eval or exec was generated using only strings defined in the code) and the others were not.
Re:20% of all Node.js modules found vulnerable to injection ... by acdha on Monday March 12, 2018 @04:32PM (#16571310)
True — it wasn't clear to me whether e.g. a random temporary filename would be considered static or only actual fixed strings in the code. (Similar questions would arise if e.g. a web app saved things using a database primary key so it's technically not static but the attacker doesn't control it even if they control the file contents)
Re:20% of all Node.js modules found vulnerable to injection ... by tonyarkles on Tuesday March 13, 2018 @08:35AM (#16575595)
Ahhhhh nice, I hadn't considered the "random temporary filename" or "db primary key" aspect either. That's something that gives me a small chill, but it's not the end of the world compared to "arbitrary user input piped to exec()"

Who knows how elaborate their static analyzer actually is in practice? I wrote a Python analyzer in grad school, and the results were both pretty interesting (type inference tracing through function calls) and pretty mediocre. It was also fiddly-as-hell to get working. Plus... the first rule of statically-analyzing dynamic languages is that the results get weird after the first eval()--anything could happen!

Re:20% of all Node.js modules found vulnerable to injection ... by acdha on Tuesday March 13, 2018 @09:14AM (#16575814)
Yeah, as a developer I see plenty of appeals to dynamic languages but they’re certainly a nightmare for tool authors. I know OpenStack was working on a security scanner for Python – I wonder what percentage of the open issues start with “this is probably very hard but…”