Skip to content

Releases: llnl/Surfactant

v0.0.0rc16

14 Nov 09:33
d238240

Choose a tag to compare

This release is the first to include the newly released CyTRICS Schema v1.0.1, previously only alluded to by the output Surfactant produced. It also includes fixes for a silent crash on files with permission errors, is able to handle more complex file content patterns from retire.js and emba data sources, and updates documentation in a few places.

What's Changed

  • feat: add CyTRICS Schema v1.0.1 by @nightlark in #500
  • feat: Enable more complex regexes to be parsed by @nightlark in #539
  • feat: add SBOM vis context menu to pin and delete nodes by @JosephHAtWork in #516
  • fix: silent crash on files with permission errors by @JosephHAtWork in #513
  • docs: add replace_dst function docstring by @CoWeAtWork in #530
  • docs: Update elf_relationship.py docstrings by @CoWeAtWork in #530
  • docs: update dapper dataset install instructions by @nightlark in #521
  • ci: Add workflow for publishing plugins to PyPI with trusted publisher authentication by @Copilot in #540
  • Add Copilot instructions for repository configuration by @Copilot in #533
  • build(deps): bump cyclonedx-python-lib from 11.1.0 to 11.2.0 by @dependabot[bot] in #518
  • build(deps): bump cyclonedx-python-lib from 11.2.0 to 11.4.0 by @dependabot[bot] in #524
  • build(deps): bump cyclonedx-python-lib from 11.4.0 to 11.5.0 by @dependabot[bot] in #528
  • build(deps): bump python-msi from 0.0.0a2 to 0.0.0a3 by @dependabot[bot] in #525
  • build(deps): bump lief from 0.17.0 to 0.17.1 by @dependabot[bot] in #522

New Contributors

  • @CoWeAtWork made their first contribution in #520
  • @Copilot made their first contribution in #533

Full Changelog: v0.0.0rc15...v0.0.0rc16

v0.0.0rc15

14 Oct 19:24
7507de2

Choose a tag to compare

This release fixes several bugs including an issue with Java class files being misidentified as Mach-O files, parsing pe files with bad headers, and a crash due to lief changing the format of a data type they return. Several new features of note are the addition of a tab in the TUI for changing plugin settings, and the initial versions of the SBOM visualization plugin, and the DAPper plugin which leverages the DAPper datasets to identify potential packages that could have installed a given file.

What's Changed

New Contributors

Full Changelog: v0.0.0rc14...v0.0.0rc15

BlackHat USA 2025 Demo Bugfix Release

06 Aug 14:49
115415e

Choose a tag to compare

13 was an unlucky number! But actually, there were two pretty major bugs in the previous release (one of which was uncovered by fixing the first bug). The grype plugin issue was just blocking CI tests.

What's Changed

  • fix: missing section in grype plugin pyproject.toml by @nightlark in #473
  • fix: id magic returning empty list blocked other id plugins by @nightlark in #472
  • fix: ensure infoextractor plugins get an empty list for the ftype instead of None by @nightlark in #472
  • build(deps): update textual requirement from ==4.* to ==5.* by @dependabot[bot] in #465

Full Changelog: v0.0.0rc13...v0.0.0rc14

BlackHat USA 2025 Demo Release

01 Aug 20:24
0f420c3

Choose a tag to compare

This release updates the minimum required Python version to 3.9, fixes some crashes, adds a number of new features including support for extracting metadata from RPM packages, along with the following BREAKING CHANGES:

  • dropped support for Python 3.8
  • the config_tui subcommand has been removed; its functionality has been included as part of the tui subcommand
  • the createconfig subcommand has been removed; the tui provides the ability to create and modify context files in a more user friendly way
  • specimen config has been renamed to specimen context: the special config: prefix has been changed to context:, and the terminology has been updated in several other places

