Releases: PUNCH-Cyber/stoq
Releases · PUNCH-Cyber/stoq
v3.0.1
Added
- Add
getjson()function to allow plugins to use valid json strings are configuration
options (@ytreister, #144)
Changed
- Fix stoq command line to properly parsed
--plugin-optsand--request-source
arguments that contain=or:characters - Ensure
always_dispatchinstoq.cfgleveragesgetlist()whenStoq()is
is instantiated. (#149) - Multiple fixes and updates to Dockerfile
v3.0.0
Added
- Support for asyncio within the framework and plugins
- Better type checking support
self.logmay be leveraged from within all plugin classes- Add new
Error()class for standardizing errors from stoQ and plugins
Error()will track plugin name, error message, and payload_id (optional) - Add configuration properties from
[Core]and[Documentation]to each plugin object when loaded PayloadMetanow has ashould_scanboolean.
Allows payloads to be logged and archived, but not scanned by worker plugin.Payloadis now updated as results are completed.
Results from completed scans will be available to other plugins instantlyRequest()class is passed to all dispatchers, workers, and archiver plugins.
TheRequestobject contains all payloads, request metadata, results, and errors from
all other completed plugins. This will allow for all neccessary plugins to have a full
understanding of the current state of the completeRequest.WorkerPlugins now have a configuration option ofrequired_workers.
This allows for chained worker dependencies. Ifrequired_workersis defined, the
parent plugin will not be run until all required plugins are completed successfully. The
parent plugin may then use results from other completed plugins for their respective
scanning tasks.- Duplicate extracted payloads are no longer simply skipped, they are appended to
Payload.results[].extracted_byandPayload.results[].extracted_from - Add
StoqConfigParsertostoq.helpersto extend options forStoqand plugin configurations. - Parallelization is performed across all of the plugins that can run in a given round,
instead of parallelizing across all of the plugins to perform on a given payload (#147) - Ensure
plugin_nameis set to the name of the plugin class in caseNameis not defined in
the plugin's configuration.
Changed
PayloadResultsis now an object ofPayload.results, rather than an independent object- Most objects have been removed from
Payloadand are now availabe inPayload.results,
namelyextracted_by,extracted_from,payload_id,size,payload_meta Payload.plugins_runmoved toPayloadResults.plugins_runsand is now aDict[str, List[str]]
rather thanDict[str, List[List[str]]]PayloadResults.workersis now aDict[str, Dict]rather thanList[Dict[str, Dict]]PayloadMetais now an object ofPayloadResults.payload_metaPayloadResults.extracted_byis now aList[str]rather thanstrPayloadResults.extracted_fromis now aList[str]rather thanstr- Dispatchers run on each payload every round, instead of once per payload. This allows
the dispatcher to take advantage of the request state model. (#147) - Worker plugins can specify additional plugins to run on the payload they scan, effectively giving them dispatch capability.
With YARA, for example, this allows us to directly scan with YARA and dispatch
to other plugins by running YARA once. Otherwise, we would run YARA as a dispatcher,
and then immediately run YARA again as a worker plugin. (#147) - Archivers run at the very end along with connectors and decorators because we no
longer scan a payload to completion at once. (#147) - The default value for max_recursion has increased because the average number of
worker rounds taken to complete a scan is expected to increase. (#147)
Deprecated
- DeepDispatcher plugin class has been removed
Payload.plugins_runhas been removed in favor ofPayloadResults.plugins_run)Payload.worker_resultshas been removed in favor ofPayloadResults.workersRequestMetais no longer passed to plugins, in favor of theRequestobjectplugins_optshas been removed from plugin__init__function. All plugin configuration options
are only available inself.config
v3.0.0b3
Added
- Ensure
plugin_nameis set to the name of the plugin class in caseNameis not defined in the plugin's configuration.
Changed
- Updated Dockerfile:
- exiftool updated to 11.86
- triddefs installed to trid plugin path
- stoq-framework version to 3.0.0b3
- Set
provider_consumersto2to avoid issues with provider timeouts - Documentation updates
v3.0.0b2
Added
- Support for asyncio within the framework and plugins
- Better type checking support
self.logmay be leveraged from within all plugin classes- Add new
Error()class for standardizing errors from stoQ and plugins
Error()will track plugin name, error message, and payload_id (optional) - Add configuration properties from
[Core]and[Documentation]to each plugin object when loaded PayloadMetanow has ashould_scanboolean.
Allows payloads to be logged and archived, but not scanned by worker plugin.Payloadis now updated as results are completed.
Results from completed scans will be available to other plugins instantlyRequest()class is passed to all dispatchers, workers, and archiver plugins.
TheRequestobject contains all payloads, request metadata, results, and errors from
all other completed plugins. This will allow for all neccessary plugins to have a full
understanding of the current state of the completeRequest.WorkerPlugins now have a configuration option ofrequired_workers.
This allows for chained worker dependencies. Ifrequired_workersis defined, the
parent plugin will not be run until all required plugins are completed successfully. The
parent plugin may then use results from other completed plugins for their respective
scanning tasks.- Duplicate extracted payloads are no longer simply skipped, they are appended to
Payload.results[].extracted_byandPayload.results[].extracted_from - Add
StoqConfigParsertostoq.helpersto extend options forStoqand plugin configurations. - Parallelization is performed across all of the plugins that can run in a given round,
instead of parallelizing across all of the plugins to perform on a given payload (#147)
Changed
PayloadResultsis now an object ofPayload.results, rather than an independent object- Most objects have been removed from
Payloadand are now availabe inPayload.results,
namelyextracted_by,extracted_from,payload_id,size,payload_meta Payload.plugins_runmoved toPayloadResults.plugins_runsand is now aDict[str, List[str]]
rather thanDict[str, List[List[str]]]PayloadResults.workersis now aDict[str, Dict]rather thanList[Dict[str, Dict]]PayloadMetais now an object ofPayloadResults.payload_metaPayloadResults.extracted_byis now aList[str]rather thanstrPayloadResults.extracted_fromis now aList[str]rather thanstr- Dispatchers run on each payload every round, instead of once per payload. This allows
the dispatcher to take advantage of the request state model. (#147) - Worker plugins can specify additional plugins to run on the payload they scan, effectively giving them dispatch capability.
With YARA, for example, this allows us to directly scan with YARA and dispatch
to other plugins by running YARA once. Otherwise, we would run YARA as a dispatcher,
and then immediately run YARA again as a worker plugin. (#147) - Archivers run at the very end along with connectors and decorators because we no
longer scan a payload to completion at once. (#147) - The default value for max_recursion has increased because the average number of
worker rounds taken to complete a scan is expected to increase. (#147)
Deprecated
- DeepDispatcher plugin class has been removed
Payload.plugins_runhas been removed in favor ofPayloadResults.plugins_run)Payload.worker_resultshas been removed in favor ofPayloadResults.workersRequestMetais no longer passed to plugins, in favor of theRequestobjectplugins_optshas been removed from plugin__init__function. All plugin configuration options
are only available inself.config
v2.0.7
Changed
- Fix plugin requirements path when installing from Github
v2.0.6
Changed
- Fix issue where deep dispatchers defined from the CLI were not passed to
Stoq() - Update URL for plugins to include v2 branch when using
--github
v2.0.5
Added
- Provide console output if stoQ configuration file does not exist (Thanks for feedback @jakubgs!)
- Add command line option
--config-fileto define stoQ configuration file - Add command line option
--log-levelto allow for setting of the log level - Documentation for simplified method of defining plugin options within
__init__
Changed
- Raise StoqPluginException if installing a plugin that is already installed
- Display
plugin_pathwhen plugin is successfully installed - Raise StoqPluginNotFound when attempting to load non-existent or invalid plugin
v2.0.4
v2.0.3
Added
- Allow
--plugin-dirfrom command line to force one or more plugin directories - Provide better logging when a plugin is installed from github as a non-root user outside of a venv
- Gracefully handle exceptions in
ConnectorPlugins
Changed
- Improve handling of plugin configuration options. Plugin options can now also be in stoq.cfg. (Thanks for feedback @chemberger!)
- Set default precendence for plugin configuration options to be 1)
plugin_optswhen instantiatingStoq, 2)stoq.cfg, 3) Plugin config file (Thanks for feedback @chemberger!) - Make formatted exceptions more legible in results
v2.0.2
Changed
- Fix erroneous error from being displayed when installing or listing plugins
- Fix plugin install if requirements.txt does not exist
- Documentation update for installation (@chemberger)