diff --git a/.github/workflows/mayhem.yml b/.github/workflows/mayhem.yml new file mode 100644 index 0000000..c3fed4d --- /dev/null +++ b/.github/workflows/mayhem.yml @@ -0,0 +1,51 @@ +name: Mayhem +on: + push: + pull_request: + workflow_dispatch: + workflow_call: +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} +jobs: + build: + name: ${{ matrix.os }} shared=${{ matrix.shared }} ${{ matrix.build_type }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + shared: [false] + build_type: [Release] + include: + - os: ubuntu-latest + triplet: x64-linux + steps: + - uses: actions/checkout@v2 + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: Start analysis + uses: forallsecure/mcode-action@v1 + with: + mayhem-token: ${{ secrets.MAYHEM_TOKEN }} + args: --image ${{ steps.meta.outputs.tags }} --duration 300 + sarif-output: sarif + - name: Upload SARIF file(s) + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: sarif diff --git a/Dockerfile b/Dockerfile index 278ef0e..2596941 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,37 @@ # Build environment -FROM alpine AS build -RUN apk add --no-cache build-base +FROM ubuntu:20.04 as builder + +## Install build dependencies. +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y cmake clang + + +#RUN apk add --no-cache build-base WORKDIR /src COPY . . -RUN make darkhttpd-static \ - && strip darkhttpd-static +RUN make darkhttpd \ + && strip darkhttpd + +#WORKDIR /src/devel + +#RUN clang -c -Dmain=darkhttpd -g -O2 -fsanitize=fuzzer,address ../darkhttpd.c -o #fuzz_darkhttpd.o +#RUN clang++ -g -O2 -fsanitize=fuzzer,address fuzz_socket.cc fuzz_darkhttpd.o -o fuzz_socket + + # Just the static binary -FROM scratch -WORKDIR /var/www/htdocs -COPY --from=build /src/darkhttpd-static /darkhttpd -EXPOSE 80 -ENTRYPOINT ["/darkhttpd"] -CMD ["."] +#FROM scratch +#WORKDIR /var/www/htdocs +#COPY --from=build /src/darkhttpd-static /darkhttpd +#EXPOSE 80 +#ENTRYPOINT ["/darkhttpd"] +#CMD ["."] + +FROM ubuntu:20.04 + + +COPY --from=builder /src/darkhttpd / + +#make the binary +#copy it into diff --git a/Mayhemfile b/Mayhemfile new file mode 100644 index 0000000..e135602 --- /dev/null +++ b/Mayhemfile @@ -0,0 +1,21 @@ +# Namespaced project name that the target belongs to +project: darkhttpd + +# Target name (should be unique within the project) +target: fuzz_socket + +cmds: + - cmd: /darkhttpd /path/to/wwwroot + network: + url: tcp://localhost:80 + timeout: 2 + client: false +# + + + +#project: mayhem-cmake-example +#target: fuzzme +# +#cmds: +# - cmd: /fuzzme