Skip to content

Commit 16ffa52

Browse files
committed
Merge pull request #20 from codeclimate/devon/update-bundler-audit-db-as-app
Update bundler-audit vulnerability database as app user
2 parents 65caa65 + a19fe1c commit 16ffa52

File tree

12 files changed

+476
-653
lines changed

12 files changed

+476
-653
lines changed

Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ RUN apk --update add ruby ruby-dev ruby-bundler build-base git
66
COPY Gemfile /usr/src/app/
77
COPY Gemfile.lock /usr/src/app/
88
RUN bundle install -j 4 && \
9-
bundle-audit update && \
109
apk del build-base && rm -fr /usr/share/ri
1110

1211
RUN adduser -u 9000 -D app
1312
USER app
1413

14+
RUN bundle-audit update
15+
1516
COPY . /usr/src/app
1617

1718
CMD ["/usr/src/app/bin/bundler-audit"]

lib/cc/engine/bundler_audit/unpatched_gem_issue.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def remediation_points
6767
end
6868

6969
def severity
70-
SEVERITIES[advisory.criticality]
70+
SEVERITIES.fetch(advisory.criticality, "normal")
7171
end
7272

7373
def solution

lib/cc/engine/bundler_audit/unpatched_gem_remediation.rb

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ module BundlerAudit
44
class UnpatchedGemRemediation
55
MAJOR_UPGRADE_POINTS = 50_000_000
66
MINOR_UPGRADE_POINTS = 5_000_000
7-
PATCH_UPGRADE_POINTS = 500_000
7+
TINY_UPGRADE_POINTS = 500_000
8+
MINIMUM_UPGRADE_POINTS = 50_000
89
UNPATCHED_VERSION_POINTS = 500_000_000
910

1011
def initialize(gem_version, patched_versions)
@@ -31,7 +32,9 @@ def calculate_points(upgrade_version)
3132
when current_version.minor != upgrade_version.minor
3233
MINOR_UPGRADE_POINTS
3334
when current_version.tiny != upgrade_version.tiny
34-
PATCH_UPGRADE_POINTS
35+
TINY_UPGRADE_POINTS
36+
else
37+
MINIMUM_UPGRADE_POINTS
3538
end
3639
end
3740

spec/cc/engine/bundler_audit/analyzer_spec.rb

+7-3
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,19 @@ module CC::Engine::BundlerAudit
1515

1616
issues = analyze_directory(directory)
1717

18-
expect(issues).to eq(expected_issues("unpatched_versions"))
18+
expected_issues("unpatched_versions").each do |expected_issue|
19+
expect(issues).to include(expected_issue)
20+
end
1921
end
2022

2123
it "emits issues for insecure sources in Gemfile.lock" do
22-
directory = fixture_directory("insecure_source")
24+
directory = fixture_directory("insecure_sources")
2325

2426
issues = analyze_directory(directory)
2527

26-
expect(issues).to eq(expected_issues("insecure_source"))
28+
expected_issues("insecure_sources").each do |expected_issue|
29+
expect(issues).to include(expected_issue)
30+
end
2731
end
2832

2933
it "logs to stderr when we encounter an unsupported vulnerability" do

spec/cc/engine/bundler_audit/remediation_spec.rb

+21-3
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,28 @@ module CC::Engine::BundlerAudit
1515
expect(remediation.points).to eq(UnpatchedGemRemediation::MINOR_UPGRADE_POINTS)
1616
end
1717

18-
it "returns patch upgrade remediation points when an upgrade requies a patch version bump" do
19-
remediation = UnpatchedGemRemediation.new("1.0.0", %w[1.0.3 2.0.3])
18+
it "returns tiny upgrade remediation points when an upgrade requies a tiny version bump" do
19+
remediation = UnpatchedGemRemediation.new("1.0", %w[1.0.2])
2020

21-
expect(remediation.points).to eq(UnpatchedGemRemediation::PATCH_UPGRADE_POINTS)
21+
expect(remediation.points).to eq(UnpatchedGemRemediation::TINY_UPGRADE_POINTS)
22+
end
23+
24+
it "returns minimum upgrade remediation points when an upgrade requies a <= tiny2 version bump" do
25+
remediation = UnpatchedGemRemediation.new("1.0", %w[1.0.0.2-2])
26+
27+
expect(remediation.points).to eq(UnpatchedGemRemediation::MINIMUM_UPGRADE_POINTS)
28+
29+
remediation = UnpatchedGemRemediation.new("1.0", %w[1.0.0.2-2])
30+
31+
expect(remediation.points).to eq(UnpatchedGemRemediation::MINIMUM_UPGRADE_POINTS)
32+
33+
remediation = UnpatchedGemRemediation.new("1.0", %w[1.0a2])
34+
35+
expect(remediation.points).to eq(UnpatchedGemRemediation::MINIMUM_UPGRADE_POINTS)
36+
37+
remediation = UnpatchedGemRemediation.new("1.0", %w[1.0b2])
38+
39+
expect(remediation.points).to eq(UnpatchedGemRemediation::MINIMUM_UPGRADE_POINTS)
2240
end
2341

2442
it "returns unpatched version remediation points when an upgrade is not possible" do

0 commit comments

Comments
 (0)