Slither Versions Save

Static Analyzer for Solidity and Vyper

0.10.2

1 month ago

0.10.2 - 2024-04-08

This minor release contains several enhancements and resolves several bugs, most notably:

  • Revamps slither-mutate with first class support for Foundry projects (see quickstart)
  • New detector identifies unused imports (slither . --detect unused-import)
  • Resolves longstanding issues in import resolution and lack of support for aliases (see https://github.com/crytic/slither/issues/1452)
  • Improves the reference/declaration API in order to facilitate LSP integration
  • Accurately models implicit returns in the intermediate representation (see https://github.com/crytic/slither/pull/1880)

We would like to thank our external contributors:

  • @Tiko7454
  • @dokzai
  • @rustrover
  • @eltociear
  • @majorteach
  • @kevinclancy
  • @nsiregar
  • @bart1e

New Features

Bug Fixes

Enhancements

New Contributors

Full Changelog: https://github.com/crytic/slither/compare/0.10.1...0.10.2

0.10.1

2 months ago

0.10.1 - 2024-02-29

This is a minor release that adds support for Solidity 0.8.24 and top level events. It includes a new detector, out-of-order-retryable, which detects potential misuse of Arbitrum's retryable transactions. Also, there is a new CLI flag, --include-paths which allows one to only include results from a given path.

We would like to thank all of our external contributors:

  • @VIELITE
  • @mds1
  • @UsmannK
  • @ATREAY
  • @dokzai

What's Changed

New Features

Bug Fixes

Enhancements

New Contributors

Full Changelog: https://github.com/crytic/slither/compare/0.10.0...0.10.1

0.10.0

7 months ago

0.10.0 - 2023-10-18

This release adds support for Vyper 0.3.7 (thanks to the funding from VyperLang)! Currently, Vyper frameworks such as Ape are not supported. To run slither on Vyper codebases, target the source directory e.g. run slither ./contracts if the Vyper contracts are in the contracts/ directory.

Additionally, this release includes 5 new detectors, 3 new printers, and several bugs fixes related to recent solidity features. The echidna/medusa integration was sped up and provides more information to the fuzzers.

With the release of crytic-compile 0.3.5, support for foundry projects is significantly improved: Slither can now be run on a single file from a foundry project and detect the necessary imports automatically (ex: run slither contracts/some_file.sol instead of slither . ).

We would like to thank all of our external contributors:

  • @dokzai
  • @kevinclancy
  • @SEJeff
  • @SheldonHolmgren
  • @yisun92
  • @Tiko7454

What's Changed

New Features:

  • Vyper support by @0xalpharush in PR #2099
  • 5 new detectors by @montyly in PR #2156
    • incorrect-return / return-leave / incorrect-exp / tautological-compare / return-bomb
  • Printers

Breaking Changes:

  • Improve name resolution of type aliases by @smonicas in PR #2061
  • Change return type to UnaryType instead of UnaryOperationType by @dokzai in PR #2124

Enhancements:

  • Add CustomError as printable output by @smonicas in PR #2063
  • Improve mapping-deletion detector for nested mappings by @smonicas in PR #2084
  • Improve constants extraction of ReferenceVariable by @smonicas in PR #2098
  • Better struct handling in code generation util by @webthethird in PR #2068
  • Add end assembly node in the cfg by @smonicas in PR #2078
  • Use crytic-compile 0.3.5

Bug Fixes:

  • Fix CONTRIBUTING.md by @smonicas in PR #2052
  • Fix ternary rewrite test and make assertion more strict by @0xalpharush in PR #2067
  • UnaryOperation: -variable and +variable doesn't make variable an lvalue by @SheldonHolmgren in PR #2027
  • Fix assertion failure in dominator computation for dead code by @Tiko7454 in PR #1984
  • Fix typo in Contract.get_state_variable_from_canonical_name() by @yisun92 in PR #1983
  • Fix divide before multiply detector non deterministic results by @smonicas in PR #2114
  • Detectors: cache_array_length: include source mapping in finding by @elopez in PR #2076
  • Fix a typo in the help text by @SEJeff in PR #2155
  • Fix abi.decode tuple result with udt by @smonicas in PR #2048
  • Fix parsing super call expression by @smonicas in PR #2151
  • Fix(convert): do not convert array type to elementary for InitArray by @0xalpharush in PR #2018
  • Fix: reorder named arguments to match declaration order by @kevinclancy in PR #1949
  • Fix enum.max/min when enum in other contract by @smonicas in PR #2051

Continuous Integration and Dependencies:

  • Bump pypa/gh-action-pypi-publish from 1.8.7 to 1.8.10 by @dependabot in PR #2049, PR #2086
  • ci: add problem matchers for yamllint and pylint by @0xalpharush in PR #2070
  • Bump sigstore to 2.1.0 by @0xalpharush in PR #2081, PR #2154
  • Fix CI by @montyly in PR #2170
  • chore: bump sigstore to 2.0.0 by @0xalpharush in PR #2081
  • Bump actions/upload-pages-artifact, actions/checkout, cachix/install-nix-action, docker/setup-buildx-action, docker/build-push-action, docker/setup-qemu-action, docker/login-action by @dependabot in PR #2044, PR #2112, PR #2111, PR #2132, PR #2133, PR #2134, PR #2135

New Contributors

Full Changelog: https://github.com/crytic/slither/compare/0.9.6...0.10.0

0.9.6

10 months ago

0.9.6 - 2023-07-06

This release fixes a regression in the unchecked-lowlevel call detector and a crash in the cache-array-length detector.

What's Changed

New Contributors

Full Changelog: https://github.com/crytic/slither/compare/0.9.5...0.9.6

0.9.5

10 months ago

0.9.5 - 2023-06-28

This is a patch release that fixes forward compatibility with Python 3.11.

What's Changed

Full Changelog: https://github.com/crytic/slither/compare/0.9.4...0.9.5

0.9.4

10 months ago

0.9.4 - 2023-06-26

This release adds initial support of user defined operators, improves support for try catch, reduces false positives, and fixes numerous bugs. Finally three new detectors, one new printer, and one new tool were added.

We would like to thank all of our external contributors:

  • @0xGusMcCrae
  • @0xxfu
  • @A-23187
  • @DarrenChangJR
  • @PaulRBerg
  • @Tiko7454
  • @Troublor
  • @aga7hokakological
  • @bossjoker1
  • @daog1
  • @duelinggalois
  • @kevinclancy
  • @ydm

For CI integration: If you were using the fail-high, fail-medium, fail-low, fail-pedantic in slither.conf.json, Slither will warn these configurations are deprecated and recommend migrating to the respective fail-on config e.g. fail-high becomes fail-on: high. These flags are now decoupled from excluding which detectors run, meaning the flags --exclude-informational and --exclude-optimization will be honored without also passing --no-fail-pedantic. Consider using slither-action for CI integration

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/crytic/slither/compare/0.9.3...0.9.4

0.9.3

1 year ago

0.9.3 - 2023-03-20

This release adds a new detector for high complexity functions, improves Echidna's performance (on enums), adds support for less common and new Solidity features (ternary operations, using for, and yul support), and improves slither-read-storage and existing detectors.

Additionally, we're so excited that Slither has been nominated in the latest round of @optimismFND 's RetroPGF's program! If you vote for these projects, please select Slither as one of your favorite tools from now until March 23!

We have also opened a GitHub discussion page for Slither to more easily communicate with our community of users and developers.

Finally, we would like to thank all of our external contributors:

  • @bart1e
  • @CodeSandwich
  • @Troublor
  • @sidarth16

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/crytic/slither/compare/0.9.2...0.9.3

0.9.2

1 year ago

0.9.2 - 2023-01-11

This release integrates codex into Slither via two features:

  • slither-documentation, a tool to auto-generate natspec for every function. See the usage on solmate.
  • the codex detector, which uses GPT3 to find vulnerabilities. This detector is not run by default and requires an explicit opt-in by using the --codex flag.

For both features, the environment variable OPENAI_API_KEY must be set. These features are experimental, and we recommend reading OpenAI's ToS, in particular, if you are using it on a private codebase. We will be exploring other areas where we can leverage LLM within Slither, and we would love the community's feedback and ideas.

Additionally, this release contains two new detectors, and refinements to existing detectors. This includes a better handling of nonReentrant for reentrancy detection, lowering the number of false alarms. Finally, this release contains several bug fixes and improvements for Solidity features such as "using for" directives and user defined value types.

We would like to thank all of our external contributors: -@ardislu -@bart1e -@devtooligan -@devtooligan -@mds1 -@Pavan-Nambi -@pcaversaccio -@plotchy

Thanks to the community effort, slither has now reached 100+ contributors.

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/crytic/slither/compare/0.9.1...0.9.2

0.9.1

1 year ago

0.9.1 - 2022-11-03

This release contains several bug fixes, and a new tool - slither-doctor - to help debugging slither.

We would like to thank all our external contributors:

  • @emretepedev
  • @JorgeAtPaladin
  • @mds1
  • @medariox
  • @PatrickAlphaC
  • @zhiqiangxu

Added

Changed

Fixed

0.9.0

1 year ago

0.9.0 - 2022-10-05

This release contains:

  • 3 new detectors
  • Reduction of false positives in detectors
  • Refactoring that will help us adding new features
  • Breaking changes in the internal APIs
  • Fixes for several bugs and improvements to testing

This release moves the Python requirement to 3.8.

We would like to thank all our external contributors:

For Foundry users: we do not support multiple compiler versions at the moment (see https://github.com/foundry-rs/foundry/issues/3450).

Refactored

Added

Changed

Fixed