Currently, the Vulnera dependency scanning plugin supports a limited set of dependency manifest files. We need to extend this support to cover more package managers and languages to make Valkyrie more comprehensive and useful for polyglot projects.
🎯 Goal
Add support for additional dependency manifest files by implementing new parsers in valkyrie.plugins.vulnera.parsers.py.
📋 Currently Supported Files
SUPPORTED_MANIFESTS = {
# Node.js
'package.json', 'package-lock.json', 'yarn.lock',
# Python
'requirements.txt', 'Pipfile', 'Pipfile.lock', 'poetry.lock',
# Java
'pom.xml', 'gradle.build',
# Rust
'Cargo.toml', 'Cargo.lock',
# Go
'go.mod', 'go.sum',
# PHP
'composer.json', 'composer.lock'
}
🚀 Target Additional Manifest Files
Ruby:
.NET:
Swift:
Android:
Scala:
Haskell:
Elixir:
Dart:
Docker:
🔧 Implementation
- Extend the parser registry in
valkyrie.plugins.vulnera.parsers.py
- Create new parser classes inheriting from
BaseDependencyParser
- Implement parsing logic for each new manifest format
- Add test cases for each new parser
📝 Example Parser Structure
DependencyParser.register()
class PackageJsonParser(BaseDependencyParser):
"""Parser for package.json (Node.js)"""
@property
def dep_file(self):
return "package.json"
def parse(self) -> List[Dependency]:
content = self._read_file()
data = json.loads(content)
dependencies = []
# Production
if 'dependencies' in data:
for name, version in data['dependencies'].items():
dependencies.append(Dependency(name, version, dev=False))
# Developement
if 'devDependencies' in data:
for name, version in data['devDependencies'].items():
dependencies.append(Dependency(name, version, dev=True))
return dependencies
✅ Acceptance Criteria
🧪 Testing
Add test files in tests/plugins/vulnera/parsers/:
- Example manifest files for each new format
- Unit tests for each new parser class
- Integration tests with the Vulnera scanner
Currently, the Vulnera dependency scanning plugin supports a limited set of dependency manifest files. We need to extend this support to cover more package managers and languages to make Valkyrie more comprehensive and useful for polyglot projects.
🎯 Goal
Add support for additional dependency manifest files by implementing new parsers in
valkyrie.plugins.vulnera.parsers.py.📋 Currently Supported Files
🚀 Target Additional Manifest Files
Ruby:
GemfileGemfile.lockgems.rb.NET:
*.csprojpackages.configproject.assets.jsonSwift:
Package.swiftCartfileCartfile.resolvedAndroid:
build.gradle(Android modules)Scala:
build.sbtHaskell:
*.cabalstack.yamlElixir:
mix.exsmix.lockDart:
pubspec.yamlpubspec.lockDocker:
Dockerfile(FROM statements)🔧 Implementation
valkyrie.plugins.vulnera.parsers.pyBaseDependencyParser📝 Example Parser Structure
✅ Acceptance Criteria
BaseDependencyParserinterface🧪 Testing
Add test files in
tests/plugins/vulnera/parsers/: