tree: 6ab213a622cd03d6492eb08496af93599366ee3a [path history] [tgz]
  1. testdata/
  2. utils/
  3. aggregate_controller_fuzzer.go
  4. analyzer_fuzzer.go
  5. bootstrap_fuzzer.go
  6. ca_server_fuzzer.go
  7. compare_fuzzer.go
  8. config_validation_fuzzer.go
  9. crd_roundtrip_fuzzer.go
  10. Dockerfile.fuzz
  11. fuzz.go
  12. helm_reconciler_fuzzer.go
  13. inject_fuzzer.go
  14. kube_controller_fuzzer.go
  15. kube_crd_fuzzer.go
  16. kube_gateway_controller_fuzzer.go
  17. kube_ingress_fuzzer.go
  18. mesh_fuzzer.go
  19. misc_fuzzers.go
  20. networking_core_v1alpha3_envoyfilter_fuzzer.go
  21. networking_core_v1alpha3_fuzzer.go
  22. operator_translate_fuzzer.go
  23. oss_fuzz_build.sh
  24. pilot_model_fuzzer.go
  25. pilot_networking_fuzzer.go
  26. pilot_security_fuzzer.go
  27. pkg_util_fuzzer.go
  28. pki_fuzzer.go
  29. README.md
  30. regression_test.go
  31. security_authz_builder_fuzzer.go
  32. security_fuzzer.go
  33. status_fuzzer.go
  34. v1alpha3_fuzzer.go
  35. workloadentry_controller_fuzzer.go
  36. xds_fuzzer.go
tests/fuzz/README.md

Istio fuzzing

Istio has a series of fuzzers that run continuously through OSS-fuzz.

Local testing

To run the fuzzers using Dockerfile.fuzz, follow these steps:

git clone https://github.com/istio/istio
cd istio
mv tests/fuzz/Dockerfile.fuzz ./
sudo docker build -t istio-fuzz -f Dockerfile.fuzz .

Next, get a shell in the container:

sudo docker run -it istio-fuzz

At this point, you can navigate to tests/fuzz and build any of the fuzzers:

cd $PATH_TO_FUZZER
go-fuzz-build -libfuzzer -func=FUZZ_NAME && \
clang -fsanitize=fuzzer PACKAGE_NAME.a -o fuzzer

If you encounter any errors when linking with PACKAGE_NAME.a, simply ls after running go-fuzz-build..., and you will see the archive to link with.

If everything goes well until this point, you can run the fuzzer:

./fuzzer