Skip to content

Releases: awslabs/ar-go-tools

v0.3.5-alpha

16 Dec 14:47
Compare
Choose a tag to compare

Fixes soundness problems with field sensitivity and predefined summaries in the taint analysis.

What's Changed

Full Changelog: v0.3.4-alpha...v0.3.5-alpha

v0.3.4-alpha

13 Dec 19:23
Compare
Choose a tag to compare

A few changes in the backtrace analysis to:

  • eliminate false positives due to how arguments of variadic functions are stored in a slice and
  • traces exceeding max depth being unreported when checking for statically defined arguments. Now, a trace exceeding unsafe-max-depth is reported.

What's Changed

Full Changelog: v0.3.3-alpha...v0.3.4-alpha

v0.3.3-alpha

06 Dec 15:44
9155183
Compare
Choose a tag to compare

Releasing minor enhancements and fixes:

  • adding the -targets option allows the user to select only specific targets that are defined in a config file to run the analysis on.
  • making calls to builtins explicit in the dataflow graph allows user to specify, for example, that len is a sanitizer.
  • changes in how annotations are loaded fixes a bug where some line annotations (//argot:ignore tag) were missed.
  • refactoring internal code with some minor improvements in performance, and more modular interface.

What's Changed

Full Changelog: v0.3.2-alpha...v0.3.3-alpha

v0.3.2-alpha

22 Nov 17:23
Compare
Choose a tag to compare

Small additions to the interface:

  • Added a new must-be-static option for slicing problems that lets user leverage the backwards dataflow analysis to check that the arguments of some function are entirely statically defined.
  • Added a new -tag command line option for taint and backtrace tools that lets users run the analyzers only for problems with a specific tag. This is especially useful if the config file has many specifications, but you need to test only one small analysis.

And some fixes in how directories relative to project root are handled.

What's Changed

Full Changelog: v0.3.1-alpha...v0.3.2-alpha

v0.3.1-alpha

18 Nov 19:25
Compare
Choose a tag to compare

Minor changes and a fix in the usage of tags and targets:

  • syntactic now uses targets.
  • fixing problem with tags not working when sources are channels or struct field reads.

What's Changed

Full Changelog: v0.3.0-alpha...v0.3.1-alpha

New `syntactic` tool + user config experience overhaul

12 Nov 21:52
Compare
Choose a tag to compare

This release adds a new tool to Argot: syntactic performs syntactic or lightweight semantic analyses at the SSA level. The syntactic tool supports checking that the field of a struct of a certain type is always initialized either with a specific constant or a specific function.

The configuration file format has changed significantly to move options closer to the problem they apply to; for example, you'll find the source-taints-args options in a taint analysis problem, and the dataflow specific options in the dataflow-problems category.

The concept of "targets" is a significant addition to the config files: you can now define a project-root and targets in the config, and then specify, in each analysis problem (like taint-tracking or slicing problems) which target should be analyzed. Each target is a set of paths to the files of a main package, every path being taken relatively to the project root. This simplifies running argot in projects with multiple executables and many analysis problems. For an example, see payload/selfcheck/config.yaml.

What's Changed

Full Changelog: v0.2.2-alpha...v0.3.0

v0.2.2-alpha

28 Oct 15:07
Compare
Choose a tag to compare
v0.2.2-alpha Pre-release
Pre-release

Several user interface improvements to the dataflow analyses:

  • struct assignments can now be used as sinks. This is useful if you want to check some specific member of a struct is never assigned some tainted data.
  • //argot:ignore tag annotations are now used by the analysis to suppress data flows for the problems annotated with tag, which can be the "any tag" _. When tainted data reaches a sink on a line that contains the //argot:ignore _ annotation, the flow is not reported (although the fact that the flow is ignored is reported in the logs).

What's Changed

Full Changelog: v0.2.1-alpha...v0.2.2-alpha

v0.2.1-alpha

16 Oct 16:23
Compare
Choose a tag to compare
v0.2.1-alpha Pre-release
Pre-release

This release brings some minor fixes and improvements in user experience. Notably, the tool will now also warn you when functions that use reflection or unsafe are being used, on top of the warnings for go calls, recover and unbounded defers.

What's Changed

  • Minor fixes and improvements in dataflow analyses and cli by @victornicolet in #91
  • Updating documentation. by @victornicolet in #93
  • Add a rewriting step to inline function calls in some interface consuming functions by @victornicolet in #94
  • Adding warning for usage of unsound features when a function is being used by @victornicolet in #97

Full Changelog: v0.2.0-alpha...v0.2.1-alpha

v0.2.0-alpha

16 Sep 13:20
Compare
Choose a tag to compare
v0.2.0-alpha Pre-release
Pre-release

Second alpha release brings many fixes and quality of life improvements.
Breaking changes:

  • We have now a unique binary for all tools in Argot (except race detection). You would have typed taint -config ... now you would type argot taint -config ... (or argot backtrace ..., argot dependencies ... and so on).
  • The minimum go version supported is 1.22, although the tool should still work with go1.21 and previous versions.

What's Changed

New Contributors

Full Changelog: v0.1.0-alpha.1...v0.2.0-alpha

Argot v0.1.0-alpha.1

08 Apr 20:14
d9b00a5
Compare
Choose a tag to compare
Argot v0.1.0-alpha.1 Pre-release
Pre-release
  • First release!
  • Released the following tools:
    • taint analysis tool for taint analysis,
    • argot-cli is a terminal-like interface for various part of the analysis (in cmd/cli)
    • compare prints a comparison of the functions that are reachable according to two different analyses, and the functions that appear in the binary,
    • dependencies prints the dependencies of a given program,
    • maypanic performs a may-panic analysis on a given program,
    • packagescan scans imports in packages,
    • reachability analyzes the program and prints the functions that are reachable within it,
    • render can be used to render a graph representation of the callgraph or to print the SSA form of a given program,
    • statistics prints statistics about the program.