Document toolboxDocument toolbox

Tenable.io collector

Overview

Managed in the cloud and powered by Nessus technology, http://Tenable.io provides the comprehensive vulnerability coverage with the ability to predict which security issues to remediate first. It’s a complete end-to-end vulnerability management solution. Get a risk-based view of your entire attack surface—from IT to cloud to containers—so you can quickly identify, investigate and prioritize vulnerabilities.

1.x to 2.x migrating guide

If you are migrating from v1.x to v2.x, you can find a complete guide in this article.

Devo collector features

Feature

Details

Feature

Details

Allow parallel downloading (multipod)

  • not allowed

Running environments

  • collector server

  • on-premise

Populated Devo events

  • table

Flattening preprocessing

  • no

Data sources

This collector extracts data from multiple sources within http://Tenable.io , enabling comprehensive vulnerability and asset management. Below is a detailed description of the data sources, their purpose, endpoints, collector service names, associated Devo tables, and the release version when they became available.

Data source

Description

API endpoint

Collector service name

Devo table

Available from release

Data source

Description

API endpoint

Collector service name

Devo table

Available from release

Agents

Nessus Agents collect vulnerability, compliance, and system data from hosts and report it back to http://Tenable.io .

PyTenable - Agents

agents

vuln.tenable.io.agents

v1.0.0

Assets

Represents network entities such as servers, desktops, mobile devices, and cloud instances. Helps identify and mitigate potential security risks.

PyTenable - Assets

export_assets

vuln.tenable.io.assets

v1.2.0

Audit Log

Provides visibility into actions taken in the http://Tenable.io account, including user actions, timestamps, and affected entities.

PyTenable - Audit Logs

audit_log

vuln.tenable.io.audit_log

v1.0.0

Plugins

Programs written in NASL (Nessus Attack Scripting Language) for detecting vulnerabilities. Includes information about vulnerabilities and their remediation.

PyTenable - Plugins

plugins

vuln.tenable.io.plugins

v1.0.0

Scanners

Configuration and linking of Nessus, NNM, and cloud scanners for use in http://Tenable.io .

PyTenable - Scanners

scanners

vuln.tenable.io.scanners

v1.0.0

Scans

Retrieves information about vulnerability scans conducted on the network.

PyTenable - Scans

scans

vuln.tenable.io.scans

v1.0.0

Vulnerabilities

Centralized data for vulnerabilities detected by Tenable and third-party scans.

PyTenable - Vulnerabilities

export_vulnerabilities

vuln.tenable.io.vulnerabilities

v1.0.0

WAS Vulnerabilities

Returns vulnerabilities detected by Tenable Web App Scanning API v2.

/vulnerabilities/search

was_vulnerabilities

vuln.tenable.io.was_vulnerability

v2.0.0

For more information on how the events are parsed, visit our page ← LINK TO THE PARSER ARTICLE IF EXISTS

Flattening preprocessing

This collector does not implement flattening

Vendor setup

To set up access to the http://Tenable.io API and configure the collector, follow the steps below.

Obtaining API Keys

Verify Account Permissions

Ensure you have a valid user account with appropriate permissions by logging into http://Tenable.io .

Generate API Keys

  1. Generate the access_key and secret_key for your account. For more information, refer to Generate API Keys in the http://Tenable.io Vulnerability Management User Guide.

  2. http://Tenable.io generates a unique set of API keys for each user account.

    • These keys allow your application to authenticate without creating a session.

Add API Keys to Requests

Include the X-ApiKeys header element in your HTTP request messages. Example:

X-ApiKeys: accessKey=<your_access_key>; secretKey=<your_secret_key>

Authorization Permissions

Basic Permissions

Users with the Basic role (Value: 16) can safely view and configure scan results.

Administrator Permissions

To request Audit_log data, you must have the Administrator role (Value: 64).

Security Recommendations

  • Treat your access_key and secret_key like passwords.

  • Do not share your keys with unauthorized individuals.

  • Store the keys securely in an environment variable or a secrets manager.

  • Rotate your API keys periodically to enhance security.

Minimum configuration required for basic pulling

Although this collector supports advanced configuration, the fields required to retrieve data with basic configuration are defined below.

This minimum configuration refers exclusively to those specific parameters of this integration. There are more required parameters related to the generic behavior of the collector. Check setting sections for details.

Setting

Details

Setting

Details

access_key

The access key is required to authenticate API requests.

secret_key

The secret key is required to securely sign API requests.

See the Accepted authentication methods section to verify what settings are required based on the desired authentication method.

Accepted authentication methods

The collector supports the following authentication method to connect to http://Tenable.io :

Authentication Method

Details

Authentication Method

Details

