Skip to Content
Internal ScanningSecurity & Privacy

Security & Privacy

This page describes the security architecture of the Internal Scanning Agent, how data is handled, and compliance considerations.

Security Model

The Internal Scanning Agent uses a zero-trust, defense-in-depth approach:

┌─────────────────────────────────────────────────────────────────────────────────┐ │ SECURITY ARCHITECTURE │ ├─────────────────────────────────────────────────────────────────────────────────┤ │ │ │ YOUR INFRASTRUCTURE │ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ PRIVATE SUBNET (No public IPs) │ │ │ │ ┌───────────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ │ │ │ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ │ │ │ │ Internal Scanner │ │ Your Applications │ │ │ │ │ │ │ │ │──────►│ │ │ │ │ │ │ │ │ • No public IP │ │ • APIs │ │ │ │ │ │ │ │ • Internal LB only │ │ • Web apps │ │ │ │ │ │ │ │ • Encrypted at rest│ │ │ │ │ │ │ │ │ └──────────┬──────────┘ └─────────────────────┘ │ │ │ │ │ │ │ │ │ │ │ │ └─────────────┼─────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ │ OUTBOUND INTERNET (NAT Gateway or Internet Gateway) │ │ │ │ ┌─────────────▼─────────────┐ │ │ │ │ │ • No inbound allowed │ │ │ │ │ │ • TLS 1.3 required │ │ │ │ │ │ • Certificate validation │ │ │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ │ │ │ └─────────────────┼─────────────────────────────────────────────────────┘ │ │ │ │ │ │ HTTPS 443 (Outbound only) │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────────────────┐ │ │ │ DETECTIFY PLATFORM │ │ │ │ │ │ │ │ • Scan scheduling & orchestration │ │ │ │ • Results dashboard │ │ │ │ • Vulnerability management │ │ │ │ • Data encrypted at rest │ │ │ └─────────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────────┘

Key Security Properties

No Inbound Access Required

PropertyImplementation
No public IPsScanner runs in private subnets with no public IP addresses
No inbound rulesNo firewall or security group rules allowing inbound internet traffic
Internal load balancerScanner endpoint only accessible within your VPC
Outbound pollingScanner initiates all communication with Detectify (pull model)

Encryption

LayerProtection
In TransitTLS 1.3 for all external communication
At RestKMS encryption for Kubernetes secrets (configurable)
CredentialsStored as Kubernetes secrets, optionally encrypted with your KMS key

Network Isolation

The scanner is deployed in private subnets and communicates only with:

  • Your internal applications (for scanning)
  • Detectify platform (outbound HTTPS only)
  • *.detectify.com (API, container registry, all Detectify services)

Data Flow

What Leaves Your Network

Only scan metadata and vulnerability findings are sent to Detectify:

┌────────────────────────────────────────────────────────────────────────────────┐ │ DATA CLASSIFICATION │ ├────────────────────────────────────────────────────────────────────────────────┤ │ │ │ SENT TO DETECTIFY NEVER LEAVES YOUR NETWORK │ │ ───────────────── ──────────────────────── │ │ │ │ ✓ Vulnerability type ✗ Application source code │ │ ✓ Affected URL path ✗ Full HTTP request bodies │ │ ✓ Severity level ✗ Full HTTP response bodies │ │ ✓ CVE identifiers ✗ Authentication tokens/cookies │ │ ✓ Remediation guidance ✗ Database query results │ │ ✓ Scan progress status ✗ Internal file contents │ │ ✗ Environment variables │ │ ✗ Secrets or credentials │ │ ✗ PII or customer data │ │ │ └────────────────────────────────────────────────────────────────────────────────┘

Example: What a Finding Contains

When the scanner detects a vulnerability, this is what gets sent:

{ "type": "sql-injection", "severity": "high", "url": "https://internal-app.company.com/api/users", "parameter": "id", "evidence": "Error message indicates SQL syntax", "cve": "CWE-89", "first_seen": "2024-01-15T10:30:00Z" }

Not sent: The actual SQL query, database contents, or response data.

Credential Security

The scanner requires credentials from Detectify (license key, connector API key, registry credentials). For the full list and where to find them, see Requirements. For secure handling, see Secrets Management.

Credential Lifecycle

  • Credentials are generated by Detectify when Internal Scanning is enabled
  • Credentials have a validity period managed by Detectify
  • If credentials are compromised, disable them in the Detectify Platform and contact Detectify support
  • Credentials should be stored encrypted (KMS) and never committed to version control

Compliance Considerations

Your Responsibilities

AreaResponsibility
Infrastructure securitySecure your Kubernetes cluster, VPC, and IAM policies
Network segmentationControl which applications the scanner can access
Credential managementStore credentials securely using KMS encryption
Access controlLimit who can deploy and configure the scanner
Audit loggingEnable CloudTrail/audit logs for your cloud account

Detectify’s Responsibilities

AreaCoverage
Platform securitySecure infrastructure with industry certifications
Data protectionEncrypted at rest, access controlled
Vulnerability dataSecure storage with retention policies
AvailabilityHigh availability platform

For details on Detectify’s security certifications and compliance, see Detectify Security & Compliance .

Audit Trail

All scanner activity is logged:

Log TypeLocationContains
Scan executionYour cluster (kubectl logs)Scan progress, targets, errors
API callsCloudTrail (AWS)Terraform/kubectl actions
Results accessDetectify platformWho viewed findings, when

Security Best Practices

  • Deploy in private subnets with no public IPs and internal load balancer only
  • Store credentials using KMS encryption — see Secrets Management
  • Limit scanner network access to only required applications
  • Enable CloudWatch monitoring
  • Regularly update scanner version for security patches

Frequently Asked Questions

Can Detectify access my internal applications?

No. Detectify cannot initiate connections to your network. All communication is outbound from your scanner to Detectify. The scanner runs entirely in your infrastructure.

Can I restrict which applications the scanner can access?

Yes. Use Kubernetes network policies or security groups to limit which applications the scanner can reach. The scanner only scans applications you explicitly configure as targets.

How do I know the scanner isn’t sending unauthorized data?

  • All outbound traffic goes through your NAT Gateway or Internet Gateway (monitorable)
  • The scanner only sends findings data to Detectify as documented

Is the scanner itself secure?

  • Container images are signed and scanned for vulnerabilities
  • The scanner runs with non-root privileges
  • No persistent storage of application data
  • Regular security updates released by Detectify

Next Steps

Last updated on