• Stars
    star
    1,601
  • Rank 28,013 (Top 0.6 %)
  • Language
    Elixir
  • License
    Apache License 2.0
  • Created almost 7 years ago
  • Updated 17 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Security-focused static analysis for the Phoenix Framework

Sobelow

Module Version Hex Docs Total Download License Last Updated

Sobelow is a security-focused static analysis tool for Elixir & the Phoenix framework. For security researchers, it is a useful tool for getting a quick view of points-of-interest. For project maintainers, it can be used to prevent the introduction of a number of common vulnerabilities.

Currently Sobelow detects some types of the following security issues:

  • Insecure configuration
  • Known-vulnerable Dependencies
  • Cross-Site Scripting
  • SQL injection
  • Command injection
  • Code execution
  • Denial of Service
  • Directory traversal
  • Unsafe serialization

Potential vulnerabilities are flagged in different colors according to confidence in their insecurity. High confidence is red, medium confidence is yellow, and low confidence is green.

A finding is typically marked "low confidence" if it looks like a function could be used insecurely, but it cannot reliably be determined if the function accepts user-supplied input. i.e. If a finding is marked green, it may be critically insecure, but it will require greater manual validation.

Note: This project is in constant development, and additional vulnerabilities will be flagged as time goes on. If you encounter a bug, or would like to request additional features or security checks, please open an issue!

Table of Contents

Installation

To use Sobelow, you can add it to your application's dependencies.

def deps do
  [
    {:sobelow, "~> 0.13", only: [:dev, :test], runtime: false}
  ]
end

You can also install Sobelow globally by executing the following from the command line:

$ mix escript.install hex sobelow

To install from the master branch, rather than the latest release, the following command can be used:

$ mix escript.install github nccgroup/sobelow

To Use

After installation, the simplest way to scan a Phoenix project is to run the following from the project root:

$ mix sobelow

Options

Note: Any path arguments should be absolute paths, or relative to the application root.

  • --root or -r - Specify the application root directory. Accepts a path argument, e.g. ../my_project.

  • --verbose or -v - Print code snippets and additional finding details.

  • --ignore or -i - Ignore given finding types. Accepts a comma-separated list of module names, e.g. XSS.Raw,Traversal.

  • --ignore-files - Ignore files. Accepts a comma-separated list of file names, e.g. config/prod.exs.

  • --details or -d - Get finding-type details. Accepts a single module name, e.g. Config.CSRF.

  • --all-details - Get details of all finding-types.

  • --private - Skip update checks.

  • --router - Specify router location. This only needs to be used if the router location is non-standard. Accepts a path argument, e.g. my/strange/router.ex.

  • --exit - Return non-zero exit status at or above a confidence threshold of low, medium, or high. Defaults to false which returns a zero exit status

  • --threshold - Return findings at or above a confidence level of low (default), medium, or high.

  • --format or -f - Specify findings output format. Accepts a format, e.g. txt or json.

    Note that options such as --verbose will not work with the json format. All json formatted findings contain a type, file, and line key. Other keys may vary.

  • --quiet - Return a single line indicating number of findings. Otherwise, return no output if there are no findings.

  • --compact - Minimal, single-line findings with output colorised according to confidence.

  • --flycheck - Minimal, single-line findings that are compatible with flycheck-based tooling.

  • --save-config - Generates a configuration file based on command line options. See Configuration Files for more information.

  • --config - Run Sobelow with configuration file. See Configuration Files for more information.

  • --mark-skip-all - Mark all displayed findings as skippable.

  • --clear-skip - Clear configuration created by --mark-skip-all.

  • --skip - Ignore findings that have been marked for skipping. See False Positives for more information.

  • --version - Outputs the current version of Sobelow. This is useful for CI steps or integration with other tools like Salus.

Configuration Files

Sobelow allows users to save frequently used options in a configuration file. For example, if you find yourself constantly running:

$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low

You can use the --save-config flag to create your .sobelow-conf config file:

$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config

This command will create the .sobelow-conf file at the root of your application. You can edit this file directly to make changes.

You can also run the command without any options:

