Technical Whitepaper

Secure Log Collection for
Critical Infrastructure

Compiler-verified security for air-gapped and compliance-heavy OT environments. Single binary. No runtime dependencies.

64M events/secยท84ns latencyยทZero runtime deps

Executive Summary

Splunk has 252 published CVEs. Elastic has 216. Wazuh has 28, including a critical remote code execution vulnerability rated 9.9. These are not theoretical risks โ€” they are documented in the National Vulnerability Database and affect the tools currently deployed in critical infrastructure.

Many of these vulnerabilities are memory safety issues: buffer overflows, heap corruption, use-after-free. These vulnerability classes have been documented for decades. They continue to ship because the tools used to build infrastructure software do not prevent them.

Tell is a log collection and analytics engine written in Rust. The Rust compiler eliminates memory safety vulnerability classes at compile time. Code containing buffer overflows, use-after-free, or data races is rejected before the binary is built. This is not a testing process or coding standard โ€” it is a property of the compiled software.


CVE Reality Check

The tools currently deployed in OT environments have documented security vulnerabilities. These are not theoretical risks โ€” they are assigned CVE numbers and published in the National Vulnerability Database.

Published CVEs by Vendor (Source: OpenCVE, January 2026)

VendorCVEsMemory Safety IssuesCritical Examples
Splunk252YesRCE via XSLT, SSRF, privilege escalation
Elastic Stack216YesBuffer overflow in Filebeat syslog parser
Wazuh28YesHeap overflow, use-after-free, RCE (9.9)
Logpoint25YesSSRF (9.6 Critical), template injection RCE
Graylog17SomeSession leak (9.8), privilege escalation
syslog-ng9YesInteger overflow in RFC3164 parser
CrowdStrike5YesTLS validation flaw (8.1), race conditions
LogRhythm4YesCommand injection (9.8 Critical)
Tell0N/ARust compiler prevents these classes
Why This Matters for OT

Many of these CVEs are memory safety vulnerabilities: buffer overflows, heap corruption, use-after-free. These are the vulnerability classes that Rust eliminates at compile time. Wazuh CVE-2025-62786 is a heap-based out-of-bounds write that can lead to remote code execution. Elastic CVE-2025-68383 is a buffer overflow in the syslog parser. These vulnerabilities cannot exist in Tell โ€” the Rust compiler rejects the code paths that produce them.


The Security Problem

Log collectors occupy a privileged position in network architecture. They sit on perimeters, process untrusted input from external devices, and often bridge zone boundaries between equipment networks and IT infrastructure.

โ€œ70% of all Microsoft security vulnerabilities are memory safety issues.โ€

Microsoft Security Response Center, 2019

Buffer overflows, use-after-free, and data races are the attack vectors behind Stuxnet, Dirty Pipe, and the majority of CVEs issued against infrastructure software annually. JVM-based collectors add garbage collection pauses โ€” during traffic spikes, logs may be lost while the collector is paused.


Compiler-Verified Security

Tell is written in Rust, a systems programming language jointly recommended by CISA, NSA, and the EU Cyber Resilience Act for critical infrastructure. Rust's compiler enforces memory safety and thread safety as part of compilation.

What the Compiler Prevents

Buffer overflows, use-after-free, double-free, data races, null pointer dereferences, and uninitialized memory access. The code paths that would produce them cannot compile.

Same Function, Different Outcome
Elastic Filebeat
CVE-2025-68383
Buffer overflow in
syslog parser
vs
Tell
Not possible
Rust bounds checking
at compile time
Both products parse syslog. One has a buffer overflow vulnerability. The other cannot โ€” the compiler rejects the code that would produce it.

Vulnerability Comparison by Language

VulnerabilityC / C++JVMRust (Tell)
Buffer overflowPossibleRuntimeCompile-time
Use-after-freePossibleGCCompile-time
Data racesPossiblePossibleCompile-time
Null dereferencePossibleNPECompile-time
GC pausesN/AYesN/A

Full-Path Integrity

When using the Rust SDK, Tell's safety guarantees extend across the entire data path โ€” from instrumentation to storage.

Compiler-Verified Data Path
SDK Call
80ns
serialize, encode, enqueue
โ†’
Pipeline
Zero-copy
O(1) routing, fan-out
โ†’
Storage
Atomic
disk / forward / both
SDKs also available in C++, Go, Swift, JavaScript, and Flutter. The C++ SDK follows the same architecture but cannot offer compile-time safety guarantees.

Architecture

Data enters through sources, passes through a routing layer, and fans out to sinks. The entire pipeline operates on zero-copy buffers โ€” data flows from network socket to storage without duplication.

Pipeline Architecture
Sources
TCP (binary)
HTTP (JSON/binary)
Syslog TCP/UDP
โ†’
Routing
O(1) lookup
Fan-out
Workspace isolation
โ†’
Sinks
Disk (binary/text)
ClickHouse
Arrow / Parquet
Forwarder

Deployment

Tell is a single static binary โ€” the OT collector is 2.8 MB. No JVM, no garbage collector, no Python interpreter, no Docker. Copy to host, point at config, run. No internet connectivity required. No license server. No telemetry.

Performance

Throughput by Source Type

SourceProtocolThroughput
TCPFlatBuffers binary64M events/sec
HTTPBinary24M events/sec
Syslog TCPRFC 3164/54248.7M events/sec
HTTPJSON2.1M events/sec

Storage Options

