Kali Linux

Cloudsploit : Cloud Security Posture Management (CSPM)

CloudSploit by Aqua is an open-source project designed to allow detection of security risks in cloud infrastructure accounts, including: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), and GitHub. These scripts are designed to return a series of potential misconfigurations and security risks.

Deployment Options

CloudSploit is available in two deployment options:

Self-Hosted

Follow the instructions below to deploy the open-source version of CloudSploit on your machine in just a few simple steps.

Hosted at Aqua Wave

A commercial version of CloudSploit hosted at Aqua Wave. Try Aqua Wave today!

Installation

Ensure that NodeJS is installed. If not, install it from here.

$ git clone git@github.com:cloudsploit/scans.git
$ npm install

Configuration

CloudSploit requires read-only permission to your cloud account. Follow the guides below to provision this access:

  • Amazon Web Services
  • Microsoft Azure
  • Google Cloud Platform
  • Oracle Cloud Infrastructure

For AWS, you can run CloudSploit directly and it will detect credentials using the default AWS credential chain.

CloudSploit Config File

The CloudSploit config file allows you to pass cloud provider credentials by:

  1. A JSON file on your file system
  2. Environment variables
  3. Hard-coding (not recommended)

Start by copying the example config file:

$ cp config_example.js config.js

Edit the config file by uncommenting the relevant sections for the cloud provider you are testing. Each cloud has both a credential_file option, as well as inline options. For example:

azure: {
// OPTION 1: If using a credential JSON file, enter the path below
// credential_file: ‘/path/to/file.json’,
// OPTION 2: If using hard-coded credentials, enter them below
// application_id: process.env.AZURE_APPLICATION_ID || ”,
// key_value: process.env.AZURE_KEY_VALUE || ”,
// directory_id: process.env.AZURE_DIRECTORY_ID || ”,
// subscription_id: process.env.AZURE_SUBSCRIPTION_ID || ”
}

Credential Files

If you use the credential_file option, point to a file in your file system that follows the correct format for the cloud you are using.

AWS

{
“accessKeyId”: “YOURACCESSKEY”,
“secretAccessKey”: “YOURSECRETKEY”
}

Azure

{
“ApplicationID”: “YOURAZUREAPPLICATIONID”,
“KeyValue”: “YOURAZUREKEYVALUE”,
“DirectoryID”: “YOURAZUREDIRECTORYID”,
“SubscriptionID”: “YOURAZURESUBSCRIPTIONID”
}

GCP

Note: For GCP, you generate a JSON file directly from the GCP console, which you should not edit.

{
“type”: “service_account”,
“project”: “GCPPROJECTNAME”,
“client_email”: “GCPCLIENTEMAIL”,
“private_key”: “GCPPRIVATEKEY”
}

Oracle OCI

{
“tenancyId”: “YOURORACLETENANCYID”,
“compartmentId”: “YOURORACLECOMPARTMENTID”,
“userId”: “YOURORACLEUSERID”,
“keyFingerprint”: “YOURORACLEKEYFINGERPRINT”,
“keyValue”: “YOURORACLEKEYVALUE”,
}

Environment Variables

CloudSploit supports passing environment variables, but you must first uncomment the section of your config.js file relevant to the cloud provider being scanned.

You can then pass the variables listed in each section. For example, for AWS:

{
access_key: process.env.AWS_ACCESS_KEY_ID || ”,
secret_access_key: process.env.AWS_SECRET_ACCESS_KEY || ”,
session_token: process.env.AWS_SESSION_TOKEN || ”,
}

Running

To run a standard scan, showing all outputs and results, simply run:

$ ./index.js

CLI Options

CloudSploit supports many options to customize the run time. Some popular options include:

  • AWS GovCloud support: --govcloud
  • AWS China support: --china
  • Save the raw cloud provider response data: --collection=file.json
  • Ignore passing (OK) results: --ignore-ok
  • Exit with a non-zero code if non-passing results are found: --exit-code
    • This is a good option for CI/CD systems
  • Change the output from a table to raw text: --console=text

See Output Formats below for more output options. Click for a full list of options

Compliance

CloudSploit supports mapping of its plugins to particular compliance policies. To run the compliance scan, use the --compliance flag. For example:

$ ./index.js –compliance=hipaa
$ ./index.js –compliance=pci

Multiple compliance modes can be run at the same time:

$ ./index.js –compliance=cis1 –compliance=cis2

Output Formats

CloudSploit supports output in several formats for consumption by other tools. If you do not specify otherwise, CloudSploit writes output to standard output (the console) as a table.

Note: You can pass multiple output formats and combine options for further customization. For example:

#Print a table to the console and save a CSV file
$ ./index.js –csv=file.csv –console=table
#Print text to the console and save a JSON and JUnit file while ignoring passing results
$ ./index.js –json=file.json –junit=file.xml –console=text –ignore-ok

Console Output

By default, CloudSploit results are printed to the console in a table format (with colors). You can override this and use plain text instead, by running:

$ ./index.js –console=text

Alternatively, you can suppress the console output entirely by running:

$ ./index.js –console=none

Ignoring Passing Results

You can ignore results from output that return an OK status by passing a --ignore-ok commandline argument.

CSV

$ ./index.js –csv=file.csv

Suppressions

Results can be suppressed by passing the --suppress flag (multiple options are supported) with the following format:

–suppress pluginId:region:resourceId

For example:

#Suppress all results for the acmValidation plugin
$ ./index.js –suppress acmValidation::
#Suppress all us-east-1 region results
$ ./index.js –suppress :us-east-1:
#Suppress all results matching the regex “certificate/*” in all regions for all plugins
$ ./index.js –suppress *::certificate/

Architecture

CloudSploit works in two phases. First, it queries the cloud infrastructure APIs for various metadata about your account, namely the “collection” phase. Once all the necessary data is collected, the result is passed to the “scanning” phase. The scan uses the collected data to search for potential misconfigurations, risks, and other security issues, which are the resulting output.

R K

Recent Posts

Shadow-rs : Harnessing Rust’s Power For Kernel-Level Security Research

shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…

1 week ago

ExecutePeFromPngViaLNK – Advanced Execution Of Embedded PE Files via PNG And LNK

Extract and execute a PE embedded within a PNG file using an LNK file. The…

2 weeks ago

Red Team Certification – A Comprehensive Guide To Advancing In Cybersecurity Operations

Embark on the journey of becoming a certified Red Team professional with our definitive guide.…

3 weeks ago

CVE-2024-5836 / CVE-2024-6778 : Chromium Sandbox Escape via Extension Exploits

This repository contains proof of concept exploits for CVE-2024-5836 and CVE-2024-6778, which are vulnerabilities within…

3 weeks ago

Rust BOFs – Unlocking New Potentials In Cobalt Strike

This took me like 4 days (+2 days for an update), but I got it…

3 weeks ago

MaLDAPtive – Pioneering LDAP SearchFilter Parsing And Security Framework

MaLDAPtive is a framework for LDAP SearchFilter parsing, obfuscation, deobfuscation and detection. Its foundation is…

3 weeks ago