vuls
Agent-less vulnerability scanner for Linux, FreeBSD, Container, WordPress, Programming language libraries, Network devices
Top Related Projects
Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
A vulnerability scanner for container images and filesystems
CLI tool and library for generating a Software Bill of Materials from container images and filesystems
Vulnerability Static Analysis for Containers
Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark
Quick Overview
Vuls is an open-source, agent-less vulnerability scanner for Linux/FreeBSD systems. It automates security vulnerability detection and management, providing fast and accurate scans of both offline and online systems. Vuls can be integrated with various data sources and supports multiple output formats for easy reporting and analysis.
Pros
- Agent-less architecture, reducing system overhead and simplifying deployment
- Supports multiple Linux distributions and FreeBSD
- Integrates with various vulnerability databases and security information sources
- Provides flexible reporting options, including JSON, XML, and human-readable formats
Cons
- Primarily focused on Linux/FreeBSD systems, limiting its use for other operating systems
- Requires root privileges for some scanning operations, which may be a security concern
- Learning curve for proper configuration and customization
- Dependency on external data sources for vulnerability information
Getting Started
To get started with Vuls, follow these steps:
- Install Go and set up your Go environment
- Install Vuls:
$ go install github.com/future-architect/vuls@latest
- Configure your target servers in
config.toml
:[servers] [servers.example] host = "example.com" port = "22" user = "ubuntu" keyPath = "/path/to/ssh/key"
- Perform a scan:
$ vuls scan
- Generate a report:
$ vuls report
For more detailed instructions and advanced usage, refer to the official Vuls documentation.
Competitor Comparisons
Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
Pros of Trivy
- Faster scanning speed, especially for container images
- Simpler setup and usage, with no agent required
- Broader scope, covering containers, filesystems, and git repositories
Cons of Trivy
- Less comprehensive system-level vulnerability scanning
- Fewer integration options with other security tools
- Limited support for continuous monitoring
Code Comparison
Trivy:
trivy image python:3.4-alpine
Vuls:
vuls scan
vuls report -format-json
Trivy focuses on simplicity and ease of use, making it ideal for quick container and filesystem scans. It excels in speed and requires minimal setup. However, Vuls offers more comprehensive system-level vulnerability scanning and better integration with other security tools. Vuls also provides continuous monitoring capabilities, which Trivy lacks.
Trivy is better suited for developers and DevOps teams looking for a straightforward solution for container and code scanning, while Vuls is more appropriate for system administrators and security teams requiring in-depth system vulnerability assessments and ongoing monitoring.
A vulnerability scanner for container images and filesystems
Pros of Grype
- Faster scanning speed, especially for container images
- Simpler setup and configuration process
- Better integration with CI/CD pipelines
Cons of Grype
- Less comprehensive vulnerability detection compared to Vuls
- Limited support for non-container environments
- Fewer customization options for reporting and alerting
Code Comparison
Grype command-line usage:
grype <image_name>
Vuls configuration example:
[servers]
[servers.host1]
host = "example.com"
port = "22"
user = "ubuntu"
keyPath = "/path/to/key"
Both tools aim to detect vulnerabilities, but Grype focuses on container images while Vuls offers a broader scope for various systems. Grype provides a simpler interface and faster scanning, making it ideal for container-centric environments and CI/CD integration. Vuls, on the other hand, offers more comprehensive scanning capabilities and flexibility in configuration, making it suitable for complex, multi-server environments. The choice between the two depends on the specific use case and infrastructure requirements.
CLI tool and library for generating a Software Bill of Materials from container images and filesystems
Pros of Syft
- Faster scanning and analysis due to its focus on Software Bill of Materials (SBOM) generation
- Better integration with container ecosystems and CI/CD pipelines
- More comprehensive package detection across various ecosystems (npm, pip, go, etc.)
Cons of Syft
- Limited vulnerability scanning capabilities compared to Vuls' comprehensive approach
- Less detailed reporting and risk assessment features
- Narrower focus on package management, lacking some of Vuls' broader security analysis tools
Code Comparison
Syft example:
syft alpine:latest
Vuls example:
vuls scan
vuls report -format-json
Syft focuses on generating SBOMs with a simple command, while Vuls requires separate scan and report commands for vulnerability assessment. Syft's output is primarily package-oriented, whereas Vuls provides a more comprehensive security report.
Vulnerability Static Analysis for Containers
Pros of Clair
- Designed specifically for container security, making it more specialized for Docker and container environments
- Integrates well with container registries, especially Quay
- Supports multiple programming languages for vulnerability detection
Cons of Clair
- Limited to container scanning, while Vuls can scan both containers and host systems
- Requires more setup and infrastructure compared to Vuls' agentless approach
- Less comprehensive reporting and visualization features than Vuls
Code Comparison
Vuls (Go):
func (r *RedhatBase) fillCveInfo(driver db.DB, cveID string) error {
if err := r.populateWithRedhat(driver, cveID); err != nil {
return err
}
return nil
}
Clair (Go):
func (s *Store) InsertVulnerabilities(vulns []database.Vulnerability) error {
for _, vuln := range vulns {
if err := s.insertVulnerability(vuln); err != nil {
return err
}
}
return nil
}
Both projects use Go and have similar code structures for handling vulnerabilities. Vuls focuses on populating CVE information, while Clair emphasizes inserting vulnerability data into its database.
Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark
Pros of kube-bench
- Specifically designed for Kubernetes security benchmarking
- Provides detailed reports on CIS Kubernetes Benchmark compliance
- Lightweight and easy to run as a Kubernetes job or standalone
Cons of kube-bench
- Limited to Kubernetes environments only
- Focuses solely on configuration and best practices, not on runtime vulnerabilities
- Requires manual remediation of identified issues
Code Comparison
kube-bench:
func runChecks(nodetype check.NodeType, testYamlFile string) []*check.Controls {
var controls []*check.Controls
var err error
in, err := ioutil.ReadFile(testYamlFile)
if err != nil {
exitWithError(err)
}
// ... (additional code)
}
vuls:
func (s Scanner) Scan() (results models.ScanResults, err error) {
var servernames []string
if len(s.ServerNames) == 0 {
servernames = s.detectServernames()
} else {
servernames = s.ServerNames
}
// ... (additional code)
}
Both repositories focus on security, but kube-bench is specialized for Kubernetes benchmarking, while vuls is a more general-purpose vulnerability scanner. kube-bench provides targeted Kubernetes security checks, making it ideal for Kubernetes-specific environments. However, vuls offers broader vulnerability scanning capabilities across various systems, not limited to Kubernetes.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Vuls: VULnerability Scanner
Vulnerability scanner for Linux/FreeBSD, agent-less, written in Go.
We have a slack team. Join slack team
Twitter: @vuls_en
Abstract
For a system administrator, having to perform security vulnerability analysis and software update on a daily basis can be a burden. To avoid downtime in a production environment, it is common for a system administrator to choose not to use the automatic update option provided by the package manager and to perform update manually. This leads to the following problems.
- The system administrator will have to constantly watch out for any new vulnerabilities in NVD (National Vulnerability Database) or similar databases.
- It might be impossible for the system administrator to monitor all the software if there are a large number of software packages installed in the server.
- It is expensive to perform analysis to determine the servers affected by new vulnerabilities. The possibility of overlooking a server or two during analysis is there.
Vuls is a tool created to solve the problems listed above. It has the following characteristics.
- Informs users of the vulnerabilities that are related to the system.
- Informs users of the servers that are affected.
- Vulnerability detection is done automatically to prevent any oversight.
- A report is generated on a regular basis using CRON or other methods. to manage vulnerability.
Main Features
Scan for any vulnerabilities in Linux/FreeBSD/Windows/macOS
Supports major Linux/FreeBSD/Windows/macOS
- Alpine, Amazon Linux, CentOS, AlmaLinux, Rocky Linux, Debian, Oracle Linux, Raspbian, RHEL, openSUSE, openSUSE Leap, SUSE Enterprise Linux, Fedora, and Ubuntu
- FreeBSD
- Windows
- macOS
- Cloud, on-premise, Running Docker Container
High-quality scan
-
Vulnerability Database
-
OVAL
-
Security Advisory
-
Commands(yum, zypper, pkg-audit)
- RHSA / ALAS / ELSA / FreeBSD-SA
- Changelog
-
PoC, Exploit
-
CERT
-
KEV
- CISA(Cybersecurity & Infrastructure Security Agency): Known Exploited Vulnerabilities Catalog
- VulnCheck: VulnCheck KEV
-
Cyber Threat Intelligence(MITRE ATT&CK and CAPEC)
-
Libraries
-
WordPress
Scan mode
- Scan without root privilege, no dependencies
- Almost no load on the scan target server
- Offline mode scan with no internet access. (CentOS, Alma Linux, Rocky Linux, Debian, Oracle Linux, Red Hat, Fedora, and Ubuntu)
- Scan with root privilege
- Almost no load on the scan target server
- Detect processes affected by update using yum-ps (Amazon Linux, CentOS, Alma Linux, Rocky Linux, Oracle Linux, Fedora, and RedHat)
- Detect processes which updated before but not restarting yet using checkrestart of debian-goodies (Debian and Ubuntu)
- Offline mode scan with no internet access. (CentOS, Alma Linux, Rocky Linux, Debian, Oracle Linux, Red Hat, Fedora, and Ubuntu)
Remote, Local scan mode, Server mode
- User is required to only set up one machine that is connected to other target servers via SSH
- If you don't want the central Vuls server to connect to each server by SSH, you can use Vuls in the Local Scan mode.
- First, start Vuls in server mode and listen as an HTTP server.
- Next, issue a command on the scan target server to collect software information. Then send the result to Vuls Server via HTTP. You receive the scan results as JSON format.
- No SSH needed, No Scanner needed. Only issuing Linux commands directory on the scan target server.
Dynamic Analysis
- It is possible to acquire the state of the server by connecting via SSH and executing the command.
- Vuls warns when the scan target server was updated the kernel etc. but not restarting it.
Scan vulnerabilities of non-OS-packages
- Libraries of programming language
- Self-compiled software
- Network Devices
Vuls has some options to detect the vulnerabilities
- Lockfile based Scan
- GitHub Integration
- Common Platform Enumeration (CPE) based Scan
- OWASP Dependency Check Integration
Scan WordPress core, themes, plugins
MISC
- Nondestructive testing
- Pre-authorization is NOT necessary before scanning on AWS
- Vuls works well with Continuous Integration since tests can be run every day. This allows you to find vulnerabilities very quickly.
- Auto-generation of configuration file template
- Auto-detection of servers set using CIDR, generate configuration file template
- Email and Slack notification is possible (supports Japanese language)
- Scan result is viewable on accessory software, TUI Viewer in a terminal or Web UI (VulsRepo).
What Vuls Doesn't Do
- Vuls doesn't update the vulnerable packages.
Document
For more information such as Installation, Tutorial, Usage, visit vuls.io
æ¥æ¬èªç¿»è¨³ããã¥ã¡ã³ã
Authors
kotakanbe (@kotakanbe) created vuls and these fine people have contributed.
Contribute
see vulsdoc
Sponsors
License
Please see LICENSE.
Top Related Projects
Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
A vulnerability scanner for container images and filesystems
CLI tool and library for generating a Software Bill of Materials from container images and filesystems
Vulnerability Static Analysis for Containers
Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot