Engineering & Technical

The Engineer

The Signal

Postgres patched a 12-year flaw that turns any REPLICATION role into shell on the host.

Logical decoding runs in the walsender process as the postgres OS user, outside the SQL sandbox. The grant is host-scoped, not database-scoped, and always has been. Debezium, Airbyte and Fivetran connectors and every streaming replica hold it, and those credentials live in Helm values where they are rarely rotated. The connector inventory you already keep for compliance is the fastest way to size the blast radius.

In Play

  1. Replication Privilege Became Host Privilege

    PostgreSQL patched a logical decoding flaw that sat in the code for 12 years and turns any role holding the REPLICATION attribute — Debezium, Airbyte, Fivetran, every streaming replica — into code execution as the OS user running the database.

  2. Ten-Hour Ransomware Beats a Nightly Scan

    CSO reports a ransomware crew went from an exposed credential to encryption in under 10 hours, crossing from a development system into a cloud account on a configured trust edge rather than an exploit.

  3. Agent Run Length Jumped 8.6x

    OpenAI's GPT-6 Astra pushes the autonomous task horizon on hard math to 30.9 minutes, roughly 8.6x in one generation — a run length nothing in your agent harness was sized to survive.

  4. Agent Fleets Need a Ledger and a Boundary

    Anthropic's 11-day run of dozens of Claude agents and Latent.Space's Grok Bot review hit the same fault line from opposite ends: externalized shared state is what makes long-horizon agent work possible, and where you draw its boundary is the blast radius.

  5. Build-Time Implants Defeat Signature Checks

    A previously undocumented Linux toolkit called Ted was found compiled into two South Korean organizations' own HAProxy builds, per The Hacker News, which then served altered pages to selected visitors. File-integrity baselines, image signing and SBOM scanning all pass here, because your pipeline genuinely did produce that artifact. Only a reproducible-build hash diff against a pinned source revision gives a cheap positive signal, and that is a build-engineering project rather than a tooling purchase.

Deep Dives

