sast-horusec
تایید شدهMulti-language static application security testing using Horusec with support for 18+ programming languages and 20+ security analysis tools. Performs SAST scans, secret detection in git history, and provides vulnerability findings with severity classification. Use when: (1) Analyzing code for security vulnerabilities across multiple languages simultaneously, (2) Detecting exposed secrets and credentials in git history, (3) Integrating SAST into CI/CD pipelines for secure SDLC, (4) Performing comprehensive security analysis during development, (5) Managing false positives and prioritizing security findings.
نصب مهارت
مهارتها کدهای شخص ثالث از مخازن عمومی GitHub هستند. SkillHub الگوهای مخرب شناختهشده را اسکن میکند اما نمیتواند امنیت را تضمین کند. قبل از نصب، کد منبع را بررسی کنید.
نصب سراسری (سطح کاربر):
npx skillhub install AgentSecOps/SecOpsAgentKit/sast-horusecنصب در پروژه فعلی:
npx skillhub install AgentSecOps/SecOpsAgentKit/sast-horusec --projectمسیر پیشنهادی: ~/.claude/skills/sast-horusec/
محتوای SKILL.md
---
name: sast-horusec
description: >
Multi-language static application security testing using Horusec with support for 18+ programming
languages and 20+ security analysis tools. Performs SAST scans, secret detection in git history,
and provides vulnerability findings with severity classification. Use when: (1) Analyzing code
for security vulnerabilities across multiple languages simultaneously, (2) Detecting exposed
secrets and credentials in git history, (3) Integrating SAST into CI/CD pipelines for secure SDLC,
(4) Performing comprehensive security analysis during development, (5) Managing false positives
and prioritizing security findings.
version: 0.1.0
maintainer: asrour
category: secsdlc
tags: [sast, horusec, vulnerability-scanning, multi-language, secrets-detection, static-analysis, secure-sdlc]
frameworks: [OWASP, CWE]
dependencies:
tools: [docker, git]
references:
- https://github.com/ZupIT/horusec
- https://docs.horusec.io/
---
# Horusec SAST Scanner
## Overview
Horusec is an open-source security analysis tool that performs static code analysis across 18+ programming languages using 20+ integrated security tools. It identifies vulnerabilities during development, scans git history for exposed secrets, and integrates seamlessly into CI/CD pipelines for secure SDLC practices.
## Supported Languages
C#, Java, Kotlin, Python, Ruby, Golang, Terraform, JavaScript, TypeScript, Kubernetes, PHP, C, HTML, JSON, Dart, Elixir, Shell, Nginx
## Quick Start
Run Horusec scan on current project:
```bash
# Using Docker (recommended)
docker run -v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd):/src horuszup/horusec-cli:latest horusec start -p /src -P $(pwd)
# Local installation
horusec start -p ./path/to/project
```
## Core Workflows
### Workflow 1: Local Security Scan
For developers performing pre-commit security analysis:
1. Navigate to project directory
2. Run Horusec scan:
```bash
horusec start -p . -o json -O horusec-report.json
```
3. Review JSON output for vulnerabilities
4. Filter by severity (HIGH, MEDIUM, LOW, INFO)
5. Address critical and high-severity findings
6. Re-scan to validate fixes
### Workflow 2: CI/CD Pipeline Integration
Progress:
[ ] 1. Add Horusec to CI/CD pipeline configuration
[ ] 2. Configure output format (JSON for automated processing)
[ ] 3. Set severity threshold for build failures
[ ] 4. Run scan on each commit or pull request
[ ] 5. Parse results and fail build on high-severity findings
[ ] 6. Generate security reports for audit trail
[ ] 7. Track remediation progress over time
Work through each step systematically. Check off completed items.
### Workflow 3: Git History Secret Scanning
For detecting exposed credentials and secrets:
1. Run Horusec with git history analysis enabled:
```bash
horusec start -p . --enable-git-history-analysis
```
2. Review detected secrets and credentials
3. Rotate compromised credentials immediately
4. Add detected patterns to `.gitignore` and `.horusec/config.json`
5. Use git-filter-branch or BFG Repo-Cleaner to remove from history (if needed)
6. Document incident and update security procedures
### Workflow 4: False Positive Management
When managing scan results and reducing noise:
1. Run initial scan and export results:
```bash
horusec start -p . -o json -O results.json
```
2. Review findings and identify false positives
3. Create or update `.horusec/config.json` with ignore rules:
```json
{
"horusecCliRiskAcceptHashes": ["hash1", "hash2"],
"horusecCliFilesOrPathsToIgnore": ["**/test/**", "**/vendor/**"]
}
```
4. Re-run scan to verify false positives are suppressed
5. Document risk acceptance decisions for compliance
6. Periodically review ignored findings
## Configuration
Create `.horusec/config.json` in project root for custom configuration:
```json
{
"horusecCliCertInsecureSkipVerify": false,
"horusecCliCertPath": "",
"horusecCliContainerBindProjectPath": "",
"horusecCliCustomImages": {},
"horusecCliCustomRulesPath": "",
"horusecCliDisableDocker": false,
"horusecCliFalsePositiveHashes": [],
"horusecCliFilesOrPathsToIgnore": [
"**/node_modules/**",
"**/vendor/**",
"**/*_test.go",
"**/test/**"
],
"horusecCliHeaders": {},
"horusecCliHorusecApiUri": "",
"horusecCliJsonOutputFilePath": "./horusec-report.json",
"horusecCliLogFilePath": "./horusec.log",
"horusecCliMonitorRetryInSeconds": 15,
"horusecCliPrintOutputType": "text",
"horusecCliProjectPath": ".",
"horusecCliRepositoryAuthorization": "",
"horusecCliRepositoryName": "",
"horusecCliReturnErrorIfFoundVulnerability": false,
"horusecCliRiskAcceptHashes": [],
"horusecCliTimeoutInSecondsAnalysis": 600,
"horusecCliTimeoutInSecondsRequest": 300,
"horusecCliToolsConfig": {},
"horusecCliWorkDir": ".horusec"
}
```
## Output Formats
Horusec supports multiple output formats for different use cases:
- `text` - Human-readable console output (default)
- `json` - Structured JSON for CI/CD integration
- `sonarqube` - SonarQube-compatible format
Specify with `-o` flag:
```bash
horusec start -p . -o json -O report.json
```
## Common Patterns
### Pattern 1: Fail Build on High Severity
Configure CI/CD to fail on critical findings:
```bash
horusec start -p . \
--return-error-if-found-vulnerability \
--severity-threshold="MEDIUM"
```
Exit code will be non-zero if vulnerabilities at or above threshold are found.
### Pattern 2: Multi-Project Monorepo Scanning
Scan multiple projects in monorepo structure:
```bash
# Scan specific subdirectories
for project in service1 service2 service3; do
horusec start -p ./$project -o json -O horusec-$project.json
done
```
### Pattern 3: Custom Rules Integration
Add custom security rules:
1. Create custom rules file (YAML format)
2. Configure path in `.horusec/config.json`:
```json
{
"horusecCliCustomRulesPath": "./custom-rules.yaml"
}
```
3. Run scan with custom rules applied
## Security Considerations
- **Sensitive Data Handling**: Horusec scans for exposed secrets. Ensure scan results are stored securely and access is restricted to authorized personnel only
- **Access Control**: Limit access to Horusec configuration files and scan results. Use read-only mounts in Docker for source code scanning
- **Audit Logging**: Log all scan executions, findings, and risk acceptance decisions for compliance auditing
- **Compliance**: Integrates with SOC2, PCI-DSS, and GDPR compliance by identifying vulnerabilities and tracking remediation
- **Safe Defaults**: Configure severity thresholds appropriate for your risk tolerance. Start with MEDIUM or HIGH to reduce noise
## Integration Points
### CI/CD Integration
**GitHub Actions:**
```yaml
- name: Run Horusec Security Scan
run: |
docker run -v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd):/src horuszup/horusec-cli:latest \
horusec start -p /src -o json -O horusec-report.json \
--return-error-if-found-vulnerability
```
**GitLab CI:**
```yaml
horusec-scan:
image: horuszup/horusec-cli:latest
script:
- horusec start -p . -o json -O horusec-report.json
artifacts:
reports:
horusec: horusec-report.json
```
**Jenkins:**
```groovy
stage('Security Scan') {
steps {
sh 'docker run -v $(pwd):/src horuszup/horusec-cli:latest horusec start -p /src'
}
}
```
### VS Code Extension
Horusec provides a VS Code extension for real-time security analysis during development. Install from VS Code marketplace.
### Vulnerability Management
Horusec can integrate with centralized vulnerability management platforms via:
- JSON output parsing
- Horusec Platform (separate web-based management tool)
- Custom integrations using API
## Troubleshooting
### Issue: Docker Socket Permission Denied
**Solution**: Ensure Docker socket has proper permissions:
```bash
sudo chmod 666 /var/run/docker.sock
# Or run with sudo (not recommended for CI/CD)
```
### Issue: False Positives in Test Files
**Solution**: Exclude test directories in configuration:
```json
{
"horusecCliFilesOrPathsToIgnore": ["**/test/**", "**/*_test.go", "**/tests/**"]
}
```
### Issue: Scan Timeout on Large Repositories
**Solution**: Increase timeout values in configuration:
```json
{
"horusecCliTimeoutInSecondsAnalysis": 1200,
"horusecCliTimeoutInSecondsRequest": 600
}
```
### Issue: Missing Vulnerabilities for Specific Language
**Solution**: Verify language is supported and Docker images are available:
```bash
horusec version --check-for-updates
docker pull horuszup/horusec-cli:latest
```
## Advanced Usage
### Running Without Docker
Install Horusec CLI directly (requires all security tool dependencies):
```bash
# macOS
brew install horusec
# Linux
curl -fsSL https://raw.githubusercontent.com/ZupIT/horusec/main/deployments/scripts/install.sh | bash
# Windows
# Download from GitHub releases
```
Then run:
```bash
horusec start -p . --disable-docker
```
**Note**: Running without Docker requires manual installation of all security analysis tools (Bandit, Brakeman, GoSec, etc.)
### Severity Filtering
Filter results by severity in output:
```bash
# Only show HIGH and CRITICAL
horusec start -p . --severity-threshold="HIGH"
# Show all findings
horusec start -p . --severity-threshold="INFO"
```
### Custom Docker Images
Override default security tool images in configuration:
```json
{
"horusecCliCustomImages": {
"python": "my-registry/custom-bandit:latest",
"go": "my-registry/custom-gosec:latest"
}
}
```
## Report Analysis
Parse JSON output for automated processing:
```bash
# Extract high-severity findings
cat horusec-report.json | jq '.analysisVulnerabilities[] | select(.severity == "HIGH")'
# Count vulnerabilities by language
cat horusec-report.json | jq '.analysisVulnerabilities | group_by(.language) | map({language: .[0].language, count: length})'
# List unique CWE IDs
cat horusec-report.json | jq '[.analysisVulnerabilities[].securityTool] | unique'
```
## References
- [Horusec GitHub Repository](https://github.com/ZupIT/horusec)
- [Horusec Documentation](https://docs.horusec.io/)
- [OWASP Top 10](https://owasp.org/Top10/)
- [CWE - Common Weakness Enumeration](https://cwe.mitre.org/)