$ mix sobelow --save-config

when you first start out using this package - the generated configuration file will be populated with the default values for each option. (This helps in quickly incorporating this package into a pre-existing codebase.)

Now if you want to run Sobelow with the saved configuration, you can run Sobelow with the --config flag.

$ mix sobelow --config

False Positives

Sobelow favors over-reporting versus under-reporting. As such, you may find a number of false positives in a typical scan. These findings may be individually ignored by adding a # sobelow_skip comment, along with a list of modules, before the function definition.

# sobelow_skip ["Traversal"]
def vuln_func(...) do
  ...
end

When integrating Sobelow into a new project, there can be a large number of false positives. To mark all printed findings as false positives, run sobelow with the --mark-skip-all flag.

Once you have tagged the appropriate findings, run Sobelow with the --skip flag.

$ mix sobelow --skip

While # sobelow_skip comments can only mark function-level findings (and so cannot be used to skip configuration issues), the --mark-skip-all flag can be used to skip any finding type.

Modules

Findings categories are broken up into modules. These modules can then be used to either ignore classes of findings (via the ignore and skip options) or to get vulnerability details (via the details option).

This list, and other helpful information, can be found on the command line:

$ mix help sobelow

Umbrella Apps

In order to run Sobelow against all child apps within an umbrella app with a single command, you can add an alias for sobelow in your root mix.exs file:

defp aliases do
  [
    sobelow: ["cmd mix sobelow"]
  ]
end

If you wish to use configuration files in an umbrella app, create a .sobelow-conf in each child application and use the --config flag.

Updates

When scanning a project, Sobelow will occasionally check for updates, and will print an alert if a new version is available. Sobelow keeps track of the last update-check by creating a .sobelow file in the root of the scanned project.

If this functionality is not desired, the --private flag can be used with the scan.

More Repositories

1

ScoutSuite

Multi-Cloud Security Auditing Tool
Python
6,131
star
2

Scout2

Security auditing tool for AWS environments
Python
1,728
star
3

Winpayloads

Undetectable Windows Payload Generation
Python
1,519
star
4

demiguise

HTA encryption tool for RedTeams
Python
1,326
star
5

PMapper

A tool for quickly evaluating IAM permissions in AWS.
Python
1,279
star
6

house

A runtime mobile application analysis toolkit with a Web GUI, powered by Frida, written in Python.
JavaScript
1,278
star
7

redsnarf

RedSnarf is a pen-testing / red-teaming tool for Windows environments
PowerShell
1,182
star
8

featherduster

An automated, modular cryptanalysis tool; i.e., a Weapon of Math Destruction
Python
1,055
star
9

SocksOverRDP

Socks5/4/4a Proxy support for Remote Desktop Protocol / Terminal Services / Citrix / XenApp / XenDesktop
C++
990
star
10

singularity

A DNS rebinding attack framework.
JavaScript
962
star
11

exploit_mitigations

Knowledge base of exploit mitigations available across numerous operating systems, architectures and applications and versions.
812
star
12

AutoRepeater

Automated HTTP Request Repeating With Burp Suite
Java
742
star
13

fuzzowski

the Network Protocol Fuzzer that we will want to use.
Python
697
star
14

aws-inventory

Discover resources created in an AWS account.
Python
690
star
15

BurpSuiteHTTPSmuggler

A Burp Suite extension to help pentesters to bypass WAFs or test their effectiveness using a number of techniques
Java
654
star
16

Sniffle

A sniffer for Bluetooth 5 and 4.x LE
C
648
star
17

nmap-nse-vulnerability-scripts

NMAP Vulnerability Scanning Scripts
Lua
618
star
18

TriforceAFL

AFL/QEMU fuzzing with full-system emulation.
C
609
star
19

LoggerPlusPlus

Advanced Burp Suite Logging Extension
Java
598
star
20

nccfsas

Information released publicly by NCC Group's Full Spectrum Attack Simulation (FSAS) team.
C
598
star
21

sadcloud

A tool for standing up (and tearing down!) purposefully insecure cloud infrastructure
HCL
593
star
22

