Paperclip AI Agent Platform — CVE-2026-41679

Unauthenticated remote code execution via a missing-authorization-check on the company-IMPORT route (self-registration → self-approved board credential → import → wake → RCE). CVSS 10.0. Two related flaws (GHSA-x8hx-rhr2-9rf7 DNS rebinding, CVSS 9.6; GHSA-xfqj-r5qw-8g4j missing route auth, CVSS 8.3) disclosed alongside it. Fixed in v2026.416.0 (2026-04-16); public Metasploit module and fresh technical writeups surfaced the week of 2026-08-05.
Threat
Paperclip CVE-2026-41679
Severity
CRITICAL · CVSS 10.0
Type
Unauthenticated RCE · Authorization Bypass
Access
Network, no auth, no user interaction
Exploitation
PoC public · Metasploit module public · no confirmed ITW as of 2026-08-05
Version
v0.1 · 2026-08-11
Author
HuntPack
Confidence
High — vendor advisory + code-level technical writeup + 4 independent outlets
01

Executive Summary

Paperclip is a self-hosted, open-source control plane for teams of AI agents. In its default configuration it allows anyone to self-register an account, and a newly registered user can self-approve their own CLI authorization challenge to mint a persistent board-level API credential without any independent approver. That board-level credential is enough to reach the company-import route — which, unlike direct company creation, was never restricted to instance administrators. An attacker imports a company bundle defining an agent whose adapter type is process (Paperclip's built-in command executor), wakes the agent, and Paperclip spawns the attacker's chosen command with the OS privileges of the Paperclip server process. The whole chain is six unauthenticated API calls end to end, Rapid7 shipped a public Metasploit module for it in June 2026, and CISA's SSVC enrichment marks it automatable with total technical impact.

Two related flaws disclosed in the same Oasis Security report reach the identical outcome (attacker-controlled agent configuration reaching the host execution adapter) through different trust failures: a DNS-rebinding attack against Paperclip's local_trusted developer mode (GHSA-x8hx-rhr2-9rf7, CVSS 9.6, drive-by RCE against a developer's own machine via a malicious webpage — no credentials required), and a set of API routes that omitted authentication or company-scoping checks entirely (GHSA-xfqj-r5qw-8g4j, CVSS 8.3, information disclosure and reconnaissance). All three share one root cause Oasis calls out explicitly: "agent configuration must be treated as executable input." Paperclip fixed all three in v2026.416.0 (server manifest 0.3.1).

The attack chain up through "agent woken" lives entirely in Paperclip's own application and audit logs — self-registration, self-approval, and company import are not Falcon-visible events. Everything from the moment the process adapter calls spawn() onward — the attacker's command executing as a child of the Paperclip server process, and whatever it does next — is fully visible to Falcon EDR and is where this pack's detection coverage concentrates.

Defender priority: patch to v2026.416.0+ today if you run Paperclip network-accessible in authenticated mode with default open registration — this is a CVSS 10.0, six-call, fully automated, unauthenticated chain with a public Metasploit module. If you cannot patch immediately, disable open self-registration (PAPERCLIP_AUTH_DISABLE_SIGN_UP) and pull the instance behind a VPN/allowlist today; that alone breaks step 1 of the chain.
02

Source Review & Web Hunter Notes

Six sources fetched and saved verbatim to Paperclip-CVE-2026-41679-Hunt-sources/. No embedded instructions directed at an AI agent were found in any fetched page; all content was treated as data, not directions. One note on internal consistency: The Hacker News's own review found Paperclip uses two version labels for the same tagged release — the GitHub security-release tag is v2026.416.0 while the in-tag server/CLI manifests report 0.3.1 — which is why sources reference both. The GHSA-x8hx-rhr2-9rf7 (DNS-rebinding) advisory still lists no formal patched-version field even though the fix is present in the same tagged source; treat v2026.416.0/0.3.1 as the safe upgrade target for all three findings.

TierSourceKey FindingCarry Forward
1Oasis Security — Breaking the PaperclipDiscoverer/discloser; names all 3 flaws, the shared "config-is-code" root cause, and the exact authorization mismatch (direct company creation requires instance-admin; import does not)yes
1GitHub Security Advisory GHSA-68qg-g8mg-6pr7Code-level technical advisory for CVE-2026-41679: exact source locations (server/src/config.ts, server/src/services/company-portability.ts, server/src/routes/agents.ts), confirms spawn() is called with zero sandboxing, confirms fixyes
1The Hacker NewsIndependent verification, version-labeling discrepancy note, notes absence from CISA KEV as of 2026-08-05, confirms no corroborated ITW exploitationyes
2SecurityWeekCorroborates chain and impact scope (app data, source repos, local credentials, agent secrets, reachable internal services); frames as part of a broader AI-agent-as-identity trendpartial
2Rapid7 Metasploit Weekly Wrap-UpConfirms public Metasploit module linux/http/paperclipai_unauth_rce_cve_2026_41679, six-API-call automated chain, shipped June 2026 — two months before this week's writeup waveyes
2CVE Feed (NVD/CISA-ADP aggregation)CISA-ADP SSVC: exploitation=poc, automatable=yes, technicalImpact=total; affected version range < 2026.416.0 for both paperclipai and @paperclipai/server npm packages; confirms Node.js/React architectureyes

Not fully corroborated / used with caution: the exact default network port Paperclip listens on is not stated consistently across sources reviewed — CQL queries in this pack deliberately do not hard-code a port and instead surface all external connections/listeners for the analyst to scope to their own deployment's configured port.

03

