netshield-analyzer

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 22, 2026 License: AGPL-3.0

README

NetShield

Reachability-based vulnerability analysis for Java applications

NetShield determines whether vulnerabilities in your dependencies are actually exploitable by analyzing bytecode call graphs. It answers one question: Can this CVE be triggered by my application code?


Quick Start

Installation

From Source:

git clone https://github.com/Netshield-Enterprise/netshield-analyzer.git
cd netshield-analyzer
go build -o netshield-analyzer ./cmd/analyzer

Using Go Install:

go install github.com/Netshield-Enterprise/netshield-analyzer/cmd/analyzer@latest

From Release (Recommended):

# Linux AMD64
curl -LO https://github.com/Netshield-Enterprise/netshield-analyzer/releases/latest/download/netshield-analyzer-linux-amd64
chmod +x netshield-analyzer-linux-amd64
sudo mv netshield-analyzer-linux-amd64 /usr/local/bin/netshield-analyzer

# macOS Apple Silicon
curl -LO https://github.com/Netshield-Enterprise/netshield-analyzer/releases/latest/download/netshield-analyzer-darwin-arm64
chmod +x netshield-analyzer-darwin-arm64
sudo mv netshield-analyzer-darwin-arm64 /usr/local/bin/netshield-analyzer

# Windows: Download netshield-analyzer-windows-amd64.exe and add to PATH
Basic Usage
# Analyze a Maven project
cd /path/to/your/maven/project
netshield-analyzer --packages com.yourcompany

# CI/CD mode (minimal output, proper exit codes)
netshield-analyzer --packages com.yourcompany --format core

# JSON output for tooling
netshield-analyzer --packages com.yourcompany --format json

What Problem This Solves

Most vulnerability scanners report every CVE in your dependency tree, regardless of whether your code can reach the vulnerable methods. This creates:

  • Alert fatigue: Security teams drowning in non-exploitable findings
  • Prioritization paralysis: No clear signal on what to fix first
  • Wasted engineering time: Patching vulnerabilities that pose no real risk

NetShield performs static reachability analysis to classify vulnerabilities as:

  • Reachable: Vulnerable code is called by your application (fix immediately)
  • Unreachable: Vulnerable code exists but cannot be triggered (deprioritize)
  • Unknown: Analysis incomplete (manual review recommended)

CI/CD Integration

NetShield is designed for CI/CD pipelines with proper exit codes:

Exit Code Meaning CI/CD Action
0 Safe to ship ✅ Pass build
1 Reachable vulnerability ❌ Fail build
2 Analysis failure ❌ Fail build
GitHub Actions
- name: Security Gate
  run: netshield-analyzer --packages com.yourcompany --format core
GitLab CI
netshield:
  script:
    - netshield-analyzer --packages com.yourcompany --format core
Jenkins
sh 'netshield-analyzer --packages com.yourcompany --format core'

Output Formats

Core (CI/CD Optimized)

Minimal output, clear decision, proper exit codes.

netshield-analyzer --packages com.example --format core
Executive (Default)

Decision + intelligence + supply chain scoring.

netshield-analyzer --packages com.example
Debug

Full technical analysis with call graphs.

netshield-analyzer --packages com.example --format debug
JSON

Machine-readable for tooling integration.

netshield-analyzer --packages com.example --format json

Example Output

════════════════════════════════════════════════════════════════
                   NetShield Release Analysis
════════════════════════════════════════════════════════════════

EXECUTIVE SUMMARY
────────────────────────────────────────────────────────────────
1 vulnerability exists in dependencies but cannot be triggered by application code.
No exploitable security risk exists in this release.

RELEASE STATUS
✓ SAFE TO SHIP

RELEASE CONFIDENCE
High confidence this release introduces no exploitable security risk.

BUSINESS RISK
────────────────────────────────────────────────────────────────
Exploit Risk         NONE
Production Exposure  NONE
Patch Urgency        LOW (maintenance window)
Engineering Impact   None

SUPPLY CHAIN TRUST SCORE
────────────────────────────────────────────────────────────────
96 / 100  (Excellent)

SECURITY EVIDENCE
────────────────────────────────────────────────────────────────
1 critical vulnerability detected but unreachable from execution paths.

CVE: GHSA-mjmj-j48q-9wg2
Package: org.yaml:snakeyaml
Severity: CRITICAL
Reachability: UNREACHABLE

How It Works

  1. Dependency Resolution: Parses pom.xml and resolves transitive dependencies
  2. JAR Extraction: Downloads and extracts bytecode from Maven Central
  3. Call Graph Construction: Builds method-level call graphs using bytecode analysis
  4. CVE Lookup: Queries OSV API for known vulnerabilities
  5. Reachability Analysis: Determines if application code paths reach vulnerable methods
  6. Risk Classification: Categorizes findings as Reachable, Unreachable, or Unknown

Limitations

  1. Reflection: Methods invoked via reflection are marked as Unknown
  2. Dynamic Loading: Dynamically loaded classes may not be analyzed
  3. Build Tool: Currently supports Maven only (Gradle support planned)
  4. Language: Java bytecode only (Kotlin/Scala supported if compiled to JVM)
  5. Accuracy: Call graph construction is best-effort; complex frameworks may reduce precision

Performance

Project Size Dependencies Analysis Time
Small < 50 ~10 seconds
Medium 50-200 ~30 seconds
Large 200-500 ~60 seconds
Enterprise 500+ ~2-5 minutes

Roadmap

  • Gradle support
  • SARIF output format for GitHub Security
  • Improved reflection analysis
  • Historical trend tracking
  • GitHub PR comment integration
  • Custom policy enforcement (SOC2, PCI-DSS)

Creating Releases

# Tag a version
git tag -a v0.1.0 -m "Release v0.1.0"
git push origin v0.1.0

# GitHub Actions automatically builds binaries for:
# - Linux (amd64, arm64)
# - macOS (Intel, Apple Silicon)
# - Windows (amd64)

See CHANGELOG.md for version history.


License

NetShield is dual-licensed:

For commercial licensing: licensing@net-shield.net


Security Disclosure

To report security vulnerabilities in NetShield itself: security@net-shield.net

Do not open public issues for security concerns.

Directories

Path Synopsis
cmd
analyzer command
internal
api
cve
database
Package database provides SQLite storage for scan history and vulnerability trends.
Package database provides SQLite storage for scan history and vulnerability trends.
license
Package license handles license validation and feature gating for NetShield.
Package license handles license validation and feature gating for NetShield.
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL