Compare commits
930 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c06f467e67 | ||
|
|
df4f7604a4 | ||
|
|
bf7a8ede35 | ||
|
|
acb22c60ac | ||
|
|
9a3510ffdd | ||
|
|
7806b37e23 | ||
|
|
eadc6fb641 | ||
|
|
cc489b1af5 | ||
|
|
013f71a6a3 | ||
|
|
113a5b2162 | ||
|
|
733e5ac1fb | ||
|
|
d311e49bc3 | ||
|
|
cf1a7bf30b | ||
|
|
d465d9d1e0 | ||
|
|
0af225ccf1 | ||
|
|
6f64d55180 | ||
|
|
8c27430a2f | ||
|
|
c2b46d3c20 | ||
|
|
4368f11e0d | ||
|
|
5ec62f8636 | ||
|
|
8016b821a2 | ||
|
|
7a25dadb44 | ||
|
|
9c794c0ffc | ||
|
|
14c1024b47 | ||
|
|
998f750432 | ||
|
|
770b14113c | ||
|
|
3ccb1a0f10 | ||
|
|
58cfd1b074 | ||
|
|
715963d754 | ||
|
|
37da98df45 | ||
|
|
cdee7030ac | ||
|
|
6a2225b425 | ||
|
|
a2a02de7c5 | ||
|
|
e739ab8506 | ||
|
|
c6d5d856ce | ||
|
|
194a814688 | ||
|
|
03830c50c9 | ||
|
|
8e814fa23d | ||
|
|
2dc76ba782 | ||
|
|
c17176ba97 | ||
|
|
bce70af369 | ||
|
|
4369a19af7 | ||
|
|
5566548b78 | ||
|
|
a8af76a471 | ||
|
|
c8ed432f28 | ||
|
|
551a46efcc | ||
|
|
261649b115 | ||
|
|
acfddd4570 | ||
|
|
419e3d2023 | ||
|
|
f0961d54f6 | ||
|
|
a5d485cf8a | ||
|
|
29b8faf5fa | ||
|
|
e3bef02018 | ||
|
|
916f6c66f8 | ||
|
|
8e6cd0e917 | ||
|
|
060d0bb641 | ||
|
|
2d090ef2df | ||
|
|
6343e4fc71 | ||
|
|
a018ee1f9b | ||
|
|
5da053f302 | ||
|
|
3d66cb8d88 | ||
|
|
9aca98cca8 | ||
|
|
7811ad0d24 | ||
|
|
fae710db8f | ||
|
|
d2d4022ef3 | ||
|
|
164b025413 | ||
|
|
5dd9bd4701 | ||
|
|
7c2017fa7a | ||
|
|
63c9469bdd | ||
|
|
aa822c260f | ||
|
|
30cc88fa87 | ||
|
|
e32215c99d | ||
|
|
d4da83c633 | ||
|
|
0d7d97d131 | ||
|
|
9873cf3b9c | ||
|
|
95c8fd912e | ||
|
|
12ec0dfe9e | ||
|
|
9b7d7132b7 | ||
|
|
13e72eca58 | ||
|
|
a9861994e5 | ||
|
|
46d5abad42 | ||
|
|
34ab09d559 | ||
|
|
1ba5b59527 | ||
|
|
4fab0f8b99 | ||
|
|
d7709816c3 | ||
|
|
4337068208 | ||
|
|
d82d6cb731 | ||
|
|
cfddfb33c1 | ||
|
|
dfcb0f90db | ||
|
|
183eaafb4e | ||
|
|
94d6e8ced6 | ||
|
|
336c47ecc3 | ||
|
|
06b44738e7 | ||
|
|
a51ceddada | ||
|
|
53517d622b | ||
|
|
ad544e97cc | ||
|
|
089368d968 | ||
|
|
116356500e | ||
|
|
637da2b178 | ||
|
|
13190e92d9 | ||
|
|
6bca7c3c79 | ||
|
|
8e4279b863 | ||
|
|
e98c873ed0 | ||
|
|
b1c2eab5aa | ||
|
|
1c49a16c65 | ||
|
|
8dd0fcd61b | ||
|
|
74e4c6e012 | ||
|
|
245c120532 | ||
|
|
86714bf6bf | ||
|
|
a75839212c | ||
|
|
4d00d8b52a | ||
|
|
3ad2b3e255 | ||
|
|
8baccd7909 | ||
|
|
e75a90f2e5 | ||
|
|
6625bd32e0 | ||
|
|
826fe60732 | ||
|
|
f23ed77598 | ||
|
|
df024e88dd | ||
|
|
29dee32814 | ||
|
|
1a67472d2b | ||
|
|
09e37b7c67 | ||
|
|
87a9aa60d1 | ||
|
|
712dcd3007 | ||
|
|
625f22b819 | ||
|
|
6a2f6fde4f | ||
|
|
5f69937cc6 | ||
|
|
258d153461 | ||
|
|
ade033a837 | ||
|
|
f85c9fac6f | ||
|
|
9d7f5c948e | ||
|
|
f148eb10f2 | ||
|
|
97f95c4ddf | ||
|
|
abd62ae74e | ||
|
|
7c409fd270 | ||
|
|
1b68327b65 | ||
|
|
a2482c14e1 | ||
|
|
e866bd5b5d | ||
|
|
1870f28461 | ||
|
|
6c81e5505e | ||
|
|
8ec3938e01 | ||
|
|
f6c5d58001 | ||
|
|
c4022d61b3 | ||
|
|
317792433e | ||
|
|
dd9620ef38 | ||
|
|
eb3ceb323d | ||
|
|
ab74caa87f | ||
|
|
71da44f7e1 | ||
|
|
102b6df738 | ||
|
|
aa19aaf4e4 | ||
|
|
8fcef352b3 | ||
|
|
fb8c516ded | ||
|
|
96bd7ac594 | ||
|
|
12c5bf0805 | ||
|
|
d6c40ce058 | ||
|
|
9d2057a7c2 | ||
|
|
2a9d9bd214 | ||
|
|
617c3e31bd | ||
|
|
56cedc0d67 | ||
|
|
d7d7265eb0 | ||
|
|
6639911662 | ||
|
|
337cb75353 | ||
|
|
9361cdb7e2 | ||
|
|
ee01e6e2f4 | ||
|
|
3d2f583ecd | ||
|
|
c4b5ab7881 | ||
|
|
355c1b583b | ||
|
|
7244ece536 | ||
|
|
5cd0566843 | ||
|
|
ebb74a5de0 | ||
|
|
24a8d6aaa8 | ||
|
|
9d0d7ad886 | ||
|
|
e8230e19d7 | ||
|
|
04535b554a | ||
|
|
939e34e37c | ||
|
|
7cb6c02a4e | ||
|
|
c1d26ec334 | ||
|
|
4f70468bdd | ||
|
|
1dfece89d0 | ||
|
|
e1ea02c7b8 | ||
|
|
64926d8423 | ||
|
|
eb54bb5da5 | ||
|
|
dc76c6e4f4 | ||
|
|
1b7e47424b | ||
|
|
876ab84b36 | ||
|
|
eef7c4fb40 | ||
|
|
069aae59ec | ||
|
|
4a9ac6d199 | ||
|
|
9c5e5a04ee | ||
|
|
388f47669d | ||
|
|
cd3e4bcac2 | ||
|
|
ce81c05851 | ||
|
|
cf0f0d00c2 | ||
|
|
8a3a113eea | ||
|
|
19495ba7c2 | ||
|
|
e787e1af01 | ||
|
|
327cf88397 | ||
|
|
82214736a9 | ||
|
|
7694df11fb | ||
|
|
74dc5b6804 | ||
|
|
32a02a95dd | ||
|
|
fb79ea7c95 | ||
|
|
c6844a73f1 | ||
|
|
a813506f41 | ||
|
|
14adbb4464 | ||
|
|
efe0e0f8f3 | ||
|
|
73dde32632 | ||
|
|
aadbad1d78 | ||
|
|
14a0981efa | ||
|
|
3ac63887dc | ||
|
|
3c1601b6cb | ||
|
|
c107e1af29 | ||
|
|
b26f217172 | ||
|
|
7bd3b630bb | ||
|
|
535b5a96d9 | ||
|
|
428420ee84 | ||
|
|
7fec991c58 | ||
|
|
6ccc0a554b | ||
|
|
458c5d95e6 | ||
|
|
5c0ff6dad1 | ||
|
|
e2bd7f75d5 | ||
|
|
f95fbcb672 | ||
|
|
7651bf59b2 | ||
|
|
fc20dfdd80 | ||
|
|
3bd80e7c28 | ||
|
|
2900a21176 | ||
|
|
85cb9a7639 | ||
|
|
4e962c02aa | ||
|
|
aa48a7b865 | ||
|
|
8aabbea2d3 | ||
|
|
ec02a655af | ||
|
|
27d35baa4a | ||
|
|
c3a66da9c3 | ||
|
|
2000fe24c6 | ||
|
|
2be642154f | ||
|
|
41c0ef642e | ||
|
|
729a0512ab | ||
|
|
884745b5e5 | ||
|
|
59e54334d1 | ||
|
|
5924c021da | ||
|
|
4df9363890 | ||
|
|
70dd572ef7 | ||
|
|
13f797f885 | ||
|
|
adfde63d00 | ||
|
|
e2eb70ecb8 | ||
|
|
f9da021315 | ||
|
|
b4b90cfe20 | ||
|
|
fb36c4ed09 | ||
|
|
f6be42b71d | ||
|
|
bb6caea5cb | ||
|
|
189a46a01c | ||
|
|
91a2547d15 | ||
|
|
a96f66f176 | ||
|
|
2212d14432 | ||
|
|
7cad04bdf1 | ||
|
|
fbc1a83f32 | ||
|
|
260aa281f4 | ||
|
|
2c9d7c6b50 | ||
|
|
ffe2ca7cb5 | ||
|
|
f90d4ee436 | ||
|
|
c75143f5e8 | ||
|
|
a3fac90b47 | ||
|
|
b1b4734f55 | ||
|
|
a2b654945a | ||
|
|
ae134a9b38 | ||
|
|
c8c55fe21e | ||
|
|
4d2e785ff2 | ||
|
|
7895657c89 | ||
|
|
37e7e3eabf | ||
|
|
d0c81e23c4 | ||
|
|
958e1f11f7 | ||
|
|
56c4e248aa | ||
|
|
92d9b3dbba | ||
|
|
a626cdf334 | ||
|
|
47b6c2817a | ||
|
|
0ebb6c4682 | ||
|
|
c47ed0d816 | ||
|
|
2cdd65dd64 | ||
|
|
cba67d1f06 | ||
|
|
d990e702a2 | ||
|
|
c72dfbfbb0 | ||
|
|
121898423b | ||
|
|
682210ac64 | ||
|
|
e1a60cc88c | ||
|
|
b508414ca2 | ||
|
|
df3e90af8f | ||
|
|
fa2e88360b | ||
|
|
30eff9c83e | ||
|
|
013df4c6b8 | ||
|
|
b1489f3485 | ||
|
|
7f2e4223ff | ||
|
|
da597c479c | ||
|
|
1607eee77c | ||
|
|
b3d516eafe | ||
|
|
c17b6603db | ||
|
|
1f0d6290c3 | ||
|
|
4cdff0e573 | ||
|
|
be969d4136 | ||
|
|
81748f5ad0 | ||
|
|
ba825b2ae1 | ||
|
|
abf227e06e | ||
|
|
df49ea4a14 | ||
|
|
f25e2df1c0 | ||
|
|
b5e3b77f0f | ||
|
|
6cc00c2f0c | ||
|
|
c317fe828d | ||
|
|
9b4bcedf0e | ||
|
|
be5a550491 | ||
|
|
01edbda347 | ||
|
|
eb9741954c | ||
|
|
be1c55497f | ||
|
|
a5342da067 | ||
|
|
108a5b05ce | ||
|
|
6080e245ce | ||
|
|
e27ec3261e | ||
|
|
f2aa9bf3eb | ||
|
|
6d7e2f8116 | ||
|
|
0ff5f96bb7 | ||
|
|
a54d1e95fd | ||
|
|
99c04c4383 | ||
|
|
70078b9c0e | ||
|
|
49e83a6ad2 | ||
|
|
af32cb310a | ||
|
|
176627192f | ||
|
|
7ee854767e | ||
|
|
654147fc60 | ||
|
|
256957523a | ||
|
|
c0610097a6 | ||
|
|
aedbd85d6e | ||
|
|
e018b9c423 | ||
|
|
b5874e3ad3 | ||
|
|
075d8f6286 | ||
|
|
16b757d180 | ||
|
|
372efc9ec7 | ||
|
|
edad5f6902 | ||
|
|
ed9d34030d | ||
|
|
8ff574e3f7 | ||
|
|
ad977a4256 | ||
|
|
b1dc60b885 | ||
|
|
65351d4f2a | ||
|
|
c866f1c4e9 | ||
|
|
ed0022b915 | ||
|
|
3c81727034 | ||
|
|
214546427e | ||
|
|
44d0b28ada | ||
|
|
ae4bcf6a06 | ||
|
|
b6fafa04a2 | ||
|
|
13362233c8 | ||
|
|
71051863c6 | ||
|
|
d9d7f3f190 | ||
|
|
e3c28f8ee3 | ||
|
|
ac0e327492 | ||
|
|
5372067611 | ||
|
|
a3895298de | ||
|
|
f4dd062f58 | ||
|
|
d005f5af24 | ||
|
|
a96ec35572 | ||
|
|
950e431f0f | ||
|
|
2310f0dd69 | ||
|
|
04b93e9fd6 | ||
|
|
cccaa15ccd | ||
|
|
3891e3d5d4 | ||
|
|
138feb024c | ||
|
|
cb241a8007 | ||
|
|
e7f6a5c805 | ||
|
|
2f5afa5f29 | ||
|
|
91fc8dac92 | ||
|
|
05df24477e | ||
|
|
a1b47441a5 | ||
|
|
7712f8f216 | ||
|
|
043fbfcd38 | ||
|
|
d6df5fbcda | ||
|
|
156d4cc605 | ||
|
|
772d1d08f8 | ||
|
|
df47073fa4 | ||
|
|
fed4710188 | ||
|
|
46f1b9e7dc | ||
|
|
fdb3a15b2d | ||
|
|
d0d956fdc1 | ||
|
|
68b0797e5b | ||
|
|
474167c47e | ||
|
|
7299867c21 | ||
|
|
8656bd9f77 | ||
|
|
2e10cd2eba | ||
|
|
13df746527 | ||
|
|
b0141cfbaa | ||
|
|
520830b51b | ||
|
|
9a6e125c78 | ||
|
|
6e5927266c | ||
|
|
f3de7bc3be | ||
|
|
e2fb3dd58f | ||
|
|
3e833be7d8 | ||
|
|
ca50b77a35 | ||
|
|
048150d433 | ||
|
|
013d901993 | ||
|
|
26b4959541 | ||
|
|
57fa701a87 | ||
|
|
53c9a7d762 | ||
|
|
01c98d1516 | ||
|
|
05b3c86a14 | ||
|
|
1a15a3adb1 | ||
|
|
f2a12f5f90 | ||
|
|
6040d9f43a | ||
|
|
e5317c7bc2 | ||
|
|
9fba79f0b6 | ||
|
|
00f2059e5d | ||
|
|
57a1022318 | ||
|
|
5b2b4ea380 | ||
|
|
cbbd1ce1f0 | ||
|
|
24a0d92145 | ||
|
|
0c3e2f08b7 | ||
|
|
6c12f04286 | ||
|
|
c4134224a2 | ||
|
|
20ab7033b8 | ||
|
|
91841f59ba | ||
|
|
57ba05c766 | ||
|
|
fef3ed4358 | ||
|
|
ced54aced1 | ||
|
|
2798df916b | ||
|
|
af485b33fd | ||
|
|
008babfb8b | ||
|
|
00d9c4666f | ||
|
|
03b6787c44 | ||
|
|
e6d5889ed4 | ||
|
|
74dbd8a1fd | ||
|
|
393bfdc1ac | ||
|
|
76eb8a57b6 | ||
|
|
6c74ee11f0 | ||
|
|
6119878de1 | ||
|
|
a346587b8d | ||
|
|
7e613cc5f7 | ||
|
|
f05bc4be4f | ||
|
|
3be5e6b242 | ||
|
|
f6cd21c873 | ||
|
|
f7b975187d | ||
|
|
18d168769c | ||
|
|
eb60e9f3c0 | ||
|
|
5a92055e1c | ||
|
|
46afe65eed | ||
|
|
0bf2a11a2e | ||
|
|
23b5fece08 | ||
|
|
4f1d576e5a | ||
|
|
6ab2bdfa7c | ||
|
|
4217cffb5a | ||
|
|
1840584703 | ||
|
|
c5ae9f265f | ||
|
|
562723f0a7 | ||
|
|
3dd5b1e946 | ||
|
|
5c18475f37 | ||
|
|
0c08dde015 | ||
|
|
0ccbb4f7fd | ||
|
|
908a4914c7 | ||
|
|
5b4652d796 | ||
|
|
faf8d49c49 | ||
|
|
559c0f30b1 | ||
|
|
2baad46189 | ||
|
|
df2bff9f5e | ||
|
|
44656f2853 | ||
|
|
37af529947 | ||
|
|
eea3320d83 | ||
|
|
2e6662060e | ||
|
|
49680dc881 | ||
|
|
daae88287b | ||
|
|
81240cf080 | ||
|
|
bd0accd8a0 | ||
|
|
ecee79403e | ||
|
|
9ebc25d88b | ||
|
|
9a49a37737 | ||
|
|
ad1dc6327a | ||
|
|
7c68d4a7ec | ||
|
|
ed49609a73 | ||
|
|
19539722e0 | ||
|
|
c7516011b5 | ||
|
|
ccc6d7cb2c | ||
|
|
48cbf45534 | ||
|
|
a9c2c74c55 | ||
|
|
120ac68b5b | ||
|
|
41eaa78ae0 | ||
|
|
932f927555 | ||
|
|
db3133346a | ||
|
|
8c0b7d619c | ||
|
|
c61c664c30 | ||
|
|
a99944c1c2 | ||
|
|
9fc844ecfc | ||
|
|
c504f8be44 | ||
|
|
cdab67e7fa | ||
|
|
7acc5e8312 | ||
|
|
9628b1cbf3 | ||
|
|
4547e27666 | ||
|
|
0c8919e1e4 | ||
|
|
c04f234fa4 | ||
|
|
f811ed2d48 | ||
|
|
69ea5bf70e | ||
|
|
3715dcb3f4 | ||
|
|
07f7e9853b | ||
|
|
d4ca3cce21 | ||
|
|
49fdd584ba | ||
|
|
4401998ec1 | ||
|
|
9c211d005d | ||
|
|
422fa414e8 | ||
|
|
8e933860a3 | ||
|
|
9345a98ed1 | ||
|
|
5d8da70c62 | ||
|
|
1be9da7aae | ||
|
|
0e17d0befc | ||
|
|
d70fab2318 | ||
|
|
2fa264ac1e | ||
|
|
07ddf47905 | ||
|
|
9de360623a | ||
|
|
ef70d20766 | ||
|
|
ec5d8bec0d | ||
|
|
3114c87e60 | ||
|
|
6d79f55db9 | ||
|
|
9ace59106e | ||
|
|
d442176405 | ||
|
|
63cd41d20d | ||
|
|
cb16e23f14 | ||
|
|
a4e981b4ec | ||
|
|
6f03c79405 | ||
|
|
c74870500a | ||
|
|
4e1316c37f | ||
|
|
fc959fc57f | ||
|
|
f105279989 | ||
|
|
bc2b0ca6c3 | ||
|
|
9493c6f087 | ||
|
|
b0359de664 | ||
|
|
d3a34e409c | ||
|
|
798ef1b64a | ||
|
|
e8cf281471 | ||
|
|
f18b0db583 | ||
|
|
a79670156f | ||
|
|
b544e0dea7 | ||
|
|
067a0fcb9c | ||
|
|
e6d7705a51 | ||
|
|
c584dc1768 | ||
|
|
358d56b6b5 | ||
|
|
17f3ea9180 | ||
|
|
39ccbf7b58 | ||
|
|
6d3ae3bcf2 | ||
|
|
7d7a1ef54a | ||
|
|
fc7495017d | ||
|
|
b2a68bc06d | ||
|
|
e5c0c15b6e | ||
|
|
da37803d59 | ||
|
|
9744e6498d | ||
|
|
99eebc6703 | ||
|
|
d19c7d9f29 | ||
|
|
3c19761875 | ||
|
|
e1c2a8c804 | ||
|
|
8b8e0e83d1 | ||
|
|
f9efe44fd3 | ||
|
|
7271d682fb | ||
|
|
c3bc67c89a | ||
|
|
232ba823e1 | ||
|
|
11618c9408 | ||
|
|
07075696d1 | ||
|
|
fbe1c9eb1f | ||
|
|
20c2246a61 | ||
|
|
24a3e547d9 | ||
|
|
a7bd7bb65f | ||
|
|
4aa9ea0961 | ||
|
|
5d349d8147 | ||
|
|
a61531c1f7 | ||
|
|
78cc20937d | ||
|
|
93996041b2 | ||
|
|
3e2416d77c | ||
|
|
ce77bb46c3 | ||
|
|
c05caae43f | ||
|
|
aca11b95d0 | ||
|
|
4cecd17ea5 | ||
|
|
4bc8d29c15 | ||
|
|
88243a0ad6 | ||
|
|
3c7d988d71 | ||
|
|
fd0fd104f8 | ||
|
|
d0d543b881 | ||
|
|
b43a3e6237 | ||
|
|
aef7b148af | ||
|
|
5d76abadc9 | ||
|
|
fed446c515 | ||
|
|
df62927e58 | ||
|
|
1b9b9a84f7 | ||
|
|
3c16ca821b | ||
|
|
e5bee5cccd | ||
|
|
4b9f310b9c | ||
|
|
8e7fb7cc84 | ||
|
|
a9badeaba8 | ||
|
|
f8ebccc680 | ||
|
|
1c81948e03 | ||
|
|
497cc10d8e | ||
|
|
065f0afa54 | ||
|
|
e2603056dd | ||
|
|
0621402bf7 | ||
|
|
798fdbc013 | ||
|
|
34a89293d5 | ||
|
|
600819248d | ||
|
|
73734eab21 | ||
|
|
22463ababd | ||
|
|
790c8054ec | ||
|
|
86fec9c4a9 | ||
|
|
26bc91160b | ||
|
|
d699e8c101 | ||
|
|
1777878e83 | ||
|
|
9be08253a2 | ||
|
|
5d73b47dbc | ||
|
|
46e784c8a9 | ||
|
|
0f61a84712 | ||
|
|
8a1aa448a1 | ||
|
|
fbab9eea3a | ||
|
|
f84417bba0 | ||
|
|
85c681d443 | ||
|
|
46748ce6ea | ||
|
|
c6741bddff | ||
|
|
a21acc7e08 | ||
|
|
32a3a3311c | ||
|
|
cbb47dc7c4 | ||
|
|
e3d10d2512 | ||
|
|
e1770e046c | ||
|
|
337c0b70d5 | ||
|
|
5ccee14304 | ||
|
|
96db52c3f6 | ||
|
|
3e902a57a9 | ||
|
|
904f1cf24e | ||
|
|
7d48c5d5d4 | ||
|
|
dcc73e964a | ||
|
|
35c4262d0b | ||
|
|
0e01851e9e | ||
|
|
4d9b444499 | ||
|
|
c29197ab7d | ||
|
|
d7637adc6b | ||
|
|
ef39eeedf3 | ||
|
|
1ce8bb535a | ||
|
|
bc9513fc57 | ||
|
|
aecd2f0bf0 | ||
|
|
2cbf402b6a | ||
|
|
0099b20e31 | ||
|
|
a597a54fb6 | ||
|
|
b453fbec37 | ||
|
|
0e876d5aa0 | ||
|
|
a4f27d24a3 | ||
|
|
9e6411e9f5 | ||
|
|
ef6538a171 | ||
|
|
139f3e1e32 | ||
|
|
479cfdd40e | ||
|
|
9a279fa7bb | ||
|
|
d52b0b7bc0 | ||
|
|
9b531fa27b | ||
|
|
8ca1bfdd23 | ||
|
|
c20d466044 | ||
|
|
52cbe79759 | ||
|
|
4a5b915578 | ||
|
|
56cdc55f77 | ||
|
|
17d753676b | ||
|
|
2796abe1ed | ||
|
|
22a1573807 | ||
|
|
43586659a1 | ||
|
|
5081399659 | ||
|
|
e1a38128ab | ||
|
|
283eef6372 | ||
|
|
bbd7b98741 | ||
|
|
11c81bf2f6 | ||
|
|
2d8d63e61a | ||
|
|
a46839b1ce | ||
|
|
19715f5de8 | ||
|
|
854b63940a | ||
|
|
59e1a86643 | ||
|
|
9ef01133c8 | ||
|
|
dadd1e10c2 | ||
|
|
1a658210a4 | ||
|
|
411862c908 | ||
|
|
62a1aaf031 | ||
|
|
48b2e15c23 | ||
|
|
c15f269a99 | ||
|
|
b6ee08e55d | ||
|
|
d4740401a3 | ||
|
|
4cf2f94d0d | ||
|
|
18ce1c3363 | ||
|
|
87eed38c6c | ||
|
|
b0c591ef66 | ||
|
|
b84b5ecfc2 | ||
|
|
305255a497 | ||
|
|
d586de585e | ||
|
|
de6eef3b00 | ||
|
|
83a9c4a4cf | ||
|
|
537272257b | ||
|
|
6fcd1538d9 | ||
|
|
72e302cf81 | ||
|
|
7e99d08a13 | ||
|
|
12a1789be5 | ||
|
|
919e8c92b2 | ||
|
|
50fe43f14c | ||
|
|
09db1d4389 | ||
|
|
3f0721ff6e | ||
|
|
0ef0dadb16 | ||
|
|
3a7717fdeb | ||
|
|
63cfb2714a | ||
|
|
e1361368a1 | ||
|
|
29b5f7e8ec | ||
|
|
92ed344e8a | ||
|
|
16af41be15 | ||
|
|
cab8569cd7 | ||
|
|
92f9e98d04 | ||
|
|
33fb04763d | ||
|
|
8b162f287f | ||
|
|
3b7c9198dd | ||
|
|
c75d35ff61 | ||
|
|
d298415c09 | ||
|
|
1a56295ff8 | ||
|
|
864ad10a38 | ||
|
|
7a20d96227 | ||
|
|
ea5fd75ffe | ||
|
|
56a01ec6f7 | ||
|
|
6a0e152657 | ||
|
|
50c8b418a9 | ||
|
|
51ca6536c3 | ||
|
|
e5e7ebcdab | ||
|
|
6ee4960776 | ||
|
|
c067b026e0 | ||
|
|
ff6374829a | ||
|
|
0009b02bb8 | ||
|
|
d61ae8cc73 | ||
|
|
636ce808fe | ||
|
|
e859d10eef | ||
|
|
a6ef37fa3d | ||
|
|
dca8c039ed | ||
|
|
b003f58b2c | ||
|
|
86f0016165 | ||
|
|
2f318ce97d | ||
|
|
ec3906c24e | ||
|
|
37b25d28b2 | ||
|
|
45d5edb0d7 | ||
|
|
090a00e717 | ||
|
|
f2188eb56d | ||
|
|
b79850f416 | ||
|
|
36acdfa8db | ||
|
|
55fb723a6e | ||
|
|
9c87cb2710 | ||
|
|
21cf179f6b | ||
|
|
fbf7a77aee | ||
|
|
547391c224 | ||
|
|
882bfdd782 | ||
|
|
949cd10c0c | ||
|
|
93bc162ca5 | ||
|
|
57993ef673 | ||
|
|
dc4baeb359 | ||
|
|
25d0255dc3 | ||
|
|
73e54549f1 | ||
|
|
08de7c613f | ||
|
|
ade4730fa7 | ||
|
|
1be1e2e638 | ||
|
|
45bc9e0de4 | ||
|
|
3334e78fa3 | ||
|
|
27fb1bfdee | ||
|
|
845ae31e5d | ||
|
|
11a5b91a1a | ||
|
|
5eab464987 | ||
|
|
a00d00eb94 | ||
|
|
9bc326909f | ||
|
|
8559841677 | ||
|
|
0650e0e1d5 | ||
|
|
43b6496274 | ||
|
|
9181bc1f70 | ||
|
|
48e021ea6b | ||
|
|
107752df65 | ||
|
|
bd0c60364a | ||
|
|
76662d5dd7 | ||
|
|
be47b688c7 | ||
|
|
cc18f92cf3 | ||
|
|
572a6193e7 | ||
|
|
914c6f0921 | ||
|
|
3f02feeff3 | ||
|
|
57bb77c060 | ||
|
|
b19b56c341 | ||
|
|
b43b19ba54 | ||
|
|
14805002d3 | ||
|
|
83bb97ab13 | ||
|
|
79a1ba32d5 | ||
|
|
ff1c43a791 | ||
|
|
b608b116cc | ||
|
|
2c3b60f4c9 | ||
|
|
a6b8642134 | ||
|
|
90b80662c6 | ||
|
|
dcefc6bf3c | ||
|
|
601e25fb2f | ||
|
|
0bebec19f0 | ||
|
|
707ea94234 | ||
|
|
8e1fe769e4 | ||
|
|
4b36e97dce | ||
|
|
f0df725c5a | ||
|
|
009675c825 | ||
|
|
3ed86aa3d0 | ||
|
|
f31dea4bd6 | ||
|
|
d37c50a2b3 | ||
|
|
693d20516b | ||
|
|
65d89b99d1 | ||
|
|
a119ef86ea | ||
|
|
c8283cebde | ||
|
|
6c8b042548 | ||
|
|
c42f360f57 | ||
|
|
20c21caccf | ||
|
|
54388ffd16 | ||
|
|
99a2519816 | ||
|
|
d113b93139 | ||
|
|
5ab6d25880 | ||
|
|
0767cb8443 | ||
|
|
428ee19cae | ||
|
|
3e00dc346f | ||
|
|
cf2f0b2d1c | ||
|
|
70f507e1af | ||
|
|
befabc6b99 | ||
|
|
ee69abb78f | ||
|
|
8901f7be62 | ||
|
|
4e6bbbc8cc | ||
|
|
d70f346f53 | ||
|
|
3efb2fdeda | ||
|
|
ed590966a3 | ||
|
|
a2f39a34c5 | ||
|
|
5a10631023 | ||
|
|
4072115e5a | ||
|
|
7cad265b7a | ||
|
|
f8b5733112 | ||
|
|
10796a2910 | ||
|
|
abff1398c2 | ||
|
|
b40f60c405 | ||
|
|
67236f6aac | ||
|
|
00de24b16e | ||
|
|
5976d1fa07 | ||
|
|
f14bed4532 | ||
|
|
1ee05189f0 | ||
|
|
0000252ce4 | ||
|
|
ca0d972cdb | ||
|
|
0336555773 | ||
|
|
dd9cd9528f | ||
|
|
edb06826b4 | ||
|
|
c02b15b371 | ||
|
|
63ef760c69 | ||
|
|
3fa703c034 | ||
|
|
4d78747c40 | ||
|
|
67572dff6d | ||
|
|
e76d5ff98a | ||
|
|
011ea60db4 | ||
|
|
6445309de4 | ||
|
|
6e9c2c36da | ||
|
|
18eeea2f62 | ||
|
|
02b6914212 | ||
|
|
79096e1161 | ||
|
|
fc2e80cfe0 | ||
|
|
5f8d69d72e | ||
|
|
7916aafffb | ||
|
|
1b1ed39c7d | ||
|
|
234a360a7a | ||
|
|
b864b3b926 | ||
|
|
ad34c989de | ||
|
|
7148de3252 | ||
|
|
927acf9579 | ||
|
|
33074cfab3 | ||
|
|
ba9b0410c9 | ||
|
|
a754a04e2b | ||
|
|
9e4b57fb43 | ||
|
|
09fd299f96 | ||
|
|
09e13022c2 | ||
|
|
52cbfebcdd | ||
|
|
d6a2d6369a | ||
|
|
a12f58be57 | ||
|
|
ee518350c5 | ||
|
|
3987a679f9 | ||
|
|
2bb25e766b | ||
|
|
00c763bc10 | ||
|
|
cac5881bbb | ||
|
|
bd9c6e613e | ||
|
|
20f10673b9 | ||
|
|
1fac7bf1ba | ||
|
|
aaf265881e | ||
|
|
f8307635ad | ||
|
|
1aa3b7dc28 | ||
|
|
57904c0f97 | ||
|
|
bdccf72338 | ||
|
|
800473a8bc | ||
|
|
e6ab389f9e | ||
|
|
6614398ab4 | ||
|
|
1dc6fee781 | ||
|
|
3357ed096b | ||
|
|
1064636b3d | ||
|
|
60b7ef5a55 | ||
|
|
497c955a4b | ||
|
|
5d54310d76 | ||
|
|
44cf1e2f57 | ||
|
|
743b4b0d97 | ||
|
|
6de43855f8 | ||
|
|
9a0ceef166 | ||
|
|
0501b46d48 | ||
|
|
ee3004d292 | ||
|
|
5c8e604f56 | ||
|
|
bc0836623c | ||
|
|
23cdac02ee | ||
|
|
302c8ae24c | ||
|
|
34120f4201 | ||
|
|
e399ed8439 | ||
|
|
ef7b762e48 | ||
|
|
00daebc161 | ||
|
|
98d1031552 | ||
|
|
b791362871 | ||
|
|
719fdb1b11 | ||
|
|
3ff5699b4b | ||
|
|
33909d9df3 | ||
|
|
d85a3e087b | ||
|
|
551899c24e | ||
|
|
3aaa2cfb75 | ||
|
|
9d1300c3e7 | ||
|
|
793cc43d4c | ||
|
|
6a3294e476 | ||
|
|
e9dc21d88a | ||
|
|
12976d42df | ||
|
|
1dc2b349c6 | ||
|
|
92eaf636ca | ||
|
|
9af436b999 | ||
|
|
88ee68d0c6 | ||
|
|
75c96bd968 | ||
|
|
baea3997d2 | ||
|
|
7ca0db17ea | ||
|
|
866999e454 | ||
|
|
b7bfb9a207 | ||
|
|
9badef27ac | ||
|
|
d856595b8e | ||
|
|
fe7c26a741 | ||
|
|
f251dfc5ce | ||
|
|
9be8062c10 | ||
|
|
370098dbf4 | ||
|
|
32acd293fd | ||
|
|
aa8e185e03 | ||
|
|
86603bb9c5 | ||
|
|
7b1e173f51 |
30
.github/CODEOWNERS
vendored
@@ -1,24 +1,22 @@
|
|||||||
# Global
|
# Global
|
||||||
* @knqyf263
|
* @knqyf263
|
||||||
|
|
||||||
# Docs
|
# SBOM/Vulnerability scanning
|
||||||
/docs/** @knqyf263 @AnaisUrlichs @itaysk
|
pkg/dependency/ @knqyf263 @DmitriyLewen
|
||||||
/mkdocs.yml @knqyf263 @AnaisUrlichs @itaysk
|
pkg/fanal/ @knqyf263 @DmitriyLewen
|
||||||
/README.md @knqyf263 @AnaisUrlichs @itaysk
|
pkg/sbom/ @knqyf263 @DmitriyLewen
|
||||||
|
pkg/scanner/ @knqyf263 @DmitriyLewen
|
||||||
|
|
||||||
|
# Misconfiguration scanning
|
||||||
|
docs/docs/scanner/misconfiguration/ @simar7 @nikpivkin
|
||||||
|
docs/docs/target/aws.md @simar7 @nikpivkin
|
||||||
|
pkg/fanal/analyzer/config/ @simar7 @nikpivkin
|
||||||
|
pkg/cloud/ @simar7 @nikpivkin
|
||||||
|
pkg/iac/ @simar7 @nikpivkin
|
||||||
|
|
||||||
# Helm chart
|
# Helm chart
|
||||||
helm/trivy/ @chen-keinan
|
helm/trivy/ @chen-keinan
|
||||||
|
|
||||||
# Misconfiguration scanning
|
|
||||||
examples/misconf/ @knqyf263
|
|
||||||
docs/docs/misconfiguration @knqyf263
|
|
||||||
docs/docs/cloud @knqyf263
|
|
||||||
pkg/fanal/analyzer/config @knqyf263
|
|
||||||
pkg/fanal/handler/misconf @knqyf263
|
|
||||||
pkg/cloud @knqyf263
|
|
||||||
pkg/flag/aws_flags.go @knqyf263
|
|
||||||
pkg/flag/misconf_flags.go @knqyf263
|
|
||||||
|
|
||||||
# Kubernetes scanning
|
# Kubernetes scanning
|
||||||
pkg/k8s/ @josedonizetti @chen-keinan @knqyf263
|
pkg/k8s/ @chen-keinan
|
||||||
docs/docs/kubernetes/ @josedonizetti @chen-keinan @knqyf263
|
docs/docs/target/kubernetes.md @chen-keinan
|
||||||
|
|||||||
47
.github/DISCUSSION_TEMPLATE/adopters.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
title: "<company name>"
|
||||||
|
labels: ["adopters"]
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
id: info
|
||||||
|
attributes:
|
||||||
|
label: "[Optional] How do you use Trivy?"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
id: info
|
||||||
|
attributes:
|
||||||
|
label: "[Optional] Can you provide us with a quote on your favourite part of Trivy? This may be used on the trivy.dev website, posted on Twitter (@AquaTrivy) or similar marketing material."
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: "[Optional] Which targets are you scanning with Trivy?"
|
||||||
|
options:
|
||||||
|
- label: "Container Image"
|
||||||
|
- label: "Filesystem"
|
||||||
|
- label: "Git Repository"
|
||||||
|
- label: "Virtual Machine Image"
|
||||||
|
- label: "Kubernetes"
|
||||||
|
- label: "AWS"
|
||||||
|
- label: "SBOM"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: "[Optional] What kind of issues are scanning with Trivy?"
|
||||||
|
options:
|
||||||
|
- label: "Software Bill of Materials (SBOM)"
|
||||||
|
- label: "Known vulnerabilities (CVEs)"
|
||||||
|
- label: "IaC issues and misconfigurations"
|
||||||
|
- label: "Sensitive information and secrets"
|
||||||
|
- label: "Software licenses"
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Get in touch
|
||||||
|
We are always looking for
|
||||||
|
* User feedback
|
||||||
|
* Collaboration with other companies and organisations
|
||||||
|
* Or just to have a chat with you about trivy.
|
||||||
|
If any of this interests you or your marketing team, please reach out at: oss@aquasec.com
|
||||||
|
We would love to hear from you!
|
||||||
124
.github/DISCUSSION_TEMPLATE/bugs.yml
vendored
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
labels: ["kind/bug"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
#### Note
|
||||||
|
Feel free to raise a bug report if something doesn't work as expected.
|
||||||
|
Please ensure that you're not creating a duplicate report by searching the [issues](https://github.com/aquasecurity/trivy/issues)/[discussions](https://github.com/aquasecurity/trivy/discussions) beforehand.
|
||||||
|
If you see any false positives or false negatives, please file a ticket [here](https://github.com/aquasecurity/trivy/discussions/new?category=false-detection).
|
||||||
|
|
||||||
|
**Do not open a GitHub issue, please.** Maintainers triage discussions and then create issues.
|
||||||
|
|
||||||
|
Please also check [our contribution guidelines](https://aquasecurity.github.io/trivy/latest/community/contribute/discussion/).
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Briefly describe the problem you are having in a few paragraphs.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Desired Behavior
|
||||||
|
description: What did you expect to happen?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Actual Behavior
|
||||||
|
description: What happened instead?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Reproduction Steps
|
||||||
|
description: How do you trigger this bug? Please walk us through it step by step.
|
||||||
|
value: |
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
...
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Target
|
||||||
|
description: Which target are you scanning? It is equal to which subcommand you are using.
|
||||||
|
options:
|
||||||
|
- Container Image
|
||||||
|
- Filesystem
|
||||||
|
- Git Repository
|
||||||
|
- Virtual Machine Image
|
||||||
|
- Kubernetes
|
||||||
|
- AWS
|
||||||
|
- SBOM
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Scanner
|
||||||
|
description: Which scanner are you using?
|
||||||
|
options:
|
||||||
|
- Vulnerability
|
||||||
|
- Misconfiguration
|
||||||
|
- Secret
|
||||||
|
- License
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Output Format
|
||||||
|
description: Which output format are you using?
|
||||||
|
options:
|
||||||
|
- Table
|
||||||
|
- JSON
|
||||||
|
- Template
|
||||||
|
- SARIF
|
||||||
|
- CycloneDX
|
||||||
|
- SPDX
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Mode
|
||||||
|
description: Which mode are you using? Specify "Standalone" if you are not using `trivy server`.
|
||||||
|
options:
|
||||||
|
- Standalone
|
||||||
|
- Client/Server
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Debug Output
|
||||||
|
description: Output of run with `--debug`
|
||||||
|
placeholder: "$ trivy <target> <subject> --debug"
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Operating System
|
||||||
|
description: On what operating system are you running Trivy?
|
||||||
|
placeholder: "e.g. macOS Big Sur"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Version
|
||||||
|
description: Output of `trivy --version`
|
||||||
|
placeholder: "$ trivy --version"
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Have you tried the following?
|
||||||
|
options:
|
||||||
|
- label: Run `trivy image --reset`
|
||||||
|
- label: Read [the troubleshooting](https://aquasecurity.github.io/trivy/latest/docs/references/troubleshooting/)
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
We would be happy if you could share how you are using Trivy [here](https://github.com/aquasecurity/trivy/discussions/new?category=adopters).
|
||||||
28
.github/DISCUSSION_TEMPLATE/documentation.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
labels: ["kind/documentation"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
#### Note
|
||||||
|
Feel free to create a docs report if something doesn't work as expected or is unclear in the documentation.
|
||||||
|
Please ensure that you're not creating a duplicate report by searching the [issues](https://github.com/aquasecurity/trivy/issues)/[discussions](https://github.com/aquasecurity/trivy/discussions) beforehand.
|
||||||
|
|
||||||
|
Please also check [our contribution guidelines](https://aquasecurity.github.io/trivy/latest/community/contribute/discussion/).
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Briefly describe the what has been unclear in the existing documentation
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Link
|
||||||
|
description: Please provide a link to the current documentation or where you thought to find the information you were looking for
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Suggestions
|
||||||
|
description: What would you like to have added or changed in the documentation?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
96
.github/DISCUSSION_TEMPLATE/false-detection.yml
vendored
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
#### Note
|
||||||
|
Feel free to raise a bug report if something doesn't work as expected.
|
||||||
|
Please ensure that you're not creating a duplicate report by searching the [issues](https://github.com/aquasecurity/trivy/issues)/[discussions](https://github.com/aquasecurity/trivy/discussions) beforehand.
|
||||||
|
|
||||||
|
**Do not open a GitHub issue, please.** Maintainers triage discussions and then create issues.
|
||||||
|
|
||||||
|
Please also check [our contribution guidelines](https://aquasecurity.github.io/trivy/latest/community/contribute/discussion/).
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: IDs
|
||||||
|
description: List the IDs of vulnerabilities, misconfigurations, secrets, or licenses that are either not detected or mistakenly detected.
|
||||||
|
placeholder: "e.g. CVE-2021-44228, CVE-2022-22965"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Describe the false detection.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Reproduction Steps
|
||||||
|
description: How do you trigger this bug? Please walk us through it step by step.
|
||||||
|
value: |
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
...
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Target
|
||||||
|
description: Which target are you scanning? It is equal to which subcommand you are using.
|
||||||
|
options:
|
||||||
|
- Container Image
|
||||||
|
- Filesystem
|
||||||
|
- Git Repository
|
||||||
|
- Virtual Machine Image
|
||||||
|
- Kubernetes
|
||||||
|
- AWS
|
||||||
|
- SBOM
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Scanner
|
||||||
|
description: Which scanner are you using?
|
||||||
|
options:
|
||||||
|
- Vulnerability
|
||||||
|
- Misconfiguration
|
||||||
|
- Secret
|
||||||
|
- License
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Target OS
|
||||||
|
description: What operating system are you scanning? Fill in this field if the scanning target is an operating system.
|
||||||
|
placeholder: "Example: Ubuntu 22.04"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Debug Output
|
||||||
|
description: Output of run with `--debug`
|
||||||
|
placeholder: "$ trivy <target> <subject> --debug"
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Version
|
||||||
|
description: Output of `trivy --version`
|
||||||
|
placeholder: "$ trivy --version"
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
options:
|
||||||
|
- label: Read [the documentation regarding wrong detection](https://aquasecurity.github.io/trivy/dev/community/contribute/discussion/#false-detection)
|
||||||
|
- label: Ran Trivy with `-f json` that shows data sources and confirmed that the security advisory in data sources was correct
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
We would be happy if you could share how you are using Trivy [here](https://github.com/aquasecurity/trivy/discussions/new?category=adopters).
|
||||||
47
.github/DISCUSSION_TEMPLATE/ideas.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
labels: ["kind/feature"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
#### Note
|
||||||
|
Feel free to share your idea.
|
||||||
|
Please ensure that you're not creating a duplicate ticket by searching the [issues](https://github.com/aquasecurity/trivy/issues)/[discussions](https://github.com/aquasecurity/trivy/discussions) beforehand.
|
||||||
|
|
||||||
|
**Do not open a GitHub issue, please.** Maintainers triage discussions and then create issues.
|
||||||
|
|
||||||
|
Please also check [our contribution guidelines](https://aquasecurity.github.io/trivy/latest/community/contribute/discussion/).
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Describe your idea.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Target
|
||||||
|
description: Which target is your idea related to?
|
||||||
|
options:
|
||||||
|
- Container Image
|
||||||
|
- Filesystem
|
||||||
|
- Git Repository
|
||||||
|
- Virtual Machine Image
|
||||||
|
- Kubernetes
|
||||||
|
- AWS
|
||||||
|
- SBOM
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Scanner
|
||||||
|
description: Which scanner is your idea related to?
|
||||||
|
options:
|
||||||
|
- Vulnerability
|
||||||
|
- Misconfiguration
|
||||||
|
- Secret
|
||||||
|
- License
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
We would be happy if you could share how you are using Trivy [here](https://github.com/aquasecurity/trivy/discussions/new?category=adopters).
|
||||||
84
.github/DISCUSSION_TEMPLATE/q-a.yml
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
labels: ["triage/support"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
#### Note
|
||||||
|
If you have any troubles/questions, feel free to ask.
|
||||||
|
Please ensure that you're not asking a duplicate question by searching the [issues](https://github.com/aquasecurity/trivy/issues)/[discussions](https://github.com/aquasecurity/trivy/discussions) beforehand.
|
||||||
|
|
||||||
|
**Do not open a GitHub issue, please.** Maintainers triage discussions and then create issues.
|
||||||
|
|
||||||
|
Please also check [our contribution guidelines](https://aquasecurity.github.io/trivy/latest/community/contribute/discussion/).
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Question
|
||||||
|
description: What kind of problem are you facing? Or, what questions do you have?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Target
|
||||||
|
description: Which target are you scanning? It is equal to which subcommand you are using.
|
||||||
|
options:
|
||||||
|
- Container Image
|
||||||
|
- Filesystem
|
||||||
|
- Git Repository
|
||||||
|
- Virtual Machine Image
|
||||||
|
- Kubernetes
|
||||||
|
- AWS
|
||||||
|
- SBOM
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Scanner
|
||||||
|
description: Which scanner are you using?
|
||||||
|
options:
|
||||||
|
- Vulnerability
|
||||||
|
- Misconfiguration
|
||||||
|
- Secret
|
||||||
|
- License
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Output Format
|
||||||
|
description: Which output format are you using?
|
||||||
|
options:
|
||||||
|
- Table
|
||||||
|
- JSON
|
||||||
|
- Template
|
||||||
|
- SARIF
|
||||||
|
- CycloneDX
|
||||||
|
- SPDX
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
attributes:
|
||||||
|
label: Mode
|
||||||
|
description: Which mode are you using? Specify "Standalone" if you are not using `trivy server`.
|
||||||
|
options:
|
||||||
|
- Standalone
|
||||||
|
- Client/Server
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Operating System
|
||||||
|
description: What operating system are you using?
|
||||||
|
placeholder: "Example: macOS Big Sur"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Version
|
||||||
|
description: Output of `trivy --version`
|
||||||
|
placeholder: "$ trivy --version"
|
||||||
|
render: bash
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
We would be happy if you could share how you are using Trivy [here](https://github.com/aquasecurity/trivy/discussions/new?category=adopters.
|
||||||
53
.github/DISCUSSION_TEMPLATE/show-and-tell.yml
vendored
@@ -1,53 +0,0 @@
|
|||||||
title: "<company name> "
|
|
||||||
labels: ["adopters"]
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
id: links
|
|
||||||
attributes:
|
|
||||||
label: "Share Links"
|
|
||||||
description: "If you would like to share a link to your project or company, please paste it below 🌐"
|
|
||||||
value: |
|
|
||||||
...
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
- type: textarea
|
|
||||||
id: logo
|
|
||||||
attributes:
|
|
||||||
label: "Share Logo"
|
|
||||||
description: "If you have a link to your logo, please provide it in the following text-box 🌐"
|
|
||||||
value: |
|
|
||||||
...
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Please select all the scan targets that you are using
|
|
||||||
options:
|
|
||||||
- label: Container Images
|
|
||||||
- label: Filesystem
|
|
||||||
- label: Git Repository
|
|
||||||
- label: Virtual Machine Images
|
|
||||||
- label: Kubernetes
|
|
||||||
- label: AWS
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
- type: checkboxes
|
|
||||||
attributes:
|
|
||||||
label: Which scanners are you using on those scan targets?
|
|
||||||
options:
|
|
||||||
- label: OS packages and software dependencies in use (SBOM)
|
|
||||||
- label: Known vulnerabilities (CVEs)
|
|
||||||
- label: IaC issues and misconfigurations
|
|
||||||
- label: Sensitive information and secrets
|
|
||||||
- label: Software licenses
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
- type: textarea
|
|
||||||
id: info
|
|
||||||
attributes:
|
|
||||||
label: "Additional Information"
|
|
||||||
description: "Please tell us more about your use case of Trivy -- anything that you would like to share 🎉"
|
|
||||||
value: |
|
|
||||||
...
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
31
.github/ISSUE_TEMPLATE/BUG_REPORT.md
vendored
@@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug Report
|
|
||||||
labels: kind/bug
|
|
||||||
about: If something isn't working as expected.
|
|
||||||
---
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Briefly describe the problem you are having in a few paragraphs.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## What did you expect to happen?
|
|
||||||
|
|
||||||
|
|
||||||
## What happened instead?
|
|
||||||
|
|
||||||
|
|
||||||
## Output of run with `-debug`:
|
|
||||||
|
|
||||||
```
|
|
||||||
(paste your output here)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Output of `trivy -v`:
|
|
||||||
|
|
||||||
```
|
|
||||||
(paste your output here)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Additional details (base image name, container registry info...):
|
|
||||||
9
.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
vendored
@@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature Request
|
|
||||||
labels: kind/feature
|
|
||||||
about: I have a suggestion (and might want to implement myself)!
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
If this is a FEATURE REQUEST, request format does not matter!
|
|
||||||
-->
|
|
||||||
10
.github/ISSUE_TEMPLATE/SUPPORT_QUESTION.md
vendored
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
name: Support Question
|
|
||||||
labels: triage/support
|
|
||||||
about: If you have a question about Trivy.
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
If you have a trouble, feel free to ask.
|
|
||||||
Make sure you're not asking duplicate question by searching on the issues lists.
|
|
||||||
-->
|
|
||||||
33
.github/ISSUE_TEMPLATE/WRONG_DETECTION.md
vendored
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: Wrong Detection
|
|
||||||
labels: ["kind/bug"]
|
|
||||||
about: If Trivy doesn't detect something, or shows false positive detection
|
|
||||||
---
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
- [ ] I've read [the documentation regarding wrong detection](https://aquasecurity.github.io/trivy/latest/community/contribute/issue/#wrong-detection).
|
|
||||||
- [ ] I've confirmed that a security advisory in data sources was correct.
|
|
||||||
- Run Trivy with `-f json` that shows data sources and make sure that the security advisory is correct.
|
|
||||||
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Briefly describe the CVE that aren't detected and information about artifacts with this CVE.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## JSON Output of run with `-debug`:
|
|
||||||
|
|
||||||
```
|
|
||||||
(paste your output here)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Output of `trivy -v`:
|
|
||||||
|
|
||||||
```
|
|
||||||
(paste your output here)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Additional details (base image name, container registry info...):
|
|
||||||
|
|
||||||
|
|
||||||
17
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: Report a false detection
|
||||||
|
url: https://github.com/aquasecurity/trivy/discussions/new?category=false-detection
|
||||||
|
about: Report false positives/negatives
|
||||||
|
- name: Report a bug
|
||||||
|
url: https://github.com/aquasecurity/trivy/discussions/new?category=bugs
|
||||||
|
about: Report bugs
|
||||||
|
- name: Enhance documentation
|
||||||
|
url: https://github.com/aquasecurity/trivy/discussions/new?category=documentation
|
||||||
|
about: Make suggestions to the documentation
|
||||||
|
- name: Request a feature enhancement
|
||||||
|
url: https://github.com/aquasecurity/trivy/discussions/new?category=ideas
|
||||||
|
about: Share ideas for new features
|
||||||
|
- name: Ask the community for help
|
||||||
|
url: https://github.com/aquasecurity/trivy/discussions/new?category=q-a
|
||||||
|
about: Ask questions and discuss with other community members
|
||||||
46
.github/workflows/auto-close-issue.yaml
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
name: Auto-close issues
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
close_issue:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Close issue if user does not have write or admin permissions
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
// Get the issue creator's username
|
||||||
|
const issueCreator = context.payload.issue.user.login;
|
||||||
|
|
||||||
|
// Check the user's permissions for the repository
|
||||||
|
const repoPermissions = await github.rest.repos.getCollaboratorPermissionLevel({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
username: issueCreator
|
||||||
|
});
|
||||||
|
|
||||||
|
const permission = repoPermissions.data.permission;
|
||||||
|
|
||||||
|
// If the user does not have write or admin permissions, leave a comment and close the issue
|
||||||
|
if (permission !== 'write' && permission !== 'admin') {
|
||||||
|
const commentBody = "Please see https://aquasecurity.github.io/trivy/latest/community/contribute/issue/";
|
||||||
|
await github.rest.issues.createComment({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
issue_number: context.payload.issue.number,
|
||||||
|
body: commentBody
|
||||||
|
});
|
||||||
|
|
||||||
|
await github.rest.issues.update({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
issue_number: context.payload.issue.number,
|
||||||
|
state: 'closed',
|
||||||
|
state_reason: 'not_planned'
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(`Issue #${context.payload.issue.number} closed because ${issueCreator} does not have sufficient permissions.`);
|
||||||
|
}
|
||||||
32
.github/workflows/auto-update-labels.yaml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: Auto-update labels
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- 'misc/triage/labels.yaml'
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
env:
|
||||||
|
GO_VERSION: '1.22'
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
name: Auto-update labels
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout main
|
||||||
|
uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
# cf. https://github.com/aquasecurity/trivy/pull/6711
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Install aqua tools
|
||||||
|
uses: aquaproj/aqua-installer@v3.0.0
|
||||||
|
with:
|
||||||
|
aqua_version: v1.25.0
|
||||||
|
|
||||||
|
- name: update labels
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: mage label
|
||||||
12
.github/workflows/bypass-cla.yaml
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# This workflow is used to bypass the required status checks in merge queue.
|
||||||
|
# cf. https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/troubleshooting-required-status-checks
|
||||||
|
name: CLA
|
||||||
|
on:
|
||||||
|
merge_group:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cla:
|
||||||
|
name: license/cla
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: 'echo "No test required"'
|
||||||
31
.github/workflows/bypass-test.yaml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# This workflow is used to bypass the required status checks.
|
||||||
|
# cf. https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/troubleshooting-required-status-checks
|
||||||
|
name: Test
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
- '**.md'
|
||||||
|
- 'docs/**'
|
||||||
|
- 'mkdocs.yml'
|
||||||
|
- 'LICENSE'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '**.md'
|
||||||
|
- 'docs/**'
|
||||||
|
- 'mkdocs.yml'
|
||||||
|
- 'LICENSE'
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: Test
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
steps:
|
||||||
|
- run: 'echo "No test required"'
|
||||||
|
|
||||||
|
integration:
|
||||||
|
name: Integration Test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: 'echo "No test required"'
|
||||||
12
.github/workflows/canary.yaml
vendored
@@ -16,7 +16,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/reusable-release.yaml
|
uses: ./.github/workflows/reusable-release.yaml
|
||||||
with:
|
with:
|
||||||
goreleaser_config: goreleaser-canary.yml
|
goreleaser_config: goreleaser-canary.yml
|
||||||
goreleaser_options: '--snapshot --rm-dist --timeout 60m' # will not release
|
goreleaser_options: '--snapshot --clean --timeout 60m' # will not release
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
upload-binaries:
|
upload-binaries:
|
||||||
@@ -25,35 +25,35 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Restore Trivy binaries from cache
|
- name: Restore Trivy binaries from cache
|
||||||
uses: actions/cache@v3.2.4
|
uses: actions/cache@v4.0.2
|
||||||
with:
|
with:
|
||||||
path: dist/
|
path: dist/
|
||||||
key: ${{ runner.os }}-bins-${{github.workflow}}-${{github.sha}}
|
key: ${{ runner.os }}-bins-${{github.workflow}}-${{github.sha}}
|
||||||
|
|
||||||
# Upload artifacts
|
# Upload artifacts
|
||||||
- name: Upload artifacts (trivy_Linux-64bit)
|
- name: Upload artifacts (trivy_Linux-64bit)
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: trivy_Linux-64bit
|
name: trivy_Linux-64bit
|
||||||
path: dist/trivy_*_Linux-64bit.tar.gz
|
path: dist/trivy_*_Linux-64bit.tar.gz
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Upload artifacts (trivy_Linux-ARM64)
|
- name: Upload artifacts (trivy_Linux-ARM64)
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: trivy_Linux-ARM64
|
name: trivy_Linux-ARM64
|
||||||
path: dist/trivy_*_Linux-ARM64.tar.gz
|
path: dist/trivy_*_Linux-ARM64.tar.gz
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Upload artifacts (trivy_macOS-64bit)
|
- name: Upload artifacts (trivy_macOS-64bit)
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: trivy_macOS-64bit
|
name: trivy_macOS-64bit
|
||||||
path: dist/trivy_*_macOS-64bit.tar.gz
|
path: dist/trivy_*_macOS-64bit.tar.gz
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Upload artifacts (trivy_macOS-ARM64)
|
- name: Upload artifacts (trivy_macOS-ARM64)
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: trivy_macOS-ARM64
|
name: trivy_macOS-ARM64
|
||||||
path: dist/trivy_*_macOS-ARM64.tar.gz
|
path: dist/trivy_*_macOS-ARM64.tar.gz
|
||||||
|
|||||||
5
.github/workflows/mkdocs-dev.yaml
vendored
@@ -12,15 +12,16 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout main
|
- name: Checkout main
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: true
|
persist-credentials: true
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
python -m pip install --upgrade pip setuptools wheel
|
||||||
pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
|
pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
|
||||||
pip install -r docs/build/requirements.txt
|
pip install -r docs/build/requirements.txt
|
||||||
env:
|
env:
|
||||||
|
|||||||
5
.github/workflows/mkdocs-latest.yaml
vendored
@@ -14,15 +14,16 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout main
|
- name: Checkout main
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: true
|
persist-credentials: true
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
python -m pip install --upgrade pip setuptools wheel
|
||||||
pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
|
pip install git+https://${GH_TOKEN}@github.com/squidfunk/mkdocs-material-insiders.git
|
||||||
pip install -r docs/build/requirements.txt
|
pip install -r docs/build/requirements.txt
|
||||||
env:
|
env:
|
||||||
|
|||||||
12
.github/workflows/publish-chart.yaml
vendored
@@ -22,22 +22,22 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Install Helm
|
- name: Install Helm
|
||||||
uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78
|
uses: azure/setup-helm@fe7b79cd5ee1e45176fcad797de68ecaf3ca4814
|
||||||
with:
|
with:
|
||||||
version: v3.5.0
|
version: v3.5.0
|
||||||
- name: Set up python
|
- name: Set up python
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: 3.7
|
python-version: 3.7
|
||||||
- name: Setup Chart Linting
|
- name: Setup Chart Linting
|
||||||
id: lint
|
id: lint
|
||||||
uses: helm/chart-testing-action@afea100a513515fbd68b0e72a7bb0ae34cb62aec
|
uses: helm/chart-testing-action@e6669bcd63d7cb57cb4380c33043eebe5d111992
|
||||||
- name: Setup Kubernetes cluster (KIND)
|
- name: Setup Kubernetes cluster (KIND)
|
||||||
uses: helm/kind-action@d8ccf8fb623ce1bb360ae2f45f323d9d5c5e9f00
|
uses: helm/kind-action@99576bfa6ddf9a8e612d83b513da5a75875caced
|
||||||
with:
|
with:
|
||||||
version: ${{ env.KIND_VERSION }}
|
version: ${{ env.KIND_VERSION }}
|
||||||
image: ${{ env.KIND_IMAGE }}
|
image: ${{ env.KIND_IMAGE }}
|
||||||
@@ -55,7 +55,7 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Install chart-releaser
|
- name: Install chart-releaser
|
||||||
|
|||||||
8
.github/workflows/release.yaml
vendored
@@ -10,7 +10,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/reusable-release.yaml
|
uses: ./.github/workflows/reusable-release.yaml
|
||||||
with:
|
with:
|
||||||
goreleaser_config: goreleaser.yml
|
goreleaser_config: goreleaser.yml
|
||||||
goreleaser_options: '--rm-dist --timeout 90m'
|
goreleaser_options: '--clean --timeout 90m'
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
deploy-packages:
|
deploy-packages:
|
||||||
@@ -19,12 +19,12 @@ jobs:
|
|||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Restore Trivy binaries from cache
|
- name: Restore Trivy binaries from cache
|
||||||
uses: actions/cache@v3.2.4
|
uses: actions/cache@v4.0.2
|
||||||
with:
|
with:
|
||||||
path: dist/
|
path: dist/
|
||||||
key: ${{ runner.os }}-bins-${{github.workflow}}-${{github.sha}}
|
key: ${{ runner.os }}-bins-${{github.workflow}}-${{github.sha}}
|
||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
sudo apt-get -y install rpm reprepro createrepo-c distro-info
|
sudo apt-get -y install rpm reprepro createrepo-c distro-info
|
||||||
|
|
||||||
- name: Checkout trivy-repo
|
- name: Checkout trivy-repo
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
repository: ${{ github.repository_owner }}/trivy-repo
|
repository: ${{ github.repository_owner }}/trivy-repo
|
||||||
path: trivy-repo
|
path: trivy-repo
|
||||||
|
|||||||
62
.github/workflows/reusable-release.yaml
vendored
@@ -14,6 +14,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
GH_USER: "aqua-bot"
|
GH_USER: "aqua-bot"
|
||||||
|
GO_VERSION: '1.22'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
@@ -26,68 +27,97 @@ jobs:
|
|||||||
packages: write # For GHCR
|
packages: write # For GHCR
|
||||||
contents: read # Not required for public repositories, but for clarity
|
contents: read # Not required for public repositories, but for clarity
|
||||||
steps:
|
steps:
|
||||||
|
- name: Maximize build space
|
||||||
|
uses: easimon/maximize-build-space@v10
|
||||||
|
with:
|
||||||
|
root-reserve-mb: 32768 # The Go cache (`~/.cache/go-build` and `~/go/pkg`) requires a lot of storage space.
|
||||||
|
remove-android: 'true'
|
||||||
|
remove-docker-images: 'true'
|
||||||
|
remove-dotnet: 'true'
|
||||||
|
remove-haskell: 'true'
|
||||||
|
|
||||||
- name: Cosign install
|
- name: Cosign install
|
||||||
uses: sigstore/cosign-installer@9becc617647dfa20ae7b1151972e9b3a2c338a2b
|
uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Show available Docker Buildx platforms
|
- name: Show available Docker Buildx platforms
|
||||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||||
|
|
||||||
- name: Login to docker.io registry
|
- name: Login to docker.io registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USER }}
|
username: ${{ secrets.DOCKERHUB_USER }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Login to ghcr.io registry
|
- name: Login to ghcr.io registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ env.GH_USER }}
|
username: ${{ env.GH_USER }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Login to ECR
|
- name: Login to ECR
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: public.ecr.aws
|
registry: public.ecr.aws
|
||||||
username: ${{ secrets.ECR_ACCESS_KEY_ID }}
|
username: ${{ secrets.ECR_ACCESS_KEY_ID }}
|
||||||
password: ${{ secrets.ECR_SECRET_ACCESS_KEY }}
|
password: ${{ secrets.ECR_SECRET_ACCESS_KEY }}
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Setup Go
|
- name: Setup Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
cache: false # Disable cache to avoid free space issues during `Post Setup Go` step.
|
||||||
|
|
||||||
- name: Generate SBOM
|
- name: Generate SBOM
|
||||||
uses: CycloneDX/gh-gomod-generate-sbom@v1
|
uses: CycloneDX/gh-gomod-generate-sbom@v2
|
||||||
with:
|
with:
|
||||||
args: mod -licenses -json -output bom.json
|
args: mod -licenses -json -output bom.json
|
||||||
version: ^v1
|
version: ^v1
|
||||||
|
|
||||||
|
- name: "save gpg key"
|
||||||
|
env:
|
||||||
|
GPG_KEY: ${{ secrets.GPG_KEY }}
|
||||||
|
run: |
|
||||||
|
echo "$GPG_KEY" > gpg.key
|
||||||
|
|
||||||
|
# Create tmp dir for GoReleaser
|
||||||
|
- name: "create tmp dir"
|
||||||
|
run: |
|
||||||
|
mkdir tmp
|
||||||
|
|
||||||
- name: GoReleaser
|
- name: GoReleaser
|
||||||
uses: goreleaser/goreleaser-action@v4
|
uses: goreleaser/goreleaser-action@v5
|
||||||
with:
|
with:
|
||||||
version: v1.4.1
|
version: v1.20.0
|
||||||
args: release -f=${{ inputs.goreleaser_config}} ${{ inputs.goreleaser_options}}
|
args: release -f=${{ inputs.goreleaser_config}} ${{ inputs.goreleaser_options}}
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.ORG_REPO_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.ORG_REPO_TOKEN }}
|
||||||
|
NFPM_DEFAULT_RPM_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
|
||||||
|
GPG_FILE: "gpg.key"
|
||||||
|
TMPDIR: "tmp"
|
||||||
|
|
||||||
## push images to registries
|
- name: "remove gpg key"
|
||||||
## only for canary build
|
run: |
|
||||||
|
rm gpg.key
|
||||||
|
|
||||||
|
# Push images to registries (only for canary build)
|
||||||
|
# The custom Dockerfile.canary is necessary
|
||||||
|
# because GoReleaser Free doesn't support pushing images with the `--snapshot` flag.
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
if: ${{ inputs.goreleaser_config == 'goreleaser-canary.yml' }}
|
if: ${{ inputs.goreleaser_config == 'goreleaser-canary.yml' }}
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
platforms: linux/amd64, linux/arm64
|
platforms: linux/amd64, linux/arm64
|
||||||
file: ./Dockerfile.canary # path to Dockerfile
|
file: ./Dockerfile.canary # path to Dockerfile
|
||||||
@@ -99,7 +129,7 @@ jobs:
|
|||||||
public.ecr.aws/aquasecurity/trivy:canary
|
public.ecr.aws/aquasecurity/trivy:canary
|
||||||
|
|
||||||
- name: Cache Trivy binaries
|
- name: Cache Trivy binaries
|
||||||
uses: actions/cache@v3.2.4
|
uses: actions/cache@v4.0.2
|
||||||
with:
|
with:
|
||||||
path: dist/
|
path: dist/
|
||||||
# use 'github.sha' to create a unique cache folder for each run.
|
# use 'github.sha' to create a unique cache folder for each run.
|
||||||
|
|||||||
8
.github/workflows/roadmap.yaml
vendored
@@ -11,7 +11,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
# 'kind/feature' AND 'priority/backlog' labels -> 'Backlog' column
|
# 'kind/feature' AND 'priority/backlog' labels -> 'Backlog' column
|
||||||
- uses: actions/add-to-project@v0.4.0 # add new issue to project
|
- uses: actions/add-to-project@v1.0.0 # add new issue to project
|
||||||
with:
|
with:
|
||||||
project-url: https://github.com/orgs/aquasecurity/projects/25
|
project-url: https://github.com/orgs/aquasecurity/projects/25
|
||||||
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
field-values: Backlog
|
field-values: Backlog
|
||||||
|
|
||||||
# 'kind/feature' AND 'priority/important-longterm' labels -> 'Important (long-term)' column
|
# 'kind/feature' AND 'priority/important-longterm' labels -> 'Important (long-term)' column
|
||||||
- uses: actions/add-to-project@v0.4.0 # add new issue to project
|
- uses: actions/add-to-project@v1.0.0 # add new issue to project
|
||||||
with:
|
with:
|
||||||
project-url: https://github.com/orgs/aquasecurity/projects/25
|
project-url: https://github.com/orgs/aquasecurity/projects/25
|
||||||
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
field-values: Important (long-term)
|
field-values: Important (long-term)
|
||||||
|
|
||||||
# 'kind/feature' AND 'priority/important-soon' labels -> 'Important (soon)' column
|
# 'kind/feature' AND 'priority/important-soon' labels -> 'Important (soon)' column
|
||||||
- uses: actions/add-to-project@v0.4.0 # add new issue to project
|
- uses: actions/add-to-project@v1.0.0 # add new issue to project
|
||||||
with:
|
with:
|
||||||
project-url: https://github.com/orgs/aquasecurity/projects/25
|
project-url: https://github.com/orgs/aquasecurity/projects/25
|
||||||
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
||||||
@@ -62,7 +62,7 @@ jobs:
|
|||||||
field-values: Important (soon)
|
field-values: Important (soon)
|
||||||
|
|
||||||
# 'kind/feature' AND 'priority/critical-urgent' labels -> 'Urgent' column
|
# 'kind/feature' AND 'priority/critical-urgent' labels -> 'Urgent' column
|
||||||
- uses: actions/add-to-project@v0.4.0 # add new issue to project
|
- uses: actions/add-to-project@v1.0.0 # add new issue to project
|
||||||
with:
|
with:
|
||||||
project-url: https://github.com/orgs/aquasecurity/projects/25
|
project-url: https://github.com/orgs/aquasecurity/projects/25
|
||||||
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
github-token: ${{ secrets.ORG_PROJECT_TOKEN }}
|
||||||
|
|||||||
6
.github/workflows/scan.yaml
vendored
@@ -10,14 +10,14 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
- name: Run Trivy vulnerability scanner and create GitHub issues
|
- name: Run Trivy vulnerability scanner and create GitHub issues
|
||||||
uses: knqyf263/trivy-issue-action@v0.0.4
|
uses: knqyf263/trivy-issue-action@v0.0.5
|
||||||
with:
|
with:
|
||||||
assignee: knqyf263
|
assignee: knqyf263
|
||||||
severity: CRITICAL
|
severity: CRITICAL
|
||||||
skip-dirs: integration,examples
|
skip-dirs: integration,examples,pkg
|
||||||
label: kind/security
|
label: kind/security
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
6
.github/workflows/semantic-pr.yaml
vendored
@@ -47,6 +47,7 @@ jobs:
|
|||||||
|
|
||||||
alpine
|
alpine
|
||||||
wolfi
|
wolfi
|
||||||
|
chainguard
|
||||||
redhat
|
redhat
|
||||||
alma
|
alma
|
||||||
rocky
|
rocky
|
||||||
@@ -72,6 +73,9 @@ jobs:
|
|||||||
c\+\+
|
c\+\+
|
||||||
elixir
|
elixir
|
||||||
dart
|
dart
|
||||||
|
swift
|
||||||
|
bitnami
|
||||||
|
conda
|
||||||
|
|
||||||
os
|
os
|
||||||
lang
|
lang
|
||||||
@@ -92,8 +96,10 @@ jobs:
|
|||||||
cyclonedx
|
cyclonedx
|
||||||
spdx
|
spdx
|
||||||
purl
|
purl
|
||||||
|
vex
|
||||||
|
|
||||||
helm
|
helm
|
||||||
report
|
report
|
||||||
db
|
db
|
||||||
|
parser
|
||||||
deps
|
deps
|
||||||
|
|||||||
9
.github/workflows/stale-issues.yaml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: "Stale issues"
|
name: "Stale PR's"
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 0 * * *'
|
- cron: '0 0 * * *'
|
||||||
@@ -7,14 +7,13 @@ jobs:
|
|||||||
timeout-minutes: 1
|
timeout-minutes: 1
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v7
|
- uses: actions/stale@v9
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
stale-issue-message: 'This issue is stale because it has been labeled with inactivity.'
|
|
||||||
stale-pr-message: 'This PR is stale because it has been labeled with inactivity.'
|
stale-pr-message: 'This PR is stale because it has been labeled with inactivity.'
|
||||||
exempt-issue-labels: 'lifecycle/frozen,lifecycle/active,priority/critical-urgent,priority/important-soon,priority/important-longterm,priority/backlog,priority/awaiting-more-evidence'
|
|
||||||
exempt-pr-labels: 'lifecycle/active'
|
exempt-pr-labels: 'lifecycle/active'
|
||||||
stale-pr-label: 'lifecycle/stale'
|
stale-pr-label: 'lifecycle/stale'
|
||||||
stale-issue-label: 'lifecycle/stale'
|
|
||||||
days-before-stale: 60
|
days-before-stale: 60
|
||||||
|
days-before-issue-stale: '-1'
|
||||||
days-before-close: 20
|
days-before-close: 20
|
||||||
|
days-before-issue-close: '-1'
|
||||||
|
|||||||
5
.github/workflows/test-docs.yaml
vendored
@@ -10,15 +10,16 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
persist-credentials: true
|
persist-credentials: true
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: 3.x
|
python-version: 3.x
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
|
python -m pip install --upgrade pip setuptools wheel
|
||||||
pip install -r docs/build/requirements.txt
|
pip install -r docs/build/requirements.txt
|
||||||
- name: Configure the git user
|
- name: Configure the git user
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
187
.github/workflows/test.yaml
vendored
@@ -1,19 +1,14 @@
|
|||||||
name: Test
|
name: Test
|
||||||
on:
|
on:
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths-ignore:
|
|
||||||
- '**.md'
|
|
||||||
- 'docs/**'
|
|
||||||
- 'mkdocs.yml'
|
|
||||||
- 'LICENSE'
|
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- '**.md'
|
- '**.md'
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
- 'mkdocs.yml'
|
- 'mkdocs.yml'
|
||||||
- 'LICENSE'
|
- 'LICENSE'
|
||||||
|
merge_group:
|
||||||
|
env:
|
||||||
|
GO_VERSION: '1.22'
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Test
|
name: Test
|
||||||
@@ -22,13 +17,22 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- name: Maximize build space
|
||||||
|
uses: easimon/maximize-build-space@v10
|
||||||
|
with:
|
||||||
|
root-reserve-mb: 32768 # The golangci-lint uses a lot of space.
|
||||||
|
remove-android: "true"
|
||||||
|
remove-docker-images: "true"
|
||||||
|
remove-dotnet: "true"
|
||||||
|
remove-haskell: "true"
|
||||||
|
if: matrix.operating-system == 'ubuntu-latest'
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: oldstable
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
- name: go mod tidy
|
- name: go mod tidy
|
||||||
run: |
|
run: |
|
||||||
go mod tidy
|
go mod tidy
|
||||||
@@ -39,85 +43,178 @@ jobs:
|
|||||||
if: matrix.operating-system == 'ubuntu-latest'
|
if: matrix.operating-system == 'ubuntu-latest'
|
||||||
|
|
||||||
- name: Lint
|
- name: Lint
|
||||||
uses: golangci/golangci-lint-action@v3.4.0
|
id: lint
|
||||||
|
uses: golangci/golangci-lint-action@v4.0.0
|
||||||
with:
|
with:
|
||||||
version: v1.49
|
version: v1.57
|
||||||
args: --deadline=30m
|
args: --timeout=30m --out-format=line-number
|
||||||
skip-cache: true # https://github.com/golangci/golangci-lint-action/issues/244#issuecomment-1052197778
|
skip-cache: true # https://github.com/golangci/golangci-lint-action/issues/244#issuecomment-1052197778
|
||||||
if: matrix.operating-system == 'ubuntu-latest'
|
if: matrix.operating-system == 'ubuntu-latest'
|
||||||
|
|
||||||
# Install tools
|
- name: Check if linter failed
|
||||||
- uses: aquaproj/aqua-installer@v2.0.2
|
run: |
|
||||||
|
echo "Linter failed, running 'mage lint:fix' might help to correct some errors"
|
||||||
|
exit 1
|
||||||
|
if: ${{ failure() && steps.lint.conclusion == 'failure' }}
|
||||||
|
|
||||||
|
- name: Install tools
|
||||||
|
uses: aquaproj/aqua-installer@v3.0.0
|
||||||
with:
|
with:
|
||||||
aqua_version: v1.25.0
|
aqua_version: v1.25.0
|
||||||
|
aqua_opts: ""
|
||||||
|
|
||||||
|
- name: Check if CLI references are up-to-date
|
||||||
|
run: |
|
||||||
|
mage docs:generate
|
||||||
|
if [ -n "$(git status --porcelain)" ]; then
|
||||||
|
echo "Run 'mage docs:generate' and push it"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if: matrix.operating-system == 'ubuntu-latest'
|
||||||
|
|
||||||
- name: Run unit tests
|
- name: Run unit tests
|
||||||
run: make test
|
run: mage test:unit
|
||||||
|
|
||||||
integration:
|
integration:
|
||||||
name: Integration Test
|
name: Integration Test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code into the Go module directory
|
- name: Check out code into the Go module directory
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Install tools
|
||||||
|
uses: aquaproj/aqua-installer@v3.0.0
|
||||||
|
with:
|
||||||
|
aqua_version: v1.25.0
|
||||||
|
|
||||||
- name: Run integration tests
|
- name: Run integration tests
|
||||||
run: make test-integration
|
run: mage test:integration
|
||||||
|
|
||||||
|
k8s-integration:
|
||||||
|
name: K8s Integration Test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Maximize build space
|
||||||
|
uses: easimon/maximize-build-space@v10
|
||||||
|
with:
|
||||||
|
root-reserve-mb: 32768 # The Go cache (`~/.cache/go-build` and `~/go/pkg`) requires a lot of storage space.
|
||||||
|
remove-android: "true"
|
||||||
|
remove-docker-images: "true"
|
||||||
|
remove-dotnet: "true"
|
||||||
|
remove-haskell: "true"
|
||||||
|
|
||||||
|
- name: Check out code into the Go module directory
|
||||||
|
uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Install tools
|
||||||
|
uses: aquaproj/aqua-installer@v3.0.0
|
||||||
|
with:
|
||||||
|
aqua_version: v1.25.0
|
||||||
|
|
||||||
|
- name: Run k8s integration tests
|
||||||
|
run: mage test:k8s
|
||||||
|
|
||||||
module-test:
|
module-test:
|
||||||
name: Module Integration Test
|
name: Module Integration Test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
# Install tools
|
- name: Install tools
|
||||||
- uses: aquaproj/aqua-installer@v2.0.2
|
uses: aquaproj/aqua-installer@v3.0.0
|
||||||
with:
|
with:
|
||||||
aqua_version: v1.25.0
|
aqua_version: v1.25.0
|
||||||
|
|
||||||
- name: Run module integration tests
|
- name: Run module integration tests
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
make test-module-integration
|
mage test:module
|
||||||
|
|
||||||
|
vm-test:
|
||||||
|
name: VM Integration Test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Maximize build space
|
||||||
|
uses: easimon/maximize-build-space@v10
|
||||||
|
with:
|
||||||
|
root-reserve-mb: 32768 # The Go cache (`~/.cache/go-build` and `~/go/pkg`) requires a lot of storage space.
|
||||||
|
remove-android: 'true'
|
||||||
|
remove-docker-images: 'true'
|
||||||
|
remove-dotnet: 'true'
|
||||||
|
remove-haskell: 'true'
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
- name: Install tools
|
||||||
|
uses: aquaproj/aqua-installer@v3.0.0
|
||||||
|
with:
|
||||||
|
aqua_version: v1.25.0
|
||||||
|
- name: Run vm integration tests
|
||||||
|
run: |
|
||||||
|
mage test:vm
|
||||||
|
|
||||||
build-test:
|
build-test:
|
||||||
name: Build Test
|
name: Build Test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
env:
|
env:
|
||||||
DOCKER_CLI_EXPERIMENTAL: "enabled"
|
DOCKER_CLI_EXPERIMENTAL: "enabled"
|
||||||
steps:
|
steps:
|
||||||
- name: Set up QEMU
|
- name: Maximize build space
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: easimon/maximize-build-space@v10
|
||||||
|
with:
|
||||||
- name: Set up Docker Buildx
|
root-reserve-mb: 32768 # The Go cache (`~/.cache/go-build` and `~/go/pkg`) requires a lot of storage space.
|
||||||
id: buildx
|
remove-android: 'true'
|
||||||
uses: docker/setup-buildx-action@v2
|
remove-docker-images: 'true'
|
||||||
|
remove-dotnet: 'true'
|
||||||
- name: Show available Docker Buildx platforms
|
remove-haskell: 'true'
|
||||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
if: matrix.operating-system == 'ubuntu-latest'
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4.1.4
|
||||||
|
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: go.mod
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Determine GoReleaser ID
|
||||||
|
id: goreleaser_id
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ "${{ matrix.operating-system }}" == "windows-latest" ]; then
|
||||||
|
echo "id=--id build-windows" >> $GITHUB_OUTPUT
|
||||||
|
elif [ "${{ matrix.operating-system }}" == "macos-latest" ]; then
|
||||||
|
echo "id=--id build-macos --id build-bsd" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "id=--id build-linux" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Run GoReleaser
|
- name: Run GoReleaser
|
||||||
uses: goreleaser/goreleaser-action@v4
|
uses: goreleaser/goreleaser-action@v5
|
||||||
with:
|
with:
|
||||||
version: v1.4.1
|
version: v1.20.0
|
||||||
args: release --skip-sign --snapshot --rm-dist --skip-publish --timeout 90m
|
args: build --snapshot --clean --timeout 90m ${{ steps.goreleaser_id.outputs.id }}
|
||||||
|
|
||||||
|
|||||||
32
.github/workflows/vm-test.yaml
vendored
@@ -1,32 +0,0 @@
|
|||||||
name: VM Test
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- 'pkg/fanal/vm/**'
|
|
||||||
- 'pkg/fanal/walker/vm.go'
|
|
||||||
- 'pkg/fanal/artifact/vm/**'
|
|
||||||
- 'integration/vm_test.go'
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- 'pkg/fanal/vm/**'
|
|
||||||
- 'pkg/fanal/walker/vm.go'
|
|
||||||
- 'pkg/fanal/artifact/vm/**'
|
|
||||||
- 'integration/vm_test.go'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
vm-test:
|
|
||||||
name: VM Integration Test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Set up Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version-file: go.mod
|
|
||||||
- name: Run vm integration tests
|
|
||||||
run: |
|
|
||||||
make test-vm-integration
|
|
||||||
4
.gitignore
vendored
@@ -35,3 +35,7 @@ dist
|
|||||||
|
|
||||||
# WebAssembly
|
# WebAssembly
|
||||||
*.wasm
|
*.wasm
|
||||||
|
|
||||||
|
# Signing
|
||||||
|
gpg.key
|
||||||
|
cmd/trivy/trivy
|
||||||
|
|||||||
@@ -17,14 +17,55 @@ linters-settings:
|
|||||||
min-occurrences: 3
|
min-occurrences: 3
|
||||||
misspell:
|
misspell:
|
||||||
locale: US
|
locale: US
|
||||||
goimports:
|
ignore-words:
|
||||||
local-prefixes: github.com/aquasecurity
|
- licence
|
||||||
|
- optimise
|
||||||
gosec:
|
gosec:
|
||||||
excludes:
|
excludes:
|
||||||
- G101
|
- G101
|
||||||
- G114
|
- G114
|
||||||
- G204
|
- G204
|
||||||
- G402
|
- G402
|
||||||
|
gci:
|
||||||
|
sections:
|
||||||
|
- standard
|
||||||
|
- default
|
||||||
|
- prefix(github.com/aquasecurity/)
|
||||||
|
- blank
|
||||||
|
- dot
|
||||||
|
gomodguard:
|
||||||
|
blocked:
|
||||||
|
modules:
|
||||||
|
- github.com/hashicorp/go-version:
|
||||||
|
recommendations:
|
||||||
|
- github.com/aquasecurity/go-version
|
||||||
|
reason: "`aquasecurity/go-version` is designed for our use-cases"
|
||||||
|
- github.com/Masterminds/semver:
|
||||||
|
recommendations:
|
||||||
|
- github.com/aquasecurity/go-version
|
||||||
|
reason: "`aquasecurity/go-version` is designed for our use-cases"
|
||||||
|
gocritic:
|
||||||
|
disabled-checks:
|
||||||
|
- appendAssign
|
||||||
|
- unnamedResult
|
||||||
|
- whyNoLint
|
||||||
|
- indexAlloc
|
||||||
|
- octalLiteral
|
||||||
|
- hugeParam
|
||||||
|
- rangeValCopy
|
||||||
|
- regexpSimplify
|
||||||
|
- sloppyReassign
|
||||||
|
- commentedOutCode
|
||||||
|
enabled-tags:
|
||||||
|
- diagnostic
|
||||||
|
- style
|
||||||
|
- performance
|
||||||
|
- experimental
|
||||||
|
- opinionated
|
||||||
|
settings:
|
||||||
|
ruleguard:
|
||||||
|
failOn: all
|
||||||
|
rules: '${configDir}/misc/lint/rules.go'
|
||||||
|
|
||||||
linters:
|
linters:
|
||||||
disable-all: true
|
disable-all: true
|
||||||
@@ -39,18 +80,24 @@ linters:
|
|||||||
- goconst
|
- goconst
|
||||||
- gocyclo
|
- gocyclo
|
||||||
- gofmt
|
- gofmt
|
||||||
- goimports
|
|
||||||
- misspell
|
- misspell
|
||||||
|
- bodyclose
|
||||||
|
- gci
|
||||||
|
- gomodguard
|
||||||
|
- tenv
|
||||||
|
- gocritic
|
||||||
|
|
||||||
run:
|
run:
|
||||||
go: 1.19
|
go: '1.22'
|
||||||
skip-files:
|
|
||||||
- ".*._mock.go$"
|
|
||||||
- ".*._test.go$"
|
|
||||||
- "integration/*"
|
|
||||||
- "examples/*"
|
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
|
exclude-files:
|
||||||
|
- ".*_mock.go$"
|
||||||
|
- ".*_test.go$"
|
||||||
|
- "integration/*"
|
||||||
|
- "examples/*"
|
||||||
|
exclude-dirs:
|
||||||
|
- "pkg/iac/scanners/terraform/parser/funcs" # copies of Terraform functions
|
||||||
exclude-rules:
|
exclude-rules:
|
||||||
- linters:
|
- linters:
|
||||||
- gosec
|
- gosec
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM alpine:3.17.1
|
FROM alpine:3.19.1
|
||||||
RUN apk --no-cache add ca-certificates git
|
RUN apk --no-cache add ca-certificates git
|
||||||
COPY trivy /usr/local/bin/trivy
|
COPY trivy /usr/local/bin/trivy
|
||||||
COPY contrib/*.tpl contrib/
|
COPY contrib/*.tpl contrib/
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
FROM alpine:3.17.1
|
FROM alpine:3.19.1
|
||||||
RUN apk --no-cache add ca-certificates git
|
RUN apk --no-cache add ca-certificates git
|
||||||
|
|
||||||
# binaries were created with GoReleaser
|
# binaries were created with GoReleaser
|
||||||
# need to copy binaries from folder with correct architecture
|
# need to copy binaries from folder with correct architecture
|
||||||
# example architecture folder: dist/trivy_canary_build_linux_arm64/trivy
|
# example architecture folder: dist/trivy_canary_build_linux_arm64/trivy
|
||||||
|
# GoReleaser adds _v* to the folder name, but only when GOARCH is amd64
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
COPY "dist/trivy_canary_build_linux_${TARGETARCH}/trivy" /usr/local/bin/trivy
|
COPY "dist/trivy_canary_build_linux_${TARGETARCH}*/trivy" /usr/local/bin/trivy
|
||||||
COPY contrib/*.tpl contrib/
|
COPY contrib/*.tpl contrib/
|
||||||
ENTRYPOINT ["trivy"]
|
ENTRYPOINT ["trivy"]
|
||||||
|
|||||||
@@ -1,12 +1,20 @@
|
|||||||
FROM golang:1.19
|
FROM --platform=linux/amd64 golang:1.22
|
||||||
|
|
||||||
# Install protoc (cf. http://google.github.io/proto-lens/installing-protoc.html)
|
# Set environment variable for protoc
|
||||||
ENV PROTOC_ZIP=protoc-3.19.4-linux-x86_64.zip
|
ENV PROTOC_ZIP=protoc-3.19.4-linux-x86_64.zip
|
||||||
RUN apt-get update && apt-get install -y unzip
|
|
||||||
|
# Install unzip for protoc installation and clean up cache
|
||||||
|
RUN apt-get update && apt-get install -y unzip && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Download and install protoc
|
||||||
RUN curl --retry 5 -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/$PROTOC_ZIP \
|
RUN curl --retry 5 -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/$PROTOC_ZIP \
|
||||||
&& unzip -o $PROTOC_ZIP -d /usr/local bin/protoc \
|
&& unzip -o $PROTOC_ZIP -d /usr/local bin/protoc \
|
||||||
&& unzip -o $PROTOC_ZIP -d /usr/local 'include/*' \
|
&& unzip -o $PROTOC_ZIP -d /usr/local 'include/*' \
|
||||||
&& rm -f $PROTOC_ZIP
|
&& rm -f $PROTOC_ZIP
|
||||||
|
|
||||||
|
# Install Go tools
|
||||||
RUN go install github.com/twitchtv/twirp/protoc-gen-twirp@v8.1.0
|
RUN go install github.com/twitchtv/twirp/protoc-gen-twirp@v8.1.0
|
||||||
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.27.1
|
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.0
|
||||||
|
RUN go install github.com/magefile/mage@v1.15.0
|
||||||
|
|
||||||
|
ENV TRIVY_PROTOC_CONTAINER=true
|
||||||
|
|||||||
135
Makefile
@@ -1,135 +0,0 @@
|
|||||||
VERSION := $(patsubst v%,%,$(shell git describe --tags --always)) #Strips the v prefix from the tag
|
|
||||||
LDFLAGS := -ldflags "-s -w -X=main.version=$(VERSION)"
|
|
||||||
|
|
||||||
GOPATH := $(firstword $(subst :, ,$(shell go env GOPATH)))
|
|
||||||
GOBIN := $(GOPATH)/bin
|
|
||||||
GOSRC := $(GOPATH)/src
|
|
||||||
|
|
||||||
TEST_MODULE_DIR := pkg/module/testdata
|
|
||||||
TEST_MODULE_SRCS := $(wildcard $(TEST_MODULE_DIR)/*/*.go)
|
|
||||||
TEST_MODULES := $(patsubst %.go,%.wasm,$(TEST_MODULE_SRCS))
|
|
||||||
|
|
||||||
EXAMPLE_MODULE_DIR := examples/module
|
|
||||||
EXAMPLE_MODULE_SRCS := $(wildcard $(EXAMPLE_MODULE_DIR)/*/*.go)
|
|
||||||
EXAMPLE_MODULES := $(patsubst %.go,%.wasm,$(EXAMPLE_MODULE_SRCS))
|
|
||||||
|
|
||||||
MKDOCS_IMAGE := aquasec/mkdocs-material:dev
|
|
||||||
MKDOCS_PORT := 8000
|
|
||||||
|
|
||||||
export CGO_ENABLED := 0
|
|
||||||
|
|
||||||
u := $(if $(update),-u)
|
|
||||||
|
|
||||||
# Tools
|
|
||||||
$(GOBIN)/wire:
|
|
||||||
go install github.com/google/wire/cmd/wire@v0.5.0
|
|
||||||
|
|
||||||
$(GOBIN)/crane:
|
|
||||||
go install github.com/google/go-containerregistry/cmd/crane@v0.9.0
|
|
||||||
|
|
||||||
$(GOBIN)/golangci-lint:
|
|
||||||
curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(GOBIN) v1.49.0
|
|
||||||
|
|
||||||
$(GOBIN)/labeler:
|
|
||||||
go install github.com/knqyf263/labeler@latest
|
|
||||||
|
|
||||||
$(GOBIN)/easyjson:
|
|
||||||
go install github.com/mailru/easyjson/...@v0.7.7
|
|
||||||
|
|
||||||
.PHONY: wire
|
|
||||||
wire: $(GOBIN)/wire
|
|
||||||
wire gen ./pkg/commands/... ./pkg/rpc/...
|
|
||||||
|
|
||||||
.PHONY: mock
|
|
||||||
mock: $(GOBIN)/mockery
|
|
||||||
mockery -all -inpkg -case=snake -dir $(DIR)
|
|
||||||
|
|
||||||
.PHONY: deps
|
|
||||||
deps:
|
|
||||||
go get ${u} -d
|
|
||||||
go mod tidy
|
|
||||||
|
|
||||||
.PHONY: generate-test-modules
|
|
||||||
generate-test-modules: $(TEST_MODULES)
|
|
||||||
|
|
||||||
# Compile WASM modules for unit and integration tests
|
|
||||||
%.wasm:%.go
|
|
||||||
@if !(type "tinygo" > /dev/null 2>&1); then \
|
|
||||||
echo "Need to install TinyGo. Follow https://tinygo.org/getting-started/install/"; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
go generate $<
|
|
||||||
|
|
||||||
# Run unit tests
|
|
||||||
.PHONY: test
|
|
||||||
test: $(TEST_MODULES)
|
|
||||||
go test -v -short -coverprofile=coverage.txt -covermode=atomic ./...
|
|
||||||
|
|
||||||
integration/testdata/fixtures/images/*.tar.gz: $(GOBIN)/crane
|
|
||||||
mkdir -p integration/testdata/fixtures/images/
|
|
||||||
integration/scripts/download-images.sh
|
|
||||||
|
|
||||||
# Run integration tests
|
|
||||||
.PHONY: test-integration
|
|
||||||
test-integration: integration/testdata/fixtures/images/*.tar.gz
|
|
||||||
go test -v -tags=integration ./integration/... ./pkg/fanal/test/integration/...
|
|
||||||
|
|
||||||
# Run WASM integration tests
|
|
||||||
.PHONY: test-module-integration
|
|
||||||
test-module-integration: integration/testdata/fixtures/images/*.tar.gz $(EXAMPLE_MODULES)
|
|
||||||
go test -v -tags=module_integration ./integration/...
|
|
||||||
|
|
||||||
# Run VM integration tests
|
|
||||||
.PHONY: test-vm-integration
|
|
||||||
test-vm-integration: integration/testdata/fixtures/vm-images/*.img.gz
|
|
||||||
go test -v -tags=vm_integration ./integration/...
|
|
||||||
|
|
||||||
integration/testdata/fixtures/vm-images/*.img.gz:
|
|
||||||
integration/scripts/download-vm-images.sh
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: lint
|
|
||||||
lint: $(GOBIN)/golangci-lint
|
|
||||||
$(GOBIN)/golangci-lint run --timeout 5m
|
|
||||||
|
|
||||||
.PHONY: fmt
|
|
||||||
fmt:
|
|
||||||
find ./ -name "*.proto" | xargs clang-format -i
|
|
||||||
|
|
||||||
.PHONY: build
|
|
||||||
build:
|
|
||||||
go build $(LDFLAGS) ./cmd/trivy
|
|
||||||
|
|
||||||
.PHONY: protoc
|
|
||||||
protoc:
|
|
||||||
docker build -t trivy-protoc - < Dockerfile.protoc
|
|
||||||
docker run --rm -it -v ${PWD}:/app -w /app trivy-protoc make _$@
|
|
||||||
|
|
||||||
_protoc:
|
|
||||||
for path in `find ./rpc/ -name "*.proto" -type f`; do \
|
|
||||||
protoc --twirp_out=. --twirp_opt=paths=source_relative --go_out=. --go_opt=paths=source_relative $${path} || exit; \
|
|
||||||
done
|
|
||||||
|
|
||||||
.PHONY: install
|
|
||||||
install:
|
|
||||||
go install $(LDFLAGS) ./cmd/trivy
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
|
||||||
rm -rf integration/testdata/fixtures/images
|
|
||||||
|
|
||||||
# Create labels on GitHub
|
|
||||||
.PHONY: label
|
|
||||||
label: $(GOBIN)/labeler
|
|
||||||
labeler apply misc/triage/labels.yaml -r aquasecurity/trivy -l 5
|
|
||||||
|
|
||||||
# Run MkDocs development server to preview the documentation page
|
|
||||||
.PHONY: mkdocs-serve
|
|
||||||
mkdocs-serve:
|
|
||||||
docker build -t $(MKDOCS_IMAGE) -f docs/build/Dockerfile docs/build
|
|
||||||
docker run --name mkdocs-serve --rm -v $(PWD):/docs -p $(MKDOCS_PORT):8000 $(MKDOCS_IMAGE)
|
|
||||||
|
|
||||||
# Generate JSON marshaler/unmarshaler for TinyGo/WebAssembly as TinyGo doesn't support encoding/json.
|
|
||||||
.PHONY: easyjson
|
|
||||||
easyjson: $(GOBIN)/easyjson
|
|
||||||
easyjson pkg/module/serialize/types.go
|
|
||||||
24
README.md
@@ -31,6 +31,8 @@ Scanners (what Trivy can find there):
|
|||||||
- Sensitive information and secrets
|
- Sensitive information and secrets
|
||||||
- Software licenses
|
- Software licenses
|
||||||
|
|
||||||
|
Trivy supports most popular programming languages, operating systems, and platforms. For a complete list, see the [Scanning Coverage] page.
|
||||||
|
|
||||||
To learn more, go to the [Trivy homepage][homepage] for feature highlights, or to the [Documentation site][docs] for detailed information.
|
To learn more, go to the [Trivy homepage][homepage] for feature highlights, or to the [Documentation site][docs] for detailed information.
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
@@ -51,6 +53,11 @@ Trivy is integrated with many popular platforms and applications. The complete l
|
|||||||
- [VS Code plugin](https://github.com/aquasecurity/trivy-vscode-extension)
|
- [VS Code plugin](https://github.com/aquasecurity/trivy-vscode-extension)
|
||||||
- See [Ecosystem] for more
|
- See [Ecosystem] for more
|
||||||
|
|
||||||
|
### Canary builds
|
||||||
|
There are canary builds ([Docker Hub](https://hub.docker.com/r/aquasec/trivy/tags?page=1&name=canary), [GitHub](https://github.com/aquasecurity/trivy/pkgs/container/trivy/75776514?tag=canary), [ECR](https://gallery.ecr.aws/aquasecurity/trivy#canary) images and [binaries](https://github.com/aquasecurity/trivy/actions/workflows/canary.yaml)) as generated every push to main branch.
|
||||||
|
|
||||||
|
Please be aware: canary builds might have critical bugs, it's not recommended for use in production.
|
||||||
|
|
||||||
### General usage
|
### General usage
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -71,7 +78,7 @@ https://user-images.githubusercontent.com/1161307/171013513-95f18734-233d-45d3-a
|
|||||||
</details>
|
</details>
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
trivy fs --scanners vuln,secret,config myproject/
|
trivy fs --scanners vuln,secret,misconfig myproject/
|
||||||
```
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
@@ -98,11 +105,21 @@ trivy k8s --report summary cluster
|
|||||||
|
|
||||||
`tri` is pronounced like **tri**gger, `vy` is pronounced like en**vy**.
|
`tri` is pronounced like **tri**gger, `vy` is pronounced like en**vy**.
|
||||||
|
|
||||||
---
|
## Want more? Check out Aqua
|
||||||
|
|
||||||
|
If you liked Trivy, you will love Aqua which builds on top of Trivy to provide even more enhanced capabilities for a complete security management offering.
|
||||||
|
You can find a high level comparison table specific to Trivy users [here](https://github.com/aquasecurity/resources/blob/main/trivy-aqua.md).
|
||||||
|
In addition check out the <https://aquasec.com> website for more information about our products and services.
|
||||||
|
If you'd like to contact Aqua or request a demo, please use this form: <https://www.aquasec.com/demo>
|
||||||
|
|
||||||
|
## Community
|
||||||
|
|
||||||
Trivy is an [Aqua Security][aquasec] open source project.
|
Trivy is an [Aqua Security][aquasec] open source project.
|
||||||
Learn about our open source work and portfolio [here][oss].
|
Learn about our open source work and portfolio [here][oss].
|
||||||
Contact us about any matter by opening a GitHub Discussion [here][discussions]
|
Contact us about any matter by opening a GitHub Discussion [here][discussions]
|
||||||
|
Join our [Slack community][slack] to stay up to date with community efforts.
|
||||||
|
|
||||||
|
Please ensure to abide by our [Code of Conduct][code-of-conduct] during all interactions.
|
||||||
|
|
||||||
[test]: https://github.com/aquasecurity/trivy/actions/workflows/test.yaml
|
[test]: https://github.com/aquasecurity/trivy/actions/workflows/test.yaml
|
||||||
[test-img]: https://github.com/aquasecurity/trivy/actions/workflows/test.yaml/badge.svg
|
[test-img]: https://github.com/aquasecurity/trivy/actions/workflows/test.yaml/badge.svg
|
||||||
@@ -117,9 +134,12 @@ Contact us about any matter by opening a GitHub Discussion [here][discussions]
|
|||||||
[homepage]: https://trivy.dev
|
[homepage]: https://trivy.dev
|
||||||
[docs]: https://aquasecurity.github.io/trivy
|
[docs]: https://aquasecurity.github.io/trivy
|
||||||
[pronunciation]: #how-to-pronounce-the-name-trivy
|
[pronunciation]: #how-to-pronounce-the-name-trivy
|
||||||
|
[slack]: https://slack.aquasec.com
|
||||||
|
[code-of-conduct]: https://github.com/aquasecurity/community/blob/main/CODE_OF_CONDUCT.md
|
||||||
|
|
||||||
[Installation]:https://aquasecurity.github.io/trivy/latest/getting-started/installation/
|
[Installation]:https://aquasecurity.github.io/trivy/latest/getting-started/installation/
|
||||||
[Ecosystem]: https://aquasecurity.github.io/trivy/latest/ecosystem/
|
[Ecosystem]: https://aquasecurity.github.io/trivy/latest/ecosystem/
|
||||||
|
[Scanning Coverage]: https://aquasecurity.github.io/trivy/latest/docs/coverage/
|
||||||
|
|
||||||
[alpine]: https://ariadne.space/2021/06/08/the-vulnerability-remediation-lifecycle-of-alpine-containers/
|
[alpine]: https://ariadne.space/2021/06/08/the-vulnerability-remediation-lifecycle-of-alpine-containers/
|
||||||
[rego]: https://www.openpolicyagent.org/docs/latest/#rego
|
[rego]: https://www.openpolicyagent.org/docs/latest/#rego
|
||||||
|
|||||||
10
SECURITY.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
This is an open source project that is provided as-is without warrenty or liability.
|
||||||
|
As such no supportability commitment. The maintainers will do the best they can to address any report promptly and responsibly.
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
Please use the "Private vulnerability reporting" feature in the GitHub repository (under the "Security" tab).
|
||||||
@@ -3,6 +3,8 @@
|
|||||||
# https://aquaproj.github.io/
|
# https://aquaproj.github.io/
|
||||||
registries:
|
registries:
|
||||||
- type: standard
|
- type: standard
|
||||||
ref: v3.106.0 # renovate: depName=aquaproj/aqua-registry
|
ref: v3.157.0 # renovate: depName=aquaproj/aqua-registry
|
||||||
packages:
|
packages:
|
||||||
- name: tinygo-org/tinygo@v0.26.0
|
- name: tinygo-org/tinygo@v0.31.1
|
||||||
|
- name: WebAssembly/binaryen@version_112
|
||||||
|
- name: magefile/mage@v1.14.0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 36 KiB |
@@ -1,56 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 26.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="_x30_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 265 135" enable-background="new 0 0 265 135" xml:space="preserve">
|
|
||||||
<g>
|
|
||||||
<path fill="#07242D" d="M148.629,103.076v5.928c-4.038,0-7.676-1.454-10.545-3.863c-3.605-3.025-5.894-7.565-5.894-12.638V62.815
|
|
||||||
h5.894v13.471h10.545v5.966h-10.545v10.395C138.164,98.419,142.84,103.076,148.629,103.076z"/>
|
|
||||||
<path fill="#07242D" d="M169.65,76.285v5.889c-5.591,0.011-10.143,4.446-10.345,9.984v16.845h-5.908V76.285h5.908v3.735
|
|
||||||
C162.113,77.689,165.718,76.291,169.65,76.285z"/>
|
|
||||||
<path fill="#07242D" d="M173.447,68.698v-5.9h5.897v5.9H173.447z M173.447,109.003V76.285h5.897v32.719H173.447z"/>
|
|
||||||
<path fill="#07242D" d="M215.508,76.285l-16.348,32.719l-16.364-32.719h6.699l9.665,19.32l9.646-19.32L215.508,76.285z"/>
|
|
||||||
<path fill="#07242D" d="M250.874,76.285c0,0,0,35.771,0,38.135c0,9.136-7.493,16.428-16.37,16.423
|
|
||||||
c-4.157,0-8.009-1.576-10.934-4.196l4.24-4.24c1.809,1.532,4.143,2.464,6.693,2.459c5.745,0,10.396-4.696,10.396-10.446v-9.141
|
|
||||||
c-2.85,2.359-6.488,3.724-10.396,3.724c-8.894,0.005-16.384-7.171-16.384-16.372c0-0.194,0-16.345,0-16.345h5.972
|
|
||||||
c0,0,0.003,15.907,0.003,16.345c0,5.722,4.659,10.451,10.409,10.446c5.745,0,10.396-4.701,10.396-10.446V76.285H250.874z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<polygon fill="#FFFFFF" points="65.469,5.431 10.124,37.409 10.125,101.877 65.462,134.109 120.813,101.895 120.813,37.407 "/>
|
|
||||||
<g>
|
|
||||||
<path fill="#1904DA" d="M63.957,92.94V79.575c-6.048-2.856-9.846-8.792-9.768-15.27l-12.456-7.193
|
|
||||||
c-0.783,7.101,0.852,14.447,4.636,20.771C50.545,84.86,56.46,89.923,63.957,92.94z"/>
|
|
||||||
<path fill="#1904DA" d="M63.957,111.255V95.742c-8.438-3.162-15.089-8.73-19.77-16.553c-4.275-7.141-5.989-15.458-4.842-23.457
|
|
||||||
l-11.564-6.678C21.14,74.652,36.57,101.186,63.957,111.255z"/>
|
|
||||||
<path fill="#08B1D5" d="M66.804,95.596v15.649c26.877-10.306,42.715-37.348,36.372-62.1l-11.488,6.693
|
|
||||||
c1.481,8.635,0.079,16.879-4.065,23.865C83.476,86.697,76.281,92.188,66.804,95.596z"/>
|
|
||||||
<path fill="#08B1D5" d="M66.804,79.551v13.402c8.456-3.219,14.89-8.239,18.632-14.548c3.675-6.197,5.016-13.512,3.896-21.2
|
|
||||||
L76.888,64.38C76.826,70.53,73.171,76.032,66.804,79.551z"/>
|
|
||||||
<path fill="#FFC900" d="M78.53,41.442c5.228,2.549,9.501,6.608,12.373,11.749l11.183-6.458c-0.075-0.106-0.146-0.211-0.211-0.316
|
|
||||||
c-4.4-7.116-10.209-12.47-17.267-15.913c-19.641-9.576-44.026-2.441-55.772,16.23l11.227,6.481
|
|
||||||
C48.47,40.151,65.268,34.975,78.53,41.442z"/>
|
|
||||||
<path fill="#FFC900" d="M65.771,55.646c1.762,0,3.527,0.385,5.182,1.193h0.001c2.175,1.062,3.954,2.75,5.158,4.894L88.7,54.463
|
|
||||||
c-2.618-4.7-6.516-8.409-11.285-10.735c-12.078-5.888-27.409-1.16-35.147,10.76l12.525,7.229
|
|
||||||
C57.397,57.836,61.572,55.646,65.771,55.646z"/>
|
|
||||||
<path fill="#08B1D5" d="M66.804,130.848l51.828-30.205V40.14l-13.177,7.677c7.242,26.586-9.654,55.513-38.651,66.142V130.848z"/>
|
|
||||||
<path fill="#1904DA" d="M25.5,47.738l-13.196-7.621v60.509l51.653,30.22v-16.883C34.902,103.736,18.087,74.773,25.5,47.738z"/>
|
|
||||||
<path fill="#FFC900" d="M85.722,28.218c7.498,3.656,13.661,9.329,18.316,16.859c0.074,0.12,0.164,0.245,0.263,0.376l13.056-7.539
|
|
||||||
L65.469,7.948l-51.9,29.973l13.061,7.54C39.042,25.644,64.896,18.062,85.722,28.218z"/>
|
|
||||||
<path fill="#FF0036" d="M74.264,64.806c0.001-0.014,0.022-0.508-0.015-1.301c-0.104-0.324-1.328-2.715-4.385-4.383
|
|
||||||
c-2.089-1.139-4.769-1.27-7.357-0.362c-2.536,0.891-4.688,2.664-5.922,4.873c-0.015,0.192-0.044,0.647-0.022,1.173
|
|
||||||
c0.167,4.129,2.721,9.743,7.931,12.311l0.802,0.383l0.696-0.372C71.055,74.294,74.07,69.803,74.264,64.806z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path fill="#07242D" d="M149.768,48.152h-8.789c-4.846,0-8.789-3.943-8.789-8.789c0-4.846,3.943-8.789,8.789-8.789
|
|
||||||
s8.789,3.943,8.789,8.789V48.152z M140.979,34.143c-2.878,0-5.22,2.342-5.22,5.22c0,2.878,2.342,5.22,5.22,5.22h5.22v-5.22
|
|
||||||
C146.199,36.485,143.858,34.143,140.979,34.143z"/>
|
|
||||||
<path fill="#07242D" d="M208.745,48.152h-8.789c-4.846,0-8.789-3.943-8.789-8.789c0-4.846,3.943-8.789,8.789-8.789
|
|
||||||
c4.846,0,8.789,3.943,8.789,8.789V48.152z M199.956,34.143c-2.878,0-5.22,2.342-5.22,5.22c0,2.878,2.342,5.22,5.22,5.22h5.22v-5.22
|
|
||||||
C205.176,36.485,202.835,34.143,199.956,34.143z"/>
|
|
||||||
<path fill="#07242D" d="M180.296,48.156c-4.848,0-8.793-3.944-8.793-8.793v-8.248h3.571v8.248c0,2.879,2.343,5.222,5.222,5.222
|
|
||||||
c2.879,0,5.222-2.343,5.222-5.222v-8.248h3.571v8.248C189.089,44.211,185.144,48.156,180.296,48.156z"/>
|
|
||||||
<path fill="#07242D" d="M160.636,30.574c-4.846,0-8.789,3.943-8.789,8.789c0,4.846,3.943,8.789,8.789,8.789l3.569-3.569h-3.569
|
|
||||||
c-2.878,0-5.22-2.342-5.22-5.22c0-2.878,2.342-5.22,5.22-5.22c2.878,0,5.22,2.342,5.22,5.22V56.54h3.569V39.363
|
|
||||||
C169.425,34.516,165.482,30.574,160.636,30.574z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.7 KiB |
BIN
brand/Trivy-OSS-Logo-Color-Horizontal-RGB.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
85
brand/Trivy-OSS-Logo-Color-Horizontal-RGB.svg
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 1920 891" style="enable-background:new 0 0 1920 891;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#031730;}
|
||||||
|
.st1{fill:#08B1D5;}
|
||||||
|
.st2{fill:#1904DA;}
|
||||||
|
.st3{fill:#FFC900;}
|
||||||
|
.st4{fill:#FF0036;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M1437.8,277.53h-46.05c-25.39,0-46.05-20.66-46.05-46.05c0-25.39,20.66-46.05,46.05-46.05
|
||||||
|
c25.39,0,46.05,20.66,46.05,46.05V277.53z M1391.75,204.13c-15.08,0-27.35,12.27-27.35,27.35c0,15.08,12.27,27.35,27.35,27.35
|
||||||
|
h27.35v-27.35C1419.1,216.4,1406.84,204.13,1391.75,204.13z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M1746.82,277.53h-46.05c-25.39,0-46.05-20.66-46.05-46.05c0-25.39,20.66-46.05,46.05-46.05
|
||||||
|
c25.39,0,46.05,20.66,46.05,46.05V277.53z M1700.77,204.13c-15.08,0-27.35,12.27-27.35,27.35c0,15.08,12.27,27.35,27.35,27.35
|
||||||
|
h27.35v-27.35C1728.12,216.4,1715.85,204.13,1700.77,204.13z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M1597.76,277.55c-25.4,0-46.07-20.66-46.07-46.07v-43.22h18.71v43.22c0,15.09,12.28,27.36,27.36,27.36
|
||||||
|
s27.36-12.28,27.36-27.36v-43.22h18.71v43.22C1643.83,256.88,1623.16,277.55,1597.76,277.55z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M1494.75,185.43c-25.39,0-46.05,20.66-46.05,46.05c0,25.39,20.66,46.05,46.05,46.05l18.7-18.7h-18.7
|
||||||
|
c-15.08,0-27.35-12.27-27.35-27.35c0-15.08,12.27-27.35,27.35-27.35s27.35,12.27,27.35,27.35v90h18.7v-90
|
||||||
|
C1540.8,206.09,1520.14,185.43,1494.75,185.43z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M968.09,578.05v45.38c-30.92,0-58.76-11.12-80.72-29.55c-27.59-23.17-45.14-57.93-45.14-96.78V269.82h45.14
|
||||||
|
v103.14h80.72v45.68h-80.72v79.6C887.98,542.42,923.77,578.05,968.09,578.05z"/>
|
||||||
|
<path class="st0" d="M1128.93,372.97v45.08c-42.79,0.09-77.63,34.03-79.2,76.45v128.94h-45.21V372.96h45.21v28.59
|
||||||
|
C1071.24,383.73,1098.84,373.01,1128.93,372.97z"/>
|
||||||
|
<path class="st0" d="M1157.94,347.93v-39.5h45.14v39.5H1157.94z M1157.94,623.44V372.96h45.14v250.48H1157.94z"/>
|
||||||
|
<path class="st0" d="M1479.86,372.96l-125.14,250.48l-125.3-250.48h51.3l73.99,147.93l73.84-147.93H1479.86z"/>
|
||||||
|
<path class="st0" d="M1750.5,372.96c0,0,0,273.85,0,291.97c0,69.91-57.37,125.75-125.32,125.69
|
||||||
|
c-31.84,0.03-61.33-12.05-83.7-32.11l32.45-32.45c13.85,11.74,31.73,18.85,51.25,18.82c43.98,0,79.58-35.97,79.58-79.95v-69.99
|
||||||
|
c-21.82,18.06-49.68,28.52-79.58,28.49c-68.1,0.06-125.44-54.9-125.44-125.35c0-1.49,0-125.13,0-125.13h45.73
|
||||||
|
c0,0,0.02,121.79,0.02,125.13c0,43.8,35.68,80,79.69,79.96c43.98,0,79.58-35.97,79.58-79.96V372.96H1750.5z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M463.95,358.89c0.04,0,0.08,0,0.12,0c6.43,0.01,11.75-4.93,11.75-11.36V134.47l-11.99-6.7l-11.94,6.67
|
||||||
|
v213.1c0,6.43,5.32,11.38,11.75,11.35C463.73,358.89,463.84,358.89,463.95,358.89z"/>
|
||||||
|
<path class="st2" d="M392.02,455.6L194.35,588.27v15.11l11.26,6.17L405.34,475.5c5.13-3.44,6.41-10.31,3.09-15.52
|
||||||
|
c-0.14-0.22-0.28-0.44-0.42-0.67C404.58,453.78,397.42,451.98,392.02,455.6z"/>
|
||||||
|
<path class="st3" d="M522.51,475.6l199.56,133.93l11.23-6.15v-15.14L535.83,455.71c-5.4-3.62-12.56-1.83-16,3.69
|
||||||
|
c-0.13,0.21-0.26,0.42-0.4,0.63C516.09,465.26,517.36,472.15,522.51,475.6z"/>
|
||||||
|
<path class="st0" d="M757.23,277.9V264.2l-12.26-6.85l-0.91-0.48L475.5,106.89l-11.68-6.51l-11.63,6.51L183.58,256.88
|
||||||
|
l-0.91,0.48l-12.25,6.85v13.69l-0.91,0.53l0.91,0.48v13.64v325.01l12.45,6.8l261.62,143.33l3.3,1.82l16.08,8.81l16.04-8.81
|
||||||
|
l3.3-1.82l261.62-143.33l12.4-6.8V292.55v-13.6l0.96-0.53L757.23,277.9z M476.11,744.33V502.51c0-6.59-5.39-11.98-11.98-11.97
|
||||||
|
l-0.18,0l-0.12,0c-6.59-0.01-11.98,5.38-11.98,11.97v241.81L205.61,609.55l-11.26-6.17v-15.11V290.06l196.06,107.42
|
||||||
|
c5.66,3.1,12.84,1.02,15.97-4.63l0.14-0.25c3.16-5.71,1.06-12.96-4.67-16.1L208.33,270.47l243.55-136.03l11.94-6.67l11.99,6.7
|
||||||
|
l243.5,136.01L525.64,376.58c-5.7,3.12-7.48,10.25-4.32,15.92c0.05,0.1,0.11,0.19,0.16,0.29c3.1,5.62,10.02,7.85,15.65,4.77
|
||||||
|
l196.16-107.5v298.19v15.14l-11.23,6.15L476.11,744.33z"/>
|
||||||
|
</g>
|
||||||
|
<circle class="st4" cx="463.95" cy="424.72" r="34.73"/>
|
||||||
|
</g>
|
||||||
|
<path class="st1" d="M649.35,258.97L461.77,153.83c-5.77-3.23-7.82-10.53-4.59-16.29v0c3.23-5.77,10.53-7.82,16.29-4.59
|
||||||
|
l187.58,105.15c5.77,3.23,7.82,10.53,4.59,16.29v0C662.41,260.15,655.12,262.2,649.35,258.97z"/>
|
||||||
|
<path class="st1" d="M567.15,267.09l-105.38-59.07c-5.77-3.23-7.82-10.53-4.59-16.29v0c3.23-5.77,10.53-7.82,16.29-4.59
|
||||||
|
l105.38,59.07c5.77,3.23,7.82,10.53,4.59,16.29l0,0C580.21,268.26,572.92,270.32,567.15,267.09z"/>
|
||||||
|
<path class="st1" d="M601.67,286.44L601.67,286.44c-5.77-3.23-7.82-10.53-4.59-16.29v0c3.23-5.77,10.53-7.82,16.29-4.59l0,0
|
||||||
|
c5.77,3.23,7.82,10.53,4.59,16.29v0C614.73,287.61,607.44,289.67,601.67,286.44z"/>
|
||||||
|
<path class="st1" d="M497.04,283.82l-35-19.62c-5.77-3.23-7.82-10.53-4.59-16.29v0c3.23-5.77,10.53-7.82,16.29-4.59l35,19.62
|
||||||
|
c5.77,3.23,7.82,10.53,4.59,16.29l0,0C510.1,284.99,502.8,287.05,497.04,283.82z"/>
|
||||||
|
<path class="st1" d="M549.85,316.05l-20.26-11.36c-5.77-3.23-7.82-10.53-4.59-16.29h0c3.23-5.77,10.53-7.82,16.29-4.59
|
||||||
|
l20.26,11.36c5.77,3.23,7.82,10.53,4.59,16.29v0C562.91,317.23,555.61,319.28,549.85,316.05z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 81 KiB |
@@ -1,202 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 26.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="_x30_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 500 524" enable-background="new 0 0 500 524" xml:space="preserve">
|
|
||||||
<g display="none">
|
|
||||||
<g display="inline">
|
|
||||||
<path fill="#07242D" d="M-483.763,450.803h-11.559l-22.557-22.807c-0.919,0.114-1.853,0.174-2.802,0.174v22.632h-8.238v-63.931
|
|
||||||
h8.239c0,0-0.016,33.158,0,33.158c4.013,0,7.684-1.656,10.29-4.32l9.86-10.073h11.814l-16.032,15.918
|
|
||||||
c-1.42,1.421-3.031,2.655-4.787,3.659L-483.763,450.803z"/>
|
|
||||||
<path fill="#07242D" d="M-438.316,405.517v22.819c0,0,0,0.033,0,0.049c0,12.39-10.039,22.418-22.429,22.418
|
|
||||||
c-12.389,0-22.421-10.059-22.421-22.448c0-0.017,0-22.837,0-22.837h7.989v22.819c0,7.967,6.466,14.457,14.433,14.457
|
|
||||||
c7.966,0,14.424-6.491,14.424-14.457v-22.819H-438.316z"/>
|
|
||||||
<path fill="#07242D" d="M-385.244,428.166c0,12.501-10.133,22.636-22.636,22.636c-5.485,0-10.514-1.95-14.431-5.196v5.196h-8.218
|
|
||||||
c0.005-0.516,0.005-63.931,0.005-63.931h8.217l-0.004,23.854c3.918-3.246,8.947-5.196,14.432-5.196
|
|
||||||
C-395.377,405.529-385.242,415.664-385.244,428.166z M-393.437,428.166c0-7.976-6.466-14.441-14.442-14.441
|
|
||||||
c-7.793,0-14.443,6.329-14.443,14.418c0,8.089,6.649,14.464,14.443,14.464C-399.903,442.607-393.437,436.142-393.437,428.166z"/>
|
|
||||||
<path fill="#07242D" d="M-335.539,431.11h-36.518c1.375,6.517,7.157,11.435,14.075,11.435c4.514,0,8.538-2.095,11.172-5.362h9.577
|
|
||||||
c-3.496,8.008-11.475,13.619-20.748,13.619c-12.489,0-22.644-10.173-22.644-22.676c0-12.503,10.155-22.608,22.644-22.608
|
|
||||||
C-344.426,405.411-333.664,417.688-335.539,431.11z M-344.611,422.85c-2.103-5.316-7.296-9.06-13.371-9.06
|
|
||||||
c-6.076,0-11.275,3.746-13.382,9.06H-344.611z"/>
|
|
||||||
<path fill="#07242D" d="M-306.194,420.895v7.548h-23.302v-7.548H-306.194z"/>
|
|
||||||
<path fill="#07242D" d="M-252.987,428.166c0,12.501-10.133,22.636-22.636,22.636c-5.485,0-10.514-1.95-14.431-5.196v5.196h-8.218
|
|
||||||
c0.005-0.516,0.005-63.931,0.005-63.931h8.218l-0.004,23.854c3.918-3.246,8.946-5.196,14.431-5.196
|
|
||||||
C-263.12,405.529-252.985,415.664-252.987,428.166z M-261.181,428.166c0-7.976-6.467-14.441-14.442-14.441
|
|
||||||
c-7.794,0-14.443,6.329-14.443,14.418c0,8.089,6.649,14.464,14.443,14.464C-267.647,442.607-261.181,436.142-261.181,428.166z"/>
|
|
||||||
<path fill="#07242D" d="M-203.283,431.11h-36.518c1.375,6.517,7.157,11.435,14.075,11.435c4.514,0,8.538-2.095,11.172-5.362h9.577
|
|
||||||
c-3.496,8.008-11.475,13.619-20.748,13.619c-12.489,0-22.644-10.173-22.644-22.676c0-12.503,10.155-22.608,22.644-22.608
|
|
||||||
C-212.17,405.411-201.408,417.688-203.283,431.11z M-212.355,422.85c-2.103-5.316-7.296-9.06-13.371-9.06
|
|
||||||
c-6.076,0-11.275,3.746-13.382,9.06H-212.355z"/>
|
|
||||||
<path fill="#07242D" d="M-151.113,428.114c0,15.871,0,22.688,0,22.688h-8.262c0,0,0-14.878,0-22.688
|
|
||||||
c0-8.095-6.591-14.327-14.363-14.327c-7.772,0-14.393,6.163-14.393,14.327c0,7.814,0,22.688,0,22.688h-8.26v-45.285
|
|
||||||
c0,0,3.539,0,8.26,0v5.101c0,0,5.421-5.101,14.393-5.101C-163.095,405.517-151.113,413.789-151.113,428.114z"/>
|
|
||||||
<path fill="#07242D" d="M-112.598,438.373l5.799,5.798c-4.098,4.097-9.758,6.632-16.01,6.632c-6.252,0-11.912-2.534-16.01-6.632
|
|
||||||
c-4.097-4.098-6.632-9.758-6.632-16.01s2.534-11.912,6.632-16.01c4.098-4.097,9.758-6.632,16.01-6.632
|
|
||||||
c6.252,0,11.912,2.534,16.01,6.632l-5.799,5.799c-2.613-2.615-6.224-4.231-10.212-4.231c-3.988,0-7.599,1.617-10.212,4.231
|
|
||||||
c-2.614,2.613-4.23,6.224-4.23,10.212s1.616,7.599,4.23,10.213c2.613,2.613,6.224,4.229,10.212,4.229
|
|
||||||
C-118.821,442.602-115.211,440.986-112.598,438.373z"/>
|
|
||||||
<path fill="#07242D" d="M-55.678,428.174c0,15.827,0,22.626,0,22.626h-8.239c0,0,0-14.838,0-22.626
|
|
||||||
c0-8.072-6.575-14.287-14.324-14.287c-7.751,0-14.353,6.146-14.353,14.287c0,7.793,0,22.626,0,22.626h-8.238v-63.929h8.238v23.856
|
|
||||||
c0,0,5.405-5.086,14.353-5.086C-67.626,405.641-55.678,413.889-55.678,428.174z"/>
|
|
||||||
</g>
|
|
||||||
<g display="inline">
|
|
||||||
<path fill="#07242D" d="M186.582,442.579v8.203c-5.588,0-10.623-2.012-14.594-5.346c-4.989-4.186-8.157-10.469-8.157-17.489
|
|
||||||
v-41.085h8.157v18.642h14.594v8.257h-14.594v14.386C172.1,436.134,178.571,442.579,186.582,442.579z"/>
|
|
||||||
<path fill="#07242D" d="M215.674,405.503v8.149c-7.739,0.015-14.037,6.152-14.317,13.818v23.312h-8.176v-45.279h8.176v5.169
|
|
||||||
C205.243,407.446,210.232,405.51,215.674,405.503z"/>
|
|
||||||
<path fill="#07242D" d="M220.928,395.003v-8.165h8.161v8.165H220.928z M220.928,450.782v-45.279h8.161v45.279H220.928z"/>
|
|
||||||
<path fill="#07242D" d="M279.137,405.503l-22.624,45.279l-22.647-45.279h9.271l13.376,26.737l13.349-26.737H279.137z"/>
|
|
||||||
<path fill="#07242D" d="M328.08,405.503c0,0,0,49.504,0,52.776c0,12.643-10.369,22.736-22.655,22.728
|
|
||||||
c-5.753,0-11.084-2.181-15.131-5.807l5.868-5.868c2.504,2.12,5.734,3.41,9.263,3.403c7.95,0,14.386-6.498,14.386-14.456v-12.651
|
|
||||||
c-3.944,3.264-8.979,5.154-14.386,5.154c-12.309,0.008-22.674-9.924-22.674-22.659c0-0.269,0-22.62,0-22.62h8.265
|
|
||||||
c0,0,0.004,22.014,0.004,22.62c0,7.919,6.448,14.463,14.406,14.456c7.95,0,14.386-6.506,14.386-14.456v-22.62H328.08z"/>
|
|
||||||
</g>
|
|
||||||
<g display="inline">
|
|
||||||
<path fill="#07242D" d="M1186.898,438.384c-0.411,4.687-4.656,12.67-15.302,12.67c-10.092,0-16.135-6.761-16.135-6.761
|
|
||||||
l5.797-5.801c4.906,4.664,10.338,4.372,10.338,4.372c3.473-0.238,6.258-2.643,6.469-5.471c0.242-3.235-2.009-5.486-6.469-6.124
|
|
||||||
c-2.098-0.307-7.184-0.791-11.36-4.533c-1.36-1.222-6.489-6.577-2.217-14.191c0.834-1.491,4.556-6.769,13.577-6.769
|
|
||||||
c0,0,7.434-0.53,14.311,5.086l-5.866,5.863c-1.16-0.96-4.46-2.904-8.444-2.881c-7.207,0.046-7.007,4.011-7.007,4.011
|
|
||||||
c0.061,3.166,2.874,4.864,7.007,5.409C1185.672,425.114,1187.309,433.743,1186.898,438.384z"/>
|
|
||||||
<path fill="#07242D" d="M1215.419,442.848v8.206c-5.59,0-10.626-2.013-14.599-5.348c-4.99-4.188-8.16-10.473-8.16-17.495v-41.099
|
|
||||||
h8.16v18.648h14.599v8.26h-14.599v14.391C1200.932,436.401,1207.405,442.848,1215.419,442.848z"/>
|
|
||||||
<path fill="#07242D" d="M1263.522,428.372v22.682h-22.705c-0.5,0-0.999-0.015-1.495-0.054c-6.431-0.423-12.128-3.527-15.985-8.214
|
|
||||||
c-3.289-4.003-5.171-8.928-5.186-14.414c0.526-25.548,35.106-31.264,44.03-7.699
|
|
||||||
C1263.068,423.132,1263.522,425.76,1263.522,428.372z M1255.131,428.372c0.054-12.824-15.563-19.132-24.433-10.135l-0.004-0.008
|
|
||||||
c-2.609,2.605-4.226,6.17-4.226,10.142c0,7.937,6.435,14.399,14.368,14.399c3.976,0,14.295,0,14.295,0
|
|
||||||
S1255.131,432.352,1255.131,428.372z"/>
|
|
||||||
<path fill="#07242D" d="M1293.898,405.76v8.152c-7.741,0.015-14.042,6.154-14.322,13.823v23.319h-8.179V405.76h8.179v5.171
|
|
||||||
C1283.464,407.704,1288.454,405.767,1293.898,405.76z"/>
|
|
||||||
<path fill="#07242D" d="M1344.448,428.411c0,12.509-10.135,22.643-22.639,22.643c-5.486,0-10.515-1.952-14.433-5.194v5.194h-8.221
|
|
||||||
c0.008-0.515,0.008-63.942,0.008-63.942h8.217l-0.004,23.857c3.919-3.25,8.947-5.202,14.433-5.202
|
|
||||||
C1334.313,405.767,1344.452,415.91,1344.448,428.411z M1336.254,428.411c0-7.975-6.466-14.445-14.445-14.445
|
|
||||||
c-7.795,0-14.445,6.331-14.445,14.422c0,8.091,6.65,14.468,14.445,14.468C1329.788,442.856,1336.254,436.394,1336.254,428.411z"/>
|
|
||||||
<path fill="#07242D" d="M1394.394,428.411c0,12.509-10.15,22.643-22.643,22.643s-22.651-10.135-22.651-22.643
|
|
||||||
s10.157-22.651,22.651-22.651S1394.394,415.91,1394.394,428.411z M1386.127,428.411c0-7.937-6.431-14.376-14.376-14.376
|
|
||||||
c-7.941,0-14.387,6.431-14.387,14.376s6.446,14.383,14.387,14.383C1379.696,442.794,1386.127,436.355,1386.127,428.411z"/>
|
|
||||||
<path fill="#07242D" d="M1444.414,428.372v22.682h-22.705c-0.499,0-0.999-0.015-1.494-0.054
|
|
||||||
c-6.431-0.423-12.128-3.527-15.985-8.214c-3.289-4.003-5.171-8.928-5.186-14.414c0.526-25.548,35.106-31.264,44.03-7.699
|
|
||||||
C1443.961,423.132,1444.414,425.76,1444.414,428.372z M1436.024,428.372c0.054-12.824-15.563-19.132-24.433-10.135l-0.004-0.008
|
|
||||||
c-2.609,2.605-4.226,6.17-4.226,10.142c0,7.937,6.435,14.399,14.368,14.399c3.976,0,14.295,0,14.295,0
|
|
||||||
S1436.024,432.352,1436.024,428.372z"/>
|
|
||||||
<path fill="#07242D" d="M1474.791,405.76v8.152c-7.741,0.015-14.042,6.154-14.322,13.823v23.319h-8.179V405.76h8.179v5.171
|
|
||||||
C1464.356,407.704,1469.347,405.767,1474.791,405.76z"/>
|
|
||||||
<path fill="#07242D" d="M1521.556,451.031h-8.214v-5.194c-3.919,3.242-8.951,5.194-14.43,5.194
|
|
||||||
c-12.501,0-22.635-10.127-22.635-22.628s10.135-22.636,22.635-22.636c5.478,0,10.511,1.952,14.43,5.194l0.008-23.85h8.221
|
|
||||||
C1521.572,387.112,1521.556,450.516,1521.556,451.031z M1513.35,428.38c0-8.091-6.646-14.422-14.437-14.422
|
|
||||||
c-7.975,0-14.445,6.469-14.445,14.445s6.469,14.437,14.445,14.437C1506.704,442.84,1513.35,436.471,1513.35,428.38z"/>
|
|
||||||
</g>
|
|
||||||
<g display="inline">
|
|
||||||
<path fill="#07242D" d="M1711.171,438.276l5.802,5.802c-4.1,4.096-9.763,6.632-16.014,6.632c-6.255,0-11.918-2.536-16.018-6.632
|
|
||||||
c-4.1-4.103-6.635-9.759-6.635-16.014s2.536-11.918,6.635-16.022c4.1-4.096,9.763-6.632,16.018-6.632
|
|
||||||
c6.251,0,11.915,2.536,16.014,6.632l-5.802,5.802c-2.613-2.613-6.224-4.234-10.213-4.234c-3.992,0-7.604,1.621-10.216,4.234
|
|
||||||
c-2.617,2.613-4.234,6.224-4.234,10.22c0,3.988,1.618,7.6,4.234,10.213c2.613,2.613,6.224,4.234,10.216,4.234
|
|
||||||
C1704.947,442.511,1708.559,440.889,1711.171,438.276z"/>
|
|
||||||
<path fill="#07242D" d="M1722.967,450.71v-63.95h8.241v63.95H1722.967z"/>
|
|
||||||
<path fill="#07242D" d="M1783.282,428.064c0,12.51-10.151,22.646-22.646,22.646c-12.495,0-22.654-10.136-22.654-22.646
|
|
||||||
s10.159-22.654,22.654-22.654C1773.131,405.41,1783.282,415.561,1783.282,428.064z M1775.013,428.064
|
|
||||||
c0-7.938-6.432-14.378-14.378-14.378c-7.942,0-14.389,6.432-14.389,14.378c0,7.946,6.447,14.385,14.389,14.385
|
|
||||||
C1768.581,442.449,1775.013,436.01,1775.013,428.064z"/>
|
|
||||||
<path fill="#07242D" d="M1833.833,405.41v22.823c0,0,0,0.038,0,0.054c0,12.395-10.04,22.423-22.435,22.423
|
|
||||||
c-12.395,0-22.427-10.059-22.427-22.454c0-0.015,0-22.846,0-22.846h7.992v22.823c0,7.976,6.466,14.462,14.435,14.462
|
|
||||||
c7.969,0,14.431-6.486,14.431-14.462V405.41H1833.833z"/>
|
|
||||||
<path fill="#07242D" d="M1884.777,450.687h-8.218v-5.195c-3.915,3.243-8.945,5.195-14.431,5.195
|
|
||||||
c-12.503,0-22.634-10.128-22.634-22.631c0-12.503,10.132-22.638,22.634-22.638c5.487,0,10.516,1.952,14.431,5.195l0.011-23.852
|
|
||||||
h8.219C1884.789,386.76,1884.773,450.172,1884.777,450.687z M1876.574,428.033c0-8.092-6.651-14.424-14.447-14.424
|
|
||||||
c-7.973,0-14.443,6.47-14.443,14.447c0,7.976,6.466,14.439,14.443,14.439C1869.923,442.495,1876.574,436.125,1876.574,428.033z"/>
|
|
||||||
<path fill="#07242D" d="M1922.865,438.038c-0.411,4.687-4.657,12.672-15.303,12.672c-10.094,0-16.137-6.762-16.137-6.762
|
|
||||||
l5.798-5.802c4.906,4.664,10.339,4.372,10.339,4.372c3.473-0.238,6.259-2.643,6.47-5.471c0.242-3.235-2.009-5.487-6.47-6.124
|
|
||||||
c-2.098-0.307-7.185-0.792-11.361-4.534c-1.36-1.222-6.489-6.578-2.217-14.193c0.834-1.491,4.557-6.77,13.578-6.77
|
|
||||||
c0,0,7.435-0.53,14.312,5.087l-5.867,5.863c-1.16-0.961-4.461-2.905-8.445-2.882c-7.208,0.046-7.008,4.011-7.008,4.011
|
|
||||||
c0.062,3.166,2.874,4.864,7.008,5.41C1921.639,424.767,1923.276,433.397,1922.865,438.038z"/>
|
|
||||||
<path fill="#07242D" d="M1975.107,428.041c0,12.526-10.151,22.73-22.661,22.73c-5.471,0-10.493-1.952-14.416-5.195v35.371h-8.276
|
|
||||||
V405.41h8.276v5.156c3.923-3.22,8.945-5.156,14.416-5.156C1964.956,405.41,1975.107,415.523,1975.107,428.041z M1966.831,428.041
|
|
||||||
c0-7.953-6.432-14.347-14.385-14.347s-14.416,6.393-14.416,14.347s6.463,14.462,14.416,14.462S1966.831,435.994,1966.831,428.041z
|
|
||||||
"/>
|
|
||||||
<path fill="#07242D" d="M1981.877,450.71v-63.95h8.245v63.95H1981.877z"/>
|
|
||||||
<path fill="#07242D" d="M2042.192,428.064c0,12.51-10.151,22.646-22.646,22.646c-12.495,0-22.654-10.136-22.654-22.646
|
|
||||||
s10.159-22.654,22.654-22.654C2032.041,405.41,2042.192,415.561,2042.192,428.064z M2033.916,428.064
|
|
||||||
c0-7.938-6.432-14.378-14.37-14.378c-7.946,0-14.393,6.432-14.393,14.378c0,7.946,6.447,14.385,14.393,14.385
|
|
||||||
C2027.484,442.449,2033.916,436.01,2033.916,428.064z"/>
|
|
||||||
<path fill="#07242D" d="M2049.016,394.906v-8.168h8.168v8.168H2049.016z M2049.016,450.71v-45.3h8.168v45.3H2049.016z"/>
|
|
||||||
<path fill="#07242D" d="M2087.737,442.503v8.207c-5.594,0-10.627-2.013-14.6-5.348c-4.987-4.188-8.161-10.474-8.161-17.497V386.76
|
|
||||||
h8.161v18.65h14.6v8.261h-14.6v14.393C2073.252,436.056,2079.722,442.503,2087.737,442.503z"/>
|
|
||||||
</g>
|
|
||||||
<g display="inline">
|
|
||||||
<path fill="#07242D" d="M690.837,442.596v8.206c-5.59,0-10.626-2.013-14.599-5.348c-4.99-4.188-8.16-10.473-8.16-17.495V386.86
|
|
||||||
h8.16v18.648h14.599v8.26h-14.599v14.391C676.35,436.15,682.823,442.596,690.837,442.596z"/>
|
|
||||||
<path fill="#07242D" d="M719.939,405.508v8.152c-7.737,0.015-14.042,6.154-14.322,13.823v23.319h-8.179v-45.294h8.179v5.171
|
|
||||||
C709.504,407.452,714.495,405.516,719.939,405.508z"/>
|
|
||||||
<path fill="#07242D" d="M766.789,428.12v22.682h-22.705c-0.499,0-0.999-0.015-1.494-0.054c-6.431-0.423-12.128-3.527-15.985-8.214
|
|
||||||
c-3.289-4.003-5.171-8.928-5.183-14.414c0.523-25.548,35.102-31.264,44.026-7.699C766.335,422.88,766.789,425.508,766.789,428.12z
|
|
||||||
M758.398,428.12c0.054-12.824-15.563-19.132-24.433-10.135l-0.004-0.008c-2.609,2.605-4.226,6.17-4.226,10.142
|
|
||||||
c0,7.937,6.435,14.399,14.368,14.399c3.976,0,14.295,0,14.295,0S758.398,432.101,758.398,428.12z"/>
|
|
||||||
<path fill="#07242D" d="M805.36,438.37l5.801,5.801c-4.099,4.095-9.762,6.631-16.016,6.631c-6.254,0-11.913-2.536-16.012-6.631
|
|
||||||
c-4.099-4.103-6.631-9.766-6.631-16.02c0-6.247,2.532-11.909,6.631-16.012c4.099-4.095,9.758-6.631,16.012-6.631
|
|
||||||
c6.254,0,11.917,2.536,16.016,6.631l-5.801,5.801c-2.612-2.612-6.224-4.234-10.215-4.234c-3.988,0-7.599,1.621-10.211,4.234
|
|
||||||
c-2.616,2.612-4.234,6.224-4.234,10.211c0,3.995,1.617,7.607,4.234,10.219c2.612,2.612,6.224,4.234,10.211,4.234
|
|
||||||
C799.136,442.604,802.747,440.983,805.36,438.37z"/>
|
|
||||||
<path fill="#07242D" d="M858.664,431.109h-36.527c1.375,6.516,7.161,11.433,14.08,11.433c4.514,0,8.54-2.098,11.172-5.363h9.581
|
|
||||||
c-3.5,8.014-11.479,13.623-20.753,13.623c-12.493,0-22.647-10.173-22.647-22.682c0-12.501,10.154-22.612,22.647-22.612
|
|
||||||
C849.774,405.4,860.539,417.679,858.664,431.109z M849.59,422.842c-2.105-5.317-7.295-9.059-13.373-9.059
|
|
||||||
s-11.276,3.742-13.385,9.059H849.59z"/>
|
|
||||||
<path fill="#07242D" d="M908.514,431.109h-36.527c1.375,6.516,7.161,11.433,14.08,11.433c4.514,0,8.54-2.098,11.172-5.363h9.581
|
|
||||||
c-3.5,8.014-11.479,13.623-20.753,13.623c-12.493,0-22.647-10.173-22.647-22.682c0-12.501,10.154-22.612,22.647-22.612
|
|
||||||
C899.625,405.4,910.389,417.679,908.514,431.109z M899.44,422.842c-2.105-5.317-7.295-9.059-13.373-9.059
|
|
||||||
s-11.276,3.742-13.385,9.059H899.44z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path fill="#07242D" d="M186.351,471.553v8.229c-5.606,0-10.656-2.019-14.639-5.363c-5.005-4.199-8.182-10.502-8.182-17.544v-41.21
|
|
||||||
h8.182v18.699h14.639v8.282h-14.639v14.43C171.824,465.089,178.316,471.553,186.351,471.553z"/>
|
|
||||||
<path fill="#07242D" d="M215.533,434.363v8.175c-7.762,0.016-14.08,6.172-14.361,13.86v23.384h-8.202v-45.419h8.202v5.185
|
|
||||||
C205.069,436.313,210.074,434.371,215.533,434.363z"/>
|
|
||||||
<path fill="#07242D" d="M220.803,423.832v-8.191h8.186v8.191H220.803z M220.803,479.782v-45.419h8.186v45.419H220.803z"/>
|
|
||||||
<path fill="#07242D" d="M279.191,434.363l-22.694,45.419l-22.716-45.419h9.3l13.417,26.82l13.39-26.82H279.191z"/>
|
|
||||||
<path fill="#07242D" d="M328.286,434.363c0,0,0,49.656,0,52.938c0,12.682-10.402,22.805-22.725,22.798
|
|
||||||
c-5.771,0-11.118-2.188-15.178-5.824l5.887-5.887c2.512,2.126,5.751,3.42,9.291,3.413c7.975,0,14.431-6.519,14.431-14.5v-12.689
|
|
||||||
c-3.956,3.275-9.006,5.17-14.431,5.17c-12.346,0.007-22.743-9.954-22.743-22.728c0-0.27,0-22.69,0-22.69h8.291
|
|
||||||
c0,0,0.004,22.082,0.004,22.69c0,7.944,6.468,14.508,14.45,14.5c7.975,0,14.431-6.526,14.431-14.5v-22.691H328.286z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<polygon fill="#FFFFFF" points="250.554,44.159 116.876,121.396 116.877,277.11 250.537,354.962 384.229,277.154 384.229,121.392
|
|
||||||
"/>
|
|
||||||
<g>
|
|
||||||
<path fill="#1904DA" d="M246.902,255.524v-32.282c-14.609-6.898-23.783-21.236-23.594-36.882l-30.086-17.374
|
|
||||||
c-1.892,17.15,2.057,34.896,11.198,50.171C214.507,236.009,228.793,248.237,246.902,255.524z"/>
|
|
||||||
<path fill="#1904DA" d="M246.902,299.761v-37.468c-20.381-7.638-36.445-21.086-47.752-39.981
|
|
||||||
c-10.325-17.249-14.466-37.337-11.695-56.657l-27.931-16.129C143.482,211.352,180.751,275.442,246.902,299.761z"/>
|
|
||||||
<path fill="#08B1D5" d="M253.779,261.938v37.797c64.918-24.892,103.171-90.209,87.852-149.994l-27.747,16.165
|
|
||||||
c3.578,20.856,0.191,40.77-9.818,57.644C294.046,240.446,276.67,253.707,253.779,261.938z"/>
|
|
||||||
<path fill="#08B1D5" d="M253.779,223.185v32.371c20.424-7.774,35.964-19.9,45.004-35.138c8.877-14.969,12.116-32.637,9.411-51.205
|
|
||||||
l-30.06,17.33C277.985,201.395,269.156,214.685,253.779,223.185z"/>
|
|
||||||
<path fill="#FFC900" d="M282.1,131.138c12.628,6.157,22.948,15.961,29.885,28.378l27.012-15.598
|
|
||||||
c-0.182-0.255-0.351-0.51-0.509-0.764c-10.628-17.188-24.658-30.12-41.707-38.435c-47.439-23.13-106.339-5.896-134.71,39.2
|
|
||||||
l27.117,15.654C209.496,128.018,250.069,115.518,282.1,131.138z"/>
|
|
||||||
<path fill="#FFC900" d="M251.284,165.445c4.256,0,8.519,0.931,12.516,2.881h0.002c5.253,2.564,9.549,6.643,12.458,11.821
|
|
||||||
l30.404-17.558c-6.323-11.352-15.738-20.312-27.257-25.93c-29.172-14.223-66.203-2.802-84.893,25.99l30.251,17.46
|
|
||||||
C231.056,170.735,241.141,165.445,251.284,165.445z"/>
|
|
||||||
<path fill="#08B1D5" d="M253.779,347.086l125.184-72.957V127.993l-31.828,18.542c17.491,64.215-23.319,134.084-93.356,159.757
|
|
||||||
V347.086z"/>
|
|
||||||
<path fill="#1904DA" d="M154.014,146.345l-31.873-18.406v146.151l124.761,72.993v-40.779
|
|
||||||
C176.723,281.599,136.109,211.643,154.014,146.345z"/>
|
|
||||||
<path fill="#FFC900" d="M299.471,99.198c18.111,8.832,32.995,22.533,44.241,40.722c0.179,0.289,0.397,0.592,0.636,0.908
|
|
||||||
l31.536-18.21l-125.33-72.378l-125.358,72.395l31.548,18.211C186.722,92.98,249.169,74.667,299.471,99.198z"/>
|
|
||||||
<path fill="#FF0036" d="M271.797,187.57c0.002-0.035,0.052-1.226-0.036-3.143c-0.251-0.783-3.208-6.558-10.592-10.586
|
|
||||||
c-5.045-2.751-11.518-3.068-17.769-0.874c-6.124,2.152-11.322,6.434-14.303,11.769c-0.036,0.464-0.105,1.563-0.052,2.832
|
|
||||||
c0.404,9.974,6.573,23.534,19.156,29.736l1.938,0.925l1.682-0.899C264.046,210.487,271.328,199.641,271.797,187.57z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path fill="#07242D" d="M186.846,398.474H175.2c-6.421,0-11.646-5.224-11.646-11.646c0-6.422,5.224-11.646,11.646-11.646
|
|
||||||
s11.646,5.224,11.646,11.646V398.474z M175.2,379.912c-3.814,0-6.916,3.103-6.916,6.916c0,3.814,3.103,6.916,6.916,6.916h6.916
|
|
||||||
v-6.916C182.117,383.015,179.014,379.912,175.2,379.912z"/>
|
|
||||||
<path fill="#07242D" d="M264.991,398.474h-11.646c-6.421,0-11.646-5.224-11.646-11.646c0-6.422,5.224-11.646,11.646-11.646
|
|
||||||
c6.421,0,11.646,5.224,11.646,11.646V398.474z M253.345,379.912c-3.814,0-6.916,3.103-6.916,6.916c0,3.814,3.103,6.916,6.916,6.916
|
|
||||||
h6.916v-6.916C260.261,383.015,257.159,379.912,253.345,379.912z"/>
|
|
||||||
<path fill="#07242D" d="M227.295,398.479c-6.424,0-11.651-5.226-11.651-11.651V375.9h4.731v10.928c0,3.815,3.104,6.919,6.919,6.919
|
|
||||||
c3.815,0,6.919-3.104,6.919-6.919V375.9h4.731v10.928C238.946,393.253,233.719,398.479,227.295,398.479z"/>
|
|
||||||
<path fill="#07242D" d="M201.245,375.183c-6.421,0-11.645,5.224-11.645,11.646c0,6.421,5.224,11.646,11.645,11.646l4.729-4.729
|
|
||||||
h-4.729c-3.814,0-6.916-3.103-6.916-6.916c0-3.814,3.103-6.916,6.916-6.916c3.814,0,6.916,3.103,6.916,6.916v22.76h4.729v-22.76
|
|
||||||
C212.891,380.407,207.666,375.183,201.245,375.183z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 18 KiB |
BIN
brand/Trivy-OSS-Logo-Color-Stacked-RGB.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
3206
brand/Trivy-OSS-Logo-Color-Stacked-RGB.svg
Normal file
|
After Width: | Height: | Size: 233 KiB |
|
Before Width: | Height: | Size: 36 KiB |
@@ -1,84 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 26.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="_x30_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 265 135" enable-background="new 0 0 265 135" xml:space="preserve">
|
|
||||||
<g display="none">
|
|
||||||
<polygon display="inline" fill="#FFFFFF" points="65.469,9.61 12.669,40.117 12.669,101.621 65.463,132.371 118.268,101.639
|
|
||||||
118.268,40.115 "/>
|
|
||||||
<g display="inline">
|
|
||||||
<path fill="#08B1D5" d="M64.511,80.035c-5.972-2.687-9.502-8.433-9.313-14.534l-12.765-7.371c-0.952,7.062,0.569,14.449,4.4,20.85
|
|
||||||
c4.078,6.813,9.966,11.887,17.678,14.825V80.035L64.511,80.035z"/>
|
|
||||||
<path fill="#08B1D5" d="M64.511,111.257V95.432c-8.26-3.017-14.588-8.448-18.931-15.703c-4.108-6.864-5.671-14.819-4.507-22.384
|
|
||||||
l-11.864-6.851C22.412,75.299,37.662,101.72,64.511,111.257z"/>
|
|
||||||
<path fill="#0D819B" d="M66.259,95.288v15.969c26.352-9.758,42.17-36.132,35.489-60.682l-11.8,6.874
|
|
||||||
c1.473,8.16,0.189,16.115-3.759,22.77C82.134,87.057,75.052,92.189,66.259,95.288z"/>
|
|
||||||
<path fill="#0D819B" d="M75.879,65.569c0.053,5.924-3.429,11.136-9.62,14.466v13.769c8.227-2.999,14.873-7.918,18.675-14.329
|
|
||||||
c3.681-6.207,4.934-13.613,3.671-21.243L75.879,65.569z"/>
|
|
||||||
<path fill="#F69421" d="M77.717,44.4c4.977,2.427,9.031,6.315,11.724,11.244c0.035,0.065,0.069,0.132,0.104,0.198l11.574-6.684
|
|
||||||
c-0.184-0.232-0.361-0.466-0.506-0.701c-4.246-6.868-9.855-12.036-16.673-15.361c-19.245-9.385-42.827-2.309-54.094,16.087
|
|
||||||
l11.546,6.665C49.232,43.242,65.013,38.204,77.717,44.4z"/>
|
|
||||||
<path fill="#F69421" d="M70.489,59.089c2.06,1.005,3.731,2.627,4.832,4.692c0.037,0.07,0.07,0.143,0.105,0.214l12.854-7.423
|
|
||||||
c-0.04-0.076-0.079-0.153-0.12-0.228c-2.546-4.662-6.379-8.339-11.082-10.632c-12.018-5.861-26.965-1.08-34.421,10.866
|
|
||||||
l12.783,7.379C58.771,58.613,65.217,56.518,70.489,59.089z"/>
|
|
||||||
<path fill="#0D819B" d="M116.672,41.881l-13.621,7.936c7.185,25.544-9.291,53.076-36.791,62.992v17.294l50.413-29.381V41.881z"/>
|
|
||||||
<path fill="#08B1D5" d="M14.265,41.864v58.842l50.245,29.397v-17.294C36.51,103.127,20.607,75.545,27.905,49.74l-13.001-7.508
|
|
||||||
L14.265,41.864z"/>
|
|
||||||
<path fill="#F69421" d="M14.987,40.606l1.484,0.857l12.109,6.989C40.23,29.398,64.649,22.066,84.579,31.784
|
|
||||||
c7.069,3.448,12.881,8.799,17.274,15.904c0.139,0.225,0.333,0.472,0.543,0.731l13.542-7.82l-50.47-29.146L14.987,40.606z"/>
|
|
||||||
<path fill="#F0DF36" d="M66.202,78.433c4.968-2.778,7.95-7.226,8.141-12.159c0,0,0.022-0.489-0.015-1.283
|
|
||||||
c-0.007-0.163-1.102-2.766-4.435-4.583c-4.476-2.441-10.828-0.093-13.372,4.583c0,0-0.061,0.574-0.033,1.283
|
|
||||||
c0.182,4.483,2.945,9.749,7.836,12.159l0.991,0.473L66.202,78.433z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path fill="#FFFFFF" d="M148.629,103.076v5.928c-4.038,0-7.676-1.454-10.545-3.863c-3.605-3.025-5.894-7.565-5.894-12.638V62.815
|
|
||||||
h5.894v13.471h10.545v5.966h-10.545v10.395C138.164,98.419,142.84,103.076,148.629,103.076z"/>
|
|
||||||
<path fill="#FFFFFF" d="M169.65,76.285v5.889c-5.591,0.011-10.143,4.446-10.345,9.984v16.845h-5.908V76.285h5.908v3.735
|
|
||||||
C162.113,77.689,165.718,76.291,169.65,76.285z"/>
|
|
||||||
<path fill="#FFFFFF" d="M173.447,68.698v-5.9h5.897v5.9H173.447z M173.447,109.003V76.285h5.897v32.719H173.447z"/>
|
|
||||||
<path fill="#FFFFFF" d="M215.508,76.285l-16.348,32.719l-16.364-32.719h6.699l9.665,19.32l9.646-19.32L215.508,76.285z"/>
|
|
||||||
<path fill="#FFFFFF" d="M250.874,76.285c0,0,0,35.771,0,38.135c0,9.136-7.493,16.428-16.37,16.423
|
|
||||||
c-4.157,0-8.009-1.576-10.934-4.196l4.24-4.24c1.809,1.532,4.143,2.464,6.693,2.459c5.745,0,10.396-4.696,10.396-10.446v-9.141
|
|
||||||
c-2.85,2.359-6.488,3.724-10.396,3.724c-8.894,0.005-16.384-7.171-16.384-16.372c0-0.194,0-16.345,0-16.345h5.972
|
|
||||||
c0,0,0.003,15.907,0.003,16.345c0,5.722,4.659,10.451,10.409,10.446c5.745,0,10.396-4.701,10.396-10.446V76.285H250.874z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<polygon fill="#FFFFFF" points="65.469,5.431 10.124,37.409 10.125,101.877 65.462,134.109 120.813,101.895 120.813,37.407 "/>
|
|
||||||
<g>
|
|
||||||
<path fill="#1904DA" d="M63.957,92.94V79.575c-6.048-2.856-9.846-8.792-9.768-15.27l-12.456-7.193
|
|
||||||
c-0.783,7.101,0.852,14.447,4.636,20.771C50.545,84.86,56.46,89.923,63.957,92.94z"/>
|
|
||||||
<path fill="#1904DA" d="M63.957,111.255V95.742c-8.438-3.162-15.089-8.73-19.77-16.553c-4.275-7.141-5.989-15.458-4.842-23.457
|
|
||||||
l-11.564-6.678C21.14,74.652,36.57,101.186,63.957,111.255z"/>
|
|
||||||
<path fill="#08B1D5" d="M66.804,95.596v15.649c26.877-10.306,42.715-37.348,36.372-62.1l-11.488,6.693
|
|
||||||
c1.481,8.635,0.079,16.879-4.065,23.865C83.476,86.697,76.281,92.188,66.804,95.596z"/>
|
|
||||||
<path fill="#08B1D5" d="M66.804,79.551v13.402c8.456-3.219,14.89-8.239,18.632-14.548c3.675-6.197,5.016-13.512,3.896-21.2
|
|
||||||
L76.888,64.38C76.826,70.53,73.171,76.032,66.804,79.551z"/>
|
|
||||||
<path fill="#FFC900" d="M78.53,41.442c5.228,2.549,9.501,6.608,12.373,11.749l11.183-6.458c-0.075-0.105-0.146-0.211-0.211-0.316
|
|
||||||
c-4.4-7.116-10.209-12.47-17.267-15.913c-19.641-9.576-44.026-2.441-55.772,16.23l11.227,6.481
|
|
||||||
C48.47,40.15,65.268,34.975,78.53,41.442z"/>
|
|
||||||
<path fill="#FFC900" d="M65.771,55.646c1.762,0,3.527,0.385,5.182,1.193h0.001c2.175,1.062,3.954,2.75,5.158,4.894L88.7,54.463
|
|
||||||
c-2.618-4.7-6.516-8.409-11.285-10.735c-12.078-5.888-27.409-1.16-35.147,10.76l12.525,7.229
|
|
||||||
C57.397,57.836,61.572,55.646,65.771,55.646z"/>
|
|
||||||
<path fill="#08B1D5" d="M66.804,130.848l51.828-30.205V40.14l-13.177,7.677c7.242,26.586-9.654,55.513-38.651,66.142V130.848z"/>
|
|
||||||
<path fill="#1904DA" d="M25.5,47.738l-13.196-7.621v60.509l51.653,30.22v-16.883C34.902,103.736,18.087,74.773,25.5,47.738z"/>
|
|
||||||
<path fill="#FFC900" d="M85.722,28.218c7.498,3.656,13.661,9.329,18.316,16.859c0.074,0.12,0.164,0.245,0.263,0.376l13.056-7.539
|
|
||||||
L65.469,7.948l-51.9,29.973l13.061,7.54C39.042,25.644,64.896,18.062,85.722,28.218z"/>
|
|
||||||
<path fill="#FF0036" d="M74.264,64.806c0.001-0.014,0.022-0.508-0.015-1.301c-0.104-0.324-1.328-2.715-4.385-4.383
|
|
||||||
c-2.089-1.139-4.769-1.27-7.357-0.362c-2.536,0.891-4.688,2.664-5.922,4.873c-0.015,0.192-0.044,0.647-0.022,1.173
|
|
||||||
c0.167,4.129,2.721,9.743,7.931,12.311l0.802,0.383l0.696-0.372C71.055,74.294,74.07,69.803,74.264,64.806z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path fill="#FFFFFF" d="M149.768,48.152h-8.789c-4.846,0-8.789-3.943-8.789-8.789c0-4.846,3.943-8.789,8.789-8.789
|
|
||||||
s8.789,3.943,8.789,8.789V48.152z M140.979,34.143c-2.878,0-5.22,2.342-5.22,5.22c0,2.878,2.342,5.22,5.22,5.22h5.22v-5.22
|
|
||||||
C146.199,36.485,143.858,34.143,140.979,34.143z"/>
|
|
||||||
<path fill="#FFFFFF" d="M208.745,48.152h-8.789c-4.846,0-8.789-3.943-8.789-8.789c0-4.846,3.943-8.789,8.789-8.789
|
|
||||||
c4.846,0,8.789,3.943,8.789,8.789V48.152z M199.956,34.143c-2.878,0-5.22,2.342-5.22,5.22c0,2.878,2.342,5.22,5.22,5.22h5.22v-5.22
|
|
||||||
C205.176,36.485,202.835,34.143,199.956,34.143z"/>
|
|
||||||
<path fill="#FFFFFF" d="M180.296,48.156c-4.848,0-8.793-3.944-8.793-8.793v-8.248h3.571v8.248c0,2.879,2.343,5.222,5.222,5.222
|
|
||||||
c2.879,0,5.222-2.343,5.222-5.222v-8.248h3.571v8.248C189.089,44.211,185.144,48.156,180.296,48.156z"/>
|
|
||||||
<path fill="#FFFFFF" d="M160.636,30.574c-4.846,0-8.789,3.943-8.789,8.789c0,4.846,3.943,8.789,8.789,8.789l3.569-3.569h-3.569
|
|
||||||
c-2.878,0-5.22-2.342-5.22-5.22c0-2.878,2.342-5.22,5.22-5.22c2.878,0,5.22,2.342,5.22,5.22V56.54h3.569V39.363
|
|
||||||
C169.425,34.516,165.482,30.574,160.636,30.574z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 7.0 KiB |
BIN
brand/Trivy-OSS-Logo-White-Horizontal-RGB.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
69
brand/Trivy-OSS-Logo-White-Horizontal-RGB.svg
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 1920 891" style="enable-background:new 0 0 1920 891;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FFFFFF;}
|
||||||
|
.st1{fill:#50F0FF;}
|
||||||
|
.st2{fill:#0744DD;}
|
||||||
|
.st3{fill:#FFC900;}
|
||||||
|
.st4{fill:#FF0036;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M1421.86,281.92h-46.97c-25.9,0-46.97-21.07-46.97-46.97c0-25.9,21.07-46.97,46.97-46.97
|
||||||
|
c25.9,0,46.97,21.07,46.97,46.97V281.92z M1374.89,207.05c-15.38,0-27.9,12.52-27.9,27.9c0,15.38,12.52,27.9,27.9,27.9h27.9v-27.9
|
||||||
|
C1402.79,219.57,1390.28,207.05,1374.89,207.05z"/>
|
||||||
|
<path class="st0" d="M1737.06,281.92h-46.97c-25.9,0-46.97-21.07-46.97-46.97c0-25.9,21.07-46.97,46.97-46.97
|
||||||
|
c25.9,0,46.97,21.07,46.97,46.97V281.92z M1690.09,207.05c-15.38,0-27.9,12.52-27.9,27.9c0,15.38,12.52,27.9,27.9,27.9h27.9v-27.9
|
||||||
|
C1717.98,219.57,1705.47,207.05,1690.09,207.05z"/>
|
||||||
|
<path class="st0" d="M1585.02,281.94c-25.91,0-46.99-21.08-46.99-46.99v-44.08h19.08v44.08c0,15.39,12.52,27.91,27.91,27.91
|
||||||
|
c15.39,0,27.91-12.52,27.91-27.91v-44.08h19.09v44.08C1632.01,260.86,1610.92,281.94,1585.02,281.94z"/>
|
||||||
|
<path class="st0" d="M1479.94,187.98c-25.9,0-46.97,21.07-46.97,46.97c0,25.9,21.07,46.97,46.97,46.97l19.07-19.07h-19.07
|
||||||
|
c-15.38,0-27.9-12.52-27.9-27.9c0-15.38,12.52-27.9,27.9-27.9c15.38,0,27.9,12.52,27.9,27.9v91.8h19.07v-91.8
|
||||||
|
C1526.91,209.05,1505.84,187.98,1479.94,187.98z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M942.76,588.45v46.29c-31.53,0-59.94-11.34-82.34-30.14c-28.15-23.63-46.04-59.08-46.04-98.71V274.06h46.04
|
||||||
|
v105.2h82.34v46.59h-82.34v81.19C861.05,552.1,897.55,588.45,942.76,588.45z"/>
|
||||||
|
<path class="st0" d="M1106.82,379.26v45.98c-43.65,0.1-79.18,34.71-80.78,77.98v131.52h-46.12V379.26h46.12v29.16
|
||||||
|
C1047.97,390.24,1076.12,379.3,1106.82,379.26z"/>
|
||||||
|
<path class="st0" d="M1136.4,353.72v-40.29h46.05v40.29H1136.4z M1136.4,634.74V379.26h46.05v255.48H1136.4z"/>
|
||||||
|
<path class="st0" d="M1464.76,379.26l-127.64,255.48l-127.8-255.48h52.33l75.47,150.88l75.31-150.88H1464.76z"/>
|
||||||
|
<path class="st0" d="M1740.81,379.26c0,0,0,279.32,0,297.8c0,71.31-58.52,128.26-127.83,128.2
|
||||||
|
c-32.47,0.03-62.55-12.29-85.37-32.76l33.1-33.09c14.13,11.97,32.36,19.22,52.28,19.2c44.86,0,81.17-36.69,81.17-81.55v-71.39
|
||||||
|
c-22.26,18.42-50.67,29.09-81.17,29.06c-69.46,0.06-127.95-56-127.95-127.85c0-1.51,0-127.64,0-127.64h46.64
|
||||||
|
c0,0,0.02,124.23,0.02,127.64c0,44.67,36.39,81.6,81.28,81.55c44.86,0,81.17-36.69,81.17-81.55V379.26H1740.81z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st1" d="M428.54,364.9c0.04,0,0.08,0,0.12,0c6.56,0.01,11.98-5.03,11.98-11.58V135.99l-12.23-6.83l-12.18,6.8
|
||||||
|
v217.36c0,6.56,5.43,11.61,11.98,11.58C428.32,364.9,428.43,364.9,428.54,364.9z"/>
|
||||||
|
<path class="st2" d="M355.18,463.55L153.55,598.87v15.41l11.49,6.29l203.73-136.73c5.23-3.51,6.53-10.52,3.15-15.84
|
||||||
|
c-0.14-0.23-0.29-0.45-0.43-0.68C367.99,461.7,360.68,459.86,355.18,463.55z"/>
|
||||||
|
<path class="st3" d="M488.27,483.95l203.55,136.61l11.45-6.28v-15.44L501.86,463.66c-5.51-3.7-12.82-1.87-16.32,3.76
|
||||||
|
c-0.13,0.21-0.27,0.43-0.4,0.64C481.73,473.4,483.02,480.43,488.27,483.95z"/>
|
||||||
|
<path class="st0" d="M727.69,282.29v-13.96l-12.5-6.98l-0.93-0.49L440.33,107.87l-11.92-6.64l-11.87,6.64L142.56,260.86
|
||||||
|
l-0.93,0.49l-12.5,6.98v13.96l-0.93,0.54l0.93,0.49v13.92v331.5l12.69,6.94l266.85,146.2l3.37,1.85l16.41,8.98l16.36-8.98
|
||||||
|
l3.37-1.85l266.85-146.2l12.65-6.94v-331.5v-13.87l0.98-0.54L727.69,282.29z M440.95,758.05V511.4c0-6.72-5.5-12.22-12.22-12.21
|
||||||
|
l-0.19,0l-0.13,0c-6.72-0.01-12.22,5.49-12.22,12.21v246.64L165.04,620.57l-11.49-6.29v-15.41V294.7l199.98,109.56
|
||||||
|
c5.77,3.16,13.1,1.04,16.28-4.72l0.14-0.26c3.22-5.83,1.08-13.22-4.76-16.42L167.81,274.72l248.42-138.75l12.18-6.8l12.23,6.83
|
||||||
|
l248.37,138.73L491.47,382.95c-5.81,3.18-7.63,10.45-4.41,16.24c0.05,0.1,0.11,0.2,0.16,0.29c3.16,5.73,10.22,8.01,15.96,4.86
|
||||||
|
L703.27,294.7v304.15v15.44l-11.45,6.28L440.95,758.05z"/>
|
||||||
|
</g>
|
||||||
|
<circle class="st4" cx="428.54" cy="432.05" r="35.42"/>
|
||||||
|
</g>
|
||||||
|
<path class="st1" d="M617.65,262.99L426.32,155.74c-5.88-3.3-7.98-10.74-4.68-16.62v0c3.3-5.88,10.74-7.98,16.62-4.68
|
||||||
|
l191.33,107.25c5.88,3.3,7.98,10.74,4.68,16.62l0,0C630.97,264.19,623.53,266.29,617.65,262.99z"/>
|
||||||
|
<path class="st1" d="M533.81,271.27l-107.48-60.25c-5.88-3.3-7.98-10.74-4.68-16.62v0c3.3-5.88,10.74-7.98,16.62-4.68
|
||||||
|
l107.48,60.25c5.88,3.3,7.98,10.74,4.68,16.62v0C547.13,272.47,539.69,274.56,533.81,271.27z"/>
|
||||||
|
<path class="st1" d="M569.02,291L569.02,291c-5.88-3.3-7.98-10.74-4.68-16.62l0,0c3.3-5.88,10.74-7.98,16.62-4.68v0
|
||||||
|
c5.88,3.3,7.98,10.74,4.68,16.62v0C582.34,292.2,574.9,294.3,569.02,291z"/>
|
||||||
|
<path class="st1" d="M462.29,288.33l-35.7-20.01c-5.88-3.3-7.98-10.74-4.68-16.62v0c3.3-5.88,10.74-7.98,16.62-4.68l35.7,20.01
|
||||||
|
c5.88,3.3,7.98,10.74,4.68,16.62v0C475.61,289.53,468.17,291.63,462.29,288.33z"/>
|
||||||
|
<path class="st1" d="M516.16,321.21l-20.67-11.58c-5.88-3.3-7.98-10.74-4.68-16.62v0c3.3-5.88,10.74-7.98,16.62-4.68l20.67,11.58
|
||||||
|
c5.88,3.3,7.98,10.74,4.68,16.62v0C529.48,322.41,522.04,324.51,516.16,321.21z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 80 KiB |
@@ -1,59 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 26.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="_x30_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 500 524" enable-background="new 0 0 500 524" xml:space="preserve">
|
|
||||||
<g>
|
|
||||||
<path fill="#FFFFFF" d="M186.351,471.553v8.229c-5.606,0-10.656-2.019-14.639-5.363c-5.005-4.199-8.182-10.502-8.182-17.544v-41.21
|
|
||||||
h8.182v18.699h14.639v8.282h-14.639v14.43C171.824,465.089,178.316,471.553,186.351,471.553z"/>
|
|
||||||
<path fill="#FFFFFF" d="M215.533,434.363v8.175c-7.762,0.016-14.08,6.172-14.361,13.86v23.384h-8.202v-45.419h8.202v5.185
|
|
||||||
C205.069,436.313,210.074,434.371,215.533,434.363z"/>
|
|
||||||
<path fill="#FFFFFF" d="M220.803,423.832v-8.191h8.186v8.191H220.803z M220.803,479.782v-45.419h8.186v45.419H220.803z"/>
|
|
||||||
<path fill="#FFFFFF" d="M279.191,434.363l-22.694,45.419l-22.716-45.419h9.3l13.417,26.82l13.39-26.82H279.191z"/>
|
|
||||||
<path fill="#FFFFFF" d="M328.286,434.363c0,0,0,49.656,0,52.938c0,12.682-10.402,22.805-22.725,22.798
|
|
||||||
c-5.771,0-11.118-2.188-15.178-5.824l5.887-5.887c2.512,2.126,5.751,3.42,9.291,3.413c7.975,0,14.431-6.519,14.431-14.5v-12.689
|
|
||||||
c-3.956,3.275-9.006,5.17-14.431,5.17c-12.346,0.007-22.743-9.954-22.743-22.728c0-0.27,0-22.69,0-22.69h8.291
|
|
||||||
c0,0,0.004,22.082,0.004,22.69c0,7.944,6.468,14.508,14.45,14.5c7.975,0,14.431-6.526,14.431-14.5v-22.691H328.286z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<polygon fill="#FFFFFF" points="250.554,44.159 116.876,121.396 116.877,277.11 250.537,354.962 384.229,277.154 384.229,121.392
|
|
||||||
"/>
|
|
||||||
<g>
|
|
||||||
<path fill="#1904DA" d="M246.902,255.524v-32.282c-14.609-6.898-23.783-21.236-23.594-36.882l-30.086-17.374
|
|
||||||
c-1.892,17.15,2.057,34.896,11.198,50.171C214.507,236.009,228.793,248.237,246.902,255.524z"/>
|
|
||||||
<path fill="#1904DA" d="M246.902,299.761v-37.468c-20.381-7.638-36.445-21.086-47.752-39.981
|
|
||||||
c-10.325-17.249-14.466-37.337-11.695-56.657l-27.931-16.129C143.482,211.352,180.751,275.442,246.902,299.761z"/>
|
|
||||||
<path fill="#08B1D5" d="M253.779,261.938v37.797c64.918-24.892,103.171-90.209,87.852-149.994l-27.747,16.165
|
|
||||||
c3.578,20.856,0.191,40.77-9.818,57.644C294.046,240.446,276.67,253.707,253.779,261.938z"/>
|
|
||||||
<path fill="#08B1D5" d="M253.779,223.185v32.371c20.424-7.774,35.964-19.9,45.004-35.138c8.877-14.969,12.116-32.637,9.411-51.205
|
|
||||||
l-30.06,17.33C277.985,201.395,269.156,214.685,253.779,223.185z"/>
|
|
||||||
<path fill="#FFC900" d="M282.1,131.138c12.628,6.157,22.948,15.961,29.885,28.378l27.012-15.598
|
|
||||||
c-0.182-0.255-0.351-0.51-0.509-0.764c-10.628-17.188-24.658-30.12-41.707-38.435c-47.439-23.13-106.339-5.896-134.71,39.2
|
|
||||||
l27.117,15.654C209.496,128.018,250.069,115.518,282.1,131.138z"/>
|
|
||||||
<path fill="#FFC900" d="M251.284,165.445c4.256,0,8.519,0.931,12.516,2.881h0.002c5.253,2.564,9.549,6.643,12.458,11.821
|
|
||||||
l30.404-17.558c-6.323-11.352-15.738-20.312-27.257-25.93c-29.172-14.223-66.203-2.802-84.893,25.99l30.251,17.46
|
|
||||||
C231.056,170.735,241.141,165.445,251.284,165.445z"/>
|
|
||||||
<path fill="#08B1D5" d="M253.779,347.086l125.184-72.957V127.993l-31.828,18.542c17.491,64.215-23.319,134.084-93.356,159.757
|
|
||||||
V347.086z"/>
|
|
||||||
<path fill="#1904DA" d="M154.014,146.345l-31.873-18.406v146.151l124.761,72.993v-40.779
|
|
||||||
C176.723,281.599,136.109,211.643,154.014,146.345z"/>
|
|
||||||
<path fill="#FFC900" d="M299.471,99.198c18.111,8.832,32.995,22.533,44.241,40.722c0.179,0.289,0.397,0.592,0.636,0.908
|
|
||||||
l31.536-18.21l-125.33-72.378l-125.358,72.395l31.548,18.211C186.722,92.98,249.169,74.667,299.471,99.198z"/>
|
|
||||||
<path fill="#FF0036" d="M271.797,187.57c0.002-0.035,0.052-1.226-0.036-3.143c-0.251-0.783-3.208-6.558-10.592-10.586
|
|
||||||
c-5.045-2.751-11.518-3.068-17.769-0.874c-6.124,2.152-11.322,6.434-14.303,11.769c-0.036,0.464-0.105,1.563-0.052,2.832
|
|
||||||
c0.404,9.974,6.573,23.534,19.156,29.736l1.938,0.925l1.682-0.899C264.046,210.487,271.328,199.641,271.797,187.57z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path fill="#FFFFFF" d="M186.846,398.474H175.2c-6.421,0-11.646-5.224-11.646-11.646c0-6.422,5.224-11.646,11.646-11.646
|
|
||||||
s11.646,5.224,11.646,11.646V398.474z M175.2,379.912c-3.814,0-6.916,3.103-6.916,6.916c0,3.814,3.103,6.916,6.916,6.916h6.916
|
|
||||||
v-6.916C182.117,383.015,179.014,379.912,175.2,379.912z"/>
|
|
||||||
<path fill="#FFFFFF" d="M264.991,398.474h-11.646c-6.421,0-11.646-5.224-11.646-11.646c0-6.422,5.224-11.646,11.646-11.646
|
|
||||||
c6.421,0,11.646,5.224,11.646,11.646V398.474z M253.345,379.912c-3.814,0-6.916,3.103-6.916,6.916c0,3.814,3.103,6.916,6.916,6.916
|
|
||||||
h6.916v-6.916C260.261,383.015,257.159,379.912,253.345,379.912z"/>
|
|
||||||
<path fill="#FFFFFF" d="M227.295,398.479c-6.424,0-11.651-5.226-11.651-11.651V375.9h4.731v10.928c0,3.815,3.104,6.919,6.919,6.919
|
|
||||||
c3.815,0,6.919-3.104,6.919-6.919V375.9h4.731v10.928C238.946,393.253,233.719,398.479,227.295,398.479z"/>
|
|
||||||
<path fill="#FFFFFF" d="M201.245,375.183c-6.421,0-11.645,5.224-11.645,11.646c0,6.421,5.224,11.646,11.645,11.646l4.729-4.729
|
|
||||||
h-4.729c-3.814,0-6.916-3.103-6.916-6.916c0-3.814,3.103-6.916,6.916-6.916c3.814,0,6.916,3.103,6.916,6.916v22.76h4.729v-22.76
|
|
||||||
C212.891,380.407,207.666,375.183,201.245,375.183z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.9 KiB |
BIN
brand/Trivy-OSS-Logo-White-Stacked-RGB.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
3179
brand/Trivy-OSS-Logo-White-Stacked-RGB.svg
Normal file
|
After Width: | Height: | Size: 232 KiB |
@@ -5,17 +5,17 @@ UBUNTU_RELEASES=$(sort -u <(ubuntu-distro-info --supported-esm) <(ubuntu-distro-
|
|||||||
|
|
||||||
cd trivy-repo/deb
|
cd trivy-repo/deb
|
||||||
|
|
||||||
for release in ${DEBIAN_RELEASES[@]} ${UBUNTU_RELEASES[@]}; do
|
for release in generic ${DEBIAN_RELEASES[@]} ${UBUNTU_RELEASES[@]}; do
|
||||||
echo "Removing deb package of $release"
|
echo "Removing deb package of $release"
|
||||||
reprepro -A i386 remove $release trivy
|
reprepro -A i386 remove $release trivy
|
||||||
reprepro -A amd64 remove $release trivy
|
reprepro -A amd64 remove $release trivy
|
||||||
reprepro -A arm64 remove $release trivy
|
reprepro -A arm64 remove $release trivy
|
||||||
done
|
done
|
||||||
|
|
||||||
for release in ${DEBIAN_RELEASES[@]} ${UBUNTU_RELEASES[@]}; do
|
for release in generic ${DEBIAN_RELEASES[@]} ${UBUNTU_RELEASES[@]}; do
|
||||||
echo "Adding deb package to $release"
|
echo "Adding deb package to $release"
|
||||||
reprepro includedeb $release ../../dist/*Linux-64bit.deb
|
|
||||||
reprepro includedeb $release ../../dist/*Linux-32bit.deb
|
reprepro includedeb $release ../../dist/*Linux-32bit.deb
|
||||||
|
reprepro includedeb $release ../../dist/*Linux-64bit.deb
|
||||||
reprepro includedeb $release ../../dist/*Linux-ARM64.deb
|
reprepro includedeb $release ../../dist/*Linux-ARM64.deb
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,25 @@
|
|||||||
|
|
||||||
TRIVY_VERSION=$(find dist/ -type f -name "*64bit.rpm" -printf "%f\n" | head -n1 | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
|
TRIVY_VERSION=$(find dist/ -type f -name "*64bit.rpm" -printf "%f\n" | head -n1 | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
|
||||||
|
|
||||||
|
function create_common_rpm_repo () {
|
||||||
|
rpm_path=$1
|
||||||
|
|
||||||
|
ARCHES=("x86_64" "aarch64")
|
||||||
|
for arch in ${ARCHES[@]}; do
|
||||||
|
prefix=$arch
|
||||||
|
if [ "$arch" == "x86_64" ]; then
|
||||||
|
prefix="64bit"
|
||||||
|
elif [ "$arch" == "aarch64" ]; then
|
||||||
|
prefix="ARM64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p $rpm_path/$arch
|
||||||
|
cp ../dist/*${prefix}.rpm ${rpm_path}/$arch/
|
||||||
|
createrepo_c -u https://github.com/aquasecurity/trivy/releases/download/ --location-prefix="v"$TRIVY_VERSION --update $rpm_path/$arch
|
||||||
|
rm ${rpm_path}/$arch/*${prefix}.rpm
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
function create_rpm_repo () {
|
function create_rpm_repo () {
|
||||||
version=$1
|
version=$1
|
||||||
rpm_path=rpm/releases/${version}/x86_64
|
rpm_path=rpm/releases/${version}/x86_64
|
||||||
@@ -18,6 +37,9 @@ echo "Create RPM releases for Trivy v$TRIVY_VERSION"
|
|||||||
|
|
||||||
cd trivy-repo
|
cd trivy-repo
|
||||||
|
|
||||||
|
echo "Processing common repository for RHEL/CentOS..."
|
||||||
|
create_common_rpm_repo rpm/releases
|
||||||
|
|
||||||
VERSIONS=(5 6 7 8 9)
|
VERSIONS=(5 6 7 8 9)
|
||||||
for version in ${VERSIONS[@]}; do
|
for version in ${VERSIONS[@]}; do
|
||||||
echo "Processing RHEL/CentOS $version..."
|
echo "Processing RHEL/CentOS $version..."
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
@@ -9,17 +10,18 @@ import (
|
|||||||
"github.com/aquasecurity/trivy/pkg/commands"
|
"github.com/aquasecurity/trivy/pkg/commands"
|
||||||
"github.com/aquasecurity/trivy/pkg/log"
|
"github.com/aquasecurity/trivy/pkg/log"
|
||||||
"github.com/aquasecurity/trivy/pkg/plugin"
|
"github.com/aquasecurity/trivy/pkg/plugin"
|
||||||
|
"github.com/aquasecurity/trivy/pkg/types"
|
||||||
|
|
||||||
_ "modernc.org/sqlite" // sqlite driver for RPM DB and Java DB
|
_ "modernc.org/sqlite" // sqlite driver for RPM DB and Java DB
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
version = "dev"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := run(); err != nil {
|
if err := run(); err != nil {
|
||||||
log.Fatal(err)
|
var exitError *types.ExitError
|
||||||
|
if errors.As(err, &exitError) {
|
||||||
|
os.Exit(exitError.Code)
|
||||||
|
}
|
||||||
|
log.Fatal("Fatal error", log.Err(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,13 +31,13 @@ func run() error {
|
|||||||
if !plugin.IsPredefined(runAsPlugin) {
|
if !plugin.IsPredefined(runAsPlugin) {
|
||||||
return xerrors.Errorf("unknown plugin: %s", runAsPlugin)
|
return xerrors.Errorf("unknown plugin: %s", runAsPlugin)
|
||||||
}
|
}
|
||||||
if err := plugin.RunWithArgs(context.Background(), runAsPlugin, os.Args[1:]); err != nil {
|
if err := plugin.RunWithURL(context.Background(), runAsPlugin, plugin.RunOptions{Args: os.Args[1:]}); err != nil {
|
||||||
return xerrors.Errorf("plugin error: %w", err)
|
return xerrors.Errorf("plugin error: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
app := commands.NewApp(version)
|
app := commands.NewApp()
|
||||||
if err := app.Execute(); err != nil {
|
if err := app.Execute(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
"Severity": {
|
"Severity": {
|
||||||
"Label": "{{ $severity }}"
|
"Label": "{{ $severity }}"
|
||||||
},
|
},
|
||||||
"Title": "Trivy found a misconfiguration in {{ $target }}: {{ .Title }}",
|
"Title": "Trivy found a misconfiguration in {{ $target }}: {{ escapeString .Title }}",
|
||||||
"Description": {{ escapeString $description | printf "%q" }},
|
"Description": {{ escapeString $description | printf "%q" }},
|
||||||
"Remediation": {
|
"Remediation": {
|
||||||
"Recommendation": {
|
"Recommendation": {
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
{
|
{
|
||||||
"SchemaVersion": "2018-10-08",
|
"SchemaVersion": "2018-10-08",
|
||||||
"Id": "{{ $target }}",
|
"Id": "{{ $target }}",
|
||||||
"ProductArn": "arn:aws:securityhub:{{ env "AWS_DEFAULT_REGION" }}::product/aquasecurity/aquasecurity",
|
"ProductArn": "arn:aws:securityhub:{{ env "AWS_REGION" }}::product/aquasecurity/aquasecurity",
|
||||||
"GeneratorId": "Trivy",
|
"GeneratorId": "Trivy",
|
||||||
"AwsAccountId": "{{ env "AWS_ACCOUNT_ID" }}",
|
"AwsAccountId": "{{ env "AWS_ACCOUNT_ID" }}",
|
||||||
"Types": [ "Sensitive Data Identifications" ],
|
"Types": [ "Sensitive Data Identifications" ],
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
"Type": "Other",
|
"Type": "Other",
|
||||||
"Id": "{{ $target }}",
|
"Id": "{{ $target }}",
|
||||||
"Partition": "aws",
|
"Partition": "aws",
|
||||||
"Region": "{{ env "AWS_DEFAULT_REGION" }}",
|
"Region": "{{ env "AWS_REGION" }}",
|
||||||
"Details": {
|
"Details": {
|
||||||
"Other": {
|
"Other": {
|
||||||
"Filename": "{{ $target }}"
|
"Filename": "{{ $target }}"
|
||||||
|
|||||||
@@ -56,3 +56,21 @@ ignore {
|
|||||||
# https://cwe.mitre.org/data/definitions/352.html
|
# https://cwe.mitre.org/data/definitions/352.html
|
||||||
input.CweIDs[_] == "CWE-352"
|
input.CweIDs[_] == "CWE-352"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ignore a license
|
||||||
|
ignore {
|
||||||
|
input.PkgName == "alpine-baselayout"
|
||||||
|
input.Name == "GPL-2.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ignore loose file license
|
||||||
|
ignore {
|
||||||
|
input.Name == "AGPL-3.0"
|
||||||
|
input.FilePath == "/usr/share/grafana/LICENSE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ignore secret
|
||||||
|
ignore {
|
||||||
|
input.RuleID == "aws-access-key-id"
|
||||||
|
input.Match == "AWS_ACCESS_KEY_ID=\"********************\""
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,29 @@
|
|||||||
{{- /* Template based on https://docs.gitlab.com/ee/user/application_security/container_scanning/#reports-json-format */ -}}
|
{{- /* Template based on https://docs.gitlab.com/ee/user/application_security/container_scanning/#reports-json-format */ -}}
|
||||||
{
|
{
|
||||||
"version": "14.0.6",
|
"version": "15.0.7",
|
||||||
|
"scan": {
|
||||||
|
"analyzer": {
|
||||||
|
"id": "trivy",
|
||||||
|
"name": "Trivy",
|
||||||
|
"vendor": {
|
||||||
|
"name": "Aqua Security"
|
||||||
|
},
|
||||||
|
"version": "{{ appVersion }}"
|
||||||
|
},
|
||||||
|
"end_time": "{{ now | date "2006-01-02T15:04:05" }}",
|
||||||
|
"scanner": {
|
||||||
|
"id": "trivy",
|
||||||
|
"name": "Trivy",
|
||||||
|
"url": "https://github.com/aquasecurity/trivy/",
|
||||||
|
"vendor": {
|
||||||
|
"name": "Aqua Security"
|
||||||
|
},
|
||||||
|
"version": "{{ appVersion }}"
|
||||||
|
},
|
||||||
|
"start_time": "{{ now | date "2006-01-02T15:04:05" }}",
|
||||||
|
"status": "success",
|
||||||
|
"type": "container_scanning"
|
||||||
|
},
|
||||||
"vulnerabilities": [
|
"vulnerabilities": [
|
||||||
{{- $t_first := true }}
|
{{- $t_first := true }}
|
||||||
{{- range . }}
|
{{- range . }}
|
||||||
@@ -14,11 +37,8 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{
|
{
|
||||||
"id": "{{ .VulnerabilityID }}",
|
"id": "{{ .VulnerabilityID }}",
|
||||||
"category": "container_scanning",
|
"name": {{ .Title | printf "%q" }},
|
||||||
"message": {{ .Title | printf "%q" }},
|
|
||||||
"description": {{ .Description | printf "%q" }},
|
"description": {{ .Description | printf "%q" }},
|
||||||
{{- /* cve is a deprecated key, use id instead */}}
|
|
||||||
"cve": "{{ .VulnerabilityID }}",
|
|
||||||
"severity": {{ if eq .Severity "UNKNOWN" -}}
|
"severity": {{ if eq .Severity "UNKNOWN" -}}
|
||||||
"Unknown"
|
"Unknown"
|
||||||
{{- else if eq .Severity "LOW" -}}
|
{{- else if eq .Severity "LOW" -}}
|
||||||
@@ -37,10 +57,6 @@
|
|||||||
{{- else -}}
|
{{- else -}}
|
||||||
"No solution provided"
|
"No solution provided"
|
||||||
{{- end }},
|
{{- end }},
|
||||||
"scanner": {
|
|
||||||
"id": "trivy",
|
|
||||||
"name": "trivy"
|
|
||||||
},
|
|
||||||
"location": {
|
"location": {
|
||||||
"dependency": {
|
"dependency": {
|
||||||
"package": {
|
"package": {
|
||||||
@@ -57,8 +73,11 @@
|
|||||||
{{- /* TODO: Type not extractable - https://github.com/aquasecurity/trivy-db/pull/24 */}}
|
{{- /* TODO: Type not extractable - https://github.com/aquasecurity/trivy-db/pull/24 */}}
|
||||||
"type": "cve",
|
"type": "cve",
|
||||||
"name": "{{ .VulnerabilityID }}",
|
"name": "{{ .VulnerabilityID }}",
|
||||||
"value": "{{ .VulnerabilityID }}",
|
"value": "{{ .VulnerabilityID }}"
|
||||||
|
{{- /* cf. https://gitlab.com/gitlab-org/security-products/security-report-schemas/-/blob/e3d280d7f0862ca66a1555ea8b24016a004bb914/dist/container-scanning-report-format.json#L157-179 */}}
|
||||||
|
{{- if .PrimaryURL | regexMatch "^(https?|ftp)://.+" -}},
|
||||||
"url": "{{ .PrimaryURL }}"
|
"url": "{{ .PrimaryURL }}"
|
||||||
|
{{- end }}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
@@ -69,9 +88,13 @@
|
|||||||
{{- else -}}
|
{{- else -}}
|
||||||
,
|
,
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- if . | regexMatch "^(https?|ftp)://.+" -}}
|
||||||
{
|
{
|
||||||
"url": "{{ regexFind "[^ ]+" . }}"
|
"url": "{{ . }}"
|
||||||
}
|
}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $l_first = true }}
|
||||||
|
{{- end -}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
<h1>{{- escapeXML ( index . 0 ).Target }} - Trivy Report - {{ now }}</h1>
|
<h1>{{- escapeXML ( index . 0 ).Target }} - Trivy Report - {{ now }}</h1>
|
||||||
<table>
|
<table>
|
||||||
{{- range . }}
|
{{- range . }}
|
||||||
<tr class="group-header"><th colspan="6">{{ escapeXML .Type }}</th></tr>
|
<tr class="group-header"><th colspan="6">{{ .Type | toString | escapeXML }}</th></tr>
|
||||||
{{- if (eq (len .Vulnerabilities) 0) }}
|
{{- if (eq (len .Vulnerabilities) 0) }}
|
||||||
<tr><th colspan="6">No Vulnerabilities found</th></tr>
|
<tr><th colspan="6">No Vulnerabilities found</th></tr>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
<td>{{ escapeXML .ID }}</td>
|
<td>{{ escapeXML .ID }}</td>
|
||||||
<td class="misconf-check">{{ escapeXML .Title }}</td>
|
<td class="misconf-check">{{ escapeXML .Title }}</td>
|
||||||
<td class="severity">{{ escapeXML .Severity }}</td>
|
<td class="severity">{{ escapeXML .Severity }}</td>
|
||||||
<td class="link" data-more-links="off" style="white-space:normal;"">
|
<td class="link" data-more-links="off" style="white-space:normal;">
|
||||||
{{ escapeXML .Message }}
|
{{ escapeXML .Message }}
|
||||||
<br>
|
<br>
|
||||||
<a href={{ escapeXML .PrimaryURL | printf "%q" }}>{{ escapeXML .PrimaryURL }}</a>
|
<a href={{ escapeXML .PrimaryURL | printf "%q" }}>{{ escapeXML .PrimaryURL }}</a>
|
||||||
|
|||||||
@@ -75,10 +75,12 @@ get_binaries() {
|
|||||||
linux/ppc64le) BINARIES="trivy" ;;
|
linux/ppc64le) BINARIES="trivy" ;;
|
||||||
linux/arm64) BINARIES="trivy" ;;
|
linux/arm64) BINARIES="trivy" ;;
|
||||||
linux/armv7) BINARIES="trivy" ;;
|
linux/armv7) BINARIES="trivy" ;;
|
||||||
|
linux/s390x) BINARIES="trivy" ;;
|
||||||
openbsd/386) BINARIES="trivy" ;;
|
openbsd/386) BINARIES="trivy" ;;
|
||||||
openbsd/amd64) BINARIES="trivy" ;;
|
openbsd/amd64) BINARIES="trivy" ;;
|
||||||
openbsd/arm64) BINARIES="trivy" ;;
|
openbsd/arm64) BINARIES="trivy" ;;
|
||||||
openbsd/armv7) BINARIES="trivy" ;;
|
openbsd/armv7) BINARIES="trivy" ;;
|
||||||
|
windows/amd64) BINARIES="trivy" ;;
|
||||||
*)
|
*)
|
||||||
log_crit "platform $PLATFORM is not supported. Make sure this script is up-to-date and file request at https://github.com/${PREFIX}/issues/new"
|
log_crit "platform $PLATFORM is not supported. Make sure this script is up-to-date and file request at https://github.com/${PREFIX}/issues/new"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -102,6 +104,9 @@ tag_to_version() {
|
|||||||
}
|
}
|
||||||
adjust_format() {
|
adjust_format() {
|
||||||
# change format (tar.gz or zip) based on OS
|
# change format (tar.gz or zip) based on OS
|
||||||
|
case ${OS} in
|
||||||
|
windows) FORMAT=zip ;;
|
||||||
|
esac
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
adjust_os() {
|
adjust_os() {
|
||||||
@@ -111,7 +116,8 @@ adjust_os() {
|
|||||||
amd64) OS=64bit ;;
|
amd64) OS=64bit ;;
|
||||||
arm) OS=ARM ;;
|
arm) OS=ARM ;;
|
||||||
arm64) OS=ARM64 ;;
|
arm64) OS=ARM64 ;;
|
||||||
ppc64le) OS=PPC64LE ;;
|
ppc64le) OS=Linux ;;
|
||||||
|
s390x) OS=Linux ;;
|
||||||
darwin) OS=macOS ;;
|
darwin) OS=macOS ;;
|
||||||
dragonfly) OS=DragonFlyBSD ;;
|
dragonfly) OS=DragonFlyBSD ;;
|
||||||
freebsd) OS=FreeBSD ;;
|
freebsd) OS=FreeBSD ;;
|
||||||
@@ -127,8 +133,10 @@ adjust_arch() {
|
|||||||
386) ARCH=32bit ;;
|
386) ARCH=32bit ;;
|
||||||
amd64) ARCH=64bit ;;
|
amd64) ARCH=64bit ;;
|
||||||
arm) ARCH=ARM ;;
|
arm) ARCH=ARM ;;
|
||||||
|
armv7) ARCH=ARM ;;
|
||||||
arm64) ARCH=ARM64 ;;
|
arm64) ARCH=ARM64 ;;
|
||||||
ppc64le) OS=PPC64LE ;;
|
ppc64le) ARCH=PPC64LE ;;
|
||||||
|
s390x) ARCH=s390x ;;
|
||||||
darwin) ARCH=macOS ;;
|
darwin) ARCH=macOS ;;
|
||||||
dragonfly) ARCH=DragonFlyBSD ;;
|
dragonfly) ARCH=DragonFlyBSD ;;
|
||||||
freebsd) ARCH=FreeBSD ;;
|
freebsd) ARCH=FreeBSD ;;
|
||||||
@@ -217,6 +225,7 @@ uname_arch() {
|
|||||||
armv5*) arch="armv5" ;;
|
armv5*) arch="armv5" ;;
|
||||||
armv6*) arch="armv6" ;;
|
armv6*) arch="armv6" ;;
|
||||||
armv7*) arch="armv7" ;;
|
armv7*) arch="armv7" ;;
|
||||||
|
s390*) arch="s390x" ;;
|
||||||
esac
|
esac
|
||||||
echo ${arch}
|
echo ${arch}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,12 @@
|
|||||||
</testcase>
|
</testcase>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</testsuite>
|
</testsuite>
|
||||||
{{- $failures := len .Misconfigurations }}
|
|
||||||
<testsuite tests="{{ $failures }}" failures="{{ $failures }}" name="{{ .Target }}" errors="0" skipped="0" time="">
|
{{- if .MisconfSummary }}
|
||||||
|
<testsuite tests="{{ add .MisconfSummary.Successes .MisconfSummary.Failures }}" failures="{{ .MisconfSummary.Failures }}" name="{{ .Target }}" errors="0" skipped="{{ .MisconfSummary.Exceptions }}" time="">
|
||||||
|
{{- else }}
|
||||||
|
<testsuite tests="0" failures="0" name="{{ .Target }}" errors="0" skipped="0" time="">
|
||||||
|
{{- end }}
|
||||||
{{- if not (eq .Type "") }}
|
{{- if not (eq .Type "") }}
|
||||||
<properties>
|
<properties>
|
||||||
<property name="type" value="{{ .Type }}"></property>
|
<property name="type" value="{{ .Type }}"></property>
|
||||||
@@ -23,7 +27,9 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ range .Misconfigurations }}
|
{{ range .Misconfigurations }}
|
||||||
<testcase classname="{{ .Type }}" name="[{{ .Severity }}] {{ .ID }}" time="">
|
<testcase classname="{{ .Type }}" name="[{{ .Severity }}] {{ .ID }}" time="">
|
||||||
|
{{- if (eq .Status "FAIL") }}
|
||||||
<failure message="{{ escapeXML .Title }}" type="description">{{ escapeXML .Description }}</failure>
|
<failure message="{{ escapeXML .Title }}" type="description">{{ escapeXML .Description }}</failure>
|
||||||
|
{{- end }}
|
||||||
</testcase>
|
</testcase>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
|||||||
2
docs/build/Dockerfile
vendored
@@ -1,4 +1,4 @@
|
|||||||
FROM squidfunk/mkdocs-material:8.3.9
|
FROM squidfunk/mkdocs-material:9.4.6
|
||||||
|
|
||||||
## If you want to see exactly the same version as is published to GitHub pages
|
## If you want to see exactly the same version as is published to GitHub pages
|
||||||
## use a private image for insiders, which requires authentication.
|
## use a private image for insiders, which requires authentication.
|
||||||
|
|||||||
2
docs/build/requirements.txt
vendored
@@ -20,7 +20,7 @@ Pygments==2.12.0
|
|||||||
pymdown-extensions==9.5
|
pymdown-extensions==9.5
|
||||||
pyparsing==3.0.8
|
pyparsing==3.0.8
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
PyYAML==6.0
|
PyYAML==6.0.1
|
||||||
pyyaml-env-tag==0.1
|
pyyaml-env-tag==0.1
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
termcolor==1.1.0
|
termcolor==1.1.0
|
||||||
|
|||||||
49
docs/community/contribute/discussion.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# Discussions
|
||||||
|
Thank you for taking interest in contributing to Trivy!
|
||||||
|
|
||||||
|
Trivy uses [GitHub Discussion](https://github.com/aquasecurity/trivy/discussions) for bug reports, feature requests, and questions.
|
||||||
|
If maintainers decide to accept a new feature or confirm that it is a bug, they will close the discussion and create a [GitHub Issue](https://github.com/aquasecurity/trivy/issues) associated with that discussion.
|
||||||
|
|
||||||
|
- Feel free to open discussions for any reason. When you open a new discussion, you'll have to select a discussion category as described below.
|
||||||
|
- Please spend a small amount of time giving due diligence to the issue/discussion tracker. Your discussion might be a duplicate. If it is, please add your comment to the existing issue/discussion.
|
||||||
|
- Remember that users might search for your issue/discussion in the future, so please give it a meaningful title to help others.
|
||||||
|
- The issue should clearly explain the reason for opening, the proposal if you have any, and any relevant technical information.
|
||||||
|
|
||||||
|
There are 4 categories:
|
||||||
|
|
||||||
|
- 💡 [Ideas](https://github.com/aquasecurity/trivy/discussions/categories/ideas)
|
||||||
|
- Share ideas for new features
|
||||||
|
- 🔎 [False Detection](https://github.com/aquasecurity/trivy/discussions/categories/false-detection)
|
||||||
|
- Report false positives/negatives
|
||||||
|
- 🐛 [Bugs](https://github.com/aquasecurity/trivy/discussions/categories/bugs)
|
||||||
|
- Report something that is not working as expected
|
||||||
|
- 🙏 [Q&A](https://github.com/aquasecurity/trivy/discussions/categories/q-a)
|
||||||
|
- Ask the community for help
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
If you find any false positives or false negatives, please make sure to report them under the "False Detection" category, not "Bugs".
|
||||||
|
|
||||||
|
## False detection
|
||||||
|
Trivy depends on [multiple data sources](https://aquasecurity.github.io/trivy/latest/docs/scanner/vulnerability/#data-sources).
|
||||||
|
Sometime these databases contain mistakes.
|
||||||
|
|
||||||
|
If Trivy can't detect any CVE-IDs or shows false positive result, at first please follow the next steps:
|
||||||
|
|
||||||
|
1. Run Trivy with `-f json` that shows data sources.
|
||||||
|
2. According to the shown data source, make sure that the security advisory in the data source is correct.
|
||||||
|
|
||||||
|
If the data source is correct and Trivy shows wrong results, please raise an issue on Trivy.
|
||||||
|
|
||||||
|
### GitHub Advisory Database
|
||||||
|
Visit [here](https://github.com/advisories) and search CVE-ID.
|
||||||
|
|
||||||
|
If you find a problem, it'll be nice to fix it: [How to contribute to a GitHub security advisory](https://github.blog/2022-02-22-github-advisory-database-now-open-to-community-contributions/)
|
||||||
|
|
||||||
|
### GitLab Advisory Database
|
||||||
|
Visit [here](https://advisories.gitlab.com/) and search CVE-ID.
|
||||||
|
|
||||||
|
If you find a problem, it'll be nice to fix it: [Create an issue to GitLab Advisory Database](https://gitlab.com/gitlab-org/security-products/gemnasium-db/-/issues/new)
|
||||||
|
|
||||||
|
### Red Hat CVE Database
|
||||||
|
Visit [here](https://access.redhat.com/security/security-updates/?cwe=476#/cve) and search CVE-ID.
|
||||||
|
|
||||||
@@ -1,31 +1,7 @@
|
|||||||
|
# Issues
|
||||||
Thank you for taking interest in contributing to Trivy!
|
Thank you for taking interest in contributing to Trivy!
|
||||||
|
|
||||||
- Feel free to open issues for any reason. When you open a new issue, you'll have to select an issue kind: bug/feature/support and fill the required information based on the selected template.
|
Trivy uses [GitHub Discussion](./discussion.md) for bug reports, feature requests, and questions.
|
||||||
- Please spend a small amount of time giving due diligence to the issue tracker. Your issue might be a duplicate. If it is, please add your comment to the existing issue.
|
|
||||||
- Remember that users might search for your issue in the future, so please give it a meaningful title to help others.
|
|
||||||
- The issue should clearly explain the reason for opening, the proposal if you have any, and any relevant technical information.
|
|
||||||
|
|
||||||
## Wrong detection
|
|
||||||
Trivy depends on [multiple data sources](https://aquasecurity.github.io/trivy/latest/docs/vulnerability/detection/data-source/).
|
|
||||||
Sometime these databases contain mistakes.
|
|
||||||
|
|
||||||
If Trivy can't detect any CVE-IDs or shows false positive result, at first please follow the next steps:
|
|
||||||
|
|
||||||
1. Run Trivy with `-f json` that shows data sources.
|
|
||||||
2. According to the shown data source, make sure that the security advisory in the data source is correct.
|
|
||||||
|
|
||||||
If the data source is correct and Trivy shows wrong results, please raise an issue on Trivy.
|
|
||||||
|
|
||||||
### GitHub Advisory Database
|
|
||||||
Visit [here](https://github.com/advisories) and search CVE-ID.
|
|
||||||
|
|
||||||
If you find a problem, it'll be nice to fix it: [How to contribute to a GitHub security advisory](https://github.blog/2022-02-22-github-advisory-database-now-open-to-community-contributions/)
|
|
||||||
|
|
||||||
### GitLab Advisory Database
|
|
||||||
Visit [here](https://advisories.gitlab.com/) and search CVE-ID.
|
|
||||||
|
|
||||||
If you find a problem, it'll be nice to fix it: [Create an issue to GitLab Advisory Database](https://gitlab.com/gitlab-org/security-products/gemnasium-db/-/issues/new)
|
|
||||||
|
|
||||||
### Red Hat CVE Database
|
|
||||||
Visit [here](https://access.redhat.com/security/security-updates/?cwe=476#/cve) and search CVE-ID.
|
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
Issues created by non-maintainers will be immediately closed.
|
||||||
@@ -9,11 +9,71 @@ Thank you for taking interest in contributing to Trivy!
|
|||||||
1. Your PR is more likely to be accepted if it includes tests (We have not historically been very strict about tests, but we would like to improve this!).
|
1. Your PR is more likely to be accepted if it includes tests (We have not historically been very strict about tests, but we would like to improve this!).
|
||||||
1. If your PR affects the user experience in some way, please update the README.md and the CLI help accordingly.
|
1. If your PR affects the user experience in some way, please update the README.md and the CLI help accordingly.
|
||||||
|
|
||||||
### Title
|
## Development
|
||||||
|
Install the necessary tools for development by following their respective installation instructions.
|
||||||
|
|
||||||
|
- [Go](https://go.dev/doc/install)
|
||||||
|
- [Mage](https://magefile.org/)
|
||||||
|
|
||||||
|
### Build
|
||||||
|
After making changes to the Go source code, build the project with the following command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ mage build
|
||||||
|
$ ./trivy -h
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lint
|
||||||
|
You must pass the linter checks:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ mage lint:run
|
||||||
|
```
|
||||||
|
|
||||||
|
Additionally, you need to have run `go mod tidy`, so execute the following command as well:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ mage tidy
|
||||||
|
```
|
||||||
|
|
||||||
|
To autofix linters use the following command:
|
||||||
|
```shell
|
||||||
|
$ mage lint:fix
|
||||||
|
```
|
||||||
|
|
||||||
|
### Unit tests
|
||||||
|
Your PR must pass all the unit tests. You can test it as below.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ mage test:unit
|
||||||
|
```
|
||||||
|
|
||||||
|
### Integration tests
|
||||||
|
Your PR must pass all the integration tests. You can test it as below.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ mage test:integration
|
||||||
|
```
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
If you update CLI flags, you need to generate the CLI references.
|
||||||
|
The test will fail if they are not up-to-date.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ mage docs:generate
|
||||||
|
```
|
||||||
|
|
||||||
|
You can build the documents as below and view it at http://localhost:8000.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ mage docs:serve
|
||||||
|
```
|
||||||
|
|
||||||
|
## Title
|
||||||
It is not that strict, but we use the title conventions in this repository.
|
It is not that strict, but we use the title conventions in this repository.
|
||||||
Each commit message doesn't have to follow the conventions as long as it is clear and descriptive since it will be squashed and merged.
|
Each commit message doesn't have to follow the conventions as long as it is clear and descriptive since it will be squashed and merged.
|
||||||
|
|
||||||
#### Format of the title
|
### Format of the title
|
||||||
|
|
||||||
```
|
```
|
||||||
<type>(<scope>): <subject>
|
<type>(<scope>): <subject>
|
||||||
@@ -118,11 +178,12 @@ others:
|
|||||||
- helm
|
- helm
|
||||||
- report
|
- report
|
||||||
- db
|
- db
|
||||||
|
- parser
|
||||||
- deps
|
- deps
|
||||||
|
|
||||||
The `<scope>` can be empty (e.g. if the change is a global or difficult to assign to a single component), in which case the parentheses are omitted.
|
The `<scope>` can be empty (e.g. if the change is a global or difficult to assign to a single component), in which case the parentheses are omitted.
|
||||||
|
|
||||||
#### Example titles
|
### Example titles
|
||||||
|
|
||||||
```
|
```
|
||||||
feat(alma): add support for AlmaLinux
|
feat(alma): add support for AlmaLinux
|
||||||
@@ -143,33 +204,15 @@ chore(deps): bump go.uber.org/zap from 1.19.1 to 1.20.0
|
|||||||
**NOTE**: please do not use `chore(deps): update fanal` and something like that if you add new features or fix bugs in Trivy-related projects.
|
**NOTE**: please do not use `chore(deps): update fanal` and something like that if you add new features or fix bugs in Trivy-related projects.
|
||||||
The PR title should describe what the PR adds or fixes even though it just updates the dependency in Trivy.
|
The PR title should describe what the PR adds or fixes even though it just updates the dependency in Trivy.
|
||||||
|
|
||||||
### Unit tests
|
## Commits
|
||||||
Your PR must pass all the unit tests. You can test it as below.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make test
|
|
||||||
```
|
|
||||||
|
|
||||||
### Integration tests
|
|
||||||
Your PR must pass all the integration tests. You can test it as below.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make test-integration
|
|
||||||
```
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
You can build the documents as below and view it at http://localhost:8000.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make mkdocs-serve
|
|
||||||
```
|
|
||||||
|
|
||||||
## Understand where your pull request belongs
|
## Understand where your pull request belongs
|
||||||
|
|
||||||
Trivy is composed of several repositories that work together:
|
Trivy is composed of several repositories that work together:
|
||||||
|
|
||||||
- [Trivy](https://github.com/aquasecurity/trivy) is the client-side, user-facing, command line tool.
|
- [Trivy](https://github.com/aquasecurity/trivy) is the client-side, user-facing, command line tool.
|
||||||
- [vuln-list](https://github.com/aquasecurity/vuln-list) is a vulnerabilities database, aggregated from different sources, and normalized for easy consumption. Think of this as the "server" side of the trivy command line tool. **There should be no pull requests to this repo**
|
- [vuln-list](https://github.com/aquasecurity/vuln-list) is a vulnerability database, aggregated from different sources, and normalized for easy consumption. Think of this as the "server" side of the trivy command line tool. **There should be no pull requests to this repo**
|
||||||
- [vuln-list-update](https://github.com/aquasecurity/vuln-list-update) is the code that maintains the vuln-list database.
|
- [vuln-list-update](https://github.com/aquasecurity/vuln-list-update) is the code that maintains the vuln-list database.
|
||||||
- [trivy-db](https://github.com/aquasecurity/trivy-db) maintains the vulnerability database pulled by Trivy CLI.
|
- [trivy-db](https://github.com/aquasecurity/trivy-db) maintains the vulnerability database pulled by Trivy CLI.
|
||||||
- [go-dep-parser](https://github.com/aquasecurity/go-dep-parser) is a library for parsing lock files such as package-lock.json and Gemfile.lock.
|
- [go-dep-parser](https://github.com/aquasecurity/go-dep-parser) is a library for parsing lock files such as package-lock.json and Gemfile.lock.
|
||||||
|
|||||||
53
docs/community/principles.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Trivy Project Principles
|
||||||
|
This document outlines the guiding principles and governance framework for the Trivy project.
|
||||||
|
|
||||||
|
## Core Principles
|
||||||
|
Trivy is a security scanner focused on static analysis and designed with simplicity and security at its core.
|
||||||
|
All new proposals to the project must adhere to the following principles.
|
||||||
|
|
||||||
|
### Static Analysis (No Runtime Required)
|
||||||
|
Trivy operates without requiring container or VM image startups, eliminating the need for Docker or similar runtimes, except for scanning images stored within a container runtime.
|
||||||
|
This approach enhances security and efficiency by minimizing dependencies.
|
||||||
|
|
||||||
|
### External Dependency Free (Single Binary)
|
||||||
|
Operating as a single binary, Trivy is independent of external environments and avoids executing external OS commands or processes.
|
||||||
|
If specific functionality, like Maven's, is needed, Trivy opts for internal reimplementations or processing outputs of the tool without direct execution of external tools.
|
||||||
|
|
||||||
|
This approach obviously requires more effort but significantly reduces security risks associated with executing OS commands and dependency errors due to external environment versions.
|
||||||
|
Simplifying the scanner's use by making it operational immediately upon binary download facilitates easier initiation of scans.
|
||||||
|
|
||||||
|
### No Setup Required
|
||||||
|
Trivy must be ready to use immediately after installation.
|
||||||
|
It's unacceptable for Trivy not to function without setting up a database or writing configuration files by default.
|
||||||
|
Such setups should only be necessary for users requiring specific customizations.
|
||||||
|
|
||||||
|
Security often isn't a top priority for many organizations and can be easily deferred.
|
||||||
|
Trivy aims to lower the barrier to entry by simplifying the setup process, making it easier for users to start securing their projects.
|
||||||
|
|
||||||
|
### Security Focus
|
||||||
|
Trivy prioritizes the identification of security issues, excluding features unrelated to security, such as performance metrics or content listings of container images.
|
||||||
|
It can, however, produce and output intermediate representations like SBOMs for comprehensive security assessments.
|
||||||
|
|
||||||
|
Trivy serves as a tool with opinions on security, used to warn users about potential issues.
|
||||||
|
|
||||||
|
### Detecting Unintended States
|
||||||
|
Trivy is designed to detect unintended vulnerable states in projects, such as the use of vulnerable versions of dependencies or misconfigurations in Infrastructure as Code (IaC) that may unintentionally expose servers to the internet.
|
||||||
|
The focus is on identifying developer mistakes or undesirable states, not on detecting intentional attacks, such as malicious images and malware.
|
||||||
|
|
||||||
|
## Out of Scope Features
|
||||||
|
Aqua Security offers a premium version with several features not available in the open-source Trivy project.
|
||||||
|
While detailed information can be found [here][trivy-aqua], it's beneficial to highlight specific functionalities frequently inquired about:
|
||||||
|
|
||||||
|
### Runtime Security
|
||||||
|
As mentioned in [the Core Principles](#static-analysis-no-runtime-required), Trivy is a static analysis security scanner, making runtime security outside its scope.
|
||||||
|
Runtime security needs are addressed by [Tracee][tracee] or [the commercial version of Aqua Security]().
|
||||||
|
|
||||||
|
### Intentional Attacks
|
||||||
|
As mentioned in [the Core Principles](#detecting-unintended-states), detection of intentional attacks, such as malware or malicious container images, is not covered by Trivy and is supported in [the commercial version][aqua].
|
||||||
|
|
||||||
|
### User Interface
|
||||||
|
Trivy primarily operates via CLI for displaying results, with a richer UI available in [the commercial version][aqua].
|
||||||
|
|
||||||
|
[trivy-aqua]: https://github.com/aquasecurity/resources/blob/main/trivy-aqua.md
|
||||||
|
[tracee]: https://github.com/aquasecurity/tracee
|
||||||
|
[aqua]: https://www.aquasec.com/
|
||||||
@@ -52,7 +52,7 @@ Java users also need to download the Java index database for use in air-gapped e
|
|||||||
=== "oras >= v0.13.0"
|
=== "oras >= v0.13.0"
|
||||||
Please follow [oras installation instruction][oras].
|
Please follow [oras installation instruction][oras].
|
||||||
|
|
||||||
Download `db.tar.gz`:
|
Download `javadb.tar.gz`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ oras pull ghcr.io/aquasecurity/trivy-java-db:1
|
$ oras pull ghcr.io/aquasecurity/trivy-java-db:1
|
||||||
@@ -61,7 +61,7 @@ Java users also need to download the Java index database for use in air-gapped e
|
|||||||
=== "oras < v0.13.0"
|
=== "oras < v0.13.0"
|
||||||
Please follow [oras installation instruction][oras].
|
Please follow [oras installation instruction][oras].
|
||||||
|
|
||||||
Download `db.tar.gz`:
|
Download `javadb.tar.gz`:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ oras pull -a ghcr.io/aquasecurity/trivy-java-db:1
|
$ oras pull -a ghcr.io/aquasecurity/trivy-java-db:1
|
||||||
@@ -122,7 +122,7 @@ In an air-gapped environment, you have to specify `--skip-db-update` and `--skip
|
|||||||
In addition, if you want to scan `pom.xml` dependencies, you need to specify `--offline-scan` since Trivy tries to issue API requests for scanning Java applications by default.
|
In addition, if you want to scan `pom.xml` dependencies, you need to specify `--offline-scan` since Trivy tries to issue API requests for scanning Java applications by default.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ trivy image --skip-update --skip-java-db-update --offline-scan alpine:3.12
|
$ trivy image --skip-db-update --skip-java-db-update --offline-scan alpine:3.12
|
||||||
```
|
```
|
||||||
|
|
||||||
## Air-Gapped Environment for misconfigurations
|
## Air-Gapped Environment for misconfigurations
|
||||||
@@ -137,6 +137,6 @@ $ trivy conf --skip-policy-update /path/to/conf
|
|||||||
```
|
```
|
||||||
|
|
||||||
[allowlist]: ../references/troubleshooting.md
|
[allowlist]: ../references/troubleshooting.md
|
||||||
[oras]: https://oras.land/cli/
|
[oras]: https://oras.land/docs/installation
|
||||||
|
|
||||||
[^1]: This is only required to scan `jar` files. More information about `Java index db` [here](../vulnerability/languages/java.md)
|
[^1]: This is only required to scan `jar` files. More information about `Java index db` [here](../coverage/language/java.md)
|
||||||
|
|||||||
@@ -328,7 +328,7 @@ Put the built binary to the module directory that is under the home directory by
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ mkdir -p ~/.trivy/modules
|
$ mkdir -p ~/.trivy/modules
|
||||||
$ cp spring4shell.wasm ~/.trivy/modules
|
$ cp wordpress.wasm ~/.trivy/modules
|
||||||
```
|
```
|
||||||
|
|
||||||
## Distribute Your Module
|
## Distribute Your Module
|
||||||
|
|||||||
@@ -42,6 +42,11 @@ For example, to download the Kubernetes Trivy plugin you can execute the followi
|
|||||||
```bash
|
```bash
|
||||||
$ trivy plugin install github.com/aquasecurity/trivy-plugin-kubectl
|
$ trivy plugin install github.com/aquasecurity/trivy-plugin-kubectl
|
||||||
```
|
```
|
||||||
|
Also, Trivy plugin can be installed from a local archive:
|
||||||
|
```bash
|
||||||
|
$ trivy plugin install myplugin.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
## Using Plugins
|
## Using Plugins
|
||||||
Once the plugin is installed, Trivy will load all available plugins in the cache on the start of the next Trivy execution.
|
Once the plugin is installed, Trivy will load all available plugins in the cache on the start of the next Trivy execution.
|
||||||
A plugin will be made in the Trivy CLI based on the plugin name.
|
A plugin will be made in the Trivy CLI based on the plugin name.
|
||||||
@@ -162,8 +167,66 @@ When the plugin is called via Trivy CLI, `bin` command will be executed.
|
|||||||
|
|
||||||
The plugin is responsible for handling flags and arguments. Any arguments are passed to the plugin from the `trivy` command.
|
The plugin is responsible for handling flags and arguments. Any arguments are passed to the plugin from the `trivy` command.
|
||||||
|
|
||||||
|
A plugin should be archived `*.tar.gz`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ tar -czvf myplugin.tar.gz plugin.yaml script.py
|
||||||
|
plugin.yaml
|
||||||
|
script.py
|
||||||
|
|
||||||
|
$ trivy plugin install myplugin.tar.gz
|
||||||
|
2023-03-03T19:04:42.026+0600 INFO Installing the plugin from myplugin.tar.gz...
|
||||||
|
2023-03-03T19:04:42.026+0600 INFO Loading the plugin metadata...
|
||||||
|
|
||||||
|
$ trivy myplugin
|
||||||
|
Hello from Trivy demo plugin!
|
||||||
|
```
|
||||||
|
|
||||||
|
## Plugin Types
|
||||||
|
Plugins are typically intended to be used as subcommands of Trivy,
|
||||||
|
but some plugins can be invoked as part of Trivy's built-in commands.
|
||||||
|
Currently, the following type of plugin is experimentally supported:
|
||||||
|
|
||||||
|
- Output plugins
|
||||||
|
|
||||||
|
### Output Plugins
|
||||||
|
|
||||||
|
!!! warning "EXPERIMENTAL"
|
||||||
|
This feature might change without preserving backwards compatibility.
|
||||||
|
|
||||||
|
Trivy supports "output plugins" which process Trivy's output,
|
||||||
|
such as by transforming the output format or sending it elsewhere.
|
||||||
|
For instance, in the case of image scanning, the output plugin can be called as follows:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ trivy image --format json --output plugin=<plugin_name> [--output-plugin-arg <plugin_flags>] <image_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
Since scan results are passed to the plugin via standard input, plugins must be capable of handling standard input.
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
To avoid Trivy hanging, you need to read all data from `Stdin` before the plugin exits successfully or stops with an error.
|
||||||
|
|
||||||
|
While the example passes JSON to the plugin, other formats like SBOM can also be passed (e.g., `--format cyclonedx`).
|
||||||
|
|
||||||
|
If a plugin requires flags or other arguments, they can be passed using `--output-plugin-arg`.
|
||||||
|
This is directly forwarded as arguments to the plugin.
|
||||||
|
For example, `--output plugin=myplugin --output-plugin-arg "--foo --bar=baz"` translates to `myplugin --foo --bar=baz` in execution.
|
||||||
|
|
||||||
|
An example of the output plugin is available [here](https://github.com/aquasecurity/trivy-output-plugin-count).
|
||||||
|
It can be used as below:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Install the plugin first
|
||||||
|
$ trivy plugin install github.com/aquasecurity/trivy-output-plugin-count
|
||||||
|
|
||||||
|
# Call the output plugin in image scanning
|
||||||
|
$ trivy image --format json --output plugin=count --output-plugin-arg "--published-after 2023-10-01" debian:12
|
||||||
|
```
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
https://github.com/aquasecurity/trivy-plugin-kubectl
|
- https://github.com/aquasecurity/trivy-plugin-kubectl
|
||||||
|
- https://github.com/aquasecurity/trivy-output-plugin-count
|
||||||
|
|
||||||
[kubectl]: https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
|
[kubectl]: https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
|
||||||
[helm]: https://helm.sh/docs/topics/plugins/
|
[helm]: https://helm.sh/docs/topics/plugins/
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ export SP_DATA=$(az ad sp create-for-rbac --name TrivyTest --role AcrPull --scop
|
|||||||
# Usage
|
# Usage
|
||||||
```bash
|
```bash
|
||||||
# must set TRIVY_USERNAME empty char
|
# must set TRIVY_USERNAME empty char
|
||||||
export AZURE_CLIENT_ID$(echo $SP_DATA | jq -r .appId)
|
export AZURE_CLIENT_ID=$(echo $SP_DATA | jq -r '.appId')
|
||||||
export AZURE_CLIENT_SECRET$(echo $SP_DATA | jq -r .password)
|
export AZURE_CLIENT_SECRET=$(echo $SP_DATA | jq -r '.password')
|
||||||
export AZURE_TENANT_ID$(echo $SP_DATA | jq -r .tenant)
|
export AZURE_TENANT_ID=$(echo $SP_DATA | jq -r '.tenant')
|
||||||
```
|
```
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
@@ -22,6 +22,6 @@ You can test credentials in the following manner.
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run -it --rm -v /tmp:/tmp \
|
docker run -it --rm -v /tmp:/tmp \
|
||||||
-e AZURE_CLIENT_ID=${AZURE_CLIENT_ID} -e AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET} \
|
-e AZURE_CLIENT_ID -e AZURE_CLIENT_SECRET -e AZURE_TENANT_ID \
|
||||||
-e AZURE_TENANT_ID=${AZURE_TENANT_ID} aquasec/trivy image your_special_project.azurecr.io/your_special_image:your_special_tag
|
aquasec/trivy image your_special_project.azurecr.io/your_special_image:your_special_tag
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,7 +1,2 @@
|
|||||||
Docker Hub needs `TRIVY_USERNAME` and `TRIVY_PASSWORD`.
|
See [here](./index.md) for the detail.
|
||||||
You don't need to set ENV vars when download from public repository.
|
You don't need to provide a credential when download from public repository.
|
||||||
|
|
||||||
```bash
|
|
||||||
export TRIVY_USERNAME={DOCKERHUB_USERNAME}
|
|
||||||
export TRIVY_PASSWORD={DOCKERHUB_PASSWORD}
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -1,4 +1,49 @@
|
|||||||
Trivy can download images from a private registry, without installing `Docker` or any other 3rd party tools.
|
Trivy can download images from a private registry without the need for installing Docker or any other 3rd party tools.
|
||||||
That's because it's easy to run in a CI process.
|
This makes it easy to run within a CI process.
|
||||||
|
|
||||||
All you have to do is install `Trivy` and set ENV vars.
|
## Credential
|
||||||
|
To use Trivy with private images, simply install it and provide your credentials:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ TRIVY_USERNAME=YOUR_USERNAME TRIVY_PASSWORD=YOUR_PASSWORD trivy image YOUR_PRIVATE_IMAGE
|
||||||
|
```
|
||||||
|
|
||||||
|
Trivy also supports providing credentials through CLI flags:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ TRIVY_PASSWORD=YOUR_PASSWORD trivy image --username YOUR_USERNAME YOUR_PRIVATE_IMAGE
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
The CLI flag `--password` is available, but its use is not recommended for security reasons.
|
||||||
|
|
||||||
|
You can also store your credentials in `trivy.yaml`.
|
||||||
|
For more information, please refer to [the documentation](../../references/configuration/config-file.md).
|
||||||
|
|
||||||
|
It can handle multiple sets of credentials as well:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ export TRIVY_USERNAME=USERNAME1,USERNAME2
|
||||||
|
$ export TRIVY_PASSWORD=PASSWORD1,PASSWORD2
|
||||||
|
$ trivy image YOUR_PRIVATE_IMAGE
|
||||||
|
```
|
||||||
|
|
||||||
|
In the example above, Trivy attempts to use two pairs of credentials:
|
||||||
|
|
||||||
|
- USERNAME1/PASSWORD1
|
||||||
|
- USERNAME2/PASSWORD2
|
||||||
|
|
||||||
|
Please note that the number of usernames and passwords must be the same.
|
||||||
|
|
||||||
|
## docker login
|
||||||
|
If you have Docker configured locally and have set up the credentials, Trivy can access them.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ docker login ghcr.io
|
||||||
|
Username:
|
||||||
|
Password:
|
||||||
|
$ trivy image ghcr.io/your/private_image
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
`docker login` can be used with any container runtime, such as Podman.
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
# Cache
|
# Cache
|
||||||
|
The cache directory includes
|
||||||
|
|
||||||
|
- [Vulnerability Database][trivy-db][^1]
|
||||||
|
- [Java Index Database][trivy-java-db][^2]
|
||||||
|
- [Misconfiguration Policies][misconf-policies][^3]
|
||||||
|
- Cache of previous scans.
|
||||||
|
|
||||||
|
The cache option is common to all scanners.
|
||||||
|
|
||||||
## Clear Caches
|
## Clear Caches
|
||||||
The `--clear-cache` option removes caches.
|
The `--clear-cache` option removes caches.
|
||||||
@@ -44,7 +52,14 @@ Two options:
|
|||||||
$ trivy server --cache-backend redis://localhost:6379
|
$ trivy server --cache-backend redis://localhost:6379
|
||||||
```
|
```
|
||||||
|
|
||||||
Trivy also support for connecting to Redis using TLS, you only need to specify `--redis-ca` , `--redis-cert` , and `--redis-key` option.
|
If you want to use TLS with Redis, you can enable it by specifying the `--redis-tls` flag.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ trivy server --cache-backend redis://localhost:6379 --redis-tls
|
||||||
|
```
|
||||||
|
|
||||||
|
Trivy also supports for connecting to Redis with your certificates.
|
||||||
|
You need to specify `--redis-ca` , `--redis-cert` , and `--redis-key` options.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ trivy server --cache-backend redis://localhost:6379 \
|
$ trivy server --cache-backend redis://localhost:6379 \
|
||||||
@@ -53,4 +68,10 @@ $ trivy server --cache-backend redis://localhost:6379 \
|
|||||||
--redis-key /path/to/key.pem
|
--redis-key /path/to/key.pem
|
||||||
```
|
```
|
||||||
|
|
||||||
TLS option for redis is hidden from Trivy command-line flag, but you still can use it.
|
[trivy-db]: ./db.md#vulnerability-database
|
||||||
|
[trivy-java-db]: ./db.md#java-index-database
|
||||||
|
[misconf-policies]: ../scanner/misconfiguration/check/builtin.md
|
||||||
|
|
||||||
|
[^1]: Downloaded when scanning for vulnerabilities
|
||||||
|
[^2]: Downloaded when scanning `jar/war/par/ear` files
|
||||||
|
[^3]: Downloaded when scanning for misconfigurations
|
||||||
85
docs/docs/configuration/db.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# DB
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | |
|
||||||
|
| Secret | |
|
||||||
|
| License | |
|
||||||
|
|
||||||
|
The vulnerability database and the Java index database are needed only for vulnerability scanning.
|
||||||
|
See [here](../scanner/vulnerability.md) for the detail.
|
||||||
|
|
||||||
|
## Vulnerability Database
|
||||||
|
|
||||||
|
### Skip update of vulnerability DB
|
||||||
|
If you want to skip downloading the vulnerability database, use the `--skip-db-update` option.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --skip-db-update python:3.4-alpine3.9
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
2019-05-16T12:48:08.703+0900 INFO Detecting Alpine vulnerabilities...
|
||||||
|
|
||||||
|
python:3.4-alpine3.9 (alpine 3.9.2)
|
||||||
|
===================================
|
||||||
|
Total: 1 (UNKNOWN: 0, LOW: 0, MEDIUM: 1, HIGH: 0, CRITICAL: 0)
|
||||||
|
|
||||||
|
+---------+------------------+----------+-------------------+---------------+--------------------------------+
|
||||||
|
| LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION | TITLE |
|
||||||
|
+---------+------------------+----------+-------------------+---------------+--------------------------------+
|
||||||
|
| openssl | CVE-2019-1543 | MEDIUM | 1.1.1a-r1 | 1.1.1b-r1 | openssl: ChaCha20-Poly1305 |
|
||||||
|
| | | | | | with long nonces |
|
||||||
|
+---------+------------------+----------+-------------------+---------------+--------------------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Only download vulnerability database
|
||||||
|
You can also ask `Trivy` to simply retrieve the vulnerability database.
|
||||||
|
This is useful to initialize workers in Continuous Integration systems.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --download-db-only
|
||||||
|
```
|
||||||
|
|
||||||
|
### DB Repository
|
||||||
|
`Trivy` could also download the vulnerability database from an external OCI registry by using `--db-repository` option.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --db-repository registry.gitlab.com/gitlab-org/security-products/dependencies/trivy-db
|
||||||
|
```
|
||||||
|
|
||||||
|
!!!note
|
||||||
|
Trivy automatically adds the `trivy-db` schema version as a tag if the tag is not used:
|
||||||
|
|
||||||
|
`trivy-db-registry:latest` => `trivy-db-registry:latest`, but `trivy-db-registry` => `trivy-db-registry:2`.
|
||||||
|
|
||||||
|
## Java Index Database
|
||||||
|
The same options are also available for the Java index DB, which is used for scanning Java applications.
|
||||||
|
Skipping an update can be done by using the `--skip-java-db-update` option, while `--download-java-db-only` can be used to only download the Java index DB.
|
||||||
|
|
||||||
|
!!! Note
|
||||||
|
In [Client/Server](../references/modes/client-server.md) mode, `Java index DB` is currently only used on the `client` side.
|
||||||
|
|
||||||
|
Downloading the Java index DB from an external OCI registry can be done by using the `--java-db-repository` option.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --java-db-repository registry.gitlab.com/gitlab-org/security-products/dependencies/trivy-java-db --download-java-db-only
|
||||||
|
```
|
||||||
|
|
||||||
|
!!!note
|
||||||
|
Trivy automatically adds the `trivy-java-db` schema version as a tag if the tag is not used:
|
||||||
|
|
||||||
|
`java-db-registry:latest` => `java-db-registry:latest`, but `java-db-registry` => `java-db-registry:1`.
|
||||||
|
|
||||||
|
## Remove DBs
|
||||||
|
The `--reset` flag removes all caches and databases.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --reset
|
||||||
|
```
|
||||||
500
docs/docs/configuration/filtering.md
Normal file
@@ -0,0 +1,500 @@
|
|||||||
|
# Filtering
|
||||||
|
Trivy provides various methods for filtering the results.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
Issues("Detected\nIssues") --> Severity
|
||||||
|
|
||||||
|
subgraph Filtering
|
||||||
|
subgraph Prioritization
|
||||||
|
direction TB
|
||||||
|
Severity("By Severity") --> Status("By Status")
|
||||||
|
end
|
||||||
|
subgraph Suppression
|
||||||
|
Status --> Ignore("By Finding IDs")
|
||||||
|
Ignore --> Rego("By Rego")
|
||||||
|
Rego --> VEX("By VEX")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
VEX --> Results
|
||||||
|
```
|
||||||
|
|
||||||
|
Similar to the functionality of filtering results, you can also limit the sub-targets for each scanner.
|
||||||
|
For information on these settings, please refer to the scanner-specific documentation ([vulnerability](../scanner/vulnerability.md) , [misconfiguration](../scanner/misconfiguration/index.md), etc.).
|
||||||
|
|
||||||
|
## Prioritization
|
||||||
|
You can filter the results by
|
||||||
|
|
||||||
|
- [Severity](#by-severity)
|
||||||
|
- [Status](#by-status)
|
||||||
|
|
||||||
|
### By Severity
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
Use `--severity` option.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --severity HIGH,CRITICAL ruby:2.4.0
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
2019-05-16T01:51:46.255+0900 INFO Updating vulnerability database...
|
||||||
|
2019-05-16T01:51:49.213+0900 INFO Detecting Debian vulnerabilities...
|
||||||
|
|
||||||
|
ruby:2.4.0 (debian 8.7)
|
||||||
|
=======================
|
||||||
|
Total: 1785 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 1680, CRITICAL: 105)
|
||||||
|
|
||||||
|
+-----------------------------+------------------+----------+---------------------------+----------------------------------+-------------------------------------------------+
|
||||||
|
| LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION | TITLE |
|
||||||
|
+-----------------------------+------------------+----------+---------------------------+----------------------------------+-------------------------------------------------+
|
||||||
|
| apt | CVE-2019-3462 | CRITICAL | 1.0.9.8.3 | 1.0.9.8.5 | Incorrect sanitation of the |
|
||||||
|
| | | | | | 302 redirect field in HTTP |
|
||||||
|
| | | | | | transport method of... |
|
||||||
|
+-----------------------------+------------------+----------+---------------------------+----------------------------------+-------------------------------------------------+
|
||||||
|
| bash | CVE-2019-9924 | HIGH | 4.3-11 | 4.3-11+deb8u2 | bash: BASH_CMD is writable in |
|
||||||
|
| | | | | | restricted bash shells |
|
||||||
|
+ +------------------+ + +----------------------------------+-------------------------------------------------+
|
||||||
|
| | CVE-2016-7543 | | | 4.3-11+deb8u1 | bash: Specially crafted |
|
||||||
|
| | | | | | SHELLOPTS+PS4 variables allows |
|
||||||
|
| | | | | | command substitution |
|
||||||
|
+-----------------------------+------------------+ +---------------------------+----------------------------------+-------------------------------------------------+
|
||||||
|
| binutils | CVE-2017-8421 | | 2.25-5 | | binutils: Memory exhaustion in |
|
||||||
|
| | | | | | objdump via a crafted PE file |
|
||||||
|
+ +------------------+ + +----------------------------------+-------------------------------------------------+
|
||||||
|
| | CVE-2017-14930 | | | | binutils: Memory leak in |
|
||||||
|
| | | | | | decode_line_info |
|
||||||
|
+ +------------------+ + +----------------------------------+-------------------------------------------------+
|
||||||
|
| | CVE-2017-7614 | | | | binutils: NULL |
|
||||||
|
| | | | | | pointer dereference in |
|
||||||
|
| | | | | | bfd_elf_final_link function |
|
||||||
|
+ +------------------+ + +----------------------------------+-------------------------------------------------+
|
||||||
|
| | CVE-2014-9939 | | | | binutils: buffer overflow in |
|
||||||
|
| | | | | | ihex.c |
|
||||||
|
+ +------------------+ + +----------------------------------+-------------------------------------------------+
|
||||||
|
| | CVE-2017-13716 | | | | binutils: Memory leak with the |
|
||||||
|
| | | | | | C++ symbol demangler routine |
|
||||||
|
| | | | | | in libiberty |
|
||||||
|
+ +------------------+ + +----------------------------------+-------------------------------------------------+
|
||||||
|
| | CVE-2018-12699 | | | | binutils: heap-based buffer |
|
||||||
|
| | | | | | overflow in finish_stab in |
|
||||||
|
| | | | | | stabs.c |
|
||||||
|
+-----------------------------+------------------+ +---------------------------+----------------------------------+-------------------------------------------------+
|
||||||
|
| bsdutils | CVE-2015-5224 | | 2.25.2-6 | | util-linux: File name |
|
||||||
|
| | | | | | collision due to incorrect |
|
||||||
|
| | | | | | mkstemp use |
|
||||||
|
+ +------------------+ + +----------------------------------+-------------------------------------------------+
|
||||||
|
| | CVE-2016-2779 | | | | util-linux: runuser tty hijack |
|
||||||
|
| | | | | | via TIOCSTI ioctl |
|
||||||
|
+-----------------------------+------------------+----------+---------------------------+----------------------------------+-------------------------------------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy conf --severity HIGH,CRITICAL examples/misconf/mixed
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```shell
|
||||||
|
2022-05-16T13:50:42.718+0100 INFO Detected config files: 3
|
||||||
|
|
||||||
|
Dockerfile (dockerfile)
|
||||||
|
=======================
|
||||||
|
Tests: 17 (SUCCESSES: 16, FAILURES: 1, EXCEPTIONS: 0)
|
||||||
|
Failures: 1 (HIGH: 1, CRITICAL: 0)
|
||||||
|
|
||||||
|
HIGH: Last USER command in Dockerfile should not be 'root'
|
||||||
|
═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
|
||||||
|
Running containers with 'root' user can lead to a container escape situation. It is a best practice to run containers as non-root users, which can be done by adding a 'USER' statement to the Dockerfile.
|
||||||
|
|
||||||
|
See https://avd.aquasec.com/misconfig/ds002
|
||||||
|
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
|
Dockerfile:3
|
||||||
|
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
|
3 [ USER root
|
||||||
|
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
deployment.yaml (kubernetes)
|
||||||
|
============================
|
||||||
|
Tests: 8 (SUCCESSES: 8, FAILURES: 0, EXCEPTIONS: 0)
|
||||||
|
Failures: 0 (HIGH: 0, CRITICAL: 0)
|
||||||
|
|
||||||
|
|
||||||
|
main.tf (terraform)
|
||||||
|
===================
|
||||||
|
Tests: 1 (SUCCESSES: 0, FAILURES: 1, EXCEPTIONS: 0)
|
||||||
|
Failures: 1 (HIGH: 0, CRITICAL: 1)
|
||||||
|
|
||||||
|
CRITICAL: Classic resources should not be used.
|
||||||
|
═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
|
||||||
|
AWS Classic resources run in a shared environment with infrastructure owned by other AWS customers. You should run
|
||||||
|
resources in a VPC instead.
|
||||||
|
|
||||||
|
See https://avd.aquasec.com/misconfig/avd-aws-0081
|
||||||
|
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
|
main.tf:2-4
|
||||||
|
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
|
2 ┌ resource "aws_db_security_group" "sg" {
|
||||||
|
3 │
|
||||||
|
4 └ }
|
||||||
|
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### By Status
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | |
|
||||||
|
| Secret | |
|
||||||
|
| License | |
|
||||||
|
|
||||||
|
Trivy supports the following vulnerability statuses:
|
||||||
|
|
||||||
|
- `unknown`
|
||||||
|
- `not_affected`: this package is not affected by this vulnerability on this platform
|
||||||
|
- `affected`: this package is affected by this vulnerability on this platform, but there is no patch released yet
|
||||||
|
- `fixed`: this vulnerability is fixed on this platform
|
||||||
|
- `under_investigation`: it is currently unknown whether or not this vulnerability affects this package on this platform, and it is under investigation
|
||||||
|
- `will_not_fix`: this package is affected by this vulnerability on this platform, but there is currently no intention to fix it (this would primarily be for flaws that are of Low or Moderate impact that pose no significant risk to customers)
|
||||||
|
- `fix_deferred`: this package is affected by this vulnerability on this platform, and may be fixed in the future
|
||||||
|
- `end_of_life`: this package has been identified to contain the impacted component, but analysis to determine whether it is affected or not by this vulnerability was not performed
|
||||||
|
|
||||||
|
Note that vulnerabilities with the `unknown`, `not_affected` or `under_investigation` status are not detected.
|
||||||
|
These are only defined for comprehensiveness, and you will not have the opportunity to specify these statuses.
|
||||||
|
|
||||||
|
Some statuses are supported in limited distributions.
|
||||||
|
|
||||||
|
| OS | Fixed | Affected | Under Investigation | Will Not Fix | Fix Deferred | End of Life |
|
||||||
|
|:----------:|:-----:|:--------:|:-------------------:|:------------:|:------------:|:-----------:|
|
||||||
|
| Debian | ✓ | ✓ | | | ✓ | ✓ |
|
||||||
|
| RHEL | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||||
|
| Other OSes | ✓ | ✓ | | | | |
|
||||||
|
|
||||||
|
|
||||||
|
To ignore vulnerabilities with specific statuses, use the `--ignore-status <list_of_statuses>` option.
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --ignore-status affected,fixed ruby:2.4.0
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
2019-05-16T12:50:14.786+0900 INFO Detecting Debian vulnerabilities...
|
||||||
|
|
||||||
|
ruby:2.4.0 (debian 8.7)
|
||||||
|
=======================
|
||||||
|
Total: 527 (UNKNOWN: 0, LOW: 276, MEDIUM: 83, HIGH: 158, CRITICAL: 10)
|
||||||
|
|
||||||
|
┌─────────────────────────────┬──────────────────┬──────────┬──────────────┬────────────────────────────┬───────────────┬──────────────────────────────────────────────────────────────┐
|
||||||
|
│ Library │ Vulnerability │ Severity │ Status │ Installed Version │ Fixed Version │ Title │
|
||||||
|
├─────────────────────────────┼──────────────────┼──────────┼──────────────┼────────────────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
|
||||||
|
│ binutils │ CVE-2014-9939 │ CRITICAL │ will_not_fix │ 2.25-5 │ │ binutils: buffer overflow in ihex.c │
|
||||||
|
│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2014-9939 │
|
||||||
|
│ ├──────────────────┤ │ │ ├───────────────┼──────────────────────────────────────────────────────────────┤
|
||||||
|
│ │ CVE-2017-6969 │ │ │ │ │ binutils: Heap-based buffer over-read in readelf when │
|
||||||
|
│ │ │ │ │ │ │ processing corrupt RL78 binaries │
|
||||||
|
│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2017-6969 │
|
||||||
|
│ ├──────────────────┤ │ │ ├───────────────┼──────────────────────────────────────────────────────────────┤
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
!!! tip
|
||||||
|
To skip all unfixed vulnerabilities, you can use the `--ignore-unfixed` flag .
|
||||||
|
It is a shorthand of `--ignore-status affected,will_not_fix,fix_deferred,end_of_life`.
|
||||||
|
It displays "fixed" vulnerabilities only.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --ignore-unfixed ruby:2.4.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Suppression
|
||||||
|
You can filter the results by
|
||||||
|
|
||||||
|
- [Finding IDs](#by-finding-ids)
|
||||||
|
- [Rego](#by-rego)
|
||||||
|
- [Vulnerability Exploitability Exchange (VEX)](#by-vulnerability-exploitability-exchange-vex)
|
||||||
|
|
||||||
|
To show the suppressed results, use the `--show-suppressed` flag.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
This flag is currently available only in the table format.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --vex debian11.csaf.vex --ignorefile .trivyignore.yaml --show-suppressed debian:11
|
||||||
|
...
|
||||||
|
|
||||||
|
Suppressed Vulnerabilities (Total: 9)
|
||||||
|
|
||||||
|
┌───────────────┬───────────────┬──────────┬──────────────┬─────────────────────────────────────────────┬───────────────────┐
|
||||||
|
│ Library │ Vulnerability │ Severity │ Status │ Statement │ Source │
|
||||||
|
├───────────────┼───────────────┼──────────┼──────────────┼─────────────────────────────────────────────┼───────────────────┤
|
||||||
|
│ libdb5.3 │ CVE-2019-8457 │ CRITICAL │ not_affected │ vulnerable_code_not_in_execute_path │ CSAF VEX │
|
||||||
|
├───────────────┼───────────────┼──────────┼──────────────┼─────────────────────────────────────────────┼───────────────────┤
|
||||||
|
│ bsdutils │ CVE-2022-0563 │ LOW │ ignored │ Accept the risk │ .trivyignore.yaml │
|
||||||
|
├───────────────┤ │ │ │ │ │
|
||||||
|
│ libblkid1 │ │ │ │ │ │
|
||||||
|
├───────────────┤ │ │ │ │ │
|
||||||
|
│ libmount1 │ │ │ │ │ │
|
||||||
|
├───────────────┤ │ │ │ │ │
|
||||||
|
│ libsmartcols1 │ │ │ │ │ │
|
||||||
|
├───────────────┤ │ │ │ │ │
|
||||||
|
│ libuuid1 │ │ │ │ │ │
|
||||||
|
├───────────────┤ │ │ │ │ │
|
||||||
|
│ mount │ │ │ │ │ │
|
||||||
|
├───────────────┼───────────────┤ │ ├─────────────────────────────────────────────┤ │
|
||||||
|
│ tar │ CVE-2005-2541 │ │ │ The vulnerable configuration is not enabled │ │
|
||||||
|
├───────────────┼───────────────┤ │ ├─────────────────────────────────────────────┤ │
|
||||||
|
│ util-linux │ CVE-2022-0563 │ │ │ Accept the risk │ │
|
||||||
|
└───────────────┴───────────────┴──────────┴──────────────┴─────────────────────────────────────────────┴───────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### By Finding IDs
|
||||||
|
|
||||||
|
Trivy supports the [.trivyignore](#trivyignore) and [.trivyignore.yaml](#trivyignoreyaml) ignore files.
|
||||||
|
|
||||||
|
#### .trivyignore
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | |
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cat .trivyignore
|
||||||
|
# Accept the risk
|
||||||
|
CVE-2018-14618
|
||||||
|
|
||||||
|
# Accept the risk until 2023-01-01
|
||||||
|
CVE-2019-14697 exp:2023-01-01
|
||||||
|
|
||||||
|
# No impact in our settings
|
||||||
|
CVE-2019-1543
|
||||||
|
|
||||||
|
# Ignore misconfigurations
|
||||||
|
AVD-DS-0002
|
||||||
|
|
||||||
|
# Ignore secrets
|
||||||
|
generic-unwanted-rule
|
||||||
|
aws-account-id
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image python:3.4-alpine3.9
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
2019-05-16T12:53:10.076+0900 INFO Updating vulnerability database...
|
||||||
|
2019-05-16T12:53:28.134+0900 INFO Detecting Alpine vulnerabilities...
|
||||||
|
|
||||||
|
python:3.4-alpine3.9 (alpine 3.9.2)
|
||||||
|
===================================
|
||||||
|
Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
#### .trivyignore.yaml
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
!!! warning "EXPERIMENTAL"
|
||||||
|
This feature might change without preserving backwards compatibility.
|
||||||
|
|
||||||
|
When the extension of the specified ignore file is either `.yml` or `.yaml`, Trivy will load the file as YAML.
|
||||||
|
For the `.trivyignore.yaml` file, you can set ignored IDs separately for `vulnerabilities`, `misconfigurations`, `secrets`, or `licenses`[^1].
|
||||||
|
|
||||||
|
Available fields:
|
||||||
|
|
||||||
|
| Field | Required | Type | Description |
|
||||||
|
|------------|:--------:|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| id | ✓ | string | The identifier of the vulnerability, misconfiguration, secret, or license[^1]. |
|
||||||
|
| paths[^2] | | string array | The list of file paths to ignore. If `paths` is not set, the ignore finding is applied to all files. |
|
||||||
|
| purls | | string array | The list of PURLs to ignore packages. If `purls` is not set, the ignore finding is applied to all packages. This field is currently available only for vulnerabilities. |
|
||||||
|
| expired_at | | date (`yyyy-mm-dd`) | The expiration date of the ignore finding. If `expired_at` is not set, the ignore finding is always valid. |
|
||||||
|
| statement | | string | The reason for ignoring the finding. (This field is not used for filtering.) |
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cat .trivyignore.yaml
|
||||||
|
vulnerabilities:
|
||||||
|
- id: CVE-2022-40897
|
||||||
|
paths:
|
||||||
|
- "usr/local/lib/python3.9/site-packages/setuptools-58.1.0.dist-info/METADATA"
|
||||||
|
statement: Accept the risk
|
||||||
|
- id: CVE-2023-2650
|
||||||
|
- id: CVE-2023-3446
|
||||||
|
- id: CVE-2023-3817
|
||||||
|
purls:
|
||||||
|
- "pkg:deb/debian/libssl1.1"
|
||||||
|
- id: CVE-2023-29491
|
||||||
|
expired_at: 2023-09-01
|
||||||
|
|
||||||
|
misconfigurations:
|
||||||
|
- id: AVD-DS-0001
|
||||||
|
- id: AVD-DS-0002
|
||||||
|
paths:
|
||||||
|
- "docs/Dockerfile"
|
||||||
|
statement: The image needs root privileges
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
- id: aws-access-key-id
|
||||||
|
- id: aws-secret-access-key
|
||||||
|
paths:
|
||||||
|
- "foo/bar/aws.secret"
|
||||||
|
|
||||||
|
licenses:
|
||||||
|
- id: GPL-3.0 # License name is used as ID
|
||||||
|
paths:
|
||||||
|
- "usr/share/gcc/python/libstdcxx/v6/__init__.py"
|
||||||
|
```
|
||||||
|
|
||||||
|
Since this feature is experimental, you must explicitly specify the YAML file path using the `--ignorefile` flag.
|
||||||
|
Once this functionality is stable, the YAML file will be loaded automatically.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --ignorefile ./.trivyignore.yaml python:3.9.16-alpine3.16
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```bash
|
||||||
|
2023-08-31T11:10:27.155+0600 INFO Vulnerability scanning is enabled
|
||||||
|
2023-08-31T11:10:27.155+0600 INFO Secret scanning is enabled
|
||||||
|
2023-08-31T11:10:27.155+0600 INFO If your scanning is slow, please try '--scanners vuln' to disable secret scanning
|
||||||
|
2023-08-31T11:10:27.155+0600 INFO Please see also https://aquasecurity.github.io/trivy/dev/docs/scanner/secret/#recommendation for faster secret detection
|
||||||
|
2023-08-31T11:10:29.164+0600 INFO Detected OS: alpine
|
||||||
|
2023-08-31T11:10:29.164+0600 INFO Detecting Alpine vulnerabilities...
|
||||||
|
2023-08-31T11:10:29.169+0600 INFO Number of language-specific files: 1
|
||||||
|
2023-08-31T11:10:29.170+0600 INFO Detecting python-pkg vulnerabilities...
|
||||||
|
|
||||||
|
python:3.9.16-alpine3.16 (alpine 3.16.5)
|
||||||
|
========================================
|
||||||
|
Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### By Rego
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
!!! warning "EXPERIMENTAL"
|
||||||
|
This feature might change without preserving backwards compatibility.
|
||||||
|
|
||||||
|
[Rego](https://www.openpolicyagent.org/docs/latest/policy-language/) is a policy language that allows you to express decision logic in a concise syntax.
|
||||||
|
Rego is part of the popular [Open Policy Agent (OPA)](https://www.openpolicyagent.org) CNCF project.
|
||||||
|
For advanced filtering, Trivy allows you to use Rego language to filter vulnerabilities.
|
||||||
|
|
||||||
|
Use the `--ignore-policy` flag which takes a path to a Rego file that defines the filtering policy.
|
||||||
|
The Rego package name must be `trivy` and it must include a "rule" named `ignore` which determines if each individual scan result should be excluded (ignore=true) or not (ignore=false).
|
||||||
|
The `input` for the evaluation is each [DetectedVulnerability](https://github.com/aquasecurity/trivy/blob/00f2059e5d7bc2ca2e3e8b1562bdfede1ed570e3/pkg/types/vulnerability.go#L9) and [DetectedMisconfiguration](https://github.com/aquasecurity/trivy/blob/00f2059e5d7bc2ca2e3e8b1562bdfede1ed570e3/pkg/types/misconfiguration.go#L6).
|
||||||
|
|
||||||
|
A practical way to observe the filtering policy input in your case, is to run a scan with the `--format json` option and look at the resulting structure:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy image -f json centos:7
|
||||||
|
|
||||||
|
...
|
||||||
|
"Results": [
|
||||||
|
{
|
||||||
|
"Target": "centos:7 (centos 7.9.2009)",
|
||||||
|
"Class": "os-pkgs",
|
||||||
|
"Type": "centos",
|
||||||
|
"Vulnerabilities": [
|
||||||
|
{
|
||||||
|
"VulnerabilityID": "CVE-2015-5186",
|
||||||
|
"PkgID": "audit-libs@2.8.5-4.el7.x86_64",
|
||||||
|
"PkgName": "audit-libs",
|
||||||
|
"InstalledVersion": "2.8.5-4.el7",
|
||||||
|
"Layer": {
|
||||||
|
"Digest": "sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc",
|
||||||
|
"DiffID": "sha256:174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02"
|
||||||
|
},
|
||||||
|
"SeveritySource": "redhat",
|
||||||
|
"PrimaryURL": "https://avd.aquasec.com/nvd/cve-2015-5186",
|
||||||
|
"Title": "log terminal emulator escape sequences handling",
|
||||||
|
"Description": "Audit before 2.4.4 in Linux does not sanitize escape characters in filenames.",
|
||||||
|
"Severity": "MEDIUM",
|
||||||
|
"CweIDs": [
|
||||||
|
"CWE-20"
|
||||||
|
],
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Each individual Vulnerability, Misconfiguration, License and Secret (under `Results.Vulnerabilities`, `Results.Misconfigurations`,
|
||||||
|
`Results.Licenses`, `Results.Secrets`) is evaluated for exclusion or inclusion by the `ignore` rule.
|
||||||
|
|
||||||
|
The following is a Rego ignore policy that filters out every vulnerability with a specific CWE ID (as seen in the JSON example above):
|
||||||
|
|
||||||
|
```rego
|
||||||
|
package trivy
|
||||||
|
|
||||||
|
default ignore = false
|
||||||
|
|
||||||
|
ignore {
|
||||||
|
input.CweIDs[_] == "CWE-20"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy image --ignore-policy contrib/example_policy/basic.rego centos:7
|
||||||
|
```
|
||||||
|
|
||||||
|
For more advanced use cases, there is a built-in Rego library with helper functions that you can import into your policy using: `import data.lib.trivy`.
|
||||||
|
More info about the helper functions are in the library [here](https://github.com/aquasecurity/trivy/tree/{{ git.tag }}/pkg/result/module.go).
|
||||||
|
|
||||||
|
You can find more example policies [here](https://github.com/aquasecurity/trivy/tree/{{ git.tag }}/pkg/result/module.go)
|
||||||
|
|
||||||
|
### By Vulnerability Exploitability Exchange (VEX)
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | |
|
||||||
|
| Secret | |
|
||||||
|
| License | |
|
||||||
|
|
||||||
|
Please refer to the [VEX documentation](../supply-chain/vex.md) for the details.
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: license name is used as id for `.trivyignore.yaml` files.
|
||||||
|
[^2]: This doesn't work for os package licenses (e.g. apk, dpkg, rpm). For projects which manage dependencies through a dependency file (e.g. go.mod, yarn.lock) `path` should point to that particular file.
|
||||||
31
docs/docs/configuration/index.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Configuration
|
||||||
|
Trivy can be configured using the following ways. Each item takes precedence over the item below it:
|
||||||
|
|
||||||
|
- CLI flags
|
||||||
|
- Environment variables
|
||||||
|
- Configuration file
|
||||||
|
|
||||||
|
## CLI Flags
|
||||||
|
You can view the list of available flags using the `--help` option.
|
||||||
|
For more details, please refer to [the CLI reference](../references/configuration/cli/trivy.md).
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
Trivy can be customized by environment variables.
|
||||||
|
The environment variable key is the flag name converted by the following procedure.
|
||||||
|
|
||||||
|
- Add `TRIVY_` prefix
|
||||||
|
- Make it all uppercase
|
||||||
|
- Replace `-` with `_`
|
||||||
|
|
||||||
|
For example,
|
||||||
|
|
||||||
|
- `--debug` => `TRIVY_DEBUG`
|
||||||
|
- `--cache-dir` => `TRIVY_CACHE_DIR`
|
||||||
|
|
||||||
|
```
|
||||||
|
$ TRIVY_DEBUG=true TRIVY_SEVERITY=CRITICAL trivy image alpine:3.15
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration File
|
||||||
|
By default, Trivy reads the `trivy.yaml` file.
|
||||||
|
For more details, please refer to [the page](../references/configuration/config-file.md).
|
||||||
119
docs/docs/configuration/others.md
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# Others
|
||||||
|
|
||||||
|
## Enable/Disable Scanners
|
||||||
|
You can enable/disable scanners with the `--scanners` flag.
|
||||||
|
|
||||||
|
Supported values:
|
||||||
|
|
||||||
|
- vuln
|
||||||
|
- misconfig
|
||||||
|
- secret
|
||||||
|
- license
|
||||||
|
|
||||||
|
For example, container image scanning enables vulnerability and secret scanners by default.
|
||||||
|
If you don't need secret scanning, it can be disabled.
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
$ trivy image --scanners vuln alpine:3.15
|
||||||
|
```
|
||||||
|
|
||||||
|
## Exit Code
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
By default, `Trivy` exits with code 0 even when security issues are detected.
|
||||||
|
Use the `--exit-code` option if you want to exit with a non-zero exit code.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --exit-code 1 python:3.4-alpine3.9
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
2019-05-16T12:51:43.500+0900 INFO Updating vulnerability database...
|
||||||
|
2019-05-16T12:52:00.387+0900 INFO Detecting Alpine vulnerabilities...
|
||||||
|
|
||||||
|
python:3.4-alpine3.9 (alpine 3.9.2)
|
||||||
|
===================================
|
||||||
|
Total: 1 (UNKNOWN: 0, LOW: 0, MEDIUM: 1, HIGH: 0, CRITICAL: 0)
|
||||||
|
|
||||||
|
+---------+------------------+----------+-------------------+---------------+--------------------------------+
|
||||||
|
| LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION | TITLE |
|
||||||
|
+---------+------------------+----------+-------------------+---------------+--------------------------------+
|
||||||
|
| openssl | CVE-2019-1543 | MEDIUM | 1.1.1a-r1 | 1.1.1b-r1 | openssl: ChaCha20-Poly1305 |
|
||||||
|
| | | | | | with long nonces |
|
||||||
|
+---------+------------------+----------+-------------------+---------------+--------------------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
This option is useful for CI/CD. In the following example, the test will fail only when a critical vulnerability is found.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --exit-code 0 --severity MEDIUM,HIGH ruby:2.4.0
|
||||||
|
$ trivy image --exit-code 1 --severity CRITICAL ruby:2.4.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Exit on EOL
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | |
|
||||||
|
| Secret | |
|
||||||
|
| License | |
|
||||||
|
|
||||||
|
Sometimes you may surprisingly get 0 vulnerabilities in an old image:
|
||||||
|
|
||||||
|
- Enabling `--ignore-unfixed` option while all packages have no fixed versions.
|
||||||
|
- Scanning a rather outdated OS (e.g. Ubuntu 10.04).
|
||||||
|
|
||||||
|
An OS at the end of service/life (EOL) usually gets into this situation, which is definitely full of vulnerabilities.
|
||||||
|
`--exit-on-eol` can fail scanning on EOL OS with a non-zero code.
|
||||||
|
This flag is available with the following targets.
|
||||||
|
|
||||||
|
- Container images (`trivy image`)
|
||||||
|
- Virtual machine images (`trivy vm`)
|
||||||
|
- SBOM (`trivy sbom`)
|
||||||
|
- Root filesystem (`trivy rootfs`)
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --exit-on-eol 1 alpine:3.10
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Result</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
2023-03-01T11:07:15.455+0200 INFO Vulnerability scanning is enabled
|
||||||
|
...
|
||||||
|
2023-03-01T11:07:17.938+0200 WARN This OS version is no longer supported by the distribution: alpine 3.10.9
|
||||||
|
2023-03-01T11:07:17.938+0200 WARN The vulnerability detection may be insufficient because security updates are not provided
|
||||||
|
|
||||||
|
alpine:3.10 (alpine 3.10.9)
|
||||||
|
===========================
|
||||||
|
Total: 1 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 1)
|
||||||
|
|
||||||
|
┌───────────┬────────────────┬──────────┬───────────────────┬───────────────┬─────────────────────────────────────────────────────────────┐
|
||||||
|
│ Library │ Vulnerability │ Severity │ Installed Version │ Fixed Version │ Title │
|
||||||
|
├───────────┼────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────────────────────────────┤
|
||||||
|
│ apk-tools │ CVE-2021-36159 │ CRITICAL │ 2.10.6-r0 │ 2.10.7-r0 │ libfetch before 2021-07-26, as used in apk-tools, xbps, and │
|
||||||
|
│ │ │ │ │ │ other products, mishandles... │
|
||||||
|
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2021-36159 │
|
||||||
|
└───────────┴────────────────┴──────────┴───────────────────┴───────────────┴─────────────────────────────────────────────────────────────┘
|
||||||
|
2023-03-01T11:07:17.941+0200 ERROR Detected EOL OS: alpine 3.10.9
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
This option is useful for CI/CD.
|
||||||
|
The following example will fail when a critical vulnerability is found or the OS is EOSL:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --exit-code 1 --exit-on-eol 1 --severity CRITICAL alpine:3.16.3
|
||||||
|
```
|
||||||
@@ -1,12 +1,36 @@
|
|||||||
# Report Formats
|
# Reporting
|
||||||
|
|
||||||
## Table (Default)
|
## Format
|
||||||
|
Trivy supports the following formats:
|
||||||
|
|
||||||
|
- Table
|
||||||
|
- JSON
|
||||||
|
- [SARIF](https://docs.github.com/en/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning)
|
||||||
|
- Template
|
||||||
|
- SBOM
|
||||||
|
- GitHub dependency snapshot
|
||||||
|
|
||||||
|
### Table (Default)
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
```
|
```
|
||||||
$ trivy image -f table golang:1.12-alpine
|
$ trivy image -f table golang:1.12-alpine
|
||||||
```
|
```
|
||||||
|
|
||||||
### Show origins of vulnerable dependencies
|
#### Show origins of vulnerable dependencies
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | |
|
||||||
|
| Secret | |
|
||||||
|
| License | |
|
||||||
|
|
||||||
!!! warning "EXPERIMENTAL"
|
!!! warning "EXPERIMENTAL"
|
||||||
This feature might change without preserving backwards compatibility.
|
This feature might change without preserving backwards compatibility.
|
||||||
@@ -17,14 +41,32 @@ In some cases, vulnerable dependencies are not linked directly, and it requires
|
|||||||
To make this task simpler Trivy can show a dependency origin tree with the `--dependency-tree` flag.
|
To make this task simpler Trivy can show a dependency origin tree with the `--dependency-tree` flag.
|
||||||
This flag is only available with the `--format table` flag.
|
This flag is only available with the `--format table` flag.
|
||||||
|
|
||||||
The following packages/languages are currently supported:
|
The following OS package managers are currently supported:
|
||||||
|
|
||||||
- OS packages (apk, dpkg and rpm)
|
| OS Package Managers |
|
||||||
- Node.js (package-lock.json and yarn.lock)
|
|---------------------|
|
||||||
- Nuget lock files (packages.lock.json)
|
| apk |
|
||||||
- Rust Binaries built with [cargo-auditable][cargo-auditable]
|
| dpkg |
|
||||||
|
| rpm |
|
||||||
|
|
||||||
This tree is the reverse of the npm list command.
|
The following languages are currently supported:
|
||||||
|
|
||||||
|
| Language | File |
|
||||||
|
|----------|--------------------------------------------|
|
||||||
|
| Node.js | [package-lock.json][nodejs-package-lock] |
|
||||||
|
| | [pnpm-lock.yaml][pnpm-lock] |
|
||||||
|
| | [yarn.lock][yarn-lock] |
|
||||||
|
| .NET | [packages.lock.json][dotnet-packages-lock] |
|
||||||
|
| Python | [poetry.lock][poetry-lock] |
|
||||||
|
| Ruby | [Gemfile.lock][gemfile-lock] |
|
||||||
|
| Rust | [cargo-auditable binaries][cargo-binaries] |
|
||||||
|
| Go | [go.mod][go-mod] |
|
||||||
|
| PHP | [composer.lock][composer-lock] |
|
||||||
|
| Java | [pom.xml][pom-xml] |
|
||||||
|
| | [*gradle.lockfile][gradle-lockfile] |
|
||||||
|
| Dart | [pubspec.lock][pubspec-lock] |
|
||||||
|
|
||||||
|
This tree is the reverse of the dependency graph.
|
||||||
However, if you want to resolve a vulnerability in a particular indirect dependency, the reversed tree is useful to know where that dependency comes from and identify which package you actually need to update.
|
However, if you want to resolve a vulnerability in a particular indirect dependency, the reversed tree is useful to know where that dependency comes from and identify which package you actually need to update.
|
||||||
|
|
||||||
In table output, it looks like:
|
In table output, it looks like:
|
||||||
@@ -47,8 +89,8 @@ Total: 2 (HIGH: 1, CRITICAL: 1)
|
|||||||
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-28469 │
|
│ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-28469 │
|
||||||
└──────────────────┴────────────────┴──────────┴───────────────────┴───────────────┴────────────────────────────────────────────────────────────┘
|
└──────────────────┴────────────────┴──────────┴───────────────────┴───────────────┴────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
Dependency Origin Tree
|
Dependency Origin Tree (Reversed)
|
||||||
======================
|
=================================
|
||||||
package-lock.json
|
package-lock.json
|
||||||
├── follow-redirects@1.14.6, (HIGH: 1, CRITICAL: 0)
|
├── follow-redirects@1.14.6, (HIGH: 1, CRITICAL: 0)
|
||||||
│ └── axios@0.21.4
|
│ └── axios@0.21.4
|
||||||
@@ -67,15 +109,19 @@ Also, **glob-parent@3.1.0** with some vulnerabilities is included through chain
|
|||||||
|
|
||||||
Then, you can try to update **axios@0.21.4** and **cra-append-sw@2.7.0** to resolve vulnerabilities in **follow-redirects@1.14.6** and **glob-parent@3.1.0**.
|
Then, you can try to update **axios@0.21.4** and **cra-append-sw@2.7.0** to resolve vulnerabilities in **follow-redirects@1.14.6** and **glob-parent@3.1.0**.
|
||||||
|
|
||||||
## JSON
|
### JSON
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
```
|
```
|
||||||
$ trivy image -f json -o results.json golang:1.12-alpine
|
$ trivy image -f json -o results.json golang:1.12-alpine
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! caution
|
|
||||||
v0.20.0 changes the JSON schema. For more details, see [here][new-json].
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Result</summary>
|
<summary>Result</summary>
|
||||||
|
|
||||||
@@ -197,8 +243,15 @@ $ trivy image -f json -o results.json golang:1.12-alpine
|
|||||||
|
|
||||||
`VulnerabilityID`, `PkgName`, `InstalledVersion`, and `Severity` in `Vulnerabilities` are always filled with values, but other fields might be empty.
|
`VulnerabilityID`, `PkgName`, `InstalledVersion`, and `Severity` in `Vulnerabilities` are always filled with values, but other fields might be empty.
|
||||||
|
|
||||||
## SARIF
|
### SARIF
|
||||||
[Sarif][sarif] can be generated with the `--format sarif` option.
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
[SARIF][sarif] can be generated with the `--format sarif` flag.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ trivy image --format sarif -o report.sarif golang:1.12-alpine
|
$ trivy image --format sarif -o report.sarif golang:1.12-alpine
|
||||||
@@ -206,9 +259,30 @@ $ trivy image --format sarif -o report.sarif golang:1.12-alpine
|
|||||||
|
|
||||||
This SARIF file can be uploaded to GitHub code scanning results, and there is a [Trivy GitHub Action][action] for automating this process.
|
This SARIF file can be uploaded to GitHub code scanning results, and there is a [Trivy GitHub Action][action] for automating this process.
|
||||||
|
|
||||||
## Template
|
### GitHub dependency snapshot
|
||||||
|
Trivy supports the following packages.
|
||||||
|
|
||||||
### Custom Template
|
- [OS packages][os_packages]
|
||||||
|
- [Language-specific packages][language_packages]
|
||||||
|
|
||||||
|
[GitHub dependency snapshots][github-sbom] can be generated with the `--format github` flag.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --format github -o report.gsbom alpine
|
||||||
|
```
|
||||||
|
|
||||||
|
This snapshot file can be [submitted][github-sbom-submit] to your GitHub repository.
|
||||||
|
|
||||||
|
### Template
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
#### Custom Template
|
||||||
|
|
||||||
{% raw %}
|
{% raw %}
|
||||||
```
|
```
|
||||||
@@ -245,27 +319,47 @@ Critical: 0, High: 2
|
|||||||
|
|
||||||
For other features of sprig, see the official [sprig][sprig] documentation.
|
For other features of sprig, see the official [sprig][sprig] documentation.
|
||||||
|
|
||||||
### Load templates from a file
|
#### Load templates from a file
|
||||||
You can load templates from a file prefixing the template path with an @.
|
You can load templates from a file prefixing the template path with an @.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ trivy image --format template --template "@/path/to/template" golang:1.12-alpine
|
$ trivy image --format template --template "@/path/to/template" golang:1.12-alpine
|
||||||
```
|
```
|
||||||
|
|
||||||
### Default Templates
|
#### Default Templates
|
||||||
|
|
||||||
If Trivy is installed using rpm then default templates can be found at `/usr/local/share/trivy/templates`.
|
If Trivy is installed using rpm then default templates can be found at `/usr/local/share/trivy/templates`.
|
||||||
|
|
||||||
#### XML
|
##### JUnit
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | |
|
||||||
|
| License | |
|
||||||
|
|
||||||
In the following example using the template `junit.tpl` XML can be generated.
|
In the following example using the template `junit.tpl` XML can be generated.
|
||||||
```
|
```
|
||||||
$ trivy image --format template --template "@contrib/junit.tpl" -o junit-report.xml golang:1.12-alpine
|
$ trivy image --format template --template "@contrib/junit.tpl" -o junit-report.xml golang:1.12-alpine
|
||||||
```
|
```
|
||||||
|
|
||||||
#### ASFF
|
##### ASFF
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | |
|
||||||
|
|
||||||
Trivy also supports an [ASFF template for reporting findings to AWS Security Hub][asff]
|
Trivy also supports an [ASFF template for reporting findings to AWS Security Hub][asff]
|
||||||
|
|
||||||
#### HTML
|
##### HTML
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | |
|
||||||
|
| License | |
|
||||||
|
|
||||||
```
|
```
|
||||||
$ trivy image --format template --template "@contrib/html.tpl" -o report.html golang:1.12-alpine
|
$ trivy image --format template --template "@contrib/html.tpl" -o report.html golang:1.12-alpine
|
||||||
@@ -277,9 +371,81 @@ The following example shows use of default HTML template when Trivy is installed
|
|||||||
$ trivy image --format template --template "@/usr/local/share/trivy/templates/html.tpl" -o report.html golang:1.12-alpine
|
$ trivy image --format template --template "@/usr/local/share/trivy/templates/html.tpl" -o report.html golang:1.12-alpine
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### SBOM
|
||||||
|
See [here](../supply-chain/sbom.md) for details.
|
||||||
|
|
||||||
|
## Output
|
||||||
|
Trivy supports the following output destinations:
|
||||||
|
|
||||||
|
- File
|
||||||
|
- Plugin
|
||||||
|
|
||||||
|
### File
|
||||||
|
By specifying `--output <file_path>`, you can output the results to a file.
|
||||||
|
Here is an example:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy image --format json --output result.json debian:12
|
||||||
|
```
|
||||||
|
|
||||||
|
### Plugin
|
||||||
|
!!! warning "EXPERIMENTAL"
|
||||||
|
This feature might change without preserving backwards compatibility.
|
||||||
|
|
||||||
|
Plugins capable of receiving Trivy's results via standard input, called "output plugin", can be seamlessly invoked using the `--output` flag.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy <target> [--format <format>] --output plugin=<plugin_name> [--output-plugin-arg <plugin_flags>] <target_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
This is useful for cases where you want to convert the output into a custom format, or when you want to send the output somewhere.
|
||||||
|
For more details, please check [here](../advanced/plugins.md#output-plugins).
|
||||||
|
|
||||||
|
## Converting
|
||||||
|
To generate multiple reports, you can generate the JSON report first and convert it to other formats with the `convert` subcommand.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ trivy image --format json -o result.json --list-all-pkgs debian:11
|
||||||
|
$ trivy convert --format cyclonedx --output result.cdx result.json
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Please note that if you want to convert to a format that requires a list of packages,
|
||||||
|
such as SBOM, you need to add the `--list-all-pkgs` flag when outputting in JSON.
|
||||||
|
|
||||||
|
[Filtering options](./filtering.md) such as `--severity` are also available with `convert`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Output all severities in JSON
|
||||||
|
$ trivy image --format json -o result.json --list-all-pkgs debian:11
|
||||||
|
|
||||||
|
# Output only critical issues in table format
|
||||||
|
$ trivy convert --format table --severity CRITICAL result.json
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
JSON reports from "trivy aws" and "trivy k8s" are not yet supported.
|
||||||
|
|
||||||
[cargo-auditable]: https://github.com/rust-secure-code/cargo-auditable/
|
[cargo-auditable]: https://github.com/rust-secure-code/cargo-auditable/
|
||||||
[new-json]: https://github.com/aquasecurity/trivy/discussions/1050
|
|
||||||
[action]: https://github.com/aquasecurity/trivy-action
|
[action]: https://github.com/aquasecurity/trivy-action
|
||||||
[asff]: ../../../tutorials/integrations/aws-security-hub.md
|
[asff]: ../../tutorials/integrations/aws-security-hub.md
|
||||||
[sarif]: https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-results-from-code-scanning
|
[sarif]: https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/managing-results-from-code-scanning
|
||||||
[sprig]: http://masterminds.github.io/sprig/
|
[sprig]: http://masterminds.github.io/sprig/
|
||||||
|
[github-sbom]: https://docs.github.com/en/rest/dependency-graph/dependency-submission?apiVersion=2022-11-28#about-dependency-submissions
|
||||||
|
[github-sbom-submit]: https://docs.github.com/en/rest/dependency-graph/dependency-submission?apiVersion=2022-11-28#create-a-snapshot-of-dependencies-for-a-repository
|
||||||
|
|
||||||
|
[os_packages]: ../scanner/vulnerability.md#os-packages
|
||||||
|
[language_packages]: ../scanner/vulnerability.md#language-specific-packages
|
||||||
|
|
||||||
|
[nodejs-package-lock]: ../coverage/language/nodejs.md#npm
|
||||||
|
[pnpm-lock]: ../coverage/language/nodejs.md#pnpm
|
||||||
|
[yarn-lock]: ../coverage/language/nodejs.md#yarn
|
||||||
|
[dotnet-packages-lock]: ../coverage/language/dotnet.md#packageslockjson
|
||||||
|
[poetry-lock]: ../coverage/language/python.md#poetry
|
||||||
|
[gemfile-lock]: ../coverage/language/ruby.md#bundler
|
||||||
|
[go-mod]: ../coverage/language/golang.md#go-modules
|
||||||
|
[composer-lock]: ../coverage/language/php.md#composer
|
||||||
|
[pom-xml]: ../coverage/language/java.md#pomxml
|
||||||
|
[gradle-lockfile]: ../coverage/language/java.md#gradlelock
|
||||||
|
[pubspec-lock]: ../coverage/language/dart.md#dart
|
||||||
|
[cargo-binaries]: ../coverage/language/rust.md#binaries
|
||||||
119
docs/docs/configuration/skipping.md
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# Skipping Files and Directories
|
||||||
|
|
||||||
|
This section details ways to specify the files and directories that Trivy should not scan.
|
||||||
|
|
||||||
|
## Skip Files
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
By default, Trivy traverses directories and searches for all necessary files for scanning.
|
||||||
|
You can skip files that you don't maintain using the `--skip-files` flag, or the equivalent Trivy YAML config option.
|
||||||
|
|
||||||
|
Using the `--skip-files` flag:
|
||||||
|
```bash
|
||||||
|
$ trivy image --skip-files "/Gemfile.lock" --skip-files "/var/lib/gems/2.5.0/gems/http_parser.rb-0.6.0/Gemfile.lock" quay.io/fluentd_elasticsearch/fluentd:v2.9.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Using the Trivy YAML configuration:
|
||||||
|
```yaml
|
||||||
|
image:
|
||||||
|
skip-files:
|
||||||
|
- foo
|
||||||
|
- "testdata/*/bar"
|
||||||
|
```
|
||||||
|
|
||||||
|
It's possible to specify globs as part of the value.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --skip-files "./testdata/*/bar" .
|
||||||
|
```
|
||||||
|
|
||||||
|
This will skip any file named `bar` in the subdirectories of testdata.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy config --skip-files "./foo/**/*.tf" .
|
||||||
|
```
|
||||||
|
|
||||||
|
This will skip any files with the extension `.tf` in subdirectories of foo at any depth.
|
||||||
|
|
||||||
|
## Skip Directories
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
| License | ✓ |
|
||||||
|
|
||||||
|
By default, Trivy traverses directories and searches for all necessary files for scanning.
|
||||||
|
You can skip directories that you don't maintain using the `--skip-dirs` flag, or the equivalent Trivy YAML config option.
|
||||||
|
|
||||||
|
Using the `--skip-dirs` flag:
|
||||||
|
```bash
|
||||||
|
$ trivy image --skip-dirs /var/lib/gems/2.5.0/gems/fluent-plugin-detect-exceptions-0.0.13 --skip-dirs "/var/lib/gems/2.5.0/gems/http_parser.rb-0.6.0" quay.io/fluentd_elasticsearch/fluentd:v2.9.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Using the Trivy YAML configuration:
|
||||||
|
```yaml
|
||||||
|
image:
|
||||||
|
skip-dirs:
|
||||||
|
- foo/bar/
|
||||||
|
- "**/.terraform"
|
||||||
|
```
|
||||||
|
|
||||||
|
It's possible to specify globs as part of the value.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --skip-dirs "./testdata/*" .
|
||||||
|
```
|
||||||
|
|
||||||
|
This will skip all subdirectories of the testdata directory.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy config --skip-dirs "**/.terraform" .
|
||||||
|
```
|
||||||
|
|
||||||
|
This will skip subdirectories at any depth named `.terraform/`. (Note: this will match `./foo/.terraform` or
|
||||||
|
`./foo/bar/.terraform`, but not `./.terraform`.)
|
||||||
|
|
||||||
|
!!! tip
|
||||||
|
Glob patterns work with any trivy subcommand (image, config, etc.) and can be specified to skip both directories (with `--skip-dirs`) and files (with `--skip-files`).
|
||||||
|
|
||||||
|
|
||||||
|
### Advanced globbing
|
||||||
|
Trivy also supports bash style [extended](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Pattern-Matching) glob pattern matching.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ trivy image --skip-files "**/foo" image:tag
|
||||||
|
```
|
||||||
|
|
||||||
|
This will skip the file `foo` that happens to be nested under any parent(s).
|
||||||
|
|
||||||
|
## File patterns
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Vulnerability | ✓ |
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | |
|
||||||
|
| License | ✓[^1] |
|
||||||
|
|
||||||
|
When a directory is given as an input, Trivy will recursively look for and test all files based on file patterns.
|
||||||
|
The default file patterns are [here](../scanner/misconfiguration/custom/index.md).
|
||||||
|
|
||||||
|
In addition to the default file patterns, the `--file-patterns` option takes regexp patterns to look for your files.
|
||||||
|
For example, it may be useful when your file name of Dockerfile doesn't match the default patterns.
|
||||||
|
|
||||||
|
This can be repeated for specifying multiple file patterns.
|
||||||
|
|
||||||
|
A file pattern contains the analyzer it is used for, and the pattern itself, joined by a semicolon. For example:
|
||||||
|
```
|
||||||
|
--file-patterns "dockerfile:.*.docker" --file-patterns "kubernetes:*.tpl" --file-patterns "pip:requirements-.*\.txt"
|
||||||
|
```
|
||||||
|
|
||||||
|
The prefixes are listed [here](https://github.com/aquasecurity/trivy/tree/{{ git.commit }}/pkg/fanal/analyzer/const.go)
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: Only work with the [license-full](../scanner/license.md) flag)
|
||||||
33
docs/docs/coverage/iac/azure-arm.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# Azure ARM Template
|
||||||
|
Trivy supports the scanners listed in the table below.
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
| :----------------: | :-------: |
|
||||||
|
| [Misconfiguration] | ✓ |
|
||||||
|
| [Secret] | ✓ |
|
||||||
|
|
||||||
|
It supports the following configurations:
|
||||||
|
|
||||||
|
| Format | Supported |
|
||||||
|
| :----------: | :-------: |
|
||||||
|
| ARM template | ✓ |
|
||||||
|
| Bicep | ✓[^1] |
|
||||||
|
|
||||||
|
To scan Bicep codes, you need to convert them into ARM templates first.
|
||||||
|
|
||||||
|
```
|
||||||
|
az bicep build -f main.bicep
|
||||||
|
or
|
||||||
|
bicep build main.bicep
|
||||||
|
```
|
||||||
|
|
||||||
|
## Misconfiguration
|
||||||
|
Trivy recursively searches directories and scans all found Azure ARM templates.
|
||||||
|
|
||||||
|
## Secret
|
||||||
|
The secret scan is performed on plain text files, with no special treatment for Azure ARM templates.
|
||||||
|
|
||||||
|
[Misconfiguration]: ../../scanner/misconfiguration/index.md
|
||||||
|
[Secret]: ../../scanner/secret.md
|
||||||
|
|
||||||
|
[^1]: Bicep is not natively supported. It needs to be converted into Azure ARM templates.
|
||||||
35
docs/docs/coverage/iac/cloudformation.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# CloudFormation
|
||||||
|
Trivy supports the scanners listed in the table below.
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:------------------:|:---------:|
|
||||||
|
| [Misconfiguration] | ✓ |
|
||||||
|
| [Secret] | ✓ |
|
||||||
|
|
||||||
|
It supports the following formats.
|
||||||
|
|
||||||
|
| Format | Supported |
|
||||||
|
|:------:|:---------:|
|
||||||
|
| JSON | ✓ |
|
||||||
|
| YAML | ✓ |
|
||||||
|
|
||||||
|
## Misconfiguration
|
||||||
|
Trivy recursively searches directories and scans all found CloudFormation files.
|
||||||
|
It evaluates properties, functions, and other elements within CloudFormation files to detect misconfigurations.
|
||||||
|
|
||||||
|
### Value Overrides
|
||||||
|
You can provide `cf-params` with path to [CloudFormation Parameters] file to Trivy to scan your CloudFormation code with parameters.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy conf --cf-params params.json ./infrastructure/cf
|
||||||
|
```
|
||||||
|
|
||||||
|
You can check a [CloudFormation Parameters Example]
|
||||||
|
|
||||||
|
## Secret
|
||||||
|
The secret scan is performed on plain text files, with no special treatment for CloudFormation.
|
||||||
|
|
||||||
|
[Misconfiguration]: ../../scanner/misconfiguration/index.md
|
||||||
|
[Secret]: ../../scanner/secret.md
|
||||||
|
[CloudFormation Parameters]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html
|
||||||
|
[CloudFormation Parameters Example]: https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/deploy.html#supported-json-syntax
|
||||||
24
docs/docs/coverage/iac/docker.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Docker
|
||||||
|
Trivy supports the scanners listed in the table below.
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
| :----------------: | :-------: |
|
||||||
|
| [Misconfiguration] | ✓ |
|
||||||
|
| [Secret] | ✓ |
|
||||||
|
|
||||||
|
It supports the following configurations.
|
||||||
|
|
||||||
|
| Config | Supported |
|
||||||
|
| :-----------: | :-------: |
|
||||||
|
| Dockerfile | ✓ |
|
||||||
|
| Containerfile | ✓ |
|
||||||
|
| Compose | - |
|
||||||
|
|
||||||
|
## Misconfiguration
|
||||||
|
Trivy recursively searches directories and scans all found Docker files.
|
||||||
|
|
||||||
|
## Secret
|
||||||
|
The secret scan is performed on plain text files, with no special treatment for Dockerfile.
|
||||||
|
|
||||||
|
[Misconfiguration]: ../../scanner/misconfiguration/index.md
|
||||||
|
[Secret]: ../../scanner/secret.md
|
||||||
60
docs/docs/coverage/iac/helm.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# Helm
|
||||||
|
Trivy supports two types of Helm scanning, templates and packaged charts.
|
||||||
|
The following scanners are supported.
|
||||||
|
|
||||||
|
| Format | [Misconfiguration] | [Secret] |
|
||||||
|
| -------- | :----------------: | :------: |
|
||||||
|
| Template | ✓ | ✓ |
|
||||||
|
| Chart | ✓ | - |
|
||||||
|
|
||||||
|
## Misconfiguration
|
||||||
|
Trivy recursively searches directories and scans all found Helm files.
|
||||||
|
|
||||||
|
It evaluates variables, functions, and other elements within Helm templates and resolve the chart to Kubernetes manifests then run the Kubernetes checks.
|
||||||
|
See [here](../../scanner/misconfiguration/check/builtin.md) for more details on the built-in policies.
|
||||||
|
|
||||||
|
### Value overrides
|
||||||
|
There are a number of options for overriding values in Helm charts.
|
||||||
|
When override values are passed to the Helm scanner, the values will be used during the Manifest rendering process and will become part of the scanned artifact.
|
||||||
|
|
||||||
|
#### Setting inline value overrides
|
||||||
|
Overrides can be set inline on the command line
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy conf --helm-set securityContext.runAsUser=0 ./charts/mySql
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Setting value file overrides
|
||||||
|
Overrides can be in a file that has the key=value set.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example override file (overrides.yaml)
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
runAsUser: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy conf --helm-values overrides.yaml ./charts/mySql
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Setting value as explicit string
|
||||||
|
the `--helm-set-string` is the same as `--helm-set` but explicitly retains the value as a string
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy config --helm-set-string name=false ./infrastructure/tf
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Setting specific values from files
|
||||||
|
Specific override values can come from specific files
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy conf --helm-set-file environment=dev.values.yaml ./charts/mySql
|
||||||
|
```
|
||||||
|
|
||||||
|
## Secret
|
||||||
|
The secret scan is performed on plain text files, with no special treatment for Helm.
|
||||||
|
Secret scanning is not conducted on the contents of packaged Charts, such as tar or tar.gz.
|
||||||
|
|
||||||
|
[Misconfiguration]: ../../scanner/misconfiguration/index.md
|
||||||
|
[Secret]: ../../scanner/secret.md
|
||||||
22
docs/docs/coverage/iac/index.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Infrastructure as Code
|
||||||
|
|
||||||
|
## Scanner
|
||||||
|
Trivy scans Infrastructure as Code (IaC) files for
|
||||||
|
|
||||||
|
- [Misconfigurations][misconf]
|
||||||
|
- [Secrets][secret]
|
||||||
|
|
||||||
|
## Supported configurations
|
||||||
|
|
||||||
|
| Config type | File patterns |
|
||||||
|
|-------------------------------------|-----------------------------------------------|
|
||||||
|
| [Kubernetes](kubernetes.md) | \*.yml, \*.yaml, \*.json |
|
||||||
|
| [Docker](docker.md) | Dockerfile, Containerfile |
|
||||||
|
| [Terraform](terraform.md) | \*.tf, \*.tf.json, \*.tfvars |
|
||||||
|
| [Terraform Plan](terraform.md) | tfplan, \*.tfplan, \*.tfplan.json, \*.tf.json |
|
||||||
|
| [CloudFormation](cloudformation.md) | \*.yml, \*.yaml, \*.json |
|
||||||
|
| [Azure ARM Template](azure-arm.md) | \*.json |
|
||||||
|
| [Helm](helm.md) | \*.yaml, \*.tpl, \*.tar.gz, etc. |
|
||||||
|
|
||||||
|
[misconf]: ../../scanner/misconfiguration/index.md
|
||||||
|
[secret]: ../../scanner/secret.md
|
||||||
31
docs/docs/coverage/iac/kubernetes.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Kubernetes
|
||||||
|
Trivy supports the scanners listed in the table below.
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
| :----------------: | :-------: |
|
||||||
|
| [Misconfiguration] | ✓ |
|
||||||
|
| [Secret] | ✓ |
|
||||||
|
|
||||||
|
In addition to raw YAML and JSON, it supports the following templates:
|
||||||
|
|
||||||
|
| Template | Supported |
|
||||||
|
| :-------------: | :-------: |
|
||||||
|
| [Helm](helm.md) | ✓ |
|
||||||
|
| Kustomize | ✓[^1] |
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Trivy does not support Kustomize overlays, so it scans files defined in the base.
|
||||||
|
Or, you can scan the output of `kustomize build`.
|
||||||
|
|
||||||
|
## Misconfiguration
|
||||||
|
Trivy recursively searches directories and scans all found Kubernetes files.
|
||||||
|
|
||||||
|
## Secret
|
||||||
|
The secret scan is performed on plain text files, with no special treatment for Kubernetes.
|
||||||
|
This means that Base64 encoded secrets are not scanned, and only secrets written in plain text are detected.
|
||||||
|
|
||||||
|
|
||||||
|
[Misconfiguration]: ../../scanner/misconfiguration/index.md
|
||||||
|
[Secret]: ../../scanner/secret.md
|
||||||
|
|
||||||
|
[^1]: Kustomize is not natively supported.
|
||||||
50
docs/docs/coverage/iac/terraform.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Terraform
|
||||||
|
Trivy supports the scanners listed in the table below.
|
||||||
|
|
||||||
|
| Scanner | Supported |
|
||||||
|
|:----------------:|:---------:|
|
||||||
|
| Misconfiguration | ✓ |
|
||||||
|
| Secret | ✓ |
|
||||||
|
|
||||||
|
It supports the following formats:
|
||||||
|
|
||||||
|
| Format | Supported |
|
||||||
|
|:-------------:|:---------:|
|
||||||
|
| JSON | ✓ |
|
||||||
|
| HCL | ✓ |
|
||||||
|
| Plan Snapshot | ✓ |
|
||||||
|
| Plan JSON | ✓ |
|
||||||
|
|
||||||
|
Trivy can scan Terraform Plan files (snapshots) or their JSON representations. To create a Terraform Plan and scan it, run the following command:
|
||||||
|
```bash
|
||||||
|
terraform plan --out tfplan
|
||||||
|
trivy conf tfplan
|
||||||
|
```
|
||||||
|
|
||||||
|
To scan a Terraform Plan representation in JSON format, run the following command:
|
||||||
|
```bash
|
||||||
|
terraform show -json tfplan > tfplan.json
|
||||||
|
trivy conf tfplan.json
|
||||||
|
```
|
||||||
|
|
||||||
|
## Misconfiguration
|
||||||
|
Trivy recursively searches directories and scans all found Terraform files.
|
||||||
|
It also evaluates variables, imports, and other elements within Terraform files to detect misconfigurations.
|
||||||
|
|
||||||
|
### Value Overrides
|
||||||
|
You can provide `tf-vars` files to Trivy to override default values specified in the Terraform HCL code.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy conf --tf-vars dev.terraform.tfvars ./infrastructure/tf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Exclude Downloaded Terraform Modules
|
||||||
|
By default, downloaded modules are also scanned.
|
||||||
|
If you don't want to scan them, you can use the `--tf-exclude-downloaded-modules` flag.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
trivy conf --tf-exclude-downloaded-modules ./configs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Secret
|
||||||
|
The secret scan is performed on plain text files, with no special treatment for Terraform.
|
||||||
9
docs/docs/coverage/index.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Scanning Coverage
|
||||||
|
Trivy can detect security issues in many different platforms, languages and configuration files.
|
||||||
|
This section gives a general overview of that coverage, and can help answer the frequently asked question "Does Trivy support X?".
|
||||||
|
For more detailed information about the specific platforms and languages, check the relevant documentation.
|
||||||
|
|
||||||
|
- [OS Packages](os/index.md)
|
||||||
|
- [Language-specific Packages](language/index.md)
|
||||||
|
- [IaC files](iac/index.md)
|
||||||
|
- [Kubernetes clusters](./kubernetes.md)
|
||||||
24
docs/docs/coverage/kubernetes.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Kubernetes
|
||||||
|
|
||||||
|
When scanning a Kubernetes cluster, Trivy differentiates between the following:
|
||||||
|
|
||||||
|
1. Cluster infrastructure (e.g api-server, kubelet, addons)
|
||||||
|
1. Cluster configuration (e.g Roles, ClusterRoles).
|
||||||
|
1. Application workloads (e.g nginx, postgresql).
|
||||||
|
|
||||||
|
Whenever Trivy scans either of these Kubernetes resources, the container image is scanned separately to the Kubernetes resource definition (the YAML manifest) that defines the resource.
|
||||||
|
When scanning any of the above, the container image is scanned separately to the Kubernetes resource definition (the YAML manifest) that defines the resource.
|
||||||
|
|
||||||
|
Container image is scanned for:
|
||||||
|
|
||||||
|
- Vulnerabilities
|
||||||
|
- Misconfigurations
|
||||||
|
- Exposed secrets
|
||||||
|
|
||||||
|
Kubernetes resource definition is scanned for:
|
||||||
|
|
||||||
|
- Vulnerabilities - partially supported through [KBOM scanning](#KBOM)
|
||||||
|
- Misconfigurations
|
||||||
|
- Exposed secrets
|
||||||
|
|
||||||
|
To learn more, please see the [documentation for Kubernetes scanning](../target/kubernetes.md).
|
||||||
34
docs/docs/coverage/language/c.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# C/C++
|
||||||
|
|
||||||
|
Trivy supports Conan C/C++ Package Manager ([v1][conanV1] and [v2][conanV2] with limitations).
|
||||||
|
|
||||||
|
The following scanners are supported.
|
||||||
|
|
||||||
|
| Package manager | SBOM | Vulnerability | License |
|
||||||
|
|-----------------|:----:|:-------------:|:-------:|
|
||||||
|
| Conan | ✓ | ✓ | ✓[^1] |
|
||||||
|
|
||||||
|
The following table provides an outline of the features Trivy offers.
|
||||||
|
|
||||||
|
| Package manager | File | Transitive dependencies | Dev dependencies | [Dependency graph][dependency-graph] | Position |
|
||||||
|
|-----------------------|----------------|:-----------------------:|:----------------:|:------------------------------------:|:--------:|
|
||||||
|
| Conan (lockfile v1) | conan.lock[^2] | ✓ | Excluded | ✓ | ✓ |
|
||||||
|
| Conan (lockfile v2) | conan.lock[^2] | ✓ [^3] | Excluded | - | ✓ |
|
||||||
|
|
||||||
|
## Conan
|
||||||
|
In order to detect dependencies, Trivy searches for `conan.lock`[^1].
|
||||||
|
|
||||||
|
[conanV1]: https://docs.conan.io/1/index.html
|
||||||
|
[conanV2]: https://docs.conan.io/2/
|
||||||
|
|
||||||
|
### Licenses
|
||||||
|
The Conan lock file doesn't contain any license information.
|
||||||
|
To obtain licenses we parse the `conanfile.py` files from the [conan cache directory][conan-cache-dir].
|
||||||
|
To correctly detection licenses, ensure that the cache directory contains all dependencies used.
|
||||||
|
|
||||||
|
[conan-cache-dir]: https://docs.conan.io/1/mastering/custom_cache.html
|
||||||
|
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||||
|
|
||||||
|
[^1]: The local cache should contain the dependencies used. See [licenses](#licenses).
|
||||||
|
[^2]: `conan.lock` is default name. To scan a custom filename use [file-patterns](../../configuration/skipping.md#file-patterns).
|
||||||
|
[^3]: For `conan.lock` in version 2, indirect dependencies are included in analysis but not flagged explicitly in dependency tree
|
||||||
31
docs/docs/coverage/language/dart.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Dart
|
||||||
|
|
||||||
|
Trivy supports [Dart][dart].
|
||||||
|
|
||||||
|
The following scanners are supported.
|
||||||
|
|
||||||
|
| Package manager | SBOM | Vulnerability | License |
|
||||||
|
|-------------------------| :---: | :-----------: |:-------:|
|
||||||
|
| [Dart][dart-repository] | ✓ | ✓ | - |
|
||||||
|
|
||||||
|
The following table provides an outline of the features Trivy offers.
|
||||||
|
|
||||||
|
|
||||||
|
| Package manager | File | Transitive dependencies | Dev dependencies | [Dependency graph][dependency-graph] | Position |
|
||||||
|
|-------------------------|--------------|:-----------------------:|:----------------:|:------------------------------------:|:--------:|
|
||||||
|
| [Dart][dart-repository] | pubspec.lock | ✓ | Included | ✓ | - |
|
||||||
|
|
||||||
|
## Dart
|
||||||
|
In order to detect dependencies, Trivy searches for `pubspec.lock`.
|
||||||
|
|
||||||
|
Trivy marks indirect dependencies, but `pubspec.lock` file doesn't have options to separate root and dev transitive dependencies.
|
||||||
|
So Trivy includes all dependencies in report.
|
||||||
|
|
||||||
|
To build `dependency tree` Trivy parses [cache directory][cache-directory]. Currently supported default directories and `PUB_CACHE` environment (absolute path only).
|
||||||
|
!!! note
|
||||||
|
Make sure the cache directory contains all the dependencies installed in your application. To download missing dependencies, use `dart pub get` command.
|
||||||
|
|
||||||
|
[dart]: https://dart.dev/
|
||||||
|
[dart-repository]: https://pub.dev/
|
||||||
|
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||||
|
[cache-directory]: https://dart.dev/tools/pub/glossary#system-cache
|
||||||
51
docs/docs/coverage/language/dotnet.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# .NET
|
||||||
|
|
||||||
|
Trivy supports `.NET core` and `NuGet` package managers.
|
||||||
|
|
||||||
|
The following scanners are supported.
|
||||||
|
|
||||||
|
| Artifact | SBOM | Vulnerability | License |
|
||||||
|
|-----------|:----:|:-------------:|:-------:|
|
||||||
|
| .Net Core | ✓ | ✓ | - |
|
||||||
|
| NuGet | ✓ | ✓ | ✓ |
|
||||||
|
|
||||||
|
The following table provides an outline of the features Trivy offers.
|
||||||
|
|
||||||
|
| Package manager | File | Transitive dependencies | Dev dependencies | [Dependency graph][dependency-graph] | Position |
|
||||||
|
|:---------------:|--------------------|:-----------------------:|:----------------:|:------------------------------------:|:--------:|
|
||||||
|
| .Net Core | *.deps.json | ✓ | Excluded | - | ✓ |
|
||||||
|
| NuGet | packages.config | ✓ | Excluded | - | - |
|
||||||
|
| NuGet | *Packages.props | - | Excluded | - | - |
|
||||||
|
| NuGet | packages.lock.json | ✓ | Included | ✓ | ✓ |
|
||||||
|
|
||||||
|
## *.deps.json
|
||||||
|
Trivy parses `*.deps.json` files. Trivy currently excludes dev dependencies from the report.
|
||||||
|
|
||||||
|
## packages.config
|
||||||
|
Trivy only finds dependency names and versions from `packages.config` files. To build dependency graph, it is better to use `packages.lock.json` files.
|
||||||
|
|
||||||
|
## *Packages.props
|
||||||
|
Trivy parses `*Packages.props` files. Both legacy `Packages.props` and modern `Directory.Packages.props` are supported.
|
||||||
|
|
||||||
|
### license detection
|
||||||
|
`packages.config` files don't have information about the licenses used.
|
||||||
|
Trivy uses [*.nuspec][nuspec] files from [global packages folder][global-packages] to detect licenses.
|
||||||
|
!!! note
|
||||||
|
The `licenseUrl` field is [deprecated][license-url]. Trivy doesn't parse this field and only checks the [license] field (license `expression` type only).
|
||||||
|
Currently only the default path and `NUGET_PACKAGES` environment variable are supported.
|
||||||
|
|
||||||
|
## packages.lock.json
|
||||||
|
Don't forgot to [enable][enable-lock] lock files in your project.
|
||||||
|
|
||||||
|
!!! tip
|
||||||
|
Please make sure your lock file is up-to-date after modifying dependencies.
|
||||||
|
|
||||||
|
### license detection
|
||||||
|
Same as [packages.config](#license-detection)
|
||||||
|
|
||||||
|
[enable-lock]: https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#enabling-the-lock-file
|
||||||
|
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||||
|
[nuspec]: https://learn.microsoft.com/en-us/nuget/reference/nuspec
|
||||||
|
[global-packages]: https://learn.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders
|
||||||
|
[license]: https://learn.microsoft.com/en-us/nuget/reference/nuspec#license
|
||||||
|
[license-url]: https://learn.microsoft.com/en-us/nuget/reference/nuspec#licenseurl
|
||||||
27
docs/docs/coverage/language/elixir.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Elixir
|
||||||
|
|
||||||
|
Trivy supports [Hex][hex] repository for [Elixir][elixir].
|
||||||
|
|
||||||
|
The following scanners are supported.
|
||||||
|
|
||||||
|
| Package manager | SBOM | Vulnerability | License |
|
||||||
|
|-----------------| :---: | :-----------: |:-------:|
|
||||||
|
| [hex][hex] | ✓ | ✓ | - |
|
||||||
|
|
||||||
|
The following table provides an outline of the features Trivy offers.
|
||||||
|
|
||||||
|
|
||||||
|
| Package manager | File | Transitive dependencies | Dev dependencies | [Dependency graph][dependency-graph] | Position |
|
||||||
|
|-----------------|--------------|:-----------------------:|:----------------:|:------------------------------------:|:--------:|
|
||||||
|
| [hex][hex] | mix.lock[^1] | ✓ | Excluded | - | ✓ |
|
||||||
|
|
||||||
|
## Hex
|
||||||
|
In order to detect dependencies, Trivy searches for `mix.lock`[^1].
|
||||||
|
|
||||||
|
[Configure](https://hexdocs.pm/mix/Mix.Project.html#module-configuration) your project to use `mix.lock`[^1] file.
|
||||||
|
|
||||||
|
[elixir]: https://elixir-lang.org/
|
||||||
|
[hex]: https://hex.pm/
|
||||||
|
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||||
|
|
||||||
|
[^1]: `mix.lock` is default name. To scan a custom filename use [file-patterns](../../configuration/skipping.md#file-patterns)
|
||||||
97
docs/docs/coverage/language/golang.md
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
# Go
|
||||||
|
|
||||||
|
## Data Sources
|
||||||
|
The data sources are listed [here](../../scanner/vulnerability.md#data-sources-1).
|
||||||
|
Trivy uses Go Vulnerability Database for standard packages, such as `net/http`, and uses GitHub Advisory Database for third-party packages.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
Trivy supports two types of Go scanning, Go Modules and binaries built by Go.
|
||||||
|
|
||||||
|
The following scanners are supported.
|
||||||
|
|
||||||
|
| Artifact | SBOM | Vulnerability | License |
|
||||||
|
| -------- | :---: | :-----------: | :-----: |
|
||||||
|
| Modules | ✓ | ✓ | ✓[^2] |
|
||||||
|
| Binaries | ✓ | ✓ | - |
|
||||||
|
|
||||||
|
The table below provides an outline of the features Trivy offers.
|
||||||
|
|
||||||
|
| Artifact | Offline[^1] | Dev dependencies | [Dependency graph][dependency-graph] | Stdlib |
|
||||||
|
|----------|:-----------:|:-----------------|:------------------------------------:|:------:|
|
||||||
|
| Modules | ✅ | Include | ✅[^2] | - |
|
||||||
|
| Binaries | ✅ | Exclude | - | ✅[^4] |
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Trivy scans only dependencies of the Go project.
|
||||||
|
Let's say you scan the Docker binary, Trivy doesn't detect vulnerabilities of Docker itself.
|
||||||
|
Also, when you scan go.mod in Kubernetes, the Kubernetes vulnerabilities will not be found.
|
||||||
|
|
||||||
|
### Go Modules
|
||||||
|
Depending on Go versions, the required files are different.
|
||||||
|
|
||||||
|
| Version | Required files | Offline |
|
||||||
|
| ------- | :------------: | :-----: |
|
||||||
|
| \>=1.17 | go.mod | ✅ |
|
||||||
|
| <1.17 | go.mod, go.sum | ✅ |
|
||||||
|
|
||||||
|
In Go 1.17+ projects, Trivy uses `go.mod` for direct/indirect dependencies.
|
||||||
|
On the other hand, it uses `go.mod` for direct dependencies and `go.sum` for indirect dependencies in Go 1.16 or less.
|
||||||
|
|
||||||
|
Go 1.17+ holds actually needed indirect dependencies in `go.mod`, and it reduces false detection.
|
||||||
|
`go.sum` in Go 1.16 or less contains all indirect dependencies that are even not needed for compiling.
|
||||||
|
If you want to have better detection, please consider updating the Go version in your project.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
The Go version doesn't mean your CLI version, but the Go version in your go.mod.
|
||||||
|
|
||||||
|
```
|
||||||
|
module github.com/aquasecurity/trivy
|
||||||
|
|
||||||
|
go 1.18
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/CycloneDX/cyclonedx-go v0.5.0
|
||||||
|
...
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
To update the Go version in your project, you need to run the following command.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ go mod tidy -go=1.18
|
||||||
|
```
|
||||||
|
|
||||||
|
To identify licenses and dependency relationships, you need to download modules to local cache beforehand,
|
||||||
|
such as `go mod download`, `go mod tidy`, etc.
|
||||||
|
Trivy traverses `$GOPATH/pkg/mod` and collects those extra information.
|
||||||
|
|
||||||
|
### Go binaries
|
||||||
|
Trivy scans binaries built by Go.
|
||||||
|
If there is a Go binary in your container image, Trivy automatically finds and scans it.
|
||||||
|
|
||||||
|
Also, you can scan your local binaries.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ trivy rootfs ./your_binary
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
It doesn't work with UPX-compressed binaries.
|
||||||
|
|
||||||
|
#### Empty versions
|
||||||
|
There are times when Go uses the `(devel)` version for modules/dependencies.
|
||||||
|
|
||||||
|
- Only Go binaries installed using the `go install` command contain correct (semver) version for the main module.
|
||||||
|
In other cases, Go uses the `(devel)` version[^3].
|
||||||
|
- Dependencies replaced with local ones use the `(devel)` versions.
|
||||||
|
|
||||||
|
In the first case, Trivy will attempt to parse any `-ldflags` as a secondary source, and will leave the version
|
||||||
|
empty if it cannot do so[^5]. For the second case, the version of such packages is empty.
|
||||||
|
|
||||||
|
[^1]: It doesn't require the Internet access.
|
||||||
|
[^2]: Need to download modules to local cache beforehand
|
||||||
|
[^3]: See https://github.com/aquasecurity/trivy/issues/1837#issuecomment-1832523477
|
||||||
|
[^4]: Identify the Go version used to compile the binary and detect its vulnerabilities
|
||||||
|
[^5]: See https://github.com/golang/go/issues/63432#issuecomment-1751610604
|
||||||
|
|
||||||
|
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||||
69
docs/docs/coverage/language/index.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# Programming Language
|
||||||
|
|
||||||
|
Trivy supports programming languages for
|
||||||
|
|
||||||
|
- [SBOM][sbom]
|
||||||
|
- [Vulnerabilities][vuln]
|
||||||
|
- [Licenses][license]
|
||||||
|
|
||||||
|
## Supported languages
|
||||||
|
The files analyzed vary depending on the target.
|
||||||
|
This is because Trivy primarily categorizes targets into two groups:
|
||||||
|
|
||||||
|
- Pre-build
|
||||||
|
- Post-build
|
||||||
|
|
||||||
|
If the target is a pre-build project, like a code repository, Trivy will analyze files used for building, such as lock files.
|
||||||
|
On the other hand, when the target is a post-build artifact, like a container image, Trivy will analyze installed package metadata like `.gemspec`, binary files, and so on.
|
||||||
|
|
||||||
|
| Language | File | Image[^5] | Rootfs[^6] | Filesystem[^7] | Repository[^8] |
|
||||||
|
|----------------------|--------------------------------------------------------------------------------------------|:---------:|:----------:|:--------------:|:--------------:|
|
||||||
|
| [Ruby](ruby.md) | Gemfile.lock | - | - | ✅ | ✅ |
|
||||||
|
| | gemspec | ✅ | ✅ | - | - |
|
||||||
|
| [Python](python.md) | Pipfile.lock | - | - | ✅ | ✅ |
|
||||||
|
| | poetry.lock | - | - | ✅ | ✅ |
|
||||||
|
| | requirements.txt | - | - | ✅ | ✅ |
|
||||||
|
| | egg package[^1] | ✅ | ✅ | - | - |
|
||||||
|
| | wheel package[^2] | ✅ | ✅ | - | - |
|
||||||
|
| | conda package[^3] | ✅ | ✅ | - | - |
|
||||||
|
| [PHP](php.md) | composer.lock | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
| [Node.js](nodejs.md) | package-lock.json | - | - | ✅ | ✅ |
|
||||||
|
| | yarn.lock | - | - | ✅ | ✅ |
|
||||||
|
| | pnpm-lock.yaml | - | - | ✅ | ✅ |
|
||||||
|
| | package.json | ✅ | ✅ | - | - |
|
||||||
|
| [.NET](dotnet.md) | packages.lock.json | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
| | packages.config | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
| | .deps.json | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
| | *Packages.props[^11] | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
| [Java](java.md) | JAR/WAR/PAR/EAR[^4] | ✅ | ✅ | - | - |
|
||||||
|
| | pom.xml | - | - | ✅ | ✅ |
|
||||||
|
| | *gradle.lockfile | - | - | ✅ | ✅ |
|
||||||
|
| [Go](golang.md) | Binaries built by Go | ✅ | ✅ | - | - |
|
||||||
|
| | go.mod | - | - | ✅ | ✅ |
|
||||||
|
| [Rust](rust.md) | Cargo.lock | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
| | Binaries built with [cargo-auditable](https://github.com/rust-secure-code/cargo-auditable) | ✅ | ✅ | - | - |
|
||||||
|
| [C/C++](c.md) | conan.lock | - | - | ✅ | ✅ |
|
||||||
|
| [Elixir](elixir.md) | mix.lock[^10] | - | - | ✅ | ✅ |
|
||||||
|
| [Dart](dart.md) | pubspec.lock | - | - | ✅ | ✅ |
|
||||||
|
| [Swift](swift.md) | Podfile.lock | - | - | ✅ | ✅ |
|
||||||
|
| | Package.resolved | - | - | ✅ | ✅ |
|
||||||
|
|
||||||
|
The path of these files does not matter.
|
||||||
|
|
||||||
|
Example: [Dockerfile](https://github.com/aquasecurity/trivy-ci-test/blob/main/Dockerfile)
|
||||||
|
|
||||||
|
[sbom]: ../../supply-chain/sbom.md
|
||||||
|
[vuln]: ../../scanner/vulnerability.md
|
||||||
|
[license]: ../../scanner/license.md
|
||||||
|
|
||||||
|
[^1]: `*.egg-info`, `*.egg-info/PKG-INFO`, `*.egg` and `EGG-INFO/PKG-INFO`
|
||||||
|
[^2]: `.dist-info/META-DATA`
|
||||||
|
[^3]: `envs/*/conda-meta/*.json`
|
||||||
|
[^4]: `*.jar`, `*.war`, `*.par` and `*.ear`
|
||||||
|
[^5]: ✅ means "enabled" and `-` means "disabled" in the image scanning
|
||||||
|
[^6]: ✅ means "enabled" and `-` means "disabled" in the rootfs scanning
|
||||||
|
[^7]: ✅ means "enabled" and `-` means "disabled" in the filesystem scanning
|
||||||
|
[^8]: ✅ means "enabled" and `-` means "disabled" in the git repository scanning
|
||||||
|
[^9]: ✅ means that Trivy detects line numbers where each dependency is declared in the scanned file. Only supported in [json](../../configuration/reporting.md#json) and [sarif](../../configuration/reporting.md#sarif) formats. SARIF uses `startline == 1 and endline == 1` for unsupported file types
|
||||||
|
[^10]: To scan a filename other than the default filename use [file-patterns](../../configuration/skipping.md#file-patterns)
|
||||||
|
[^11]: `Directory.Packages.props` and legacy `Packages.props` file names are supported
|
||||||
109
docs/docs/coverage/language/java.md
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# Java
|
||||||
|
Trivy supports three types of Java scanning: `JAR/WAR/PAR/EAR`, `pom.xml` and `*gradle.lockfile` files.
|
||||||
|
|
||||||
|
Each artifact supports the following scanners:
|
||||||
|
|
||||||
|
| Artifact | SBOM | Vulnerability | License |
|
||||||
|
|------------------|:----:|:-------------:|:-------:|
|
||||||
|
| JAR/WAR/PAR/EAR | ✓ | ✓ | - |
|
||||||
|
| pom.xml | ✓ | ✓ | ✓ |
|
||||||
|
| *gradle.lockfile | ✓ | ✓ | ✓ |
|
||||||
|
|
||||||
|
The following table provides an outline of the features Trivy offers.
|
||||||
|
|
||||||
|
| Artifact | Internet access | Dev dependencies | [Dependency graph][dependency-graph] | Position |
|
||||||
|
|------------------|:---------------------:|:----------------:|:------------------------------------:|:--------:|
|
||||||
|
| JAR/WAR/PAR/EAR | Trivy Java DB | Include | - | - |
|
||||||
|
| pom.xml | Maven repository [^1] | Exclude | ✓ | ✓[^7] |
|
||||||
|
| *gradle.lockfile | - | Exclude | ✓ | ✓ |
|
||||||
|
|
||||||
|
These may be enabled or disabled depending on the target.
|
||||||
|
See [here](./index.md) for the detail.
|
||||||
|
|
||||||
|
## JAR/WAR/PAR/EAR
|
||||||
|
To find information about your JAR[^2] file, Trivy parses `pom.properties` and `MANIFEST.MF` files in your JAR[^2] file and takes required properties[^3].
|
||||||
|
|
||||||
|
If those files don't exist or don't contain enough information - Trivy will try to find this JAR[^2] file in [trivy-java-db](https://github.com/aquasecurity/trivy-java-db).
|
||||||
|
The Java DB will be automatically downloaded/updated when any JAR[^2] file is found.
|
||||||
|
It is stored in [the cache directory](../../configuration/cache.md#cache-directory).
|
||||||
|
|
||||||
|
!!! warning "EXPERIMENTAL"
|
||||||
|
Finding JARs in `trivy-java-db` is an experimental function.
|
||||||
|
|
||||||
|
Base JAR[^2] may contain inner JARs[^2] within itself.
|
||||||
|
To find information about these JARs[^2], the same logic is used as for the base JAR[^2].
|
||||||
|
|
||||||
|
`table` format only contains the name of root JAR[^2] . To get the full path to inner JARs[^2] use the `json` format.
|
||||||
|
|
||||||
|
## pom.xml
|
||||||
|
Trivy parses your `pom.xml` file and tries to find files with dependencies from these local locations.
|
||||||
|
|
||||||
|
- project directory[^4]
|
||||||
|
- relativePath field[^5]
|
||||||
|
- local repository directory[^6].
|
||||||
|
|
||||||
|
### remote repositories
|
||||||
|
If your machine doesn't have the necessary files - Trivy tries to find the information about these dependencies in the remote repositories:
|
||||||
|
|
||||||
|
- [repositories from pom files][maven-pom-repos]
|
||||||
|
- [maven central repository][maven-central]
|
||||||
|
|
||||||
|
Trivy reproduces Maven's repository selection and priority:
|
||||||
|
|
||||||
|
- for snapshot artifacts:
|
||||||
|
- check only snapshot repositories from pom files (if exists)
|
||||||
|
- for other artifacts:
|
||||||
|
- check release repositories from pom files (if exists)
|
||||||
|
- check [maven central][maven-central]
|
||||||
|
|
||||||
|
!!! Note
|
||||||
|
Trivy only takes information about packages. We don't take a list of vulnerabilities for packages from the `maven repository`.
|
||||||
|
Information about data sources for Java you can see [here](../../scanner/vulnerability.md#data-sources-1).
|
||||||
|
|
||||||
|
You can disable connecting to the maven repository with the `--offline-scan` flag.
|
||||||
|
The `--offline-scan` flag does not affect the Trivy database.
|
||||||
|
The vulnerability database will be downloaded anyway.
|
||||||
|
|
||||||
|
!!! Warning
|
||||||
|
Trivy may skip some dependencies (that were not found on your local machine) when the `--offline-scan` flag is passed.
|
||||||
|
|
||||||
|
|
||||||
|
### maven-invoker-plugin
|
||||||
|
Typically, the integration tests directory (`**/[src|target]/it/*/pom.xml`) of [maven-invoker-plugin][maven-invoker-plugin] doesn't contain actual `pom.xml` files and should be skipped to avoid noise.
|
||||||
|
|
||||||
|
Trivy marks dependencies from these files as the development dependencies and skip them by default.
|
||||||
|
If you need to show them, use the `--include-dev-deps` flag.
|
||||||
|
|
||||||
|
|
||||||
|
## Gradle.lock
|
||||||
|
`gradle.lock` files only contain information about used dependencies.
|
||||||
|
|
||||||
|
!!!note
|
||||||
|
All necessary files are checked locally. Gradle file scanning doesn't require internet access.
|
||||||
|
|
||||||
|
### Dependency-tree
|
||||||
|
!!! warning "EXPERIMENTAL"
|
||||||
|
This feature might change without preserving backwards compatibility.
|
||||||
|
Trivy finds child dependencies from `*.pom` files in the cache[^8] directory.
|
||||||
|
|
||||||
|
But there is no reliable way to determine direct dependencies (even using other files).
|
||||||
|
Therefore, we mark all dependencies as indirect to use logic to guess direct dependencies and build a dependency tree.
|
||||||
|
|
||||||
|
### Licenses
|
||||||
|
Trity also can detect licenses for dependencies.
|
||||||
|
|
||||||
|
Make sure that you have cache[^8] directory to find licenses from `*.pom` dependency files.
|
||||||
|
|
||||||
|
[^1]: Uses maven repository to get information about dependencies. Internet access required.
|
||||||
|
[^2]: It means `*.jar`, `*.war`, `*.par` and `*.ear` file
|
||||||
|
[^3]: `ArtifactID`, `GroupID` and `Version`
|
||||||
|
[^4]: e.g. when parent pom.xml file has `../pom.xml` path
|
||||||
|
[^5]: When you use dependency path in `relativePath` field in pom.xml file
|
||||||
|
[^6]: `/Users/<username>/.m2/repository` (for Linux and Mac) and `C:/Users/<username>/.m2/repository` (for Windows) by default
|
||||||
|
[^7]: To avoid confusion, Trivy only finds locations for direct dependencies from the base pom.xml file.
|
||||||
|
[^8]: The supported directories are `$GRADLE_USER_HOME/caches` and `$HOME/.gradle/caches` (`%HOMEPATH%\.gradle\caches` for Windows).
|
||||||
|
|
||||||
|
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||||
|
[maven-invoker-plugin]: https://maven.apache.org/plugins/maven-invoker-plugin/usage.html
|
||||||
|
[maven-central]: https://repo.maven.apache.org/maven2/
|
||||||
|
[maven-pom-repos]: https://maven.apache.org/settings.html#repositories
|
||||||
77
docs/docs/coverage/language/nodejs.md
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# Node.js
|
||||||
|
|
||||||
|
Trivy supports four types of Node.js package managers: `npm`, `Yarn`, `pnpm` and `Bun`[^1].
|
||||||
|
|
||||||
|
The following scanners are supported.
|
||||||
|
|
||||||
|
| Artifact | SBOM | Vulnerability | License |
|
||||||
|
|----------|:----:|:-------------:|:-------:|
|
||||||
|
| npm | ✓ | ✓ | ✓ |
|
||||||
|
| Yarn | ✓ | ✓ | ✓ |
|
||||||
|
| pnpm | ✓ | ✓ | - |
|
||||||
|
| Bun | ✓ | ✓ | ✓ |
|
||||||
|
|
||||||
|
The following table provides an outline of the features Trivy offers.
|
||||||
|
|
||||||
|
| Package manager | File | Transitive dependencies | Dev dependencies | [Dependency graph][dependency-graph] | Position |
|
||||||
|
|:---------------:|-------------------|:-----------------------:|:-----------------:|:------------------------------------:|:--------:|
|
||||||
|
| npm | package-lock.json | ✓ | [Excluded](#npm) | ✓ | ✓ |
|
||||||
|
| Yarn | yarn.lock | ✓ | [Excluded](#yarn) | ✓ | ✓ |
|
||||||
|
| pnpm | pnpm-lock.yaml | ✓ | Excluded | ✓ | - |
|
||||||
|
| Bun | yarn.lock | ✓ | [Excluded](#yarn) | ✓ | ✓ |
|
||||||
|
|
||||||
|
In addition, Trivy scans installed packages with `package.json`.
|
||||||
|
|
||||||
|
| File | Dependency graph | Position | License |
|
||||||
|
|--------------|:----------------:|:--------:|:-------:|
|
||||||
|
| package.json | - | - | ✅ |
|
||||||
|
|
||||||
|
These may be enabled or disabled depending on the target.
|
||||||
|
See [here](./index.md) for the detail.
|
||||||
|
|
||||||
|
## Package managers
|
||||||
|
Trivy parses your files generated by package managers in filesystem/repository scanning.
|
||||||
|
|
||||||
|
!!! tip
|
||||||
|
Please make sure your lock file is up-to-date after modifying `package.json`.
|
||||||
|
|
||||||
|
### npm
|
||||||
|
Trivy parses `package-lock.json`.
|
||||||
|
To identify licenses, you need to download dependencies to `node_modules` beforehand.
|
||||||
|
Trivy analyzes `node_modules` for licenses.
|
||||||
|
|
||||||
|
By default, Trivy doesn't report development dependencies. Use the `--include-dev-deps` flag to include them.
|
||||||
|
|
||||||
|
### Yarn
|
||||||
|
Trivy parses `yarn.lock`, which doesn't contain information about development dependencies.
|
||||||
|
Trivy also uses `package.json` file to handle [aliases](https://classic.yarnpkg.com/lang/en/docs/cli/add/#toc-yarn-add-alias).
|
||||||
|
|
||||||
|
To exclude devDependencies and allow aliases, `package.json` also needs to be present next to `yarn.lock`.
|
||||||
|
|
||||||
|
Trivy analyzes `.yarn` (Yarn 2+) or `node_modules` (Yarn Classic) folder next to the yarn.lock file to detect licenses.
|
||||||
|
|
||||||
|
By default, Trivy doesn't report development dependencies. Use the `--include-dev-deps` flag to include them.
|
||||||
|
|
||||||
|
### pnpm
|
||||||
|
Trivy parses `pnpm-lock.yaml`, then finds production dependencies and builds a [tree][dependency-graph] of dependencies with vulnerabilities.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
Trivy currently only supports Lockfile [v6][pnpm-lockfile-v6] or earlier.
|
||||||
|
|
||||||
|
### Bun
|
||||||
|
Trivy supports scanning `yarn.lock` files generated by [Bun](https://bun.sh/docs/install/lockfile#how-do-i-inspect-bun-s-lockfile). You can use the command `bun install -y` to generate a Yarn-compatible `yarn.lock`.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
`bun.lockb` is not supported.
|
||||||
|
|
||||||
|
## Packages
|
||||||
|
Trivy parses the manifest files of installed packages in container image scanning and so on.
|
||||||
|
|
||||||
|
### package.json
|
||||||
|
Trivy searches for `package.json` files under `node_modules` and identifies installed packages.
|
||||||
|
It only extracts package names, versions and licenses for those packages.
|
||||||
|
|
||||||
|
[dependency-graph]: ../../configuration/reporting.md#show-origins-of-vulnerable-dependencies
|
||||||
|
[pnpm-lockfile-v6]: https://github.com/pnpm/spec/blob/fd3238639af86c09b7032cc942bab3438b497036/lockfile/6.0.md
|
||||||
|
|
||||||
|
[^1]: [yarn.lock](#bun) must be generated
|
||||||