Hunt Brief & Attack Chain

Hunt hypotheses

  1. Process-adapter abuse (high confidence). If CVE-2026-41679 has been exploited, the Paperclip server process (a Node.js process) will have spawned an unexpected shell or interpreter as a direct child — the process adapter calls spawn() with zero sandboxing on the attacker-supplied command.
  2. Reverse-shell delivery (high confidence). The simplest payload for a six-call automated chain is a reverse shell; command lines spawned from the Paperclip process tree containing shell-redirect-to-network or interpreter-socket patterns are high-signal.
  3. Post-RCE discovery and credential access (high confidence). The disclosed proof-of-concept itself runs id and whoami as its verification step — expect discovery commands as the first post-exploitation action, followed by credential-file reads if the operator pivots.
  4. Persistence via the compromised service account (medium-high confidence). An attacker with arbitrary command execution as the Paperclip server's OS user will typically establish a foothold beyond the single RCE — registry Run-key/Asep entries (Windows) or cron/systemd/SSH-key changes (Linux, only partially Falcon-visible via command line).
  5. Outbound C2/exfil (medium confidence, needs tuning). A spawned child process reaching out to a non-private destination shortly after being spawned by the Paperclip process tree is consistent with C2 callback or exfiltration, but Paperclip's own legitimate LLM-API/package-registry traffic will need to be excluded.
  6. Internet exposure as a leading indicator (low confidence, exposure signal only). Any Paperclip instance accepting inbound connections from the public internet on its authenticated-mode listener is, by definition, in the vulnerable population before considering registration settings — useful for prioritization, not for confirming compromise.

Attack chain

StepActionTelemetryHunt Angle
1Attacker self-registers an account (open signup, no email verification)Paperclip application/audit log onlyNative audit hunt — see §7
2Attacker creates & self-approves a CLI authorization challenge, minting a board-level API credential with no independent approverPaperclip application/audit log onlyNative audit hunt — see §7
3Attacker uses the board-level token against the company-IMPORT route (missing instance-admin check that direct company creation correctly enforces)Paperclip application/audit log onlyNative audit hunt — see §7
4Attacker imports a .paperclip.yaml bundle defining a new company + an agent configured with the process adapter and a commandFalcon file-write telemetry — partial (archive-upload path only; inline-JSON API path used by the disclosed six-call chain writes no file Falcon natively tracks)Q8 (partial) — gap noted in §15
5Attacker "wakes" the imported agent; the wakeup handler only checks company access, which passes because the attacker owns the company they just importedPaperclip application/audit log onlyNative audit hunt — see §7
6Paperclip's process adapter calls spawn() with the attacker's command, executing with the OS privileges of the Paperclip server process — full RCEFalcon ProcessRollup2full coverageQ1, Q2, Q3, Q4
7Post-exploitation: discovery, credential access, persistence, lateral movement, C2/exfil, using the OS privileges obtained in step 6Falcon Process/Registry/Network — full to partial coverage depending on behaviorQ3, Q4, Q5, Q6, Q7
04

Consolidated IOC Table

This CVE is an authorization-logic bug in an open-source application, not a payload family — there are no published file hashes or C2 domains/IPs to ship as atomic detect/block indicators. The table below lists the identifiers actually published (CVE/advisory IDs, affected package versions, the vulnerable configuration default, and the public exploit tooling), all of which trace to the saved source snapshots — see §10 for the import-ready quick-copy blocks and §15/exec-summary for the honest coverage-gap statement.

TypeValueConfidenceActionContextExpiry
cveCVE-2026-41679highdetectPrimary RCE flaw — import authorization bypass, CVSS 10.02027-02-11
advisoryGHSA-68qg-g8mg-6pr7highdetectCode-level technical advisory for CVE-2026-416792027-02-11
advisoryGHSA-x8hx-rhr2-9rf7highhuntDNS-rebinding drive-by RCE against local_trusted mode, CVSS 9.62026-11-11
advisoryGHSA-xfqj-r5qw-8g4jhighhuntMissing authz on several API routes, CVSS 8.3, info disclosure/recon2026-11-11
softwarepaperclipai / @paperclipai/server (npm) < v2026.416.0highdetectVulnerable version range — inventory and patch target2027-02-11
config-weaknessPAPERCLIP_AUTH_DISABLE_SIGN_UP defaulting to falsehighhuntOpen self-registration is the enabling condition for step 1 of the chain — audit this setting regardless of patch status2026-11-11
toolingMetasploit module linux/http/paperclipai_unauth_rce_cve_2026_41679highenrichPublic, automated six-API-call exploit chain, published June 20262026-09-11
behavioral-artifact.paperclip.yaml agent bundle configured with a process adaptermediumhuntLegitimate feature abused as executable config — not malicious by itself, context-dependent2026-11-11
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk
Paperclip application layer (registration, CLI auth, import, wake)Paperclip's own application/audit log — not Falconcriticalhigh — no Falcon visibility at all into steps 1–3 and 5 of the chain
Host OS running the Paperclip server process (self-hosted, typically Linux/Node.js, often containerized)Falcon ProcessRollup2, RegGenericValueUpdate/AsepValueUpdatecriticallow — full coverage once the process adapter executes (step 6 onward)
Network exposure (internet-accessible authenticated-mode deployments)Falcon NetworkConnectIP4, NetworkReceiveAcceptIP4 + perimeter/firewall/reverse-proxy logshighmedium — Falcon only sees connections on sensor-monitored hosts, not internet-wide exposure; high false-positive rate on inbound-connection volume alone
Developer workstation (local_trusted mode, DNS-rebinding path — GHSA-x8hx-rhr2-9rf7)Same endpoint process/network telemetry as the server path, once code executeshighhigh — the browser/DNS delivery mechanism itself is invisible to EDR; only the resulting process execution is covered, identically to the server-side chain
06

