Security Survey 63% have no active monitoring of vulnerabilities! 70% have never banned the usage of a component! only 21% have policies to show secure 3rd party source code
one dependency that is disclosed as vulnerable? What is the cascading effect of modules depending on at least one vulnerable module? What is the time latency for updating to a non-vulnerable version range for a dependency? RQ1 RQ2 RQ3 RESEARCH QUESTIONS Answering it both Qualitatively & Quantitatively!
Advisory range <=1.5.1 These are vuln versions for bassmaster Declared dependency range “~0. 0.2” -> “>=0.0.2 <0.1.0” vuln versions for this module Will this resolve range resolve to a vuln version? var maxSatis = semver.maxSatisfying (all_versions_list, semver.range(~0. 0.2)); //0.0.2 Yes! PRE-STEP IDENTIFY VULN
range) will resolve to a vulnerable version! • Mixed range - contains both valid vulnerable and non- vulnerable versions in the range but will most likely resolve to a non-vuln version! TWO RANGES Food for thought: How should we view this?
2013 54 -16.67% connect July 1, 2013 299 -11.71% validator-v1 July 5, 2013 48 -8.33% marked January 31, 2014 279 -14.34% st February 6, 2014 3 0.00% qs August 6, 2014 187 -20.32% send September 12, 2014 99 -11.11% Reduction from publication timestamp to 12 Oct 2014
months ago ◦ connect: 4 to 9 months ◦ js-yaml: 4.4 to 11 months ◦ validator-v1: 2 to 4.6 months • Advisories released roughly 8 months ago: ◦ hapi-v2: 57 to 84 days ◦ marked: 1.28 and 6.5 months ◦ st: 22.5 days to 84 days • Advisories that were released 3 months ago: ◦ hapi-v6: 13 and 44 days ◦ qs: 5.5 and 14 days ◦ send: 5 to 16 days Middle 50% From 12 Oct 2014
we trigger the vulnerability? • Cascading dependencies: is the vulnerability propagated? CODE INSPECTION > How effective is analyzing dependency declarations? We need to see that it is actually in the code!
be more creative to find novel solutions; ◦ Partly is static and dynamic analysis, but we need look beyond other means! ◦ Can data-driven approaches be leveraged to make better models for program understanding? • See Ali Mesbah’s SANER’16 Talk: Software Analysis for the Web
our dependency hygiene! This is just an “initial study” - We need to investigate more challenges and problems with high dependency use - Development practises; how is risk calculated with using dependencies? e.g we have seen cases where there are security holes that are costly - How do we develop architectures that allows for fast patching or rank libraries for that matter? - This explores open-source projects; how does it look at industry projects?