Closed gagliardetto closed 3 years ago
@gagliardetto before investing effort in this, I would ask the question of each package: considering the sorts of data flow that CodeQL is used to search for (usually, remote / externally-controlled data -> exploitable parser or routine), how plausible is it that one of these packages might ever feature in that path? In particular that would mean libraries used to implement other libraries (e.g., http2?) are very unlikely to be good candidates, because the source and sink are likely to be in an application codebase, meaning only libraries directly used by an application would be good candidates.
Parts of golang.org/x/text seem the most plausible to me, but I haven't gone over them in detail -- I don't have a concrete plan right now, just suggesting giving them that quick plausibility test before investing much effort.
@smowton I thought the same thing: I'll do an initial evaluation to remove unsuitable packages, and then later tackle the list of what remains.
I then changed my mind because 90% of the work that will need to be put into this project is the actual evaluation (I won't write a single line of code; not codeql, nor go).
Doing an initial evaluation, and then a second evaluation for when I will create the models is double work.
The most time and effort efficient way seems to me is going into the raw (above) list and doing the evaluation on the spot, and then immediately creating the models.
@smowton You're right. A global initial evaluation is actually better.
I put a :red_circle: for packages I don't believe contain any valuable elements for TaintTracking
or UntrustedFlowSources
; packages that might contain something, but are either very big or ambiguous got a :orange_circle: ; packages I believe should be modeled got a :green_circle: .
I'll take another look in a few days and see whether I spot something else.
To be honest, I thought I would find more modelable stuff in /x :unamused:
https://github.com/github/codeql-go/pull/438 keeps its place as my next big project :blush:
Closing for future reopening.
Project proposal: Taint-track the golang.org/x/* packages.
Here is a list of the **top 100 golang.org/x/*** packages sorted by how many times they were imported (taken from here)
A package is relevant if it has elements that can be put into a
TaintTracking
model. Not all packages from the below list will be "relevant" at the end.I will use this ticket to track the progress.
Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10