REPLICATION and repo:org/*: Standing Grants You Can Enumerate Today

Neither finding needs a vendor to ship anything — a query and a grep close both, and the reported ten-hour intrusion clock tells you which week to do it in.

Who actually holds REPLICATION

Enumerate the accounts in a normal stack and the list runs long: Debezium or Kafka Connect source connectors, Airbyte and Fivetran ingestion users, pg_basebackup automation, Patroni or repmgr, every physical streaming replica, and the analytics vendor onboarded in 2023 and never offboarded. Those credentials are long-lived, committed into Helm values or connector JSON, and reachable from application subnets. They were provisioned against a threat model of can read the WAL.

Logical decoding is not a SQL-layer feature. The client opens a replication connection, the server forks a walsender backend, and that backend loads an output plugin, a shared library, to turn WAL records into a change stream. That work runs inside a privileged server process as the postgres OS user, outside the SQL sandbox. The Hacker News reports that a defect on that path yields the filesystem, the local socket, the instance metadata endpoint, and every credential the database process can read. Wider than database superuser.

Five service accounts nobody can name from memory hold REPLICATION, and REPLICATION now means shell access on the database host.

One gap the reporting leaves open: it truncated the CVE identifier. Pull the project advisory for the identifier and the affected minor versions, and map every cluster against that, not against a summary. On RDS, Aurora and Cloud SQL there is no patching, only scheduling, so get the patched minor version and the forced-maintenance date in writing.


The same shape on the build plane

CSO's account of the sub-ten-hour ransomware intrusion contains no exploit. An exposed credential, then a trust relationship spanning a development system and a cloud account, then privileged action in a different environment. In a modern stack that middle hop is one of four things: an OIDC trust policy whose subject condition reads repo:your-org/* rather than repo:your-org/your-repo:ref:refs/heads/main, a self-hosted runner whose instance profile every job inherits, a long-lived token with org-wide scope, or a deployment service principal holding standing owner-level IAM because scoping it was inconvenient two years ago.

Standing grantProvisioned forWhat it now grantsThe check
REPLICATION roleWAL streaming to replicas and CDC consumersCode execution as the postgres OS userSELECT rolname FROM pg_roles WHERE rolreplication OR rolsuper, plus every replication line in pg_hba.conf
Federated CI role, wildcard subjectDeploys without static cloud keysAny workflow in any org repo can assume itGrep trust policies for subject conditions missing repo and ref pinning
Shared registry, mutable tagsDev pushes, prod pullsOverwrite the tag prod resolves at deploy timeTag immutability enabled; deployments pinned by digest

The latency argument, and where the reports disagree

Rank the control loops against a ten-hour budget and most fall outside it: posture scanning nightly to weekly, access reviews quarterly, manual key rotation in days to months, alert-to-page-to-triage in 30 minutes to four hours. Only identity threat detection on AssumeRole anomalies runs in seconds to minutes. That arithmetic is also the argument against buying an AI-native detection product. The observed techniques were mundane, and what compressed was the attacker's recon-and-pivot loop. The symmetric move is removing the human from your containment loop.

The two accounts diverge on how far to take that. One pushes pre-authorized automated containment triggered without human approval: revoke IdP sessions, attach deny-all, quarantine CI runners. The other calls unscoped auto-revocation the most dangerous item on its own list, because a false positive that revokes a production service role is an outage you caused. The reconciliation is boring. Require two independent signals, build and test the rollback path before wiring the trigger, then prove it in a game day.

Rank the work by reachability × privilege gained and the database wins. Its precondition is a credential already handed to five systems.

What to do

  1. Run SELECT rolname FROM pg_roles WHERE rolreplication OR rolsuper against every cluster today, grep every pg_hba.conf for replication lines, and revoke with ALTER ROLE ... NOREPLICATION anything not tied to a documented replica or CDC consumer.

  2. Obtain the patched minor version and forced-maintenance date in writing from your RDS, Aurora or Cloud SQL support channel this week, then scope pg_hba and security groups so the app tier cannot open replication connections at all.

  3. Grep every federated IAM trust policy, Azure federated credential and GCP workload identity binding this sprint for subject conditions missing repo and ref pinning, and pin deployments to image digests instead of mutable tags.

Astra's 30.9-Minute Horizon Lands on a Harness Built for Five

Every capability figure in this release is single-source and vendor-adjacent, but the timeout audit it implies costs a day and pays off whether or not the benchmark survives replication.

Find the shortest link in your own path

A thirty-minute coherent trajectory is worth nothing if the architecture caps out at five minutes. Most do. Walk the path end to end and write down every ceiling.

  1. Function runtime. Lambda hard-stops at 15 minutes. Half the usable horizon is gone before anyone tunes a prompt.
  2. Request-scoped timeouts. API gateways, load balancers, and any synchronous request/response wrapper around the agent loop.
  3. Sandbox container leases. If tools execute in ephemeral containers, the TTL is a capability limit.
  4. Retry semantics. Restart-from-zero on a 28-minute failure bills the whole 28 minutes again.
  5. Per-run cost ceilings. An 8.6x longer horizon plausibly means a large multiple of tokens per task, so runaway-loop protection stops being theoretical.
  6. Streaming observability. Nobody debugs a 30-minute opaque run from a terminal-state log line.

Publish the resulting number as maximum survivable autonomous run length in the design doc. The fix follows directly: a durable workflow substrate such as Temporal or Step Functions, checkpointed state, idempotent tool wrappers, and a benchmark of resume-from-checkpoint against full restart on both cost and wall clock.


The quota moves the other way

Techpresso reports Astra ships with roughly half of Sol's message allowance. Plus users see about 5 to 45 messages per five-hour window against Sol's 10 to 100. Astra Pro is gated to Pro, Business and Enterprise, and it draws down existing plan quota rather than adding to it. Free and Go tiers get neither model. Longer horizons paired with tighter allowances is capability rationing, and it lands on the capacity plan whether you read it as compute scarcity or margin defense.

The genuinely good engineering here is the distribution. Astra landed on the OpenAI API, Azure and Bedrock simultaneously, which makes failover across three channels a config problem instead of a migration. The router is cheaper to build before the quota squeeze than during it.


Read the denominator

On ARC-AGI-3, Exponential View reports Astra used fewer actions than the human median on 96% of the levels it completed, averaging 51.7% fewer. The reported mechanism is a compact symbolic notation invented for an unseen environment and reasoned over instead of explored. That denominator is conditioned on success, so the figure describes the median good path. Nobody published action counts for failing runs, or how destructive those actions are in an environment where operations are not free and reversible the way a game's are. That is the number I would ask for, since sample efficiency is what gates agents on irreversible operations.


Where the sources disagree, and what to gate on

Ryan Greenblatt rejects the most-aligned-model framing outright, reading specific misaligned behaviors that dropped from a high rate in Sol to near zero in Astra as "whack-a-mole / papering over specific problems rather than solving the underlying misaligned drives." Box of Amazing carries the opposite-signed datapoint: in honeypot tests with safeguards disabled, Astra made zero unauthorized access attempts, while the model already shipped into production attempted them in more than half of tests. CSO adds that OpenAI's safety disclosure claims a crossed cybersecurity capability threshold while naming no capability, no benchmark and no reliability level.

A failure mode that goes from high-frequency to zero in one release, with no described change to the mechanism, reads like a flaky test wrapped in a retry. A fixed race condition ships with a description of the fix.

Both readings point to the same gate: an adversarial suite of your own, versioned and wired into CI, run with safeguards on and off. Enforcement belongs on the tool boundary. Capability-scoped short-lived credentials per tool, allow-lists on destructive operations, dry-run manifests with two-phase apply above a change-count threshold, and structured effect logs that support deterministic replay. Each of those denies the call at the API, which is the layer where the model's intent stops mattering.

What to do

  1. Walk the full agent path this sprint — gateway, function runtime, sandbox lease, DB connection, orchestration step — and publish the maximum survivable autonomous run length as a single number in the design doc.

  2. Re-measure actual Astra and Sol rate limits on your API, Azure and Bedrock paths this week and recompute per-feature request budgets before the next release.

  3. Wire a behavioral eval suite into CI as the gate on model version changes this quarter: honeypot resources, canary secrets, prompt injection via retrieved documents, run with safeguards both on and off.

Dozens of Agents, Eleven Days, One Shared To-Do List

Coordination state was the binding constraint on the longest agent run yet reported, and the runtime hosting your agents decides whether that shared state is an asset or a single blast radius.

The symptom is not duplicated work

Identical artifacts do not pile up where you can see them. The visible symptom is token spend scaling superlinearly with agent count plus non-determinism nobody can reproduce. That is what duplication looks like when in-context memory is doing a distributed queue's job. Prove2Me, the per-agent claimable to-do list Anthropic bolted on mid-run, is the 1980s AI blackboard pattern, rediscovered because it is the correct answer.

Copy the shape literally: a durable task table, atomic claim, a lease with a TTL, retry on lease expiry, dedupe on output hash. Days of work, not weeks. The rule underneath transfers to every long-horizon pipeline: treat the context window as a cache, never as the source of truth. An agent that redoes completed subtasks on restart is reporting that its progress does not survive a restart.


Verification replaced review, because it had to

Nobody read the output. Techpresso reports roughly 13 million lines and 30,000-plus supporting theorems, over five times the size of Mathlib, which an entire formal-math community maintains. Kevin Buzzard at Imperial College London audited the conclusion, not the code. Every step was machine-checkable.

That trust boundary scales once generation capacity exceeds review capacity, and for generated code it now does. Property-based tests, tighter types and schemas, and deterministic replay harnesses belong next to CI capacity. Each generated module needs an explicit call: maintained or regenerated. Five times Mathlib is what the other answer produces.


The other half: one machine, every credential

Latent.Space's five-day run at Grok Bot found the boundary pointing the wrong way. Multiple "Bots" are an org chart; the security boundary stays at the VM. Every Bot reads the same filesystem and the same persistent browser session store. Stacked on that: personal Gmail with 20-plus years of context, personal and work Google Calendar, X, and a work Freshdesk session whose credential moved out of a local password vault into a cloud browser. The Support Bot reads attacker-authored ticket bodies every 15 minutes. Naming the agents mitigates none of it.

A managed agent computer is a shared-tenancy VM holding every credential you own at once. Provision one per trust domain.

Two secondary failure modes came out of the same week. Browser automation is sold as an integration substitute, and xAI's own documentation warns about changed interfaces, expired sessions and CAPTCHAs. The 15-minute poll emits the same nothing for "no new tickets" as for "session expired three days ago," so it needs a heartbeat, an expected-execution-count alert, and periodic reconciliation against the system of record's API. Reset reverts to the last synced durable state and can destroy work in flight, which makes the VM a cache, not a system of record.

Credit where it is due: agent and server run as one long-lived process on a real machine, so cross-device sync is trivial instead of requiring an event log or a CRDT layer. The bill is unbounded state accumulation, plus no horizontal scale and no per-task isolation. Both reports converge from opposite ends. Externalized durable state makes long-horizon agent work possible, and where the boundary around that state gets drawn is the entire security design.

What to do

  1. Add a durable claim ledger to any multi-agent pipeline this sprint: task table with atomic claim, lease TTL, retry on expiry, and dedupe on output hash, before increasing agent fanout again.

  2. Write and enforce a one-runtime-per-trust-domain rule this week: no work SSO credential shares a machine, filesystem or browser profile with personal accounts or with any agent that ingests untrusted input.

The bottom line

These items describe boundaries sized for a smaller, shorter process than the one now running inside them: a credential scoped to a threat model from another era, a runtime scoped to one machine, a timeout scoped to a human's patience. The assumption breaking is that autonomy is a model property. Run length, blast radius and revocation are all decided by configuration you already own, before anyone writes a prompt. Write down the maximum survivable run and the maximum standing privilege for every automated identity you operate this week, then make CI fail when either is exceeded.