Scanners list what your build declares.
Provenance attests to where it came from.
Endura controls what it does.
$ systemctl enable endura-sensor
✔ Starting Runtime Sensor...
Ready to accept connections
$ endura job start --mode enforce --workspace ./your_cicd_job
> Monitoring job at ~/workspaces/your_cicd_job...
> Fetching policy from Team Server
> Enforcing policy security-baseline
$ endura sensor logs -f
✔ Starting Runtime Sensor...
$ endura sensor logs -f
ready to accept connections at
/run/endura/sensor.sock




monthly downloads of packages hijacked in a single August 2026 attack.
malicious package versions published in a single day, August 4, 2026
of 2026's three largest npm supply chain attacks carried valid provenance.
on average to identify and contain a supply chain compromise.
Executed Before Anyone Could Object
Compromised packages execute the moment they're pulled in, before tests, before scans, before review.
The Pipeline Holds Every Key You Own
Cloud credentials, publishing tokens, signing identity, production access. Nothing watches them at runtime.
Your pipeline executes code nobody read, on every build. Endura sets the limits of what that code can reach and enforces them in the kernel, rejecting anything outside the boundary before it completes.

Every Pipeline, Monitored
See every CI/CD pipeline and build in one place.
Every Behavior, Captured
Understand what every build actually needs.
Every Action, Governed
Apply mandatory access controls while builds run.
Every Violation, Actionable
Stop malicious behavior before it causes damage.
Endura runs as an eBPF sensor below the build and everything it invokes. Every file, credential, and network request passes through the kernel to happen at all. That's where your policy is enforced.
Under the Hood
How the eBPF Sensor WorksStopping the Threat
Recent Supply Chain IncidentsAdd Runtime Sensor in a few lines. The same policy runs on hosted runners or your own hardware.

