Code Monkey home page Code Monkey logo

narrow's People

Contributors

dependabot[bot] avatar josiahone avatar philipatduo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

narrow's Issues

[META] Import Only Mode

Consider an "import only" mode that takes in a target import and tries to see if that's used anywhere. While less precise, it's less vulnerable to language difficulties like functors and lambdas which may still make it useful in many cases.

[META] Broader language support / modularization of program analysis pipeline

Think about how to add support for new languages. Ideally this shouldn't require tons of re-work and we should be able to re-use part of what we have.

We could even consider relying fully on other systems to do parts of the pipeline. e.g. semgrep can dump ASTs for many languages. Control flow graph generation is extra tricky and I haven't yet seen a single mechanism for doing this across languages.

[META] Run control flow backwards?

If you tell a human to determine whether a vulnerable function is being used they'll almost certainly do the data flow backwards: start by grepping for the vulnerable function, find it in code, and go backwards looking for function calls to the definition.

Is there anything we can gleam for narrow here? Generally humans are using IDEs that already do function reference detection, which are usually forward-propogating analyses, so perhaps not. Still, in theory doing this would reduce how much we have to analyze. Right now we may recurse through imports / function calls in dependencies we don't care about at all.

Include different narrower policies so users can configure how they want output data modified (if at all)

Include different narrower policies so users can configure how they want output data modified (if at all). Some options:
In general:

  Option to treat "unknowns" (e.g. no patch available for analysis) as "predicted as relevant" (conservative)

    
  Option to treat "unknowns" as "predicated as NOT relevant" (noise reduction)

For the error code:

  Exit code equals how many vulns were predicted to affect the project

    
  Exit code equals how many vulns were not predicted to affect the project

    
  Always return 0

For the krefst output data:

  Increase CVSS for each vuln if predicted to affect the project

    
  Reduce CVSS for each vuln if predicted to not affected the project

For the CycloneDX output data (severities):

  Add new vuln rating (a Narrow rating) with CVSS score increased if vuln is predicted to affect the project

    
  Add new vuln rating (a Narrow rating) with CVSS score decreased if vuln is predicted to not affect the project

For the CycloneDX output data (analysis):

  Assign exploitable for each vuln predicted to affect the project

    
  Assign not_affected (and justification set to code_not_reachable) for each vuln predicted to not affect the project

    
  Assign in-triage if unknown

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.