ATT&CK Mapping

TacticTechniqueTechnique NameObserved / Expected Behavior
Initial AccessT1190Exploit Public-Facing ApplicationUnauthenticated attacker exploits the import-authorization gap on a network-accessible Paperclip instance
Initial Access / PersistenceT1078Valid AccountsSelf-registered account is escalated to a durable board-level credential via self-approval of its own CLI authorization challenge
ExecutionT1059Command and Scripting InterpreterProcess adapter's spawn() call executes the attacker's command as a Paperclip server child process
Command and ControlT1071.001 / T1105Application Layer Protocol (Web) / Ingress Tool TransferReverse shell or staged tooling download from the compromised host
DiscoveryT1082, T1033, T1057, T1018System Info / Owner Discovery, Process Discovery, Remote System Discoverywhoami, id, uname, network/host enumeration — matches the disclosed PoC's own verification step
Credential AccessT1552.001Unsecured Credentials: Credentials In FilesReads of cloud/SSH/env credential files reachable by the Paperclip service account
PersistenceT1547.001, T1543, T1053Registry Run Keys, Create/Modify System Process, Scheduled Task/JobAutostart or service persistence established from the compromised process tree
ExfiltrationT1041Exfiltration Over C2 ChannelOutbound transfer of application data, source repos, or credentials reachable from the host
07

Native Audit-Log Hunts

The API-level attack chain — self-registration, self-approval, import, wake — is not visible to Falcon. It lives entirely in Paperclip's own application/audit log (and, for the DNS-rebinding path, in browser/DNS telemetry Falcon also does not natively collect). These checks require pulling Paperclip's own logs; they are the highest-signal detections for this specific chain and should run alongside the CQL queries in §8, not instead of them.

  • Self-approval velocity. Query Paperclip's audit log for accounts where the same actor identity both created and approved a CLI authorization challenge, especially within minutes of account registration. In legitimate operation a CLI challenge is approved by a different, already-trusted user.
  • Import target-mode by role. Flag any company-import event with target.mode = new_company initiated by an actor whose role is board-level rather than instance-administrator — this is the exact authorization mismatch CVE-2026-41679 exploited, and it is a clean, low-noise signal once the app-log field is available.
  • Wake-immediately-after-import. Flag agent "wake" events occurring within seconds to low minutes of the company import that created the agent, particularly when the agent's adapter type is process. Legitimate operator workflows rarely wake a freshly imported agent instantly.
  • Registration configuration audit. Confirm the deployment's PAPERCLIP_AUTH_DISABLE_SIGN_UP setting. If it is unset or false, open self-registration is active — treat as a standing finding regardless of patch level, since open registration is the enabling condition for step 1 even after the import-route fix closes the RCE path.
  • Deployment-mode audit. Confirm the instance is not running local_trusted mode anywhere reachable by more than a single trusted developer on a single machine. If it must run in local_trusted, confirm the version is v2026.416.0+ so the private-hostname/DNS-rebinding guard is active.
  • Version/patch-status check. Query the instance's own health/version endpoint (or CLI/manifest version) and confirm it reports v2026.416.0 or server-manifest 0.3.1 or later. See the audit commands in §10 and §13.
If your organization does not operate Paperclip's own log pipeline into a SIEM, these checks require going directly to the Paperclip instance's admin/audit interface or database. This is the single biggest coverage gap in this pack — see §15.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · Process-Adapter Child Process Execution
CONF HIGHFP MEDIUMCOST LOW

Looks for: a shell or scripting interpreter spawned directly by the Paperclip server process — the exact shape of the process adapter's unsandboxed spawn() call. FP: legitimate agents configured with a process adapter that intentionally shell out to signed internal automation will also match; requires baselining before promotion to a blocking IOA.

// HUNT: Process-Adapter Child Process Execution (Paperclip RCE Step)
// MITRE: T1059, T1190
// CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate agents configured with a process adapter that intentionally shell out to signed internal automation
// TUNING: exclude known-good agent automation by SHA256HashData or a signed internal wrapper FileName; baseline the process adapter's expected command set for 7-14 days before promoting to a blocking IOA
// LOOKBACK: 14d
#event_simpleName=/^ProcessRollup2$/
| ParentBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|docker-entrypoint\.sh)(\.exe)?$/i
| FileName=/^(bash|sh|dash|zsh|cmd|powershell|pwsh|python3?|perl|ruby|nc|ncat|socat)(\.exe)?$/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
| sort(@timestamp, order=desc)
Q2 · Reverse Shell Command Patterns in the Paperclip Process Tree
CONF HIGHFP LOWCOST LOW

Looks for: the highest-signal reverse-shell command-line idioms (/dev/tcp redirection, nc -e, interpreter socket one-liners, hidden-window PowerShell) anywhere below the Paperclip process in the tree. FP: internal red-team/pentest activity against the same host; otherwise rare.

