
Photo by MARIOLA GROBELSKA on Unsplash
Cybersecurity loves its mottos. It has fatalistic ones like, "Users are the weakest link," that shift failure onto users and absolve security teams from their bad UX, absent controls, and inadequate processes. It has generic ones like, "Shift left," that repackage old concepts like improving software quality at the design and implementation stages.
And now there's the emphatic modifier of "machine speed" that appears in dramatic discussions of agents and LLMs. Machine speed is trotted out as an apparently novel concern for cybersecurity in the age of AI, which is unfair to all the while loops, shell scripts, and automation that preceded this era of excitement.
Artificial Activities vs. Optimal Outcomes
Machine speed feels like it misdirects attention to tactical improvements at the expense of better outcomes. Meaningful improvements, to be sure, as measured by speed of discovering flaws. Yet it’s unclear if they’re more economically efficient improvements, let alone security ones. There’s little data on the rate of flaws found or events analyzed per unit of time per dollar. And you can't neglect the cost of developing and confirming the quality of patches for those flaws.
That eternal cycle of find flaw, fix flaw, find, fix, find, fix again is boringly narrow. It's artifical activity in the sense of being a false strategy. It promises easy metrics like CVE counts and days to patch. (Or events analyzed in the world of SOCs.) Sure, those are observable. But they're really just measuring how busy security and developer teams are with short-term tasks. It doesn't matter if agents augment those teams; that just adds agents burning tokens to teams burning time in the cost equation. Cybersecurity should have observable outcomes. I prefer proactive ones that reduce or eliminate flaws altogether.
One way to reduce flaws is to increase sensitivity, as in refining the threshold for which a flaw or suspicious event requires action. This is hardly an insightful recommendation. It’s an old, well-established technique. My disfavor for it is that it doesn’t improve the creation of code. It's reactive. It merely adjusts the baseline quality at which flaws are considered impactful or events considered supicious.
Another way to achieve a favorable outcome is by reducing attack surface and reinforcing security boundaries. This is the domain of proactive design choices. It's another old concept and one that feels like a fleeting wish whenever I whisper its possibility. It seems to have far less uptake than refining filters.
A Completely Wishful Enumeration
React and related frameworks are great examples of secure by design principles. They make XSS scarce by addressing the flaw at its root cause — maintaining a strict distinction between the structure of HTML nodes and the content that lands in those nodes. The frameworks render arbitrary, untrusted data such that the semantics of a page are unaffected by the syntax of that data. The frameworks foster design patterns that minimize security mistakes and make it easier for linters and IDEs to emit warnings when those mistakes happen.
CSRF is similarly diminished. Cloud providers have changed APIs and default settings to make flaws like SSRF and accidental exposure of resources less common. Sadly, it took several years for those defaults to take hold and become more common than their insecure predecessors. If there's a machine speed to strive for, it's in establishing more secure defaults in existing tech stacks.
C and C++ code is getting better through compiler feedback, CPU design, and standards. Rust is also making inroads into these areas. The Linux kernel won’t replace its millions of lines of C with Rust, but it will use Rust in notoriously insecure areas like device drivers. Seeing memory safety flaws disappear from device drivers is a favorable outcome. It's nice to make the patching process faster, but having to deal with fewer patches in the first place is far more appealing.
I suspect that some orgs are reluctant to embrace an approach that reduces their attack surface because it requires more engineering effort and, cynically, because that effort is more difficult to measure. Refactoring doesn't have the familiar monthly trends and charts of CVE counts and days to patch that vulnerability management programs produce.
Saying that 100 patches were applied within their however-many day deadline sounds informative. We could further tweak it by making it less passive (which app owners met or missed deadlines), more precise (slicing by distribution of severity), or more comparative (percent change from previous timeframe). Those aren’t bad refinements, they just reinforce a retreat to numbers that are easier to gather and report on.
Saying you introduced a design change that eradicates a vuln class doesn’t fit into that vuln management framing of short-term trends that track how much the cycle of security patches keeps people busy. But improving a design to avoid bugs or improve observability is still a good thing to do.
In terms of metrics, there should be a step change where the count of a vuln class goes to zero. (Or something to that effect, such as flaws per LOC.) But it wouldn’t be meaningful to count the lines of code that changed as an indicator of security, especially when pitching this as a proactive exercise. You’d have to estimate the engineering effort, then make the case for how that upfront expense saved time by reducing bug bounty payouts, limiting unpredictable patching, and avoiding potential incidents later on.
The goal of getting rid of CWEs instead of CVEs still falls more into fiction than real-world fixing. If there's an acceleration to find for appsec, it's in reducing the prevalence of CWEs, not chasing the patches for CVEs.
Smashing the Stack for a Fast Profit
So, what about the “attack faster” associated with this ambiguously defined, yet implicitly menacing, machine speed? The assertion that hackers are hacking faster implies that orgs need to change their strategies for defense. But those implications are couched in the pseudo-profundity of phrases like, “The game has changed” or “The AI era demands” or some phrase that mentions evolution.
Ask for an explanation of machine speed and the conversation too often continues into metaphor or vapid abstraction. It becomes a superficial equation — a faster attacker necessitates a faster defender. Just be faster.
I don’t think LLM-generated packets traverse a firewall faster than those from my browser. I don’t think post-compromise shell scripts execute faster when they have the artisanal touch of artificial agentry. There's clearly a speed to automation, whether from shell scripts or cascades of prompts, in chains of events and sequences of activity in compromises. That's a far more interesting problem to ponder instead of simply tracking days to patch.
Where are the indicators that machine speed is forcing fundamental changes to security controls? What proxy variables might we look at? What differences in attacker behavior would we look for?
How has machine speed affected cyberinsurance rates? What CISA revelations do they inspire? This would have been a wonderful topic for a CSRB to investigate.
At the top of my questions about whether “machine speed” means anything beyond a trite shorthand for automation by agents is what the phrase means, or at least implies, for defenders to take action on. There have always been examples of attacker automation, from the venerable Metasploit to commercial tools like Cobalt Strike to tons of open source tools from the bug bounty crowd.
There’s admittedly a faster pace of expanding privileges or pivoting across environments from automation. Yet those actions should still trigger security events and, even better, can be blocked by decidedly non-machine speed controls like network isolation and restricted access.
Time and Relative Dimension in Security
Even if so-called machine speed highlights the need for more controls, an org can apply those controls regardless of whether an army of agents is attacking them. Most controls work regardless of how fast or slow automation affects an attack. (One exception might be process-based controls.)
To reach for an awkward metaphor, it’s like mixing the dimensions of time and space, where machine speed speaks to attacks happening more quickly in time, whereas defenses are more effective when spread across space, as in reducing an attack surface or establishing boundaries.
The conversations around machine speed echo those from decades earlier about zero-days (here defined as a vuln known to attackers for which a patch is not available). One defense against a zero-day is to have the ability to obtain and apply a patch quickly. But, again, that's a very reactive stance. There are proactive steps like isolating resources, blocking egress traffic, monitoring traffic flows, setting granular access controls, and so on.
In other words, the defensive focus is on the larger system and how controls can make exploitation more difficult or post-exploitation activities easier to constrain and detect.
If there's another motto that cybersecurity loves, it's "Attackers only need to be right once, defenders need to be right all the time." Reducing your attack surface reduces where those opportunities are for an attacker to be right. Adding observability increases those situations where attackers have to still be right in order to avoid detection.