freddy

Automatically identify deserialisation issues in Java and .NET applications by using active and passive scans
Java
570
star
23

phantap

Phantom Tap (PhanTap) - an ‘invisible’ network tap aimed at red teams
C
550
star
24

tracy

A tool designed to assist with finding all sinks and sources of a web application and display these results in a digestible manner.
JavaScript
542
star
25

azucar

Security auditing tool for Azure environments
PowerShell
539
star
26

VCG

VisualCodeGrepper - Code security scanning tool.
Visual Basic .NET
506
star
27

Cyber-Defence

Information released publicly by NCC Group's Cyber Incident Response Team
Python
470
star
28

autochrome

This tool downloads, installs, and configures a shiny new copy of Chromium.
HTML
425
star
29

wssip

Application for capturing, modifying and sending custom WebSocket data from client to server and vice versa.
JavaScript
425
star
30

scrying

A tool for collecting RDP, web and VNC screenshots all in one place
Rust
413
star
31

blackboxprotobuf

Blackbox protobuf is a Burp Suite extension for decoding and modifying arbitrary protobuf messages without the protobuf type definition.
Python
380
star
32

autopwn

Specify targets and run sets of tools against them
Python
374
star
33

CrossSiteContentHijacking

Content hijacking proof-of-concept using Flash, PDF and Silverlight
HTML
372
star
34

Solitude

Solitude is a privacy analysis tool that enables anyone to conduct their own privacy investigations. Whether a curious novice or a more advanced researcher, Solitude makes the process of evaluating user privacy within an app accessible for everyone.
CSS
370
star
35

vlan-hopping---frogger

Easy 802.1Q VLAN Hopping
Shell
346
star
36

idahunt

idahunt is a framework to analyze binaries with IDA Pro and hunt for things in IDA Pro
Python
341
star
37

DriverBuddy

DriverBuddy is an IDA Python script to assist with the reverse engineering of Windows kernel drivers.
Python
331
star
38

shocker

A tool to find and exploit servers vulnerable to Shellshock
Python
330
star
39

WMIcmd

A command shell wrapper using only WMI for Microsoft Windows
C#
319
star
40

acCOMplice

Tools for discovery and abuse of COM hijacks
PowerShell
272
star
41

umap

The USB host security assessment tool
Python
265
star
42

keimpx

Check for valid credentials across a network over SMB
Python
260
star
43

SusanRTTI

Another RTTI Parsing IDA plugin
Python
258
star
44

metasploitavevasion

Metasploit AV Evasion Tool
Shell
257
star
45

UPnP-Pentest-Toolkit

UPnP Pentest Toolkit for Windows
C#
244
star
46

umap2

Umap2 is the second revision of NCC Group's python based USB host security assessment tool.
Python
240
star
47

G-Scout

Google Cloud Platform Security Tool
Python
231
star
48

GTFOBLookup