// HUNT: Reverse Shell Command Patterns in Paperclip Process Tree
// MITRE: T1059, T1071.001, T1105
// CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: internal red-team/pentest activity against the same host; otherwise rare
// LOOKBACK: 14d
#event_simpleName=/^ProcessRollup2$/
| GrandparentBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|docker-entrypoint\.sh)(\.exe)?$/i
| CommandLine=/(\/dev\/tcp\/|nc\s+-e|ncat\s+.*-e|bash\s+-i\s+>&|python[3]?\s+-c\s+.*socket|powershell\s+-nop.*-w\s+hidden|Invoke-WebRequest.*IEX)/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, GrandparentBaseFileName, FileName, CommandLine])
| sort(@timestamp, order=desc)
Q3 · Discovery / Recon Commands via the Process Adapter
CONF HIGHFP MEDIUMCOST LOW

Looks for: basic host/network discovery commands spawned from the Paperclip process tree — this matches the disclosed proof-of-concept's own verification step (id / whoami). FP: monitoring/observability agents and health-check scripts that legitimately run whoami/uname/hostname on a schedule.

// HUNT: Discovery / Recon Commands via Process Adapter
// MITRE: T1082, T1033, T1057, T1018
// CONF: high  FP: medium  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: monitoring/observability agents and health-check scripts that legitimately run whoami/uname/hostname on a schedule
// TUNING: exclude the ParentBaseFileName of your known monitoring/APM agent, or exclude CommandLine matches carrying your health-check script's known argument signature
// LOOKBACK: 14d
#event_simpleName=/^ProcessRollup2$/
| ParentBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|docker-entrypoint\.sh)(\.exe)?$/i
| CommandLine=/\b(whoami|id\s|uname\s+-a|hostname|ip\s+a(ddr)?|ifconfig|netstat\s+-|ss\s+-tuln|cat\s+\/etc\/passwd|systeminfo|net\s+user|wmic)\b/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
| sort(@timestamp, order=desc)
Q4 · Credential-Access File Reads via the Process Adapter
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: command lines referencing cloud/SSH/env/secret files reachable by the Paperclip service account — the natural next step after the RCE step, per Oasis's stated impact scope (application data, credentials, agent secrets, reachable internal services). FP: legitimate deployment/config-management tooling reading the same files as part of normal CI/CD.

// HUNT: Credential-Access File Reads via Process Adapter
// MITRE: T1552.001, T1555
// CONF: medium  FP: medium  COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legitimate deployment/config-management tooling reading the same credential files as part of normal CI/CD
// TUNING: exclude your known CI/CD runner's ParentBaseFileName and service-account UserName; scope to interactive shells (bash/sh/cmd/powershell) rather than known automation binaries
// LOOKBACK: 14d
#event_simpleName=/^ProcessRollup2$/
| ParentBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|docker-entrypoint\.sh)(\.exe)?$/i
| CommandLine=/(\.aws\/credentials|\.ssh\/id_rsa|\.env\b|\.npmrc|kubeconfig|\.docker\/config\.json|secrets\.ya?ml|vault\s+read|gcloud\s+auth)/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine])
| sort(@timestamp, order=desc)
Q5 · Registry Run-Key / Autostart Persistence from the Paperclip Process Tree
CONF HIGHFP LOWCOST LOW

Looks for: autostart registry persistence (Run/RunOnce keys) written by a process in the Paperclip tree — the Windows-host persistence angle after an initial RCE. FP: legitimate software installers running under the same service account in shared/dev environments; low volume in practice.

// HUNT: Registry Run-Key / Autostart Persistence from Paperclip Process Tree
// MITRE: T1547.001, T1543
// CONF: high  FP: low  COST: low
// REQUIRES: RegGenericValueUpdate, AsepValueUpdate
// FALSE POSITIVES: legitimate software installers running under the same service account in shared/dev environments
// LOOKBACK: 14d
#event_simpleName=/^(RegGenericValueUpdate|AsepValueUpdate)$/
| ContextBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|bash|sh|powershell|cmd)(\.exe)?$/i
| RegObjectName=*Run*
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, RegObjectName, RegValueName, RegStringValue])
| sort(@timestamp, order=desc)
Q6 · Outbound Network Connection from a Process-Adapter Child (C2/Exfil)
CONF MEDIUMFP MEDIUMCOST MEDIUM

Looks for: outbound connections to non-private destinations from a process whose parent is the Paperclip server, correlating NetworkConnectIP4 back to ProcessRollup2 via the process ID join. FP: Paperclip's own legitimate outbound calls to configured LLM/model-provider APIs, npm/package registries, and its own update/telemetry endpoints.