access_key/secret_key

The access_key serves as the user identifier, while the secret_key is used to securely sign API requests.

Run the collector

Once the data source is configured, you can either send us the required information if you want us to host and manage the collector for you (Cloud collector), or deploy and host the collector in your own machine using a Docker image (On-premise collector).

Collector services detail

This section is intended to explain how to proceed with specific actions for services.

Common services detail

Once the collector has been launched, it is important to check if the ingestion is performed in a proper way. To do so, go to the collector’s logs console.

This service has the following components:

Component

Description

Component

Description

Setup

The setup module is in charge of authenticating the service and managing the token expiration when needed.

Puller

The setup module is in charge of pulling the data in a organized way and delivering the events via SDK.

Setup output

A successful run has the following output messages for the setup module:

INFO InputProcess::MainThread -> TenableIoPullerSetup(tenable_io#13245,scanners#predefined) -> Starting thread WARNING InputProcess::TenableIoPullerSetup(tenable_io#13245,scanners#predefined) -> The token/header/authentication has not been created yet WARNING InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Waiting until setup will be executed INFO InputProcess::TenableIoPullerSetup(tenable_io#13245,scanners#predefined) -> Setup for module <TenableIoStatelessPuller> has been successfully executed

This collector has different security layers that detect both an invalid configuration and abnormal operation. This table will help you detect and resolve the most common errors.

Error Type

Error ID

Error Message

Cause

Solution

Error Type

Error ID

Error Message

Cause

Solution

InitVariablesError

1

The init_start_time: {start_time_in_utc_str} is not in the correct format: {datetime_forma}

Incorrect format for start_time_in_utc.

Ensure the start_time_in_utc is in the correct format (e.g., YYYY-MM-DD).

2

Invalid start_time_in_utc: {start_time_in_utc_str}. Must be a past date.

The provided start_time_in_utc is not a valid past date.

Verify that start_time_in_utc is set to a valid past date.

PullError

301

Response Content (not JSON)

The response from the server is not in the expected JSON format.

Check the response content and ensure it is properly formatted as JSON.

302

Error: {response.status_code} - {response.text}

The API response was an error.

Review the status code and message for more details on the failure.

SetupError

101

Unexpected error occurred: {e}

A general setup error occurred during initialization.

Inspect the setup process and correct any misconfigurations or issues.

ApiError

400

Bad Request (400): The request was invalid.

The API request was malformed or missing required parameters.

Verify the request parameters and ensure they match the API specifications.

401

Unauthorized (401): Access key or secret key is incorrect.

The access key or secret key is invalid.

Check that the correct access_key and secret_key are being used.

403

Forbidden (403): Access is forbidden, check permissions.

Insufficient permissions for the requested operation.

Ensure that the API user has the necessary permissions.

404

Not Found (404): The requested resource does not exist.

The resource requested could not be found.

Verify the resource ID or endpoint is correct.

429

Too Many Requests (429): Rate limit exceeded.

Too many requests were sent in a short period of time.

Review the rate limit and implement retry logic as needed.

500

Server Error (500): An internal server error occurred.

The server encountered an internal error while processing.

Retry the request or contact support if the issue persists.

410

Unhandled HTTP Error ({status_code}): {error}

An unhandled error occurred with a status code other than 400-500.

Investigate the error code and consult the API documentation for details.

PullError

313

Error during _request_job_creation. {e.cause}

An error occurred while creating the job.

Investigate the error in job creation and check the API documentation.

310

{export_type} job {job_uuid}: Error on Tenable API during job creation.

A failure occurred during the job creation process.

Check the job creation API request for issues.

311

{export_type} job {job_uuid}: Job creation was cancelled.

The job creation was manually or automatically cancelled.

Verify the job status and resolve any issues that caused cancellation.

Scanners service

Once the collector has been launched, it is important to check if the ingestion is performed in a proper way. To do so, go to the collector’s logs console.

This service has the following components:

Component

Description

Component

Description

Setup

The setup module is in charge of authenticating the service and managing the token expiration when needed.

Puller

The setup module is in charge of pulling the data in a organized way and delivering the events via SDK.

Puller output

A successful initial run has the following output messages for the puller module:

Note that the PrePull action is executed only one time before the first run of the Pull action.

INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) Starting the execution of pre_pull() INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Reading persisted data INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Data retrieved from the persistence: None WARNING InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Persistence will be overridden due to the retrieved state is empty INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Running the persistence upgrade steps INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Running the persistence corrections steps INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Running the persistence corrections steps WARNING InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> The persistence version value is <ZERO>, so no persistence will be allocated INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) Finalizing the execution of pre_pull() INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Starting data collection every 43200 seconds INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Pull Started INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> (Partial) Statistics for this pull cycle (@devo_pulling_id=1733390827964):Number of requests made: 2; Number of events received: 31; Number of duplicated events filtered out: 0; Number of events generated and sent: 31; Average of events per second: 48.412. INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Statistics for this pull cycle (@devo_pulling_id=1733390827964):Number of requests made: 2; Number of events received: 31; Number of duplicated events filtered out: 0; Number of events generated and sent: 31; Average of events per second: 48.276. INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> The data is up to date! INFO InputProcess::TenableIoStatelessPuller(tenable_io#13245,scanners#predefined) -> Data collection completed. Elapsed time: 0.656 seconds. Waiting for 43199.344 second(s) until the next one

After a successful collector’s execution (that is, no error logs found), you will see the following log message:

Scans service

Once the collector has been launched, it is important to check if the ingestion is performed in a proper way. To do so, go to the collector’s logs console.

This service has the following components:

Component

Description

Component

Description

Setup

The setup module is in charge of authenticating the service and managing the token expiration when needed.

Puller

The setup module is in charge of pulling the data in a organized way and delivering the events via SDK.

Puller output

A successful initial run has the following output messages for the puller module:

After a successful collector’s execution (that is, no error logs found), you will see the following log message:

Agents service

Once the collector has been launched, it is important to check if the ingestion is performed in a proper way. To do so, go to the collector’s logs console.

This service has the following components:

Component

Description

Component

Description

Setup

The setup module is in charge of authenticating the service and managing the token expiration when needed.

Puller

The setup module is in charge of pulling the data in a organized way and delivering the events via SDK.

Puller output

A successful initial run has the following output messages for the puller module:

After a successful collector’s execution (that is, no error logs found), you will see the following log message:

Audit log service

Plugins service

Export assets service

Export vulnerabilities service

Collector operations

This section is intended to explain how to proceed with specific operations of this collector.

Change log

Release

Released on

Release Type

Details

Recommendations

Release

Released on

Release Type

Details

Recommendations

v2.0.0

Nov 14, 2024

BUG FIX
IMPROVEMENT

Improvements:

  • A complete refactor of the code was implemented, streamlining services and enhancing overall performance. This new architecture improves maintainability and extensibility, ensuring a smoother experience in future updates.

Bug Fixing:

  • Significant improvements were made in memory handling, particularly in high-load services. By utilizing compression techniques, memory usage was optimized, reducing the risk of system lockups and boosting efficiency under heavy workloads.

Recommended version

v1.6.0

Oct 22, 2024

NEW FEATURE
IMPROVEMENT

New Features:

  • New service: was_vulnerabilities: Returns a list of vulnerabilities detected by Tenable Web App Scanning API v2 scans.

Improvements:

  • Update DC SDK from v1.12.1 to v1.13.1

Update

v1.4.0

Apr 12, 2024

IMPROVEMENT

Improvements:

  • Upgrade DC SDK to the latest version 1.11.1. Upgrade the Docker base image to 1.2.0.

Update

v1.3.0

Oct 13, 2023

NEW FEATURE
IMPROVEMENT

New Features:

  • Added new data source export_vulnerabilities as a new service.

Improvements:

  • Upgrade DC SDK to the latest version 1.9.2.

Update

v1.2.5

Apr 5, 2023

IMPROVEMENT

Improvements:

  • Upgrade DC SDK to the latest version 1.7.2.dev1 to avoid errors in the sender module. These errors made the collector restart constantly. Added a lock to enhance the sender object.

Update

v1.2.4

Apr 3, 2023

IMPROVEMENT

Improvements:

  • The export_assets service now cancels previous jobs (if any) and launches new jobs instead of waiting for all other jobs to finish. Upgrade DC SDK to the latest version 1.7.0.

Update

v1.2.3

Mar 27, 2023

BUG FIX
IMPROVEMENT

Bug Fixing:

  • Resolved a fix in the audit_log service, as it was sending duplicate events upon change of day.

Improvements:

  • Adjusted rate limits.

Update

v1.2.2

Mar 26, 2023

BUG FIX
IMPROVEMENT

Bug Fixing:

  • Fixed the audit_log service, which wasn't paginating through the available results and didn't send anything to Devo.

Improvements:

  • Avoided confusing ERROR logs, standardized statistic logs, and added rate limits.

Update

v1.2.0

Mar 22, 2023

NEW FEATURE
BUG FIX

New Features:

  • A new export_assets service has been created to allow massive data ingestion, enriched with vulnerabilities information.

Bug Fixing:

  • Resolved constant 500-level errors caused by the previous assets endpoint.

Update