ALNUR — Open-source end-to-end vulnerability identifier for applications
Project description
ALNUR
Open-Source End-to-End Vulnerability Scanner
ALNUR is an open-source, end-to-end security vulnerability scanner for application projects. Point it at any project directory and it acts as your security analyst — detecting CVEs in dependencies, leaked secrets, architecture flaws, standards violations, and risky port configurations.
Features
| Module | What It Checks |
|---|---|
| CVE Scanner | Queries OSV.dev for known CVEs across all detected packages |
| Secret Detection | Finds hardcoded API keys, tokens, passwords, and private keys using patterns + entropy analysis |
| Architecture Analysis | 30+ SAST rules covering injection, weak crypto, insecure deserialization, misconfigurations |
| Standards Compliance | Gitignore hygiene, lockfile presence, CI/CD, test suite, Docker best practices |
| Port Risk Analysis | Flags dangerous ports in Dockerfiles, docker-compose, config files, and .env |
Supported Project Types
Node.js · React · Vue.js · Next.js · Express.js · Python · Django · Flask · FastAPI · PHP · Laravel · Symfony · Ruby · Ruby on Rails · Go · Rust · Java (Maven/Gradle) · Spring Boot · .NET
Installation
pip install alnur
Or install from source:
git clone https://github.com/threads-beams/alnur
cd alnur
pip install -e .
Quick Start
# Scan current directory
alnur scan .
# Scan a specific path
alnur scan /path/to/my-project
# Generate HTML report
alnur scan . --output html --output-file report.html
# Generate all formats
alnur scan . --output all --output-file report
# Show only high+ severity issues
alnur scan . --severity high
# Detect project type only (fast)
alnur detect .
CLI Reference
alnur scan [PATH] [OPTIONS]
Options:
-o, --output [console|json|html|all] Output format (default: console)
-f, --output-file PATH Write report to file
-s, --severity [critical|high|medium|low|info] Minimum severity (default: low)
--skip-cve Skip CVE check
--skip-secrets Skip secret detection
--skip-arch Skip architecture analysis
--skip-standards Skip standards compliance
--skip-ports Skip port risk analysis
--no-dev Exclude dev dependencies
-v, --verbose Show recommendations inline
-q, --quiet Suppress progress output
Risk Grading
| Grade | Score | Meaning |
|---|---|---|
| A | 0–19 | Low risk — keep it up |
| B | 20–49 | Minor issues — review low-priority findings |
| C | 50–99 | Moderate risk — address before production |
| D | 100–199 | High risk — urgent remediation needed |
| F | 200+ | Critical — do not deploy |
Output Formats
- Console — Rich colored terminal output with tables and severity badges
- JSON — Machine-readable structured report (CI/CD integration)
- HTML — Self-contained dark-theme security dashboard, no external dependencies
Exit Codes
| Code | Meaning |
|---|---|
0 |
Scan completed — no critical/high issues |
1 |
Critical or high severity issues found |
CVE Data Source
ALNUR uses the OSV.dev API — a free, open vulnerability database covering npm, PyPI, Maven, NuGet, RubyGems, crates.io, Packagist, Go modules, and more. No API key required.
Architecture Rules (Sample)
| Rule | Category | Severity |
|---|---|---|
INJ001–009 |
SQL / Command Injection | HIGH/CRITICAL |
DESER001–003 |
Insecure Deserialization | HIGH |
CRYPTO001–004 |
Weak Cryptography | MEDIUM/HIGH |
TLS001–004 |
SSL/TLS Misconfiguration | MEDIUM/HIGH |
DJANGO001–005 |
Django Misconfiguration | MEDIUM/HIGH |
FLASK001–003 |
Flask Misconfiguration | MEDIUM/HIGH |
NODE001–004 |
Node.js Misconfiguration | MEDIUM/HIGH |
DOCKER001–003 |
Container Security | MEDIUM/HIGH |
XSS001–002 |
Cross-Site Scripting | HIGH |
PATH001–002 |
Path Traversal | HIGH |
Contributing
Contributions are welcome. To add a new architecture rule, add an entry to _RULES in alnur/analyzers/architecture.py. To add a new secret pattern, add to _PATTERNS in alnur/analyzers/secrets.py.
pip install -e ".[dev]"
pytest
License
MIT — see LICENSE
ALNUR — illuminating what's hidden in your codebase.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alnur-1.0.1.tar.gz.
File metadata
- Download URL: alnur-1.0.1.tar.gz
- Upload date:
- Size: 41.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68e7ccdc198dcce4e7181f0a766d0aeacf80b799d686064582f8417b94521c0c
|
|
| MD5 |
4febec9a6b6e33a488acd363ea052255
|
|
| BLAKE2b-256 |
25b46f3098ece930c6510557d8a198cad212ef4b7675aa89562ed4829ebd8c16
|
Provenance
The following attestation bundles were made for alnur-1.0.1.tar.gz:
Publisher:
publish.yml on Threads-Beams/ALNUR
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alnur-1.0.1.tar.gz -
Subject digest:
68e7ccdc198dcce4e7181f0a766d0aeacf80b799d686064582f8417b94521c0c - Sigstore transparency entry: 1549973274
- Sigstore integration time:
-
Permalink:
Threads-Beams/ALNUR@80be2ad6b20835b1688c59550e51b81f5a4b13b9 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/Threads-Beams
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@80be2ad6b20835b1688c59550e51b81f5a4b13b9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file alnur-1.0.1-py3-none-any.whl.
File metadata
- Download URL: alnur-1.0.1-py3-none-any.whl
- Upload date:
- Size: 45.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eacf5340c27ed4511f62e5558f8f397587570a827ecbe1e371c240fc97fa1eea
|
|
| MD5 |
5346921926b9f3761082b32ef539f007
|
|
| BLAKE2b-256 |
ca946d316b4373060822e726181c381ebfbd37dcc09b2261408b7ca1e177ae93
|
Provenance
The following attestation bundles were made for alnur-1.0.1-py3-none-any.whl:
Publisher:
publish.yml on Threads-Beams/ALNUR
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alnur-1.0.1-py3-none-any.whl -
Subject digest:
eacf5340c27ed4511f62e5558f8f397587570a827ecbe1e371c240fc97fa1eea - Sigstore transparency entry: 1549973305
- Sigstore integration time:
-
Permalink:
Threads-Beams/ALNUR@80be2ad6b20835b1688c59550e51b81f5a4b13b9 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/Threads-Beams
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@80be2ad6b20835b1688c59550e51b81f5a4b13b9 -
Trigger Event:
push
-
Statement type: