Conversation
Collaborator
Author
|
Applied requested canary tweak:
Commit: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Onboards
Recon-Fuzz/nerite-scfuzzbenchforscfuzzbenchwith a vulnerable baseline branch (dev) and recon harness branch (dev-recon).1) Vulnerable baseline ref
https://github.com/NeriteOrg/neritedev:b957c0417697ac4ee9c4aa6d4753739817f169df8a3e4afc) inRecon-Fuzz/nerite.2) Recon harness source ref
https://github.com/Recon-Fuzz/nerite60b3171c8cf943e5aadf3c67a5d1fe1911e0db85(origin/feat/benchmark-covg-workflow-fix-ghost)3) Files copied/changed
contracts/test/recon/**contracts/echidna.yamlcontracts/medusa.jsonmedusa.jsoncontracts/foundry.tomlcontracts/.gitignore4) Benchmark/canary compatibility updates
[invariant]set to benchmark-compatible values:runs=500000000,depth=100,include_storage=true,show_solidity=true,show_metrics=true,fail_on_revert=false,continuous_run=true,corpus_dir="corpus/foundry"testMode: "property",prefix: "invariant_".):contracts/medusa.json:test/recon/CryticTester.solmedusa.json:contracts/test/recon/CryticTester.sol!!! canary assertioninvariant_canary-> immediate failure (Canary invariant)invariant_assertion_failure_CANARYCryticToFoundry.sol:!!!)gt/gte/lt/lte/eq/ttargetContract(address(this))+ multipletargetSendervalues insetUp()invariant_*signatures returnboolinProperties.sol5) Local smoke test summary
Run from
contracts/.forge test --match-contract CryticToFoundry --listinvariant_canary,invariant_assertion_failure_CANARYFOUNDRY_INVARIANT_CONTINUOUS_RUN=false forge test --match-contract CryticToFoundry --match-test invariant_canary -vvFOUNDRY_INVARIANT_CONTINUOUS_RUN=false forge test --match-contract CryticToFoundry --match-test 'invariant_(canary_assertion_failure|assertion_failure_CANARY)' -vvtimeout 300 echidna test/recon/CryticTester.sol --contract CryticTester --config echidna.yaml --test-mode property --format text --disable-slitherinvariant_canaryandinvariant_assertion_failure_CANARY.timeout 300 medusa fuzz --config medusa.json --timeout 300CryticTester.invariant_canary()andCryticTester.invariant_assertion_failure_CANARY().6) 5-minute canary trial summary per fuzzer
All fuzzers surfaced both required canaries well within 5 minutes:
invariant_canaryfailed (Canary invariant)invariant_assertion_failure_CANARYfailed (!!! canary assertion)Property Test: CryticTester.invariant_canary()failed (Canary invariant)Property Test: CryticTester.invariant_assertion_failure_CANARY()failed (assertion failure)invariant_canaryfailed (Canary invariant)invariant_assertion_failure_CANARYfailed (!!! canary assertion)7) Canary validation summary
!!! canary assertion)invariant_canary,Canary invariant)8)
/startrequest JSON{ "target_repo_url": "https://github.com/Recon-Fuzz/nerite-scfuzzbench", "target_commit": "dev-recon", "benchmark_type": "property", "instance_type": "c6a.4xlarge", "instances_per_fuzzer": 4, "timeout_hours": 1, "fuzzers": ["echidna", "medusa", "foundry"], "foundry_version": "", "foundry_git_repo": "https://github.com/aviggiano/foundry", "foundry_git_ref": "master", "echidna_version": "", "medusa_version": "", "bitwuzla_version": "", "git_token_ssm_parameter_name": "/scfuzzbench/recon/github_token", "properties_path": "", "fuzzer_env_json": "" }9) Target-specific overrides
fuzzer_env_jsonoverrides required.CryticTesterconstructor uses best-effortvm.etchfor ERC1820 bootstrap compatibility across runners.