@@ -8,114 +8,94 @@ scan_types:
88
99config :
1010 support_diff_scan : false
11- include_files :
12- # C/C++ https://trivy.dev/v0.61/docs/coverage/language/c/
13- - conan.lock
14- # Dart https://trivy.dev/v0.61/docs/coverage/language/dart/
15- - pubspec.lock
16- # Dotnet https://trivy.dev/v0.61/docs/coverage/language/dotnet/
17- - " *.deps.json"
18- - packages.config
19- - " *Packages.props"
20- - packages.lock.json
21- # Elixir https://trivy.dev/v0.61/docs/coverage/language/elixir/
22- - mix.lock
23- # Go https://trivy.dev/v0.61/docs/coverage/language/golang/
24- - go.mod
25- # Java https://trivy.dev/v0.61/docs/coverage/language/java/
26- - " *gradle.lockfile"
27- - pom.xml
28- - " *.sbt.lock"
29- # NodeJs https://trivy.dev/v0.61/docs/coverage/language/nodejs/
30- - package-lock.json
31- - yarn.lock
32- - pnpm-lock.yaml
33- # Php https://trivy.dev/v0.61/docs/coverage/language/php/
34- - composer.lock
35- - installed.json
36- # Python https://trivy.dev/v0.61/docs/coverage/language/python/
37- - Pipfile.lock
38- - requirements.txt
39- - poetry.lock
40- - uv.lock
41- # Ruby https://trivy.dev/v0.61/docs/coverage/language/ruby/
42- - Gemfile.lock
43- - .gemspec
44- # RUST https://trivy.dev/v0.61/docs/coverage/language/rust/
45- - Cargo.lock
46- # Swift https://trivy.dev/v0.61/docs/coverage/language/swift/
47- - Package.resolved
48- - Podfile.lock
49- # Julia https://trivy.dev/v0.61/docs/coverage/language/julia/
50- - Manifest.toml
5111
5212setup :
53- - name : Utility scripts
13+ - name : Verify dotnet installed
5414 run : |
55- mkdir -p $SETUP_PATH/pre-scan-checks/
56- cp $SETUP_PATH/../../registry/scanners/boostsecurityio/trivy-fs/prescan_checks.sh $SETUP_PATH/pre-scan-checks/trivy
57- - name : download trivy
58- environment :
59- VERSION : 0.67.0
60- LINUX_X86_64_SHA : 5b10e9bba00a508b0f3bcb98e78f1039f7eee26b57c9266961a415642a9208ab
61- LINUX_ARM64_SHA : 0f3ac33954dd918cad708bdf06731b4aa8cc14b12e879932b4ceef2f22640a9e
62- MACOS_X86_64_SHA : ae8a13d8c3abf7f7e7981ac1a5f5ec094d68835f2aac67da102d4ba36e820c3c
63- MACOS_ARM64_SHA : feea8727b501f654683774fe0f98a9c1a128c7d8bcd7c942a8e6f6d05b33bd4b
64- run : |
65- BINARY_URL="https://github.com/aquasecurity/trivy/releases/download/v${VERSION}"
66- ARCH=$(uname -m)
67-
68- case "$(uname -sm)" in
69- "Linux x86_64")
70- BINARY_URL="${BINARY_URL}/trivy_${VERSION}_Linux-64bit.tar.gz"
71- SHA="${LINUX_X86_64_SHA} trivy.tgz"
72- ;;
73- "Linux aarch64")
74- BINARY_URL="${BINARY_URL}/trivy_${VERSION}_Linux-ARM64.tar.gz"
75- SHA="${LINUX_ARM64_SHA} trivy.tgz"
76- ;;
77- "Darwin x86_64")
78- BINARY_URL="${BINARY_URL}/trivy_${VERSION}_macOS-64bit.tar.gz"
79- SHA="${MACOS_X86_64_SHA} trivy.tgz"
80- ;;
81- "Darwin arm64")
82- BINARY_URL="${BINARY_URL}/trivy_${VERSION}_macOS-ARM64.tar.gz"
83- SHA="${MACOS_ARM64_SHA} trivy.tgz"
84- ;;
85- *)
86- echo "Unsupported machine: ${OPTARG}"
87- exit 1
88- ;;
89- esac
90-
91- curl -o trivy.tgz -fsSL "${BINARY_URL}"
92- echo "${SHA}" | sha256sum --check
93-
94- tar --no-same-owner -zxf trivy.tgz trivy
95- rm trivy.tgz
96- chmod +x trivy
15+ mkdir -p $SETUP_PATH/scan-tools
16+ if ! dotnet --version ; then
17+ echo "dotnet is not installed, the scanner cannot run."
18+ exit 1
19+ fi
20+ dotnet tool install CycloneDX --version 5.5.0 --tool-path $SETUP_PATH/scan-tools/.dotnet-tools
21+ if [ $? -ne 0 ]; then
22+ echo "Failed to install CycloneDX"
23+ exit 1
24+ fi
25+ if ! "$SETUP_PATH/scan-tools/.dotnet-tools/dotnet-CycloneDX" --version >/dev/null 2>&1; then
26+ echo "CycloneDX did not install or run correctly"
27+ exit 1
28+ fi
9729
9830steps :
99- - run : $SETUP_PATH/pre-scan-checks/trivy
10031 - scan :
10132 command :
102- environment :
103- NO_COLOR : " true"
104- TRIVY_DB_REPOSITORY : public.ecr.aws/aquasecurity/trivy-db:2,ghcr.io/aquasecurity/trivy-db:2
105- TRIVY_JAVA_DB_REPOSITORY : public.ecr.aws/aquasecurity/trivy-java-db:1,ghcr.io/aquasecurity/trivy-java-db:1
106- run : >
107- $SETUP_PATH/trivy fs
108- --format=cyclonedx
109- --license-full
110- --no-progress
111- --scanners vuln
112- --cache-dir=/tmp/trivy/
113- --skip-version-check
114- . 2>&1
33+ run : |
34+ TEMP_SOLN_FILE="temp"
35+ SCAN_TARGET=$TEMP_SOLN_FILE".sln"
36+
37+ # Find all .csproj files (excluding test directories)
38+ ALL_PROJECTS=$(find . -maxdepth 5 -name "*.csproj" -type f)
39+
40+ if [ -z "$ALL_PROJECTS" ]; then
41+ echo "{}"
42+ exit 0
43+ fi
44+
45+ # Test each project - only include ones that restore successfully
46+ # This filters out template projects or any broken projects
47+ VALID_PROJECTS_FILE=$(mktemp)
48+
49+ while IFS= read -r proj; do
50+ if [ -n "$proj" ] && dotnet restore "$proj" --ignore-failed-sources --no-cache >/dev/null 2>&1; then
51+ echo "$proj" >> "$VALID_PROJECTS_FILE"
52+ fi
53+ done <<EOF
54+ $ALL_PROJECTS
55+ EOF
56+
57+ PROJECT_LIST=$(cat "$VALID_PROJECTS_FILE")
58+ rm -f "$VALID_PROJECTS_FILE"
59+
60+
61+ if [ -z "$PROJECT_LIST" ]; then
62+ echo "No projects found."
63+ exit 1
64+ fi
65+
66+ # Create temporary solution to merge all projects
67+ dotnet new sln -n $TEMP_SOLN_FILE --force >/dev/null 2>&1 || true
68+
69+ # Add all found .csproj files to the solution
70+ echo "$PROJECT_LIST" | while IFS= read -r proj; do
71+ [ -n "$proj" ] && dotnet sln $SCAN_TARGET add "$proj" >/dev/null 2>&1 || true
72+ done
73+
74+ # Restore packages while ignoring errors.
75+ if [ -n "$SCAN_TARGET" ]; then
76+ dotnet restore "$SCAN_TARGET" --ignore-failed-sources --no-cache >/dev/null 2>&1 || true
77+ fi
78+
79+ # Generate SBOM to temporary directory
80+ OUTPUT_DIR="temp_sbom_output"
81+ rm -rf "$OUTPUT_DIR" || true
82+
83+ if [ -n "$SCAN_TARGET" ] && $SETUP_PATH/scan-tools/.dotnet-tools/dotnet-CycloneDX "$SCAN_TARGET" \
84+ --disable-package-restore \
85+ --output "$OUTPUT_DIR" \
86+ --output-format json \
87+ >/dev/null 2>&1; then
88+
89+ if [ -f "$OUTPUT_DIR/bom.json" ]; then
90+ cat "$OUTPUT_DIR/bom.json"
91+ else
92+ echo "SBOM result missing."
93+ exit 1
94+ fi
95+ else
96+ echo "CycloneDX failed to generate SBOM."
97+ exit 1
98+ fi
99+
115100 format : cyclonedx
116- post-processor :
117- docker :
118- image : public.ecr.aws/boostsecurityio/boost-scanner-trivy-sbom:9b693ef@sha256:249ee707158424d8bd333198e1512ca295fe30c6fff2d2b1adff9e8f914b42cb
119- command : process
120- environment :
121- PYTHONIOENCODING : utf-8
101+
0 commit comments