Licence and security

Security

How DPLens is built and signed, what it stores, what it never does, and how to report a vulnerability.

DPLens runs on the machines that matter most, with access to their logs. This page sets out what it does, what it deliberately does not do, and how to tell us if we have got something wrong.

It does not phone home

The only outbound connections DPLens makes are to the destinations you configure — and, if you switch it on, the public-IP enrichment lookup. That one contacts a third-party address-reflection service, is off by default, and lets you point it at any endpoint you prefer.

The shape of the process

DPLens runs as two processes, not one.

The collection service does the work, as a virtual service account with no password and only the privileges it needs.

The console host is separate, with fewer privileges. It cannot read your event logs, reach your destinations, or read the secret store; it asks the service and renders the answers. A fault in the web interface cannot become a fault in collection.

See The service and its permissions.

Data at rest

WhatWhereProtection
Configurationconfig\agent.yamlAdministrators and the service only
Licenceconfig\licence.keyAs above. Signed, not secret.
Secretsstate\secrets\Sealed to this machine. Never displayed or written out in clear. The one way out is the deployment capture, which the agent performs itself and only re-encrypted under a deployment key that is shown once and never stored — see The deployment MSI.
Undelivered eventsstate\cache\<destination>\As above — this is your log data, so the folder permissions matter
Audit logstate\audit\audit.jsonlAppend-only, hash-chained
Console passwordstate\secrets\Stored as a hash, sealed like any other secret
Sign-in lockout statestate\auth\As above

Permissions are applied at installation and re-applied and verified at every service start, so a change made by something else is corrected rather than inherited.

Secrets are write-only

You can set a secret and see that a handle is in use. Nothing shows you what is behind it — not the console, not a log, not the configuration file, not an export.

Sealing is to the machine: copying the state folder onto a different, separately-installed machine does not carry the values with it. That is what protects a stolen or mislaid copy of the folder.

Sealing is not a boundary between accounts on the same machine, and it is not a substitute for keeping secrets out of an image. The folder permissions are what keep other local users out, and a machine cloned from an image can carry usable material with it — so do not bake secrets into a golden image. See Golden images and VDI clones.

Data in transit

How it is built

Signing and the bill of materials

Released artefacts are Authenticode-signed and published with SHA-256 checksums and a software bill of materials in both CycloneDX and SPDX formats.

Verify what you downloaded before you run it — see Verifying a download, which also explains what an unsigned pre-release means and how to tell.

The agent checks its own signature at start-up and records what it found in the audit log.

The audit log

Every change is recorded: sign-ins and failures, configuration applies and rollbacks, password changes, certificate installation, licence changes, masking policy changes, and the agent's own start-up checks.

Each record is chained to the one before it with a cryptographic hash, so a record cannot be altered or removed without breaking the chain, and the console shows whether the chain verifies.

It is append-only and cannot be cleared from the console. Ship it to your SIEM if you want it retained off the machine.

Nothing is dropped silently

Every drop, mask, aggregation, failover and policy change increments a counter the console renders. If DPLens discards an event, it is because you configured something that discards events, and the number is on the Overview attributed to the rule that did it.

This is a design rule, not a feature: a log agent that loses data quietly is worse than no log agent, because you believe you have coverage you do not have.

Hardening checklist

Leave the console on loopback unless you need it remotely
If you need it remotely, set the allowed networks tightlySettings
Install your own console certificate
Use TLS to every destination that supports itChoosing a destination
Keep certificate validation on
Configure masking before you configure deliveryPipeline
Set Allowed networks on every syslog and NetFlow receiverSources
Ship the audit log to your SIEMLogs and health
Keep the default service account rather than LocalSystem
Verify the download before installingVerifying a download
Back up the configuration and licenceBackup and recovery

Reporting a vulnerability

If you believe you have found a security issue in DPLens, tell us before you tell anyone else, and we will work with you on a fix and a disclosure timetable.

security@dplens.com

Please include what you found, how to reproduce it, the version affected, and how you would like to be credited. We will acknowledge your report, keep you updated while we investigate, and credit you when we publish the fix unless you ask us not to.

Please do not test against systems you do not own or have permission to test.