// HUNT: Outbound Network Connection from a Process-Adapter Child (C2/Exfil)
// MITRE: T1071, T1041, T1105
// CONF: medium  FP: medium  COST: medium
// REQUIRES: NetworkConnectIP4, ProcessRollup2
// FALSE POSITIVES: Paperclip's own legitimate outbound calls to configured LLM/model-provider APIs, package registries, and update/telemetry endpoints
// TUNING: allowlist your approved model-provider and package-registry IP/domain ranges before promoting; scope to first-seen destination per host rather than every connection
// LOOKBACK: 7d
#event_simpleName = NetworkConnectIP4
| !cidr(RemoteAddressIP4, subnet="10.0.0.0/8")
| !cidr(RemoteAddressIP4, subnet="172.16.0.0/12")
| !cidr(RemoteAddressIP4, subnet="192.168.0.0/16")
| !cidr(RemoteAddressIP4, subnet="127.0.0.0/8")
| rename(field=ContextProcessId_decimal, as=TargetProcessId_decimal)
| join(query={#event_simpleName = ProcessRollup2 | ParentBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|docker-entrypoint\.sh)(\.exe)?$/i}, field=TargetProcessId_decimal)
| table([@timestamp, ComputerName, ParentBaseFileName, FileName, CommandLine, RemoteAddressIP4, RemotePort])
| sort(@timestamp, order=desc)
Q7 · Unexpected Inbound Connections to an Internet-Exposed Paperclip Listener
CONF LOWFP HIGHCOST MEDIUM

Looks for: external (non-RFC1918) source addresses connecting inbound to the Paperclip process — an exposure/prioritization signal, not a compromise signal by itself. FP: every legitimately internet-exposed instance sees external client connections as normal operation.

// HUNT: Unexpected Inbound Connections to an Internet-Exposed Paperclip Listener
// MITRE: T1190
// CONF: low  FP: high  COST: medium
// REQUIRES: NetworkReceiveAcceptIP4
// FALSE POSITIVES: every legitimately internet-exposed instance sees external client connections; this is an exposure/recon signal, not a compromise signal by itself
// TUNING: baseline expected client ranges (reverse proxy, VPN egress, known SaaS integrations) and alert only on rare/first-seen source IPs or a spike in distinct sources per hour; pair with the version/patch-status audit in the Validation Gates section rather than running this standalone
// LOOKBACK: 7d
#event_simpleName = NetworkReceiveAcceptIP4
| ContextBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|docker-entrypoint\.sh)(\.exe)?$/i
| !cidr(RemoteAddressIP4, subnet="10.0.0.0/8")
| !cidr(RemoteAddressIP4, subnet="172.16.0.0/12")
| !cidr(RemoteAddressIP4, subnet="192.168.0.0/16")
| groupBy([aid, ComputerName, LocalPort, RemoteAddressIP4], function=count(as=Hits), limit=500)
| sort(Hits, order=desc)
Q8 · Archive/Bundle Write Consistent with a Company-Import Upload
CONF LOWFP MEDIUMCOST LOW

Looks for: archive files written by the Paperclip process — the closest native Falcon signal to a company-bundle import that persists to disk. FP: legitimate company-bundle exports/imports performed by authorized administrators; also see the coverage-gap note below.

// HUNT: Archive/Bundle Write Consistent with a Company-Import Upload
// MITRE: T1059
// CONF: low  FP: medium  COST: low
// REQUIRES: ZipFileWritten
// FALSE POSITIVES: legitimate company-bundle exports/imports performed by authorized administrators as part of normal Paperclip operations. Falcon has no native event for a plain-text .paperclip.yaml write on its own (see Coverage Map, s15) so this only catches the archive-upload import path, not the inline-JSON API path used by the disclosed six-call chain
// TUNING: correlate against Paperclip's own import audit log for the same time window before treating a hit as suspicious; exclude known admin accounts' routine export/import maintenance windows
// LOOKBACK: 14d
#event_simpleName = ZipFileWritten
| ContextBaseFileName=/^(node|paperclip|paperclip-server|npm|npx|pm2|docker-entrypoint\.sh)(\.exe)?$/i
| table([@timestamp, aid, ComputerName, UserName, ContextBaseFileName, TargetFileName, FileName])
| sort(@timestamp, order=desc)
09

CrowdStrike Custom IOA Recommendations

Promote to a Custom IOA only after the baseline period in §11. Recommended promotion order:

CandidatePattern BasisExclusions NeededDeployment Path
Q1 — Process-adapter child processParentBaseFileName in Node/Paperclip set AND FileName in shell/interpreter setKnown agent automation scripts by hash/path; run in detect-only 7-14 days firstFalcon → Custom IOA rules → Process → detect-only, then escalate to prevent after tuning
Q2 — Reverse shell command patternsCommandLine regex on high-signal reverse-shell idioms below the Paperclip processAuthorized red-team source hosts, if anyFalcon → Custom IOA rules → Process → prevent-capable given low observed FP
Q5 — Registry Run-key persistence from the treeAsep/Registry event with ContextBaseFileName in Node/Paperclip/shell set AND key path containing RunKnown installer service accountsFalcon → Custom IOA rules → Registry → detect-only initially

Q3, Q4, Q6, Q7, Q8 remain hunt/investigate-only given their FP profile (medium-high) and, for Q7/Q8, their role as exposure/context signals rather than confirmed-compromise signals.

10

Machine-Readable IOC Appendix

No file hashes, C2 domains, or C2 IPs have been published for this CVE — it is an authorization-logic bug in application code, not a payload family. The blocks below ship the identifiers that are published (CVE/advisory IDs, affected package/version range, the vulnerable config default, and public exploit tooling), plus behavioral signatures and a patch/config audit checklist, in place of a conventional hash/domain blocklist.

Falcon IOC Management CSVreference identifiers, not block indicators
type,value,action,severity,expiration,description,tags
cve,CVE-2026-41679,enrich,critical,2027-02-11,Paperclip import authorization bypass RCE,vuln:paperclip
advisory,GHSA-68qg-g8mg-6pr7,enrich,critical,2027-02-11,GitHub technical advisory for CVE-2026-41679,vuln:paperclip
advisory,GHSA-x8hx-rhr2-9rf7,enrich,high,2026-11-11,DNS-rebinding drive-by RCE against local_trusted mode,vuln:paperclip
advisory,GHSA-xfqj-r5qw-8g4j,enrich,medium,2026-11-11,Missing authorization on several API routes,vuln:paperclip
package,@paperclipai/server,enrich,critical,2027-02-11,npm package - vulnerable below v2026.416.0,vuln:paperclip
package,paperclipai,enrich,critical,2027-02-11,npm package - vulnerable below v2026.416.0,vuln:paperclip
config-key,PAPERCLIP_AUTH_DISABLE_SIGN_UP,enrich,high,2026-11-11,defaults false - open self-registration enabling condition,vuln:paperclip
exploit-module,linux/http/paperclipai_unauth_rce_cve_2026_41679,pivot,high,2026-09-11,public Rapid7 Metasploit module - six-call automated chain,vuln:paperclip
Behavioral SignaturesEDR-visible, post-RCE
# Behavioral signal, not an atomic indicator -- pair with Q1-Q8 in section 8
Parent process:    node | paperclip | paperclip-server | npm | npx | pm2 | docker-entrypoint.sh
Unexpected child:  bash | sh | dash | zsh | cmd.exe | powershell.exe | pwsh | python | perl | ruby | nc | ncat | socat
Reverse-shell cmd: /dev/tcp/ redirection, "nc -e", interpreter socket one-liners, hidden-window PowerShell
Discovery cmd:     whoami, id, uname -a, hostname, ip a, ifconfig, netstat, cat /etc/passwd
Persistence:       Registry Run/RunOnce key write from the same process tree
Network:           outbound connection to a non-private address opened by a Paperclip-tree child process
Named Advisories & Toolingquick reference
CVE-2026-41679                              (CVSS 10.0 - unauthenticated RCE, primary)
GHSA-68qg-g8mg-6pr7                          (CVE-2026-41679 technical advisory)
GHSA-x8hx-rhr2-9rf7                          (CVSS 9.6  - DNS rebinding, local_trusted mode)
GHSA-xfqj-r5qw-8g4j                          (CVSS 8.3  - missing route authorization)
linux/http/paperclipai_unauth_rce_cve_2026_41679   (public Rapid7 Metasploit module)
Patch / Config Audit Checklistrun against every instance
# 1. Confirm patched version (target: v2026.416.0 / server manifest 0.3.1, or later)
curl -sk https://REPLACE_WITH_HOST/api/health | grep -i version

# 2. Confirm open self-registration is disabled (or explicitly accepted risk)
#    Check the deployment's environment for:
PAPERCLIP_AUTH_DISABLE_SIGN_UP=true

# 3. Confirm deployment mode is not local_trusted on any shared/networked host
#    (local_trusted should be single-developer, single-machine only)

# 4. Confirm the instance is not directly internet-reachable without a
#    VPN / SSO / IP-allowlist in front of it
11

Detection Validation Gates

GateRequirementStatus Check
Telemetry readyConfirm ProcessRollup2, NetworkConnectIP4/NetworkReceiveAcceptIP4, and RegGenericValueUpdate/AsepValueUpdate are actively collecting on every host running PaperclipRun * | groupBy(#event_simpleName) scoped to the Paperclip host(s) and confirm all three event families appear
Benign baselineRun Q1, Q3, Q6 for 7-14 days in investigate-only mode before promoting any query to an IOAReview hit volume and confirm expected agent/monitoring FP sources are captured in the TUNING exclusions
Positive testOn a non-production Paperclip instance, configure a benign test agent with a process adapter running an innocuous command (e.g. echo test) and wake it under authorized testing conditions — confirm Q1 fires. Do not recreate the actual exploit chain against a production or internet-reachable instance.Confirm the query card returns the test event with correct ParentBaseFileName/FileName/CommandLine
PromotionQ1, Q2, Q5 → Custom IOA after tuning (see §9); Q3, Q4, Q6, Q7, Q8 remain hunt/investigate-onlyTrack FP rate per query post-tuning; re-baseline if FP rate exceeds target after any Paperclip upgrade or agent-fleet change
12

Hardening — Tiered & Deployable

Immediate — this week
  • Patch to Paperclip v2026.416.0 or later (server manifest 0.3.1+). MITRE M1051 — Update Software. Verify: §10 audit checklist item 1. No formal CIS/vendor benchmark exists for Paperclip specifically — this control rests on the vendor's own security release, which is the strongest available authority for this product. ⚠ best-practice, no formal benchmark.
  • Disable open self-registration if you cannot patch same-day: set PAPERCLIP_AUTH_DISABLE_SIGN_UP=true (or require email verification + admin approval). MITRE M1036 — Account Use Policies. Verify: §10 audit checklist item 2. This alone breaks step 1 of the six-call chain even pre-patch.
  • Remove direct internet exposure of Paperclip's API/UI — front it with a reverse proxy requiring VPN, SSO, or IP allowlisting; do not expose it raw to 0.0.0.0/the internet. MITRE M1030 — Network Segmentation. Verify: external port scan against the host, or firewall-rule review.
  • Disable or upgrade any local_trusted-mode instance reachable by more than a single trusted developer on a single machine (DNS-rebinding path, GHSA-x8hx-rhr2-9rf7). MITRE M1042 — Disable or Remove Feature or Program. Verify: §10 audit checklist item 3.
Near term — 1-4 weeks
  • Run the Paperclip service as a dedicated, non-root, least-privilege OS account with no access to other services' credentials or secrets. MITRE M1026 — Privileged Account Management. Cite: CIS Docker Benchmark §4.1 "Ensure a user for the container has been created" / CIS Distribution Independent Linux Benchmark, service-account section. Verify: ps -o user= -p $(pgrep -f paperclip) should not return root.
  • Sandbox the process adapter's spawn() capability — run Paperclip in a container with dropped capabilities, a seccomp profile, a read-only root filesystem, and no default outbound egress. MITRE M1048 — Application Isolation and Sandboxing. Cite: CIS Docker Benchmark §5 (container runtime restrictions). Verify: docker inspect <container> --format '{{.HostConfig.CapDrop}} {{.HostConfig.ReadonlyRootfs}}'.
  • Enable egress filtering/allowlisting from the Paperclip host so a compromised process adapter cannot freely reach arbitrary external IPs. MITRE M1037 — Filter Network Traffic. Verify: attempt an outbound connection to a non-allowlisted IP from the host and confirm it is blocked; cross-check against Q6.
Strategic — 1-3 months
  • Treat agent configuration as code — mandatory review/approval workflow for any .paperclip.yaml or company-bundle import, and a policy requiring instance-administrator review before any process-adapter agent goes live, independent of what the application enforces. MITRE M1047 — Audit. ⚠ best-practice, governance control, no formal benchmark.
  • Move static credentials out of files reachable by the Paperclip service account and into a secrets manager (Vault, cloud KMS) with short-lived, scoped tokens, reducing the blast radius of any future RCE in this or any other self-hosted agent platform. MITRE M1041 — Encrypt Sensitive Information.
  • Establish AI-agent identity governance — inventory every agent and its access paths, log agent-to-resource actions with end-to-end attribution back to the originating user and the import event that created the agent. This is Oasis Security's own stated recommendation and directly closes the "logs show only the final credential" gap they describe. ⚠ best-practice, no formal benchmark; emerging area.
13

Deployable Playbooks

Playbook A — Verify patch status and disable open self-registration

Prerequisites: shell access to the host running Paperclip; ability to restart the Paperclip service.
Reboot required: no (service restart only).
Rollback: revert the environment variable change and restart the service; this re-enables open self-registration and returns to prior behavior — only roll back if you have an alternative registration control in place.

# 1. Check current version against the fixed release
curl -sk https://REPLACE_WITH_HOST/api/health | grep -i version
# Expect: v2026.416.0 / server manifest 0.3.1, or later

# 2. If you cannot patch immediately, disable open self-registration in the
#    Paperclip environment configuration (.env, docker-compose.yml, or the
#    orchestrator's secret/config store):
PAPERCLIP_AUTH_DISABLE_SIGN_UP=true

# 3. Restart the Paperclip service to apply
docker compose restart paperclip-server   # or: systemctl restart paperclip-server

Playbook B — Remove direct internet exposure (reverse proxy + firewall)

Prerequisites: nginx (or equivalent reverse proxy) already provisioned in front of the host; firewall management access (ufw/iptables/security group).
Reboot required: no.
Rollback: remove the added firewall DROP/allowlist rule and the proxy auth block to restore prior (direct) access — only do this in a controlled maintenance window, since it restores the exposed condition.

# nginx: require a client certificate or upstream SSO auth in front of Paperclip
location / {
    # Require your SSO/OAuth2 proxy or mTLS client cert here before proxying
    auth_request /oauth2/auth;
    proxy_pass http://127.0.0.1:REPLACE_WITH_PAPERCLIP_PORT;
}

# Host firewall: only allow the reverse proxy / VPN subnet to reach the
# Paperclip port directly; deny everything else
ufw deny REPLACE_WITH_PAPERCLIP_PORT/tcp
ufw allow from REPLACE_WITH_TRUSTED_SUBNET to any port REPLACE_WITH_PAPERCLIP_PORT proto tcp

Playbook C — Sandbox the service (systemd hardening, if not containerized)

Prerequisites: Paperclip runs as a systemd service unit; systemd 245+.
Reboot required: no (daemon-reload + service restart).
Rollback: remove the added directives from the unit override file and run systemctl daemon-reload && systemctl restart paperclip-server to restore prior (unsandboxed) behavior.

# /etc/systemd/system/paperclip-server.service.d/hardening.conf
[Service]
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/var/lib/paperclip
CapabilityBoundingSet=
User=paperclip-svc
Group=paperclip-svc

# Apply:
sudo systemctl daemon-reload
sudo systemctl restart paperclip-server

Playbook D — Container security options (if running via Docker)

Prerequisites: Docker/Compose-managed deployment; ability to recreate the container.
Reboot required: no (container recreate only — expect a brief service interruption during recreate).
Rollback: remove the added security_opt/cap_drop/read_only lines from the compose file and re-run docker compose up -d to restore the prior container configuration.

# docker-compose.yml
services:
  paperclip-server:
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    read_only: true
    tmpfs:
      - /tmp
    user: "REPLACE_WITH_NON_ROOT_UID:REPLACE_WITH_NON_ROOT_GID"

# Apply:
docker compose up -d --force-recreate paperclip-server
14

Containment Runbook

PhaseActionsOwnerEvidence to Capture
IsolateNetwork-isolate the affected host (Falcon Network Containment or firewall block); do not power off — preserve process memory for triage; pull Paperclip's own audit log for the affected instance immediately, before any restart clears itIR leadFalcon process tree for the RCE event (Q1/Q2 hit), Paperclip audit log export covering registration/CLI-approval/import/wake events
EradicateIdentify and revoke the attacker-created account and its board-level API credential in Paperclip; delete the imported malicious company/agent; patch to v2026.416.0+ before returning to service; rotate any credentials reachable by the Paperclip service account (Q4 hits define scope)Platform owner + IRList of revoked credentials/accounts, patched version confirmation, Q4/Q5 hit list defining what was potentially accessed or persisted
RecoverRestore from a known-good backup if persistence (Q5) or data exfiltration (Q6) is confirmed; re-enable network exposure only behind the Playbook B reverse-proxy/VPN control; re-baseline Q1/Q3/Q6 for 7-14 days post-recovery before re-promoting any IOAPlatform ownerPost-recovery baseline results, confirmation Playbooks A-D are all applied, updated agent inventory
15

Detection Coverage Map

Attack-Chain StepBehaviorCQLIOACoverage
1. Self-registrationOpen signup, no email verificationGAP — Paperclip app log only
2. Self-approval of CLI credentialSame actor requests & approves own challengeGAP — Paperclip app log only
3. Company import (missing authz)Board-level token used against instance-admin-only operationGAP — Paperclip app log only
4. Malicious .paperclip.yaml deliveredAgent bundle with process adapter importedQ8PARTIAL — archive-upload path only, not inline-JSON API path
5. Agent wakeAttacker triggers the imported agentGAP — Paperclip app log only
6. Process adapter RCEspawn() executes attacker command as server processQ1, Q2Q1, Q2 candidatesGOOD
7a. Discoverywhoami/id/uname/network enumQ3GOOD
7b. Credential accessReads of cloud/SSH/env credential filesQ4PARTIAL — generic pattern match, tune to environment
7c. Persistence (Windows)Registry Run/RunOnce key writeQ5Q5 candidateGOOD
7c. Persistence (Linux)cron/systemd/SSH-key changesGAP — no dedicated CQL; partially caught by Q1's broad shell-spawn match
7d. C2 / exfiltrationOutbound connection from a spawned childQ6PARTIAL — requires tuning against legitimate LLM/registry egress
Exposure prioritizationInternet-reachable authenticated-mode instanceQ7PARTIAL — exposure signal only, high FP by design
DNS-rebinding path (GHSA-x8hx-rhr2-9rf7)Malicious webpage drives local_trusted instance to RCEQ1, Q2 (post-execution only)GAP — browser/DNS delivery invisible to EDR; only resulting process execution is covered, same as step 6

See §11 for the validation-gate sequence (telemetry readiness → benign baseline → positive test → promotion) that must be completed before any query above moves from hunt/investigate to a live Custom IOA.

16

Hunt Summary Ticket

TITLE:      Hunt for Paperclip CVE-2026-41679 exploitation (import-authorization bypass RCE)
SEVERITY:   CRITICAL (CVSS 10.0) -- public Metasploit module, no confirmed ITW as of 2026-08-05
SCOPE:      Any host running a self-hosted Paperclip instance (paperclipai / @paperclipai/server
            npm packages, any version below v2026.416.0 / server manifest 0.3.1), especially
            network-accessible deployments in authenticated mode with default open registration
HYPOTHESIS: If exploited, the Paperclip server process (Node.js) will show an unexpected shell
            or interpreter as a direct or grandchild process, potentially followed by discovery,
            credential-access, persistence, or outbound C2/exfil behavior from that same tree
QUERIES:    Q1-Q8 (section 8) -- Q1/Q2/Q5 are Custom IOA candidates after tuning; Q3/Q4/Q6/Q7/Q8
            remain hunt/investigate-only
DO FIRST:   1. Confirm Paperclip version on every self-hosted instance (audit checklist, s10/s13)
            2. Confirm PAPERCLIP_AUTH_DISABLE_SIGN_UP setting and network exposure (s7, s12)
            3. Run Q1 and Q3 across all Paperclip hosts for the last 14 days
            4. Pull Paperclip's own audit log for self-approval and board-level import events (s7)
FINDINGS:   [populate during investigation]
GAPS:       Steps 1-3 and 5 of the attack chain (self-registration, self-approval, import,
            wake) are not Falcon-visible -- requires Paperclip's own application/audit log.
            Linux cron/systemd persistence has no dedicated CQL. DNS-rebinding delivery
            (GHSA-x8hx-rhr2-9rf7) is invisible to EDR at the browser/DNS layer.
ACTIONS:    Patch to v2026.416.0+; disable open self-registration if unpatched; remove direct
            internet exposure; see Hardening (s12) and Playbooks (s13) for deployable controls
OWNER:      REPLACE_WITH_OWNER
VERSION:    v0.1 -- 2026-08-11
17

Changelog

v0.12026-08-11Initial pack. 8 CQL hunt queries covering the post-RCE process/registry/network surface; native audit-log hunts documented for the app-layer chain (self-registration through agent wake), which is not Falcon-visible. No atomic file-hash or C2 IOCs published for this CVE — pack ships CVE/advisory/package identifiers and behavioral signatures in their place, all traced to 6 saved source snapshots.
18

References

TierSourceUsed ForAccess Date
1Oasis Security — Breaking the Paperclip: When Agent Configuration Becomes a VulnerabilityPrimary discoverer/discloser; all 3 flaws, root-cause framing, mitigation guidance2026-08-11
1GitHub Security Advisory GHSA-68qg-g8mg-6pr7Code-level technical detail for CVE-2026-41679; confirmed fix locations2026-08-11
1The Hacker News — Paperclip AI Flaws Let Attackers Run Host Commands via Malicious Agent ImportsIndependent verification, version-labeling discrepancy, ITW status2026-08-11
2SecurityWeek — Critical Paperclip Flaw Allowed Admin Access, Code ExecutionCorroboration, broader AI-agent-identity framing2026-08-11
2Rapid7 — Weekly Metasploit Update (2026-06-19)Public Metasploit module confirmation, six-call chain detail2026-08-11
2CVE Feed — CVE-2026-41679 aggregation (NVD/CISA-ADP)SSVC scoring, affected version ranges, package names2026-08-11

Verbatim fetched text of all 6 sources saved to Paperclip-CVE-2026-41679-Hunt-sources/. No embedded AI-directed instructions were found in any source; all fetched content was treated as data, not directions, per standing policy.