Skip to content

Commit 7bd3b63

Browse files
authored
refactor(deps): Merge trivy-iac into Trivy (aquasecurity#6005)
1 parent 535b5a9 commit 7bd3b63

File tree

777 files changed

+68473
-45
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

777 files changed

+68473
-45
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ docs/docs/scanner/misconfiguration @knqyf263 @simar7
66
docs/docs/target/aws.md @knqyf263 @simar7
77
pkg/fanal/analyzer/config @knqyf263 @simar7
88
pkg/cloud @knqyf263 @simar7
9+
pkg/iac @knqyf263 @simar7
910

1011
# Helm chart
1112
helm/trivy/ @chen-keinan

go.mod

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/NYTimes/gziphandler v1.1.1
1414
github.com/alicebob/miniredis/v2 v2.31.1
1515
github.com/aquasecurity/bolt-fixtures v0.0.0-20200903104109-d34e7f983986
16-
github.com/aquasecurity/defsec v0.94.1
16+
github.com/aquasecurity/defsec v0.94.2-0.20240119001230-c2d65f49dfeb
1717
github.com/aquasecurity/go-dep-parser v0.0.0-20240208080026-8cc7d408bce4
1818
github.com/aquasecurity/go-gem-version v0.0.0-20201115065557-8eed6fe000ce
1919
github.com/aquasecurity/go-npm-version v0.0.0-20201110091526-0b796d180798
@@ -25,7 +25,6 @@ require (
2525
github.com/aquasecurity/tml v0.6.1
2626
github.com/aquasecurity/trivy-aws v0.7.1
2727
github.com/aquasecurity/trivy-db v0.0.0-20231005141211-4fc651f7ac8d
28-
github.com/aquasecurity/trivy-iac v0.8.0
2928
github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48
3029
github.com/aquasecurity/trivy-kubernetes v0.6.3-0.20240118072219-c433b06f98e1
3130
github.com/aquasecurity/trivy-policies v0.8.0
@@ -117,7 +116,22 @@ require (
117116
modernc.org/sqlite v1.28.0
118117
)
119118

120-
require github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c
119+
require (
120+
github.com/apparentlymart/go-cidr v1.1.0
121+
github.com/aws/smithy-go v1.19.0
122+
github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c
123+
github.com/hashicorp/go-uuid v1.0.3
124+
github.com/hashicorp/hcl/v2 v2.19.1
125+
github.com/liamg/iamgo v0.0.9
126+
github.com/liamg/jfather v0.0.7
127+
github.com/liamg/memoryfs v1.6.0
128+
github.com/mitchellh/go-homedir v1.1.0
129+
github.com/olekukonko/tablewriter v0.0.5
130+
github.com/zclconf/go-cty v1.13.0
131+
github.com/zclconf/go-cty-yaml v1.0.3
132+
golang.org/x/crypto v0.18.0
133+
helm.sh/helm/v3 v3.14.0
134+
)
121135

122136
require (
123137
cloud.google.com/go v0.110.10 // indirect
@@ -141,7 +155,6 @@ require (
141155
github.com/Intevation/jsonpath v0.2.1 // indirect
142156
github.com/MakeNowJust/heredoc v1.0.0 // indirect
143157
github.com/Masterminds/goutils v1.1.1 // indirect
144-
github.com/Masterminds/semver v1.5.0 // indirect
145158
github.com/Masterminds/semver/v3 v3.2.1 // indirect
146159
github.com/Masterminds/squirrel v1.5.4 // indirect
147160
github.com/Microsoft/go-winio v0.6.1 // indirect
@@ -154,7 +167,6 @@ require (
154167
github.com/alecthomas/chroma v0.10.0 // indirect
155168
github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a // indirect
156169
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect
157-
github.com/apparentlymart/go-cidr v1.1.0 // indirect
158170
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
159171
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
160172
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
@@ -204,7 +216,6 @@ require (
204216
github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 // indirect
205217
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 // indirect
206218
github.com/aws/aws-sdk-go-v2/service/workspaces v1.35.6 // indirect
207-
github.com/aws/smithy-go v1.19.0 // indirect
208219
github.com/beorn7/perks v1.0.1 // indirect
209220
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
210221
github.com/briandowns/spinner v1.23.0 // indirect
@@ -281,11 +292,9 @@ require (
281292
github.com/hashicorp/errwrap v1.1.0 // indirect
282293
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
283294
github.com/hashicorp/go-safetemp v1.0.0 // indirect
284-
github.com/hashicorp/go-uuid v1.0.3 // indirect
285295
github.com/hashicorp/go-version v1.6.0 // indirect
286296
github.com/hashicorp/golang-lru v0.6.0 // indirect
287297
github.com/hashicorp/hcl v1.0.0 // indirect
288-
github.com/hashicorp/hcl/v2 v2.19.1 // indirect
289298
github.com/huandu/xstrings v1.4.0 // indirect
290299
github.com/imdario/mergo v0.3.15 // indirect
291300
github.com/inconshreveable/mousetrap v1.1.0 // indirect
@@ -299,9 +308,6 @@ require (
299308
github.com/klauspost/compress v1.17.2 // indirect
300309
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
301310
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
302-
github.com/liamg/iamgo v0.0.9 // indirect
303-
github.com/liamg/jfather v0.0.7 // indirect
304-
github.com/liamg/memoryfs v1.6.0 // indirect
305311
github.com/lib/pq v1.10.9 // indirect
306312
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
307313
github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect
@@ -313,7 +319,6 @@ require (
313319
github.com/microsoft/go-rustaudit v0.0.0-20220808201409-204dfee52032 // indirect
314320
github.com/miekg/dns v1.1.53 // indirect
315321
github.com/mitchellh/copystructure v1.2.0 // indirect
316-
github.com/mitchellh/go-homedir v1.1.0 // indirect
317322
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
318323
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
319324
github.com/mitchellh/reflectwalk v1.0.2 // indirect
@@ -332,7 +337,6 @@ require (
332337
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
333338
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
334339
github.com/oklog/ulid v1.3.1 // indirect
335-
github.com/olekukonko/tablewriter v0.0.5 // indirect
336340
github.com/opencontainers/runtime-spec v1.1.0 // indirect
337341
github.com/opencontainers/selinux v1.11.0 // indirect
338342
github.com/opentracing/opentracing-go v1.2.0 // indirect
@@ -371,8 +375,6 @@ require (
371375
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
372376
github.com/yashtewari/glob-intersection v0.2.0 // indirect
373377
github.com/yuin/gopher-lua v1.1.0 // indirect
374-
github.com/zclconf/go-cty v1.13.0 // indirect
375-
github.com/zclconf/go-cty-yaml v1.0.3 // indirect
376378
go.mongodb.org/mongo-driver v1.13.1 // indirect
377379
go.opencensus.io v0.24.0 // indirect
378380
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
@@ -383,7 +385,6 @@ require (
383385
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
384386
go.uber.org/goleak v1.3.0 // indirect
385387
go.uber.org/multierr v1.11.0 // indirect
386-
golang.org/x/crypto v0.18.0 // indirect
387388
golang.org/x/net v0.20.0 // indirect
388389
golang.org/x/oauth2 v0.15.0 // indirect
389390
golang.org/x/sys v0.16.0 // indirect
@@ -400,7 +401,6 @@ require (
400401
gopkg.in/ini.v1 v1.67.0 // indirect
401402
gopkg.in/warnings.v0 v0.1.2 // indirect
402403
gopkg.in/yaml.v2 v2.4.0 // indirect
403-
helm.sh/helm/v3 v3.14.0 // indirect
404404
k8s.io/apiextensions-apiserver v0.29.0 // indirect
405405
k8s.io/apimachinery v0.29.1 // indirect
406406
k8s.io/apiserver v0.29.0 // indirect

go.sum

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,6 @@ github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ
249249
github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
250250
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
251251
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
252-
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
253-
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
254252
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
255253
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
256254
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
@@ -323,8 +321,8 @@ github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew
323321
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
324322
github.com/aquasecurity/bolt-fixtures v0.0.0-20200903104109-d34e7f983986 h1:2a30xLN2sUZcMXl50hg+PJCIDdJgIvIbVcKqLJ/ZrtM=
325323
github.com/aquasecurity/bolt-fixtures v0.0.0-20200903104109-d34e7f983986/go.mod h1:NT+jyeCzXk6vXR5MTkdn4z64TgGfE5HMLC8qfj5unl8=
326-
github.com/aquasecurity/defsec v0.94.1 h1:lk44bfUltm0f0Dw4DbO3Ka9d/bf3N8cWclSdHXMyKF4=
327-
github.com/aquasecurity/defsec v0.94.1/go.mod h1:wiX9BX0SOG0ZWjVIPYGPl46fyO3Gu8lJnk4rmhFR7IA=
324+
github.com/aquasecurity/defsec v0.94.2-0.20240119001230-c2d65f49dfeb h1:7x3aMSnQhXJLcFOCivOmNBk0zAVLKkEk5UWkrRxxHIk=
325+
github.com/aquasecurity/defsec v0.94.2-0.20240119001230-c2d65f49dfeb/go.mod h1:wiX9BX0SOG0ZWjVIPYGPl46fyO3Gu8lJnk4rmhFR7IA=
328326
github.com/aquasecurity/go-dep-parser v0.0.0-20240208080026-8cc7d408bce4 h1:6qs80w4qPbPnF6GhbIifSANqfCrq90CKtSUBaw6p0z0=
329327
github.com/aquasecurity/go-dep-parser v0.0.0-20240208080026-8cc7d408bce4/go.mod h1:P0PmelcN1ABKJrDzRbPnn6hK7RvgI+xmjiV/9uPaNnY=
330328
github.com/aquasecurity/go-gem-version v0.0.0-20201115065557-8eed6fe000ce h1:QgBRgJvtEOBtUXilDb1MLi1p1MWoyFDXAu5DEUl5nwM=
@@ -350,8 +348,6 @@ github.com/aquasecurity/trivy-aws v0.7.1 h1:XElKZsP9Hqe2JVekQgGCIkFtgRgVlP+80wKL
350348
github.com/aquasecurity/trivy-aws v0.7.1/go.mod h1:bJT7pzsqo9q5yi3arJSt789bAH0eDb7c+niFYMBNcMQ=
351349
github.com/aquasecurity/trivy-db v0.0.0-20231005141211-4fc651f7ac8d h1:fjI9mkoTUAkbGqpzt9nJsO24RAdfG+ZSiLFj0G2jO8c=
352350
github.com/aquasecurity/trivy-db v0.0.0-20231005141211-4fc651f7ac8d/go.mod h1:cj9/QmD9N3OZnKQMp+/DvdV+ym3HyIkd4e+F0ZM3ZGs=
353-
github.com/aquasecurity/trivy-iac v0.8.0 h1:NKFhk/BTwQ0jIh4t74V8+6UIGUvPlaxO9HPlSMQi3fo=
354-
github.com/aquasecurity/trivy-iac v0.8.0/go.mod h1:ARiMeNqcaVWOXJmp8hmtMnNm/Jd836IOmDBUW5r4KEk=
355351
github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48 h1:JVgBIuIYbwG+ekC5lUHUpGJboPYiCcxiz06RCtz8neI=
356352
github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48/go.mod h1:Ldya37FLi0e/5Cjq2T5Bty7cFkzUDwTcPeQua+2M8i8=
357353
github.com/aquasecurity/trivy-kubernetes v0.6.3-0.20240118072219-c433b06f98e1 h1:/LsIHMQJ4SOxZeib/bvLP7S3YDTXJVIsQyS4kIIP0GQ=

internal/testutil/util.go

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
package testutil
2+
3+
import (
4+
"encoding/json"
5+
"io/fs"
6+
"path/filepath"
7+
"strings"
8+
"testing"
9+
10+
"github.com/liamg/memoryfs"
11+
"github.com/stretchr/testify/assert"
12+
"github.com/stretchr/testify/require"
13+
14+
"github.com/aquasecurity/defsec/pkg/scan"
15+
)
16+
17+
func AssertRuleFound(t *testing.T, ruleID string, results scan.Results, message string, args ...interface{}) {
18+
found := ruleIDInResults(ruleID, results.GetFailed())
19+
assert.True(t, found, append([]interface{}{message}, args...)...)
20+
for _, result := range results.GetFailed() {
21+
if result.Rule().LongID() == ruleID {
22+
m := result.Metadata()
23+
meta := &m
24+
for meta != nil {
25+
assert.NotNil(t, meta.Range(), 0)
26+
assert.Greater(t, meta.Range().GetStartLine(), 0)
27+
assert.Greater(t, meta.Range().GetEndLine(), 0)
28+
meta = meta.Parent()
29+
}
30+
}
31+
}
32+
}
33+
34+
func AssertRuleNotFound(t *testing.T, ruleID string, results scan.Results, message string, args ...interface{}) {
35+
found := ruleIDInResults(ruleID, results.GetFailed())
36+
assert.False(t, found, append([]interface{}{message}, args...)...)
37+
}
38+
39+
func ruleIDInResults(ruleID string, results scan.Results) bool {
40+
for _, res := range results {
41+
if res.Rule().LongID() == ruleID {
42+
return true
43+
}
44+
}
45+
return false
46+
}
47+
48+
func CreateFS(t *testing.T, files map[string]string) fs.FS {
49+
memfs := memoryfs.New()
50+
for name, content := range files {
51+
name := strings.TrimPrefix(name, "/")
52+
err := memfs.MkdirAll(filepath.Dir(name), 0o700)
53+
require.NoError(t, err)
54+
err = memfs.WriteFile(name, []byte(content), 0o644)
55+
require.NoError(t, err)
56+
}
57+
return memfs
58+
}
59+
60+
func AssertDefsecEqual(t *testing.T, expected, actual interface{}) {
61+
expectedJson, err := json.MarshalIndent(expected, "", "\t")
62+
require.NoError(t, err)
63+
actualJson, err := json.MarshalIndent(actual, "", "\t")
64+
require.NoError(t, err)
65+
66+
if expectedJson[0] == '[' {
67+
var expectedSlice []map[string]interface{}
68+
require.NoError(t, json.Unmarshal(expectedJson, &expectedSlice))
69+
var actualSlice []map[string]interface{}
70+
require.NoError(t, json.Unmarshal(actualJson, &actualSlice))
71+
expectedSlice = purgeMetadataSlice(expectedSlice)
72+
actualSlice = purgeMetadataSlice(actualSlice)
73+
assert.Equal(t, expectedSlice, actualSlice, "defsec adapted and expected values do not match")
74+
} else {
75+
var expectedMap map[string]interface{}
76+
require.NoError(t, json.Unmarshal(expectedJson, &expectedMap))
77+
var actualMap map[string]interface{}
78+
require.NoError(t, json.Unmarshal(actualJson, &actualMap))
79+
expectedMap = purgeMetadata(expectedMap)
80+
actualMap = purgeMetadata(actualMap)
81+
assert.Equal(t, expectedMap, actualMap, "defsec adapted and expected values do not match")
82+
}
83+
}
84+
85+
func purgeMetadata(input map[string]interface{}) map[string]interface{} {
86+
for k, v := range input {
87+
if k == "metadata" || k == "Metadata" {
88+
delete(input, k)
89+
continue
90+
}
91+
if v, ok := v.(map[string]interface{}); ok {
92+
input[k] = purgeMetadata(v)
93+
}
94+
if v, ok := v.([]interface{}); ok {
95+
if len(v) > 0 {
96+
if _, ok := v[0].(map[string]interface{}); ok {
97+
maps := make([]map[string]interface{}, len(v))
98+
for i := range v {
99+
maps[i] = v[i].(map[string]interface{})
100+
}
101+
input[k] = purgeMetadataSlice(maps)
102+
}
103+
}
104+
}
105+
}
106+
return input
107+
}
108+
109+
func purgeMetadataSlice(input []map[string]interface{}) []map[string]interface{} {
110+
for i := range input {
111+
input[i] = purgeMetadata(input[i])
112+
}
113+
return input
114+
}

pkg/extrafs/extrafs.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package extrafs
2+
3+
import (
4+
"io/fs"
5+
"os"
6+
"path/filepath"
7+
)
8+
9+
/*
10+
Go does not currently support symlinks in io/fs.
11+
We work around this by wrapping the fs.FS returned by os.DirFS with our own type which bolts on the ReadLinkFS
12+
*/
13+
14+
type OSFS interface {
15+
fs.FS
16+
fs.StatFS
17+
}
18+
19+
type ReadLinkFS interface {
20+
ResolveSymlink(name, dir string) (string, error)
21+
}
22+
23+
type FS interface {
24+
OSFS
25+
ReadLinkFS
26+
}
27+
28+
type filesystem struct {
29+
root string
30+
underlying OSFS
31+
}
32+
33+
func OSDir(path string) FS {
34+
return &filesystem{
35+
root: path,
36+
underlying: os.DirFS(path).(OSFS),
37+
}
38+
}
39+
40+
func (f *filesystem) Open(name string) (fs.File, error) {
41+
return f.underlying.Open(name)
42+
}
43+
44+
func (f *filesystem) Stat(name string) (fs.FileInfo, error) {
45+
return f.underlying.Stat(name)
46+
}
47+
48+
func (f *filesystem) ResolveSymlink(name, dir string) (string, error) {
49+
link, err := os.Readlink(filepath.Join(f.root, dir, name))
50+
if err == nil {
51+
return filepath.Join(dir, link), nil
52+
}
53+
return name, nil
54+
}

pkg/fanal/analyzer/config/terraform/terraform.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ package terraform
33
import (
44
"os"
55

6-
"github.com/aquasecurity/trivy-iac/pkg/detection"
76
"github.com/aquasecurity/trivy/pkg/fanal/analyzer"
87
"github.com/aquasecurity/trivy/pkg/fanal/analyzer/config"
8+
"github.com/aquasecurity/trivy/pkg/iac/detection"
99
"github.com/aquasecurity/trivy/pkg/misconf"
1010
)
1111

pkg/fanal/analyzer/const.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package analyzer
22

3-
import "github.com/aquasecurity/trivy-iac/pkg/detection"
3+
import (
4+
"github.com/aquasecurity/trivy/pkg/iac/detection"
5+
)
46

57
type Type string
68

0 commit comments

Comments
 (0)