[tbb-commits] [tor-browser-spec] branch master updated: Bug 40028: Create issue template for network audits
gitolite role
git at cupani.torproject.org
Thu May 5 20:52:57 UTC 2022
This is an automated email from the git hooks/post-receive script.
richard pushed a commit to branch master
in repository tor-browser-spec.
The following commit(s) were added to refs/heads/master by this push:
new a437cf1 Bug 40028: Create issue template for network audits
a437cf1 is described below
commit a437cf18f2f7cd239f4b5fb3137e840082756b31
Author: Richard Pospesel <richard at torproject.org>
AuthorDate: Mon Apr 4 23:11:17 2022 +0000
Bug 40028: Create issue template for network audits
- also update code_audit.sh to also print a commit's message/hash
for further investigation, save reports in script directory, a
renamed reports to include repo folder name, added cc and hh
file extensions to c/cpp filter, changed arg order to make it
easer to change filter for same commit range
---
.gitlab/issue_templates/Firefox Issue Audit.md | 113 +++++++++++++++++++++++++
audits/code_audit.sh | 70 ++++++++++++---
2 files changed, 169 insertions(+), 14 deletions(-)
diff --git a/.gitlab/issue_templates/Firefox Issue Audit.md b/.gitlab/issue_templates/Firefox Issue Audit.md
new file mode 100644
index 0000000..81f781f
--- /dev/null
+++ b/.gitlab/issue_templates/Firefox Issue Audit.md
@@ -0,0 +1,113 @@
+# General
+
+The audit begins at the commit hash where the previous audit ended. Use code_audit.sh for creating the diff and highlighting potentially problematic code. The audit is scoped to a specific language (currently C/C++, Rust, Java/Kotlin, and Javascript).
+
+The output includes the entire patch where the new problematic code was introduced. Search for `XXX MATCH XXX` to find the next potential violation.
+
+`code_audit.sh` contains the list of known problematic APIs. New usage of these functions are documented and analyzed in this audit.
+
+## Firefox: https://github.com/mozilla/gecko-dev.git
+
+- Start: `$(FIRST_GIT_HASH)` ( `$(START_TAG)` )
+- End: `$(LAST_GIT_HASH)` ( `$(END_TAG)` )
+
+### Languages:
+- [ ] java
+- [ ] cpp
+- [ ] js
+- [ ] rust
+
+Nothing of interest (using `code_audit.sh`)
+
+**OR**
+
+### foreach PROBLEMATIC_HASH:
+#### $(PROBLEMATIC_HASH)
+- Summary
+- Review Result: (SAFE|BAD)
+
+---
+
+## Application Services: https://github.com/mozilla/application-services.git
+
+- Start: `$(FIRST_GIT_HASH)` ( `$(START_TAG)` )
+- End: `$(LAST_GIT_HASH)` ( `$(END_TAG)` )
+
+### Languages:
+- [ ] java
+- [ ] cpp
+- [ ] js
+- [ ] rust
+
+Nothing of interest (using `code_audit.sh`)
+
+**OR**
+
+### foreach PROBLEMATIC_HASH:
+#### $(PROBLEMATIC_HASH)
+- Summary
+- Review Result: (SAFE|BAD)
+
+## Android Components: https://github.com/mozilla-mobile/android-components.git
+
+- Start: `$(FIRST_GIT_HASH)` ( `$(START_TAG)` )
+- End: `$(LAST_GIT_HASH)` ( `$(END_TAG)` )
+
+### Languages:
+- [ ] java
+- [ ] cpp
+- [ ] js
+- [ ] rust
+
+Nothing of interest (using `code_audit.sh`)
+
+**OR**
+
+### foreach PROBLEMATIC_HASH:
+#### $(PROBLEMATIC_HASH)
+- Summary
+- Review Result: (SAFE|BAD)
+
+## Fenix: https://github.com/mozilla-mobile/fenix.git
+
+- Start: `$(FIRST_GIT_HASH)` ( `$(START_TAG)` )
+- End: `$(LAST_GIT_HASH)` ( `$(END_TAG)` )
+
+### Languages:
+- [ ] java
+- [ ] cpp
+- [ ] js
+- [ ] rust
+
+Nothing of interest (using `code_audit.sh`)
+
+**OR**
+
+### foreach PROBLEMATIC_HASH:
+#### $(PROBLEMATIC_HASH)
+- Summary
+- Review Result: (SAFE|BAD)
+
+## Ticket Review ##
+
+Bugzilla Query: `https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&resolution=FIXED&target_milestone=$(FIREFOX_VERSION)%20Branch&order=priority%2Cbug_severity&limit=0`
+
+where `$(FIREFOX_VERSION)` is the major Firefox version we are auditing (eg: '91')
+
+Nothing of interest (manual inspection)
+
+**OR** (foreach)**
+
+### foreach PROBLEMATIC_TICKET:
+#### $(PROBLEMATIC_TICKET)
+- Summary
+- Review Result: (SAFE|BAD)
+
+## Regression/Prior Vuln Review ##
+
+Review proxy bypass bugs; check for new vectors to look for:
+ - https://gitlab.torproject.org/groups/tpo/applications/-/issues?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=Proxy%20Bypass
+ - Look for new features like these. Especially external app launch vectors
+
+## Export
+- [ ] Export Report and save to `tor-browser-spec/audits`
diff --git a/audits/code_audit.sh b/audits/code_audit.sh
index d260d15..a8b5868 100755
--- a/audits/code_audit.sh
+++ b/audits/code_audit.sh
@@ -1,15 +1,17 @@
#!/bin/bash -e
+# set -x
+
if [ $# -ne 4 ]; then
- echo "usage: <path/to/repo> <lang> <old commit> <new commit>"
+ echo "usage: <path/to/repo> <old commit> <new commit> <lang>"
exit 1
fi
REPO_DIR=$1
-SCOPE=$2
-OLD=$3
-NEW=$4
+OLD=$2
+NEW=$3
+SCOPE=$4
declare -a KEYWORDS
@@ -127,7 +129,7 @@ case "${SCOPE}" in
initialize_java_symbols
;;
"c-cpp" | "c-cxx" | "c" | "cxx" | "cpp" )
- EXT="c cpp h cxx hpp hxx"
+ EXT="c cpp h cxx hpp hxx cc hh"
SCOPE="c-cpp"
initialize_cpp_symbols
;;
@@ -145,6 +147,7 @@ case "${SCOPE}" in
;;
esac
+AUDIT_DIR=$(pwd)
cd "$REPO_DIR"
# Step 2: Generate match pattern based on in-scope keywords
@@ -156,19 +159,58 @@ declare -a path
for ext in ${EXT}; do
path+=("*.${ext}")
done
-echo "Diffing patches-${OLD}-${NEW}-${SCOPE}.diff from all ${path[*]} files"
+PROJECT_NAME=$(basename $(pwd))
+REPORT_FILE="$AUDIT_DIR/$PROJECT_NAME-$SCOPE-${OLD:0:8}-${NEW:0:8}.report"
+
+echo "Diffing all ${path[*]} files in commit range ${OLD:0:8}..${NEW:0:8}"
# Exclude Deleted and Unmerged files from diff
DIFF_FILTER=ACMRTXB
-git diff --stat --color=always --color-moved --diff-filter="${DIFF_FILTER}" -U20 -G"${GREP_LINE}" "$OLD" "$NEW" -- "${path[@]}" > "patches-${OLD}-${NEW}-${SCOPE}.diff"
-# Step 4: Highlight the keyword with an annoying, flashing color
+rm -f "${REPORT_FILE}"
+
+# Step 4: Concat a diff of each commit containing keyword and the commit message/hash
+# of said commit
+
+# Flashing Color constants
export GREP_COLOR="05;37;41"
-# Capture the entire file and/or overlap with the previous match, add GREP_COLOR highlighting
-grep -A10000 -B10000 --color=always -E "${GREP_LINE}" "patches-${OLD}-${NEW}-${SCOPE}.diff" > "keywords-$OLD-$NEW-$SCOPE.diff"
-# Add a 'XXX MATCH XXX' at the end of each matched line, easily searchable.
-sed -i 's/\(\x1b\[05;37;41.*\)/\1 XXX MATCH XXX/' "keywords-$OLD-$NEW-$SCOPE.diff"
+for COMMIT in $(git rev-list --ancestry-path $OLD..$NEW); do
+ TEMP_DIFF="$(mktemp)"
+
+ echo "Diffing $COMMIT..."
+
+ # Do each diff commit by commit so we can add context from the commit log
+ # to each diff
+ git diff --stat --color=always --color-moved --diff-filter="${DIFF_FILTER}" -U20 -G"${GREP_LINE}" $COMMIT~ $COMMIT -- "${path[@]}" > "${TEMP_DIFF}"
+ if [ -s "${TEMP_DIFF}" ]
+ then
+ # Highlight the keyword with an annoying, flashing color
+ FLASHING_DIFF="$(mktemp)"
+ grep -A10000 -B10000 --color=always -E "${GREP_LINE}" "${TEMP_DIFF}" > "${FLASHING_DIFF}"
+ mv "${FLASHING_DIFF}" "${TEMP_DIFF}"
+
+ # Add a 'XXX MATCH XXX' at the end of each matched line, easily searchable.
+ sed -i 's/\(\x1b\[05;37;41.*\)/\1 XXX MATCH XXX/' "${TEMP_DIFF}"
+
+ # Found some diff, so cat the changelog for commit then the diff
+ echo "-----------------------------------------------" >> "${REPORT_FILE}"
+ git log -n 1 $COMMIT >> "${REPORT_FILE}"
+ echo "-----------------------------------------------" >> "${REPORT_FILE}"
+ cat "${TEMP_DIFF}" >> "${REPORT_FILE}"
+ fi
+
+ rm -f "${TEMP_DIFF}"
+done
# Step 5: Review the code changes
-echo "Diff generated. View it with:"
-echo " less -R $REPO_DIR/keywords-$OLD-$NEW-$SCOPE.diff"
+
+if [ -s "${REPORT_FILE}" ]
+then
+ echo ""
+ echo "Report generated. View it with:"
+ echo ""
+ echo "less -R \"$(basename "${REPORT_FILE}")\""
+else
+ echo "No keywords found. No report generated"
+fi
+
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tbb-commits
mailing list