Disk binary โ€” LZ4 compressed, 32 MiB buffer, hourly/daily rotation. Disk plaintext โ€” Human-readable, split by type. Parquet โ€” Zstd/Snappy/LZ4. Arrow IPC โ€” Query with DuckDB/Polars. ClickHouse โ€” Direct insert. Forwarder โ€” Retry, keepalive, source IP preservation.


Deployment Models

Air-Gapped Collector
Collect logs from OT equipment on an isolated network. Retain locally for compliance.

Equipment sends syslog or TCP data to Tell. The collector writes to local disk with hourly rotation and LZ4 compression. No internet, no outbound connections. Build with --features ot-collector to compile only TCP, syslog, and disk sink code.

ot-collector profile ยท 172 crates ยท 2.8 MB binary
Zone Boundary Forwarder
Collect in the OT zone. Retain locally. Forward to IT zone for centralized analysis.

The collector writes to disk as a compliance copy and simultaneously forwards upstream. Retry with configurable attempts, TCP keepalive, source IP preservation. Uses the same ot-collector build โ€” disk and forwarder sinks are both included. For relay-only nodes that don't need local retention, the ot-forwarder profile (2.5 MB, 170 crates) excludes disk storage entirely.

ot-collector profile ยท Disk sink + Forwarder sink
Multi-Tenant Collection
Single instance serving multiple customers with strict data separation.

Each tenant authenticates with a dedicated API key mapping to an isolated workspace. Routing directs each workspace's data to tenant-specific storage paths.

HTTP source โ†’ Per-workspace disk sinks

Compliance Alignment

EU Cyber Resilience Act

RequirementImplementation
Security by designRust compiler eliminates memory safety and thread safety vulnerability classes
Supply chain transparencyCycloneDX SBOM generated per build
Vulnerability handlingcargo audit for CVE monitoring
Minimal functionalityOT profiles compile only required components: ot-collector (172 crates, 2.8 MB) and ot-forwarder (170 crates, 2.5 MB). Analytics, TUI, HTTP source, connectors excluded.

IEC 62443

PrincipleImplementation
Zone/conduit architecturePipeline maps to zone boundaries; forwarder for conduits
Authentication16-byte API keys, O(1) lookup, constant-time comparison
Deterministic operationNo GC, no runtime; 84ns latency, zero-copy pipeline
Minimal functionalityComposable build profiles: OT collector (172 crates) excludes analytics, HTTP, TUI, connectors
AvailabilityGraceful shutdown, atomic file rotation, retry on failure

NIS2 Directive

RequirementImplementation
Log retentionDisk sinks with configurable rotation and compression
Access controlsAPI key authentication, workspace isolation, RBAC
Supply chain securityPer-build SBOM, dependency CVE monitoring

Why Existing Solutions Don't Fit OT

Beyond CVE counts, the architecture of existing solutions creates operational and security challenges in OT environments.

Elastic / ELK216 CVEs
  • Buffer overflow in Filebeat syslog parser (CVE-2025-68383)
  • Buffer overflows in Packetbeat protocol parsers
  • Java-based โ€” GC pauses cause log loss
  • Complex multi-component architecture
Splunk252 CVEs
  • Remote code execution via XSLT (CVE-2023-46214)
  • SSRF allowing unauthorized API calls
  • Enterprise pricing, cloud dependency
  • Heavy operational burden
Wazuh28 CVEs
  • Critical RCE via deserialization (CVE-2025-24016, 9.9)
  • Heap buffer overflow, use-after-free vulnerabilities
  • Buffer over-read in message parsing
  • Written in C โ€” memory safety issues
CrowdStrike5 CVEs
  • TLS validation flaw enabling MITM (CVE-2025-1146, 8.1)
  • Race conditions in Falcon sensor
  • Requires bidirectional cloud connectivity
  • Upstream connection = expanded attack surface
On Upstream Integrations

Some deployments consider forwarding logs to cloud-based platforms like CrowdStrike. This introduces bidirectional network connectivity to OT environments โ€” expanding the attack surface. CrowdStrike's own TLS validation vulnerability (CVE-2025-1146) demonstrates that even security vendors have implementation flaws. Tell's architecture supports air-gapped operation with optional one-way forwarding, minimizing exposure.

Feature Comparison

CapabilityTellElasticSplunkWazuh
Published CVEs021625228
Memory-safe languageRustJavaC++/PythonC
Single binaryโœ“โ€”โ€”โ€”
No GC pausesโœ“โ€”โ€”โœ“
Air-gap capableโœ“LimitedLimitedโœ“
Workspace isolationโœ“โ€”โœ“โ€”
SBOM per buildโœ“โ€”โ€”โ€”

CVE data from OpenCVE, January 2026. Tell CVE count reflects vulnerabilities in production releases.


Pricing

Revenue-based. All features included. No per-seat fees.

Free
โ‚ฌ0
< โ‚ฌ100K ARR
Starter
โ‚ฌ9/mo
โ‚ฌ100K โ€“ โ‚ฌ1M
Pro
โ‚ฌ299/mo
โ‚ฌ1M โ€“ โ‚ฌ10M
Enterprise
Custom
> โ‚ฌ10M ARR

Government, education, non-profit: Contact for special terms.


Next Steps

01
Technical Review
60-minute call. Architecture, security, requirements.
02
Pilot
Self-hosted. Syslog integration, local retention.
03
Production
Zone forwarding, multi-workspace, compliance.

Pilot requirements: Linux host, network access to sources, 30 minutes setup.

Built by the founder of Logpoint, the European SIEM platform (acquired). 15+ years in security information management. Tell applies that experience to operational technology: air-gapped networks, compliance requirements, and secure-by-design infrastructure.

CVE data independently verifiable at app.opencve.io. Data retrieved January 2026.