Skip to content

VAST 2020.12.16

Download the release on GitHub.

The new dump command prints configuration and schema-related information. The implementation allows for printing all registered concepts and models, via vast dump concepts and vast dump models. The flag to --yaml to dump switches from JSON to YAML output, such that it confirms to the taxonomy configuration syntax.

By @dominiklohmann in #1196.

Add support for type-level synopses and a string synopsis

Section titled “Add support for type-level synopses and a string synopsis”

Low-selectivity queries of string (in)equality queries now run up to 30x faster, thanks to more intelligent selection of relevant index partitions.

By @tobim in #1214.

On Linux, VAST now contains a set of built-in USDT tracepoints that can be used by tools like perf or bpftrace when debugging. Initially, we provide the two tracepoints chunk_make and chunk_destroy, which trigger every time a vast::chunk is created or destroyed.

By @lava in #1206.

VAST now ships with its own taxonomy and basic concept definitions for Suricata, Zeek, and Sysmon.

By @mavam in #1135.

The new option --print-bytesizes of lsvast prints information about the size of certain fields of the flatbuffers inside a VAST database directory.

By @lava in #1149.

The expression language gained support for the #field meta extractor. It is the complement for #type and uses suffix matching for field names at the layout level.

By @tobim in #1228.

The storage required for index IP addresses has been optimized. This should result in significantly reduced memory usage over time, as well as faster restart times and reduced disk space requirements.

By @lava in #1172.

The new option vast.client-log-file enables client-side logging. By default, VAST only writes log files for the server process.

By @dominiklohmann in #1132.

A new key ‘meta-index-bytes’ appears in the status output generated by vast status --detailed.

By @lava in #1193.

The query language now supports models. Models combine a list of concepts into a semantic unit that can be fulfiled by an event. If the type of an event contains a field for every concept in a model. Turn to the documentation for more information.

By @tobim in #1185.

The zeek export format now strips off the prefix zeek. to ensure full compatibility with regular Zeek output. For all non-Zeek types, the prefix remains intact.

By @mavam in #1205.

VAST now processes the schema directory recursively, as opposed to stopping at nested directories.

By @mavam in #1154.

VAST does not produce metrics by default any more. The option --disable-metrics has been renamed to --enable-metrics accordingly.

By @tobim in #1137.

The Suricata schemas received an overhaul: there now exist vlan and in_iface fields in all types. In addition, VAST ships with new types for ikev2, nfs, snmp, tftp, rdp, sip and dcerpc. The tls type gets support for the additional sni and session_resumed fields.

By @satta in #1176.

Installed schema definitions now reside in <datadir>/vast/schema/types, taxonomy definitions in <datadir>/vast/schema/taxonomy, and concept definitions in <datadir/vast/schema/concepts, as opposed to them all being in the schema directory directly. When overriding an existing installation, you may have to delete the old schema definitions by hand.

By @dominiklohmann in #1194.

Set fallback port for underspecified endpoints

Section titled “Set fallback port for underspecified endpoints”

VAST now listens on port 42000 instead of letting the operating system choose the port if the option vast.endpoint specifies an endpoint without a port. To restore the old behavior, set the port to 0 explicitly.

By @dominiklohmann in #1170.

The build configuration of VAST received a major overhaul. Inclusion of libvast in other procects via add_subdirectory(path/to/vast) is now easily possible. The names of all build options were aligned, and the new build summary shows all available options.

By @dominiklohmann in #1175.

Replace PID file if process does not exist

Section titled “Replace PID file if process does not exist”

VAST no longer requires you to manually remove a stale PID file from a no-longer running vast process. Instead, VAST prints a warning and overwrites the old PID file.

By @tobim in #1128.

The on-disk format for table slices now supports versioning of table slice encodings. This breaking change makes it so that adding further encodings or adding new versions of existing encodings is possible without breaking again in the future.

By @dominiklohmann in #1143.

The splunk-to-vast script has a new name: taxonomize. The script now also generates taxonomy declarations for Azure Sentinel.

By @mavam in #1134.

The port type is no longer a first-class type. The new way to represent transport-layer ports relies on count instead. In the schema, VAST ships with a new alias type port = count to keep existing schema definitions in tact. However, this is a breaking change because the on-disk format and Arrow data representation changed. Queries with :port type extractors no longer work. Similarly, the syntax 53/udp no longer exists; use count syntax 53 instead. Since most port occurrences do not carry a known transport-layer type, and the type information exists typically in a separate field, removing port as native type streamlines the data model.

By @mavam in #1187.

Archive segments no longer include an additional, unnecessary version identifier. We took the opportunity to clean this up bundled with the other recent breaking changes.

By @dominiklohmann in #1168.

CAF-encoded table slices no longer exist. As such, the option vast.import.batch-encoding now only supports arrow and msgpack as arguments.

By @dominiklohmann in #1142.

Increase the default segment size to 1 GiB

Section titled “Increase the default segment size to 1 GiB”

The default segment size in the archive is now 1 GiB. This reduces fragmentation of the archive meta data and speeds up VAST startup time.

By @mavam in #1166.

The output of vast status --detailed now contains informations about runnings sinks, e.g., vast export <format> <query> processes.

By @dominiklohmann in #1155.

Send correct message to index when dropping further results

Section titled “Send correct message to index when dropping further results”

The index now correctly drops further results when queries finish early, thus improving the performance of queries for a limited number of events.

By @lava in #1209.

Error when specified config file does not exist

Section titled “Error when specified config file does not exist”

VAST no longer starts if the specified config file does not exist.

By @dominiklohmann in #1147.

The summary log message of vast export now contains the correct number of candidate events.

By @tobim in #1228.

The index no longer causes exporters to deadlock when the meta index produces false positives.

By @tobim in #1225.

The vast.yaml.example contained syntax errors. The example config file now works again.

By @mavam in #1145.

Fix loading and dumping of composed concepts

Section titled “Fix loading and dumping of composed concepts”

Concepts that reference other concepts are now loaded correctly from their definition.

By @tobim in #1236.

Detect and handle breaking changes in schemas

Section titled “Detect and handle breaking changes in schemas”

The type registry now detects and handles breaking changes in schemas, e.g., when a field type changes or a field is dropped from record.

By @dominiklohmann in #1195.

Fix a hang when trying to process an invalid query

Section titled “Fix a hang when trying to process an invalid query”

VAST no longer blocks when an invalid query operation is issued.

By @tobim in #1189.

vast import no longer stalls when it doesn’t receive any data for more than 10 seconds.

By @dominiklohmann in #1136.

Don’t collect status from sources and sinks

Section titled “Don’t collect status from sources and sinks”

The vast status command does not collect status information from sources and sinks any longer. They were often too busy to respond, leading to a long delay before the command completed.

By @tobim in #1234.

Switch index behavior when running out of workers

Section titled “Switch index behavior when running out of workers”

The index no longer crashes when too many parallel queries are running.

By @dominiklohmann in #1210.

Last updated: