Skip to content

Commit 7c60b1d

Browse files
authored
clusterfuzzlite: pin dependencies, update dictionary, fix fuzz server (zalando#2785)
* clusterfuzzlite: pin dependencies, update dictionary, fix fuzz server performance. Signed-off-by: Sepehrdad Sh <[email protected]> * clusterfuzzlite: enable parallel fuzzing Signed-off-by: Sepehrdad Sh <[email protected]> --------- Signed-off-by: Sepehrdad Sh <[email protected]>
1 parent 39eb3ef commit 7c60b1d

File tree

4 files changed

+170
-164
lines changed

4 files changed

+170
-164
lines changed

.clusterfuzzlite/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM gcr.io/oss-fuzz-base/base-builder-go
1+
FROM gcr.io/oss-fuzz-base/base-builder-go@sha256:f7970e735dcd3c5f360ae92b40a20414d70ef3b534ff6f3566dcad1b1cb2ec4c
22

33
COPY . $SRC/skipper
44
COPY ./.clusterfuzzlite/build.sh $SRC/

.github/workflows/cflite_pr.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,18 @@ jobs:
1818
steps:
1919
- name: Build Fuzzers (${{ matrix.sanitizer }})
2020
id: build
21-
uses: google/clusterfuzzlite/actions/build_fuzzers@v1
21+
uses: google/clusterfuzzlite/actions/build_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
2222
with:
2323
language: go
2424
github-token: ${{ secrets.GITHUB_TOKEN }}
2525
sanitizer: ${{ matrix.sanitizer }}
2626
- name: Run Fuzzers (${{ matrix.sanitizer }})
2727
id: run
28-
uses: google/clusterfuzzlite/actions/run_fuzzers@v1
28+
uses: google/clusterfuzzlite/actions/run_fuzzers@884713a6c30a92e5e8544c39945cd7cb630abcd1 # v1
2929
with:
3030
github-token: ${{ secrets.GITHUB_TOKEN }}
3131
fuzz-seconds: 300
3232
mode: 'code-change'
3333
sanitizer: ${{ matrix.sanitizer }}
3434
output-sarif: true
35+
parallel-fuzzing: true

fuzz/dictionaries/FuzzParseEskip.dict

+164-159
Original file line numberDiff line numberDiff line change
@@ -1,188 +1,193 @@
1-
"&&"
2-
"*"
3-
"->"
4-
")"
5-
":"
6-
","
7-
"("
8-
";"
9-
"<shunt>"
10-
"<loopback>"
11-
"<dynamic>"
12-
"<"
13-
">"
14-
"backendIsProxy"
15-
"modRequestHeader"
16-
"setRequestHeader"
17-
"appendRequestHeader"
18-
"dropRequestHeader"
19-
"modResponseHeader"
20-
"setResponseHeader"
21-
"appendResponseHeader"
22-
"dropResponseHeader"
23-
"setContextRequestHeader"
1+
"absorb"
2+
"absorbSilent"
3+
"admissionControl"
4+
"After"
5+
"apiUsageMonitoring"
246
"appendContextRequestHeader"
25-
"setContextResponseHeader"
267
"appendContextResponseHeader"
8+
"appendRequestHeader"
9+
"appendResponseHeader"
10+
"auditLog"
11+
"backendBandwidth"
12+
"backendChunks"
13+
"backendIsProxy"
14+
"backendLatency"
15+
"backendRatelimit"
16+
"backendTimeout"
17+
"bandwidth"
18+
"basicAuth"
19+
"bearerinjector"
20+
"Before"
21+
"Between"
22+
"blockContent"
23+
"blockContentHex"
24+
"chunks"
25+
"ClientIP"
26+
"clientRatelimit"
27+
"clusterClientRatelimit"
28+
"clusterLeakyBucketRatelimit"
29+
"clusterRatelimit"
30+
"compress"
31+
"consecutiveBreaker"
32+
"consistentHashBalanceFactor"
33+
"consistentHashKey"
34+
"ContentLengthBetween"
35+
"Cookie"
2736
"copyRequestHeader"
2837
"copyResponseHeader"
29-
"modPath"
30-
"setPath"
31-
"redirectTo"
32-
"redirectToLower"
33-
"static"
34-
"stripQuery"
35-
"preserveHost"
36-
"status"
37-
"compress"
38+
"corsOrigin"
39+
"Cron"
3840
"decompress"
39-
"setQuery"
41+
"disableAccessLog"
42+
"disableBreaker"
43+
"disableRatelimit"
4044
"dropQuery"
45+
"dropRequestCookie"
46+
"dropRequestHeader"
47+
"dropResponseCookie"
48+
"dropResponseHeader"
49+
"enableAccessLog"
50+
"endpointCreated"
51+
"errors"
52+
"fadeIn"
53+
"False"
54+
"fifo"
55+
"fifoWithBody"
56+
"flowId"
57+
"ForwardedHost"
58+
"ForwardedProtocol"
59+
"forwardToken"
60+
"forwardTokenField"
61+
"grantCallback"
62+
"grantClaimsQuery"
63+
"grantLogout"
64+
"Header"
65+
"HeaderRegexp"
66+
"HeaderSHA256"
67+
"headerToQuery"
68+
"healthcheck"
69+
"histogramRequestLatency"
70+
"histogramResponseLatency"
71+
"Host"
72+
"HostAny"
4173
"inlineContent"
4274
"inlineContentIfStatus"
43-
"flowId"
44-
"xforward"
45-
"xforwardFirst"
46-
"randomContent"
47-
"repeatContent"
48-
"repeatContentHex"
49-
"wrapContent"
50-
"wrapContentHex"
51-
"backendTimeout"
52-
"readTimeout"
53-
"writeTimeout"
54-
"blockContent"
55-
"blockContentHex"
75+
"invalid predicate parameters"
76+
"jsCookie"
77+
"JWTPayloadAllKV"
78+
"JWTPayloadAllKVRegexp"
79+
"JWTPayloadAnyKV"
80+
"JWTPayloadAnyKVRegexp"
81+
"jwtValidation"
5682
"latency"
57-
"bandwidth"
58-
"chunks"
59-
"backendLatency"
60-
"backendBandwidth"
61-
"backendChunks"
62-
"absorb"
63-
"absorbSilent"
64-
"uniformRequestLatency"
65-
"uniformResponseLatency"
83+
"lifo"
84+
"lifoGroup"
85+
"logHeader"
86+
"lua"
87+
"Method"
88+
"Methods"
89+
"modPath"
90+
"modRequestHeader"
91+
"modResponseHeader"
6692
"normalRequestLatency"
6793
"normalResponseLatency"
68-
"histogramRequestLatency"
69-
"histogramResponseLatency"
70-
"logHeader"
71-
"tee"
72-
"teenf"
73-
"teeLoopback"
74-
"sed"
75-
"sedDelim"
76-
"sedRequest"
77-
"sedRequestDelim"
78-
"basicAuth"
79-
"webhook"
80-
"oauthTokeninfoAnyScope"
94+
"oauthGrant"
95+
"oauthOidcAllClaims"
96+
"oauthOidcAnyClaims"
97+
"oauthOidcUserInfo"
98+
"oauthTokeninfoAllKV"
8199
"oauthTokeninfoAllScope"
82100
"oauthTokeninfoAnyKV"
83-
"oauthTokeninfoAllKV"
84-
"oauthTokenintrospectionAnyClaims"
101+
"oauthTokeninfoAnyScope"
85102
"oauthTokenintrospectionAllClaims"
86-
"oauthTokenintrospectionAnyKV"
87103
"oauthTokenintrospectionAllKV"
88-
"secureOauthTokenintrospectionAnyClaims"
89-
"secureOauthTokenintrospectionAllClaims"
90-
"secureOauthTokenintrospectionAnyKV"
91-
"secureOauthTokenintrospectionAllKV"
92-
"forwardToken"
93-
"forwardTokenField"
94-
"oauthGrant"
95-
"grantCallback"
96-
"grantLogout"
97-
"grantClaimsQuery"
98-
"jwtValidation"
99-
"oauthOidcUserInfo"
100-
"oauthOidcAnyClaims"
101-
"oauthOidcAllClaims"
104+
"oauthTokenintrospectionAnyClaims"
105+
"oauthTokenintrospectionAnyKV"
102106
"oidcClaimsQuery"
103-
"dropRequestCookie"
104-
"dropResponseCookie"
105-
"requestCookie"
106-
"responseCookie"
107-
"jsCookie"
108-
"consecutiveBreaker"
107+
"opaAuthorizeRequest"
108+
"opaServeResponse"
109+
"originMarker"
110+
"Path"
111+
"PathRegexp"
112+
"PathSubtree"
113+
"preserveHost"
114+
"QueryParam"
115+
"queryToHeader"
116+
"randomContent"
109117
"rateBreaker"
110-
"disableBreaker"
111-
"admissionControl"
112-
"clientRatelimit"
113118
"ratelimit"
114-
"clusterClientRatelimit"
115-
"clusterRatelimit"
116-
"clusterLeakyBucketRatelimit"
117-
"backendRatelimit"
118119
"ratelimitFailClosed"
119-
"lua"
120-
"corsOrigin"
121-
"headerToQuery"
122-
"queryToHeader"
123-
"disableAccessLog"
124-
"enableAccessLog"
125-
"auditLog"
126-
"unverifiedAuditLog"
127-
"setDynamicBackendHostFromHeader"
128-
"setDynamicBackendSchemeFromHeader"
129-
"setDynamicBackendUrlFromHeader"
120+
"readTimeout"
121+
"redirectTo"
122+
"redirectToLower"
123+
"repeatContent"
124+
"repeatContentHex"
125+
"requestCookie"
126+
"responseCookie"
127+
"rfcHost"
128+
"rfcPath"
129+
"secureOauthTokenintrospectionAllClaims"
130+
"secureOauthTokenintrospectionAllKV"
131+
"secureOauthTokenintrospectionAnyClaims"
132+
"secureOauthTokenintrospectionAnyKV"
133+
"sed"
134+
"sedDelim"
135+
"sedRequest"
136+
"sedRequestDelim"
137+
"setContextRequestHeader"
138+
"setContextResponseHeader"
130139
"setDynamicBackendHost"
140+
"setDynamicBackendHostFromHeader"
131141
"setDynamicBackendScheme"
142+
"setDynamicBackendSchemeFromHeader"
132143
"setDynamicBackendUrl"
133-
"apiUsageMonitoring"
134-
"fifo"
135-
"lifo"
136-
"lifoGroup"
137-
"rfcPath"
138-
"rfcHost"
139-
"bearerinjector"
140-
"tracingBaggageToTag"
141-
"stateBagToTag"
142-
"tracingTag"
143-
"tracingTagFromResponse"
144-
"tracingSpanName"
145-
"originMarker"
146-
"fadeIn"
147-
"endpointCreated"
148-
"consistentHashKey"
149-
"consistentHashBalanceFactor"
150-
"opaAuthorizeRequest"
151-
"opaServeResponse"
152-
"healthcheck"
144+
"setDynamicBackendUrlFromHeader"
153145
"setFastCgiFilename"
154-
"disableRatelimit"
155-
"unknownRatelimit"
156-
"Path"
157-
"PathSubtree"
158-
"PathRegexp"
159-
"Host"
160-
"HostAny"
161-
"ForwardedHost"
162-
"ForwardedProtocol"
163-
"Weight"
164-
"True"
165-
"False"
146+
"setPath"
147+
"setQuery"
148+
"setRequestHeader"
149+
"setRequestHeaderFromSecret"
150+
"setResponseHeader"
166151
"Shutdown"
167-
"Method"
168-
"Methods"
169-
"Header"
170-
"HeaderRegexp"
171-
"Cookie"
172-
"JWTPayloadAnyKV"
173-
"JWTPayloadAllKV"
174-
"JWTPayloadAnyKVRegexp"
175-
"JWTPayloadAllKVRegexp"
176-
"HeaderSHA256"
177-
"After"
178-
"Before"
179-
"Between"
180-
"Cron"
181-
"QueryParam"
182152
"Source"
183153
"SourceFromLast"
184-
"ClientIP"
154+
"stateBagToTag"
155+
"static"
156+
"status"
157+
"stripQuery"
158+
"tarpit"
159+
"tee"
185160
"Tee"
161+
"teeLoopback"
162+
"teenf"
163+
"tracingBaggageToTag"
164+
"tracingSpanName"
165+
"tracingTag"
166+
"tracingTagFromResponse"
186167
"Traffic"
187168
"TrafficSegment"
188-
"ContentLengthBetween"
169+
"True"
170+
"uniformRequestLatency"
171+
"uniformResponseLatency"
172+
"unknownRatelimit"
173+
"unverifiedAuditLog"
174+
"webhook"
175+
"Weight"
176+
"wrapContent"
177+
"wrapContentHex"
178+
"writeTimeout"
179+
"xforward"
180+
"xforwardFirst"
181+
"&&"
182+
"("
183+
")"
184+
"*"
185+
","
186+
"->"
187+
":"
188+
";"
189+
"<"
190+
">"
191+
"<dynamic>"
192+
"<loopback>"
193+
"<shunt>"

fuzz/fuzz_targets/FuzzServer.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ var (
2121
)
2222

2323
func find_address() (string, error) {
24-
l, err := net.ListenTCP("tcp", &net.TCPAddr{})
24+
l, err := net.ListenTCP("tcp", &net.TCPAddr{IP: net.ParseIP("127.0.0.1")})
2525

2626
if err != nil {
2727
return "", err
@@ -61,7 +61,7 @@ func run_server() {
6161
cfg.AccessLogDisabled = true
6262
cfg.ApplicationLog = "/dev/null"
6363
cfg.Address = addr
64-
cfg.SupportListener = ":0"
64+
cfg.SupportListener = "127.0.0.1:0"
6565

6666
go func() {
6767
log.Fatal(skipper.Run(cfg.ToOptions()))

0 commit comments

Comments
 (0)