JS: add model for chrome-remote-interface as a ClientRequest #2828
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
chrome-remote-interfaceis a somewhat often used library for remote controlling browsers.In CVE-2017-18355 the library was used to request a user controlled URL, and the contents of the URL was returned to the user. This allowed an arbitrary file read (by starting the URL with
file://).To support the CVE we only need to add a sink.
There are two options for which query the sink belongs to:
js/path-injectionorjs/request-forgery.I've chosen to model the sink as a
ClientRequest, as the sink sends a network request to an arbitrary URL, and the query is thereforejs/request-forgery.Here are some example projects that use the sink: https://lgtm.com/query/5288831567363067439/