name: CI
on:
push:
workflow_dispatch:
env:
ENDURA_TEAM_SERVER: https://team-server.example.com
ENDURA_ENV_VARS: ENDURA_TEAM_SERVER,ENDURA_LICENSE_KEY,ENDURA_SENSOR_TOKEN,ENDURA_LOG_FILE
jobs:
build:
runs-on: ubuntu-26.04
permissions:
contents: read
steps:
- name: Start Endura Sensor
run: |
# Install the Runtime Sensor package.
curl -sSf https://repo.endurasecurity.com/install/endura-sensor/testing.sh | sudo sh
# Start and verify the ephemeral Sensor.
export ENDURA_LOG_FILE="${RUNNER_TEMP}/endura.log"
sudo --preserve-env="${ENDURA_ENV_VARS}" endura sensor start -d
echo "started endura sensor: $(endura sensor status)"
sudo endura sensor hooks
# Start protection for subsequent workflow steps.
ENDURA_JOB_ID=$(endura job start)
echo "started endura job with id ${ENDURA_JOB_ID}"
# Expose credentials only during Sensor startup.
env:
ENDURA_LICENSE_KEY: "${{ secrets.ENDURA_LICENSE_KEY }}"
ENDURA_SENSOR_TOKEN: "${{ secrets.ENDURA_SENSOR_TOKEN }}"
# Check out and build protected sources.
- name: Checkout Code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Build
run: make build
# Stop and flush the ephemeral Sensor.
- name: Stop Endura Sensor
if: always()
run: sudo endura sensor stop
# Make the root-owned log uploadable.
- name: Prepare Endura Sensor Log
if: always()
run: |
if test -f "${RUNNER_TEMP}/endura.log"; then
sudo chown "$(id -u):$(id -g)" "${RUNNER_TEMP}/endura.log"
fi
# Retain Sensor logs after every outcome.
- name: Upload Endura Sensor Log
if: always()
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: endura-sensor-log-${{ github.job }}-${{ github.run_attempt }}
path: ${{ runner.temp }}/endura.log
if-no-files-found: warnvariables:
ENDURA_LOG_FILE: "${CI_PROJECT_DIR}/endura-sensor.log"
ENDURA_TEAM_SERVER: "https://team-server.example.com"
default:
image: ubuntu:26.04
tags:
- saas-linux-small-amd64
before_script:
# Install Runtime Sensor prerequisites.
- apt-get update -qq
- DEBIAN_FRONTEND=noninteractive apt-get install -y -qq curl ca-certificates
# Install Endura.
- curl -sSf https://repo.endurasecurity.com/install/endura-sensor/testing.sh | sh
# Mount the kernel filesystems required by the Runtime Sensor.
- |
mkdir -p /sys/fs/bpf
if ! mountpoint -q /sys/fs/bpf; then
mount -t bpf bpf /sys/fs/bpf
fi
mkdir -p /sys/kernel/security
if ! mountpoint -q /sys/kernel/security; then
mount -t securityfs securityfs /sys/kernel/security
fi
# Start the Runtime Sensor and protected job in the main shell.
- |
cleanup_endura() {
build_rc=$?
trap - EXIT
set +e
endura job stop
job_stop_rc=$?
endura sensor stop
sensor_stop_rc=$?
if [ "${build_rc}" -ne 0 ]; then
exit "${build_rc}"
fi
if [ "${job_stop_rc}" -ne 0 ]; then
exit "${job_stop_rc}"
fi
exit "${sensor_stop_rc}"
}
trap cleanup_endura EXIT
endura sensor start -d
unset ENDURA_LICENSE_KEY ENDURA_SENSOR_TOKEN
endura sensor status
endura sensor hooks
ENDURA_JOB_ID=$(endura job start --workspace "${CI_PROJECT_DIR}")
echo "started endura job with id ${ENDURA_JOB_ID}"
stages:
- build
build:
stage: build
script:
- apt-get update -qq
- DEBIAN_FRONTEND=noninteractive apt-get install -y -qq make nodejs npm
- make build
artifacts:
when: always
paths:
- endura-sensor.logpipeline {
// Select a Sensor-enabled build agent.
agent { label 'endura' }
// Defer source checkout until protection starts.
options {
skipDefaultCheckout(true)
}
// Map branch metadata for build detection.
environment {
BUILD_BRANCH = "${env.BRANCH_NAME}"
}
stages {
// Start protection before source checkout.
stage('Start Endura Job') {
steps {
sh '''
ENDURA_JOB_ID=$(endura job start)
echo "started endura job with id ${ENDURA_JOB_ID}"
'''
}
}
// Check out protected source code.
stage('Checkout') {
steps {
checkout scm
}
}
// Run the protected project build.
stage('Build') {
steps {
sh 'make build'
}
}
}
// Stop protection after every pipeline outcome.
post {
always {
sh 'endura job stop'
}
}
}version: 2
plan:
project-key: PROJ
key: BUILD
name: Example Build
stages:
- Build:
jobs:
- Build
Build:
tasks:
- script:
description: Start Endura Job
interpreter: SHELL
scripts:
- |
# Map Bamboo metadata for build detection.
export BUILD_BRANCH="${bamboo.planRepository.branchName}"
export BUILD_TRIGGERED_BY="${bamboo.ManualBuildTriggerReason.userName}"
# Start protection before source checkout.
ENDURA_JOB_ID=$(endura job start)
echo "started endura job with id ${ENDURA_JOB_ID}"
# Run existing protected build tasks here.
final-tasks:
- script:
description: Stop Endura Job
interpreter: SHELL
scripts:
- endura job stopPipeline threats are attacks that act inside your build: stealing credentials, opening connections, poisoning caches, tampering with artifacts. They don't announce themselves in a scan because they haven't done anything yet. Endura catches them at the moment they do.
This isn't a signature list. Endura stops behavior that falls outside your policy, including techniques that don't have names yet.
Prevent attempts to read, modify, or execute unauthorized files, blocking code injection and data exfiltration attacks.
File Access
Prevent memory patching and fileless execution techniques used by advanced persistent threats and rootkits.
Memory Attacks
Prevent unauthorized container execution and socket access that could compromise containerized pipeline environments.
Container Breakouts
Prevent attackers from hijacking trusted processes through library preloading, debugger attachment, and runtime tampering.
Process Injection
Block unauthorized reads of secrets, tokens, and SSH keys, preventing pipeline credentials from being stolen.
Credential Theft
Block unauthorized network connections that could be used for command-and-control communications or data exfiltration.
Network Exploitation
Stop attempts to escalate privileges using kernel capabilities, preventing attackers from gaining administrative access.
Privilege Escalation
Block attempts to load malicious kernel modules or eBPF programs that could compromise the entire system.
Kernel Exploitation
Detect interactive shells backed by network sockets, along with raw packet capture and promiscuous sniffing.
Reverse Shells
Stop attackers from installing backdoors in startup files, scheduled tasks, and service definitions to survive across builds and reboots.
Malicious Persistence
Prevent attempts to read, modify, or execute unauthorized files, blocking code injection and data exfiltration attacks.
File Access
Prevent memory patching and fileless execution techniques used by advanced persistent threats and rootkits.
Memory Attacks
Prevent unauthorized container execution and socket access that could compromise containerized pipeline environments.
Container Breakouts
Prevent attackers from hijacking trusted processes through library preloading, debugger attachment, and runtime tampering.
Process Injection
Block unauthorized reads of secrets, tokens, and SSH keys, preventing pipeline credentials from being stolen.
Credential Theft
Block unauthorized network connections that could be used for command-and-control communications or data exfiltration.
Network Exploitation
Stop attempts to escalate privileges using kernel capabilities, preventing attackers from gaining administrative access.
Privilege Escalation
Block attempts to load malicious kernel modules or eBPF programs that could compromise the entire system.
Kernel Exploitation
Detect interactive shells backed by network sockets, along with raw packet capture and promiscuous sniffing.
Reverse Shells
Stop attackers from installing backdoors in startup files, scheduled tasks, and service definitions to survive across builds and reboots.
Malicious Persistence
Prevent attempts to read, modify, or execute unauthorized files, blocking code injection and data exfiltration attacks.
File Access
Prevent memory patching and fileless execution techniques used by advanced persistent threats and rootkits.
Memory Attacks
Prevent unauthorized container execution and socket access that could compromise containerized pipeline environments.
Container Breakouts
Prevent attackers from hijacking trusted processes through library preloading, debugger attachment, and runtime tampering.
Process Injection
Block unauthorized reads of secrets, tokens, and SSH keys, preventing pipeline credentials from being stolen.
Credential Theft
Block unauthorized network connections that could be used for command-and-control communications or data exfiltration.
Network Exploitation
Stop attempts to escalate privileges using kernel capabilities, preventing attackers from gaining administrative access.
Privilege Escalation
Block attempts to load malicious kernel modules or eBPF programs that could compromise the entire system.
Kernel Exploitation
Detect interactive shells backed by network sockets, along with raw packet capture and promiscuous sniffing.
Reverse Shells
Stop attackers from installing backdoors in startup files, scheduled tasks, and service definitions to survive across builds and reboots.
Malicious Persistence
Block unauthorized network connections that could be used for command-and-control communications or data exfiltration.
Network Exploitation
Stop attempts to escalate privileges using kernel capabilities, preventing attackers from gaining administrative access.
Privilege Escalation
Block attempts to load malicious kernel modules or eBPF programs that could compromise the entire system.
Kernel Exploitation
Detect interactive shells backed by network sockets, along with raw packet capture and promiscuous sniffing.
Reverse Shells
Stop attackers from installing backdoors in startup files, scheduled tasks, and service definitions to survive across builds and reboots.
Malicious Persistence
Prevent attempts to read, modify, or execute unauthorized files, blocking code injection and data exfiltration attacks.
File Access
Prevent memory patching and fileless execution techniques used by advanced persistent threats and rootkits.
Memory Attacks
Prevent unauthorized container execution and socket access that could compromise containerized pipeline environments.
Container Breakouts
Prevent attackers from hijacking trusted processes through library preloading, debugger attachment, and runtime tampering.
Process Injection
Block unauthorized reads of secrets, tokens, and SSH keys, preventing pipeline credentials from being stolen.
Credential Theft
Block unauthorized network connections that could be used for command-and-control communications or data exfiltration.
Network Exploitation
Stop attempts to escalate privileges using kernel capabilities, preventing attackers from gaining administrative access.
Privilege Escalation
Block attempts to load malicious kernel modules or eBPF programs that could compromise the entire system.
Kernel Exploitation
Detect interactive shells backed by network sockets, along with raw packet capture and promiscuous sniffing.
Reverse Shells
Stop attackers from installing backdoors in startup files, scheduled tasks, and service definitions to survive across builds and reboots.
Malicious Persistence
Prevent attempts to read, modify, or execute unauthorized files, blocking code injection and data exfiltration attacks.
File Access
Prevent memory patching and fileless execution techniques used by advanced persistent threats and rootkits.
Memory Attacks
Prevent unauthorized container execution and socket access that could compromise containerized pipeline environments.
Container Breakouts
Prevent attackers from hijacking trusted processes through library preloading, debugger attachment, and runtime tampering.
Process Injection
Block unauthorized reads of secrets, tokens, and SSH keys, preventing pipeline credentials from being stolen.
Credential Theft
Block unauthorized network connections that could be used for command-and-control communications or data exfiltration.
Network Exploitation
Stop attempts to escalate privileges using kernel capabilities, preventing attackers from gaining administrative access.
Privilege Escalation
Block attempts to load malicious kernel modules or eBPF programs that could compromise the entire system.
Kernel Exploitation
Detect interactive shells backed by network sockets, along with raw packet capture and promiscuous sniffing.
Reverse Shells
Stop attackers from installing backdoors in startup files, scheduled tasks, and service definitions to survive across builds and reboots.
Malicious Persistence
Prevent attempts to read, modify, or execute unauthorized files, blocking code injection and data exfiltration attacks.
File Access
Prevent memory patching and fileless execution techniques used by advanced persistent threats and rootkits.
Memory Attacks
Prevent unauthorized container execution and socket access that could compromise containerized pipeline environments.
Container Breakouts
Prevent attackers from hijacking trusted processes through library preloading, debugger attachment, and runtime tampering.
Process Injection
Block unauthorized reads of secrets, tokens, and SSH keys, preventing pipeline credentials from being stolen.
Credential Theft
Endura complements established software supply chain security frameworks by adding visibility, least-privilege controls, and runtime enforcement to CI/CD environments.
SLSA
Complement build provenance and integrity controls with runtime enforcement that restricts unauthorized activity in CI/CD environments.
NIST SSDF (SP 800-218)
Support secure software development practices through build environment protection, least-privilege policies, and runtime monitoring.

Federal Software Supply Chain Security
Strengthen software supply chain risk management with runtime controls, policy enforcement, and visibility into security-sensitive build activity.


One rate per protected pipeline. No platform fee, no onboarding fee, and unlimited discovery on every plan.

For validating on a focused set of critical pipelines before expanding deployment.
$500
/Pipeline/60d

Up to 25 protected pipelines
Full runtime enforcement
Automated policy generation
Unlimited pipeline discovery
For growing teams ready to protect production pipelines across their CI/CD environment.
$500
/Pipeline/Year

Up to 300 protected pipelines
Everything in Pilot
Notification integrations
Multi-provider CI/CD coverage
For security teams standardizing runtime policy across a growing pipeline estate.
Volume
Pricing
Up to 2,500 protected pipelines
Everything in Startup
Graduated volume pricing
Analytics and reporting
For organizations standardizing across environments and operating models.
Custom
Pricing

Enterprise-scale coverage
Everything in Business
Managed or Self-Hosted
Multi-business-unit deployments
Deploy the sensor on one pipeline and see every file, connection, and process your build touches.

Enforce what your pipeline is allowed to do at the kernel level, blocking unauthorized network connections, file access, and process execution as they happen. Reach out and let us show you what that looks like on a real build.