What's Changed

  • chore!: drop support for obsolete Python 3.8 by @nightlark in #441
  • fix!: remove deprecated setup.py support for old pip versions by @nightlark in #440
  • ci: add concurrency groups to GitHub Actions workflows by @willis89pr in #442
  • feat: Added RPM Package Recognition by @matthewkelley22 in #443
  • refactor: relationships to use an internal graph representation by @willis89pr in #433
  • fix: add check before old SBOM relationship UUID node deletion by @JosephHAtWork in #449
  • fix: TUI context config file output install_prefix instead of installPrefix by @KendallHarterAtWork in #458
  • ci: add regression test for all samples in tests/data by @WorkingRobot in #445
  • feat: change filetype from type id plugins from str to list[str] for polyglot detection by @wangmot in #434
  • fix: crash when dnfile object returned is missing expected attributes by @wangmot in #463
  • feat: RPM Package Metadata Extraction by @matthewkelley22 in #456
  • ci: fix regression test non-deterministic output and commenting on PRs from forks by @WorkingRobot in #466
  • refactor!: rename specimen config to specimen context by @nightlark in #467
  • feat!: remove config_tui subcommand, replaced by tui subcommand by @nightlark in #468
  • feat!: remove createconfig subcommand, superceded by TUI for modifying context files by @nightlark in #469
  • feat: allow extraction persistence and cache extractions of unsuccessful runs by @WorkingRobot in #457
  • build(deps): bump cyclonedx-python-lib from 10.3.0 to 10.4.1 by @dependabot[bot] in #453
  • build(deps): bump cyclonedx-python-lib from 10.4.1 to 11.0.0 by @dependabot[bot] in #461
  • build(deps): update textual requirement from ==3.* to >=3,<5 by @dependabot[bot] in #454
  • build(deps): update dnfile requirement from ==0.15.* to ==0.16.* by @dependabot[bot] in #455

New Contributors

Full Changelog: v0.0.0rc12...v0.0.0rc13

Final release supporting Python 3.8

30 Jun 20:02
7d44c67

Choose a tag to compare

This is the final release on PyPI that will support Python 3.8 -- after this, the minimum version of Python will be bumped up to 3.9+

Other notable changes in this release include:

  • Pattern databases can be automatically updated independent of Surfactant releases (run surfactant plugin update-db --all)
  • Support for decompressing several file types including various tar archives, rar files (via unrar), and MSI installers
  • Support for getting info from U-Boot/uImage file headers
  • Improved testing of optional plugins
  • Fixed several crashes
  • Made the core Surfactant package pure Python by making a dependency optional that had resulted in a transitive dependency on a compiled library

BREAKING CHANGES

  • The web ui subcommand has been removed; use the tui (terminal UI) instead, which provides a better user experience than the web UI was able to
  • jar file info gathering support now requires installing the "java" extra dependencies (pip install surfactant[java])

What's Changed

New Contributors

Full Changelog: v0.0.0rc11...v0.0.0rc12

Getting ready for v0!

25 Feb 18:21
9e0ff87

Choose a tag to compare

If you encounter issues updating Surfactant due to dependencies, try upgrading the dependencies in your virtual environment with the --upgrade --force-reinstall pip options.

BREAKING CHANGE

  • Including all files (for the given extractPaths) in the SBOM is now the default behavior, even if Surfactant doesn't recognize the file type. The include all files options have therefore been removed, and replaced with an omit unrecognized types option. To revert to the old behavior the --omit_unrecognized_types command line argument for a single run of Surfactant, or set the core.omit_unrecognized_types surfactant config option to true to use the old behavior for all Surfactant runs. In specimen configuration files, entries now support omitUnrecognizedTypes to apply the old behavior to only a particular group of extractPaths.

What's Changed

New Contributors

Full Changelog: v0.0.0rc10...v0.0.0rc11

Update for SecTor 2024

23 Oct 11:20

Choose a tag to compare

Updated release for SecTor 2024 demo, with a list of the more interesting changes since BHUSA release below. Mach-O file info extraction is the big one -- it's an optional feature that can be installed with pip install surfactant[macho] (note: uses lief as a dependency, which only releases binary wheels for currently supported Python versions... older versions of lief don't retroactively get compiled wheels for new Python versions either).

What's Changed

New Contributors

Full Changelog: v0.0.0rc8...v0.0.0rc10

Updated release for BH USA demo

07 Aug 16:35
d98377e

Choose a tag to compare

v0.0.0rc8

Add support for user config file for plugin options (#231)