# -*- mode: org; org-confirm-babel-evaluate: nil; coding: utf-8 -*- #+OPTIONS: org-confirm-babel-evaluate:nil #+LANGUAGE: en #+TEXT: #+OPTIONS: ^:{} H:3 num:t \n:nil @:t ::t |:t ^:nil f:t *:t TeX:t LaTeX:t skip:nil p:nil #+OPTIONS: toc:nil #+HTML_HEAD: #+HTML:
#+TOC: headlines 3 insert TOC here, with two headline levels #+HTML:
# #+HTML:
* The notes directory This directory is for notes that may be useful, but aren't complete enough to serve as documentation in their current state. Think of it as staging for [[../docs]]. Short notes start as sections in this README. They will be moved if separate file make more sense. ** The typegraphs The type graph files are derived from a sarif input file, with various options controlling output. To produce dot maps of a sarif file type graph, from raw (largest) to fully filled (most compact): #+BEGIN_SRC sh cd ../data/treeio/2022-02-25 # Everything: ../../../bin/sarif-to-dot -t -d results.sarif | dot -Tpdf > typegraph-td.pdf # Suppress edges to int/bool/string types in dot graph ../../../bin/sarif-to-dot -td -n results.sarif | dot -Tpdf > typegraph-tdn.pdf # Additionally, only report unique array entry signatures ../../../bin/sarif-to-dot -td -nu results.sarif | dot -Tpdf > typegraph-tdnu.pdf # Additionally, fill in missing (optional) entries in sarif input before other steps. ../../../bin/sarif-to-dot -td -nuf results.sarif | dot -Tpdf > typegraph-tdnuf.pdf #+END_SRC ** Debugging the absence of automationDetails.id The =automationDetails.id= entry is produced by CodeQL when using the =--sarif-category= flag. The prerequisites for tracing its flow through the tools is started in [[../data/build-multiple-sarifs.sh]] For testing the following is injected into =sqlidb-1.1.sarif=. #+BEGIN_SRC text : ' "automationDetails" : { "id" : "mast-issue/" }, ' #+END_SRC *** Add repl as appropriate, then examine. Make sure the input is correct #+BEGIN_SRC sh :session shared :results output :eval never-export cd ~/local/sarif-cli/data/codeql-dataflow-sql-injection grep -A2 automationDetails sqlidb-1.1.sarif #+END_SRC #+RESULTS: : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection : "automationDetails" : { : "id" : "mast-issue/" : }, : : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection *** Create the CSV #+BEGIN_SRC sh :session shared :results output :eval never-export source ~/local/sarif-cli/.venv/bin/activate cd ~/local/sarif-cli/data/codeql-dataflow-sql-injection sarif-extract-scans-runner --input-signature CLI - > /dev/null < > (.venv) hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection #+end_example #+BEGIN_SRC sh :session shared :results output :eval never-export cd ~/local/sarif-cli/data/codeql-dataflow-sql-injection ls -la sqlidb-1.1* find sqlidb-1.1.sarif.scantables -print #+END_SRC #+RESULTS: #+begin_example hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection -rw-r--r-- 1 hohn staff 8.2K Jul 11 19:25 sqlidb-1.1.sarif -rw-r--r-- 1 hohn staff 326 Jul 12 16:39 sqlidb-1.1.sarif.csv -rw-r--r-- 1 hohn staff 72 Jul 12 16:39 sqlidb-1.1.sarif.scanspec sqlidb-1.1.sarif.scantables: total 16K drwxr-xr-x 6 hohn staff 192 Jul 12 16:39 ./ drwxr-xr-x 43 hohn staff 1.4K Jul 12 16:39 ../ -rw-r--r-- 1 hohn staff 622 Jul 12 16:39 codeflows.csv -rw-r--r-- 1 hohn staff 165 Jul 12 16:39 projects.csv -rw-r--r-- 1 hohn staff 589 Jul 12 16:39 results.csv -rw-r--r-- 1 hohn staff 343 Jul 12 16:39 scans.csv (.venv) hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection sqlidb-1.1.sarif.scantables sqlidb-1.1.sarif.scantables/codeflows.csv sqlidb-1.1.sarif.scantables/scans.csv sqlidb-1.1.sarif.scantables/results.csv sqlidb-1.1.sarif.scantables/projects.csv (.venv) hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection #+end_example *** Check if automationDetails or its value is in output #+BEGIN_SRC sh :session shared :results output :eval never-export cd ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables ag automationDetails | cat #+END_SRC #+RESULTS: : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables : projects.csv:1:"id","project_name","creation_date","repo_url","primary_language","languages_analyzed","automationDetails" : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables #+RESULTS: : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables #+RESULTS: : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables See if the magic value is present #+BEGIN_SRC sh :session shared :results output :eval never-export cd ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables ag mast-issue |cat #+END_SRC #+RESULTS: : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables : projects.csv:2:490227419655596076,"vcp-no-uri","1970-01-01","vcp-no-uri","unknown","unknown","mast-issue/" : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables #+RESULTS: : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables : (.venv) : hohn@gh-hohn ~/local/sarif-cli/data/codeql-dataflow-sql-injection/sqlidb-1.1.sarif.scantables *** Nothing is in the output, so trace execution to see where it's dropped #+BEGIN_SRC sh :session shared :results output :eval never-export cd ~/local/sarif-cli/notes && ag -l automationDetails ../sarif_cli |cat #+END_SRC #+RESULTS: : ../sarif_cli/scan_tables.py : ../sarif_cli/signature_single_CLI.py : ../sarif_cli/table_joins_CLI.py : ../sarif_cli/signature.py : (.venv) : hohn@gh-hohn ~/local/sarif-cli/notes *** Trace the call chain Trace the call chain to one of : ../sarif_cli/scan_tables.py : ../sarif_cli/table_joins_CLI.py : ../sarif_cli/signature.py Entry is #+BEGIN_SRC sh :session shared :results output :eval never-export sarif-extract-scans-runner --input-signature CLI - > /dev/null <