UnretiredJS
A Python port of RetireJS - A tool to scan for vulnerabilities in JavaScript libraries.
Description
UnretiredJS is a Python library that helps you identify known vulnerabilities in JavaScript libraries used in your web applications. It's a modern Python port of the popular RetireJS tool, bringing fast, offline vulnerability scanning capabilities to Python projects.
Installation
pip install unretiredjs
Usage
Basic Usage
# Method 1: Import specific function
from unretiredjs import scan_endpoint
# Method 2: Import the entire module
import unretiredjs
# Scan a remote JavaScript file
# Using specific import
results = scan_endpoint("http://code.jquery.com/jquery-1.6.min.js")
# Or using full module import
results = unretiredjs.scan_endpoint("http://code.jquery.com/jquery-1.6.min.js")
Sample Output
[
{
'detection': 'filecontent',
'vulnerabilities': [
{
'info': [
'http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-4969',
'http://research.insecurelabs.org/jquery/test/'
],
'identifiers': {
'CVE': ['CVE-2011-4969']
},
'severity': 'medium'
}
],
'version': '1.6.0',
'component': 'jquery'
}
]
Features
- Scan remote JavaScript files for known vulnerabilities
- Detect vulnerable versions of popular JavaScript libraries
- Comprehensive vulnerability database
- Easy to integrate into Python projects
- Modern Python package structure with src layout
Requirements
- Python 3.6 or higher
- requests>=2.25.0
Development
Project Structure
unretiredjs/
├── src/
│ └── unretiredjs/
│ ├── __init__.py
│ ├── retirejs.py
│ ├── vulnerabilities.py
│ └── update_vulnerabilities.py
├── tests/
│ ├── test_retirejs.py
│ ├── test_update_vulnerabilities.py
│ └── compare_results.py
├── pyproject.toml
└── README.md
Vulnerability Data Updates
The vulnerability data used by UnretiredJS is stored in src/unretiredjs/vulnerabilities.py. This data is sourced from the official RetireJS repository (https://raw.githubusercontent.com/RetireJS/retire.js/master/repository/jsrepository.json).
Updates are handled automatically by a GitHub Action defined in .github/workflows/update_retirejs_data.yml. This action runs on a monthly schedule (at 00:00 UTC on the 1st day of every month) to fetch the latest vulnerability information. It also allows for manual triggering via the GitHub Actions UI.
To run the update script manually:
# Install development dependencies
pip install -e ".[dev]"
# Run the update script
python -m unretiredjs.update_vulnerabilities
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Author
Anand Kumar - GitHub
Metadata
Release files for unretiredjs 1.4.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| unretiredjs-1.4.15.tar.gz | 115.0 kB | Without provenance | Details for unretiredjs-1.4.15.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| unretiredjs-1.4.15-py3-none-any.whl | Python 3 | none | any | Details for unretiredjs-1.4.15-py3-none-any.whl |
Total release size: 229.4 kB
Release files / unretiredjs-1.4.15.tar.gz
| Download URL | unretiredjs-1.4.15.tar.gz |
|---|---|
| Size | 115.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ae53ac7a50b96961a967e42db5e7779557ea0a2f6afb7b0f3a65c2046870263
|
|
BLAKE2b-256 checksum How to use checksums |
31f4cce2374eb1dbcf4bc7d35159408129a070a8acd743b7f34ea86be4c0e66b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.15.1
|
Release files / unretiredjs-1.4.15-py3-none-any.whl
| Download URL | unretiredjs-1.4.15-py3-none-any.whl |
|---|---|
| Size | 114.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
891887b908bbf78102125d30fcab2250d77f1f8cb2d238291c761c0b0d3f5eaa
|
|
BLAKE2b-256 checksum How to use checksums |
d52d242fe8c3ef9cb72cd9ab1c381345ecc64dc3b658d403de0849ba55741b67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.15.1
|
Security for unretiredjs 1.4.15
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.