Offline command line lookup utility for GTFOBins (https://github.com/GTFOBins/GTFOBins.github.io), LOLBAS (https://github.com/LOLBAS-Project/LOLBAS), WADComs (https://wadcoms.github.io), and HijackLibs (https://hijacklibs.net/).
Python
228
star
49

asatools

Main repository to pull all NCC Group Cisco ASA-related tool projects.
Shell
220
star
50

cisco-SNMP-enumeration

Automated Cisco SNMP Enumeration, Brute Force, Configuration Download and Password Cracking
Shell
216
star
51

depthcharge

A U-Boot hacking toolkit for security researchers and tinkerers
Python
212
star
52

AWS-recipes

A number of Recipes for AWS
Python
195
star
53

thetick

A simple embedded Linux backdoor.
Python
194
star
54

kube-auto-analyzer

Kubernetes Auto Analyzer
HTML
192
star
55

TPMGenie

TPM Genie is an I2C bus interposer for discrete Trusted Platform Modules
C++
189
star
56

BinProxy

BinProxy is a proxy for arbitrary TCP connections. You can define custom message formats using the BinData gem.
Ruby
174
star
57

DetectWindowsCopyOnWriteForAPI

Enumerate various traits from Windows processes as an aid to threat hunting
C++
168
star
58

BKScan

BlueKeep scanner supporting NLA
Shell
167
star
59

pybeacon

A collection of scripts for dealing with Cobalt Strike beacons in Python
Python
167
star
60

TriforceLinuxSyscallFuzzer

A linux system call fuzzer using TriforceAFL
C
166
star
61

typofinder

A finder of domain typos showing country of IP address
Python
166
star
62

BLESuite

BLESuite is a Python package that provides an easier way to test Bluetooth Low Energy (BLE) device
Python
165
star
63

tcpprox

A small command-line TCP proxy utility written in Python
Python
156
star
64

LazyDroid

bash script to facilitate some aspects of an Android application assessment
Shell
151
star
65

chuckle

An automated SMB relay exploitation script.
Shell
151
star
66

whalescan

Whalescan is a vulnerability scanner for Windows containers, which performs several benchmark checks, as well as checking for CVEs/vulnerable packages on the container
Python
143
star
67

requests-racer

Small Python library that makes it easy to exploit race conditions in web apps with Requests.
Python
143
star
68

libslub

Python
143
star
69

CollaboratorPlusPlus

Java
140
star
70

gitpwnd

GitPwnd is a network penetration tool that lets you use a git repo for command and control of compromised machines
Python
139
star
71

Carnivore

Tool for assessing on-premises Microsoft servers authentication such as ADFS, Skype, Exchange, and RDWeb
C#
139
star
72

Change-Lockscreen

Offensive tool to trigger network authentications as SYSTEM
C#
134
star
73

Decoder-Improved

Improved decoder for Burp Suite
Java
134
star
74

Wubes

Qubes containerization on Windows
Python
132
star
75

OutlookLeakTest

The Outlook HTML Leak Test Project
C#
131
star
76

port-scan-automation

Automate NMAP Scans and Generate Custom Nessus Policies Automatically
Shell
128
star
77

Hodor

Hodor! Fuzzer..
Python
126
star
78

Zulu

The Zulu fuzzer
Python
125
star
79

WinShareEnum

Windows Share Enumerator
C#
121
star
80

memscan

Searches for strings, regex, credit card numbers of magnetic stripe card tracks in a Windows process's memory space
C#
120
star
81

ebpf

eBPF - extended Berkeley Packet Filter tooling
Python
116
star
82

cq

Python
115
star
83

argumentinjectionhammer

A Burp Extension designed to identify argument injection vulnerabilities.
Python
113
star
84

DroppedConnection

Python
113
star
85

SCOMDecrypt

SCOMDecrypt is a tool to decrypt stored RunAs credentials from SCOM servers
C#
112
star
86

GOATCasino

This is an intentionally vulnerable smart contract truffle deployment aimed at allowing those interested in smart contract security to exploit a wide variety of issues in a safe environment.
JavaScript
112
star
87

OneLogicalMyth_Shell

A HTA shell to assist with breakout assessments.
HTML
111
star
88

BLE-Replay

BLE-Replay is a Bluetooth Low Energy (BLE) peripheral assessment tool
Python
110
star
89

ccs

Python
107
star
90

web3-decoder

Python
106
star
91

WindowsDACLEnumProject

A collection of tools to enumerate and analyse Windows DACLs
C++
105
star
92

DIBF

Windows NT ioctl bruteforcer and modular fuzzer
C++
103
star
93

raccoon

Salesforce object access auditor
Python
103
star
94

go-pillage-registries

Pentester-focused Docker registry tool to enumerate and pull images
Go
103
star
95

cloud_ip_ranges

Identify IP addresses owned by public cloud providers
Python
101
star
96

DatajackProxy

Datajack Proxy allows you to intercept TLS traffic in native x86 applications across platforms
JavaScript
100
star
97

pcap-burp

Pcap importer for Burp
Java
100
star
98

jwt-reauth

Java
100
star
99

KilledProcessCanary

A canary designed to minimize the impact from certain Ransomware actors
C#
99
star
100

Berserko

Burp Suite extension to perform Kerberos authentication
Java
99
star