Core Security
caution
This module is in preview. Static analysis runs via Roslyn analyzers at build time. Dependency scanning requires a local CVE database that you provide.
Overview
Core Security provides local-first scanning for .NET applications:
- Secret detection and content scanning.
- Dependency vulnerability scanning when a local CVE database is present.
- Roslyn analyzers for common OWASP patterns (runs at build/CI time, not via
ScanAsync). - Optional policy validation against scan results.
No external network calls are made by default. Any outbound integration depends on how you configure your own app.
Integration Guide
Step 1: Install the package
dotnet add package PrimusSaaS.Security
Step 2: Configure Program.cs
using PrimusSaaS.Security;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddPrimusSecurity(options =>
builder.Configuration.GetSection("PrimusSecurity").Bind(options));
var app = builder.Build();
Step 3: Configure appsettings.json
{
"PrimusSecurity": {
"EnableStaticAnalysis": true,
"EnableDependencyScanning": true,
"EnableSecretDetection": true,
"EnablePolicyValidation": true,
"ComplianceStandards": [ "OWASP", "PCI-DSS" ],
"DataPath": "./SecurityData",
"FindingsPath": "./SecurityFindings",
"ReportsPath": "./SecurityReports",
"CveDatabasePath": "./SecurityData/cve-database.db",
"PoliciesPath": "./SecurityData/Policies",
"FailOnCritical": false,
"IntegrateWithLogging": false,
"IntegrateWithNotifications": false
}
}
How to get configuration values
CveDatabasePathshould point to a local CVE database file.PoliciesPathis a local directory that contains your policy rules.DataPath,FindingsPath, andReportsPathare local filesystem paths.ComplianceStandardsis used for internal mapping only and does not certify compliance.
Step 4: Configure endpoint
Map the built-in security endpoints:
app.MapPrimusSecurityEndpoints();
app.Run();
This exposes:
POST /api/security/scanPOST /api/security/detect-secretsGET /api/security/status
Step 5: Test the endpoint
curl http://localhost:5000/api/security/status
curl -X POST http://localhost:5000/api/security/scan \
-H "Content-Type: application/json" \
-d '{ "path": "./" }'