<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anuththara Wickramasekara </title>
    <description>The latest articles on DEV Community by Anuththara Wickramasekara  (@anuththara2007w).</description>
    <link>https://dev.to/anuththara2007w</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3406073%2Fcbb7d490-b47c-411b-9dda-9355cf08f6ae.png</url>
      <title>DEV Community: Anuththara Wickramasekara </title>
      <link>https://dev.to/anuththara2007w</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anuththara2007w"/>
    <language>en</language>
    <item>
      <title>ProofSec: Benchmarking Epistemic Robustness and Evidence-Grounded Vulnerability Reasoning in Frontier LLM</title>
      <dc:creator>Anuththara Wickramasekara </dc:creator>
      <pubDate>Tue, 29 Sep 2026 11:03:28 +0000</pubDate>
      <link>https://dev.to/anuththara2007w/proofsec-benchmarking-epistemic-robustness-and-evidence-grounded-vulnerability-reasoning-in-24bm</link>
      <guid>https://dev.to/anuththara2007w/proofsec-benchmarking-epistemic-robustness-and-evidence-grounded-vulnerability-reasoning-in-24bm</guid>
      <description>&lt;h2&gt;
  
  
  &lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kaggle-2026-09-23"&gt;Kaggle Benchmarking Challenge&lt;/a&gt;&lt;/em&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What happens when an LLM recognizes every lexical and semantic signature associated with a vulnerability - IDOR, BOLA, authorization bypass, predictable identifiers - but the available evidence does not actually establish that the vulnerability exists?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question is the foundation of &lt;strong&gt;ProofSec&lt;/strong&gt;, an evidence-centric security reasoning benchmark designed to evaluate whether LLMs can distinguish &lt;strong&gt;security indicators from substantiating evidence&lt;/strong&gt;, reason under incomplete and contradictory observations, resist terminology and authority bias, incorporate falsifying evidence, and explicitly recognize when a security conclusion is not epistemically justified.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  The Problem: Security Reasoning Is Not Pattern Matching
&lt;/h1&gt;

&lt;p&gt;Large language models have become exceptionally capable at semantic retrieval.&lt;/p&gt;

&lt;p&gt;Give a model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/users/2841/invoices/9281
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and introduce:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;predictable numeric identifiers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the model can immediately activate a large cybersecurity concept space:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IDOR
BOLA
Broken Access Control
Authorization Bypass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But there is a fundamental distinction between &lt;strong&gt;recognizing the semantic signature of a vulnerability&lt;/strong&gt; and &lt;strong&gt;demonstrating that the underlying security property has actually been violated&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That distinction is where many security reasoning systems become unreliable.&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Authenticated user: 2841

GET /api/invoices/9281

HTTP/1.1 200 OK

{
    "invoice_id": 9281,
    "amount": 45000,
    "status": "paid"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Is this an IDOR?&lt;/p&gt;

&lt;p&gt;The evidence is insufficient to establish that conclusion.&lt;/p&gt;

&lt;p&gt;The observation does not independently establish:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;who owns invoice &lt;code&gt;9281&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;whether the authenticated principal is authorized to access it&lt;/li&gt;
&lt;li&gt;whether the object belongs to a different principal&lt;/li&gt;
&lt;li&gt;whether an authorization invariant has been violated&lt;/li&gt;
&lt;li&gt;whether access control is enforced upstream or downstream&lt;/li&gt;
&lt;li&gt;whether the endpoint represents the protected resource&lt;/li&gt;
&lt;li&gt;whether the response originated from production data&lt;/li&gt;
&lt;li&gt;whether the response is synthetic, cached, fixture-generated, or otherwise non-authoritative&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A predictable identifier is an &lt;strong&gt;indicator&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An HTTP &lt;code&gt;200&lt;/code&gt; response is an &lt;strong&gt;observation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Neither fact, in isolation, constitutes proof of unauthorized cross-principal access.&lt;/p&gt;

&lt;p&gt;The central principle behind ProofSec therefore became:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A security indicator is not equivalent to security evidence.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This sounds straightforward.&lt;/p&gt;

&lt;p&gt;In practice, it is a surprisingly difficult property for language models to maintain under adversarial framing, incomplete evidence, contradictory observations, and highly salient security terminology.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Benchmarked
&lt;/h1&gt;

&lt;p&gt;ProofSec evaluates &lt;strong&gt;evidence-sensitive vulnerability classification&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every scenario requires the model to classify the security state into exactly one canonical category:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vulnerable
Not Vulnerable
Insufficient Evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The third state is deliberately first-class.&lt;/p&gt;

&lt;p&gt;Traditional binary vulnerability classification implicitly encourages a forced decision:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;YES
or
NO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real security investigations rarely provide that luxury.&lt;/p&gt;

&lt;p&gt;Evidence can be incomplete.&lt;/p&gt;

&lt;p&gt;Observations can be ambiguous.&lt;/p&gt;

&lt;p&gt;Telemetry can be contradictory.&lt;/p&gt;

&lt;p&gt;Authorization boundaries can be unknown.&lt;/p&gt;

&lt;p&gt;A response can be suspicious without being conclusive.&lt;/p&gt;

&lt;p&gt;ProofSec therefore evaluates whether an LLM can recognize an &lt;strong&gt;epistemic boundary&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The available evidence is insufficient to establish the claim.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This changes the benchmark from a conventional vulnerability-recognition exercise into an evaluation of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;evidentiary sufficiency&lt;/li&gt;
&lt;li&gt;causal relevance&lt;/li&gt;
&lt;li&gt;authorization reasoning&lt;/li&gt;
&lt;li&gt;uncertainty management&lt;/li&gt;
&lt;li&gt;contradiction resolution&lt;/li&gt;
&lt;li&gt;negative evidence integration&lt;/li&gt;
&lt;li&gt;adversarial robustness&lt;/li&gt;
&lt;li&gt;terminology robustness&lt;/li&gt;
&lt;li&gt;controlled hypothesis revision&lt;/li&gt;
&lt;li&gt;evidence-grounded classification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The benchmark is therefore not primarily asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Does the model know what IDOR means?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Can the model determine whether the evidence presented actually establishes the security property in question?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Benchmark Architecture
&lt;/h1&gt;

&lt;p&gt;ProofSec v0.2 contains &lt;strong&gt;110 security reasoning cases&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The corpus is deliberately constructed as an experimental evaluation set rather than an undifferentiated collection of cybersecurity questions.&lt;/p&gt;

&lt;p&gt;The benchmark incorporates controlled evaluation families covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One-Fact Flip reasoning&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evidence ladders&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contradictory evidence&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Negative evidence&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authority and terminology robustness&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Baseline security reasoning&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture is designed around a core principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If the evidentiary state changes, the model should be sensitive to that change.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         ProofSec
                            │
             ┌──────────────┼──────────────┐
             │              │              │
        One-Fact Flip   Evidence State   Contradiction
             │              │              │
             └──────────────┼──────────────┘
                            │
                    Security Scenario
                            │
                            ▼
                      LLM Inference
                            │
                            ▼
                  Structured Assessment
                            │
             ┌──────────────┼──────────────┐
             │              │              │
       Classification   Evidence State   Explanation
             │
             ▼
       Deterministic Assertion
             │
             ▼
        Numerical Score
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The implementation deliberately isolates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dataset
    ↓
Prompt Construction
    ↓
Model Inference
    ↓
Structured Parsing
    ↓
Assertion
    ↓
Scoring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This separation is not cosmetic.&lt;/p&gt;

&lt;p&gt;It establishes distinct &lt;strong&gt;failure domains&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A dataset defect is not a model failure.&lt;/p&gt;

&lt;p&gt;A packaging failure is not a reasoning failure.&lt;/p&gt;

&lt;p&gt;A schema violation is not necessarily a classification failure.&lt;/p&gt;

&lt;p&gt;A scoring-interface defect is not a model-performance measurement.&lt;/p&gt;

&lt;p&gt;That distinction became one of the most important engineering principles in the project.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. One-Fact Perturbation Testing
&lt;/h1&gt;

&lt;p&gt;One of the core mechanisms in ProofSec is controlled &lt;strong&gt;one-fact perturbation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of constructing completely unrelated questions, ProofSec creates scenarios where a security-relevant fact changes while much of the surrounding semantic structure remains invariant.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;h3&gt;
  
  
  Case A
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Authenticated user = 2841
Invoice owner = 2841

Authorization rule:
invoice.owner_id == authenticated_user.id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Case B
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Authenticated user = 2841
Invoice owner = 9127

Authorization rule:
invoice.owner_id == authenticated_user.id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The semantic surface can remain substantially similar.&lt;/p&gt;

&lt;p&gt;The critical security relationship changes.&lt;/p&gt;

&lt;p&gt;That gives us a controlled counterfactual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Δ Input
   ↓
Δ Security-Relevant Fact
   ↓
Expected Δ Security State
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is fundamentally more informative than asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is this an IDOR?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The actual evaluation question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Did the model detect the fact that causally changes the security state?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This introduces a form of &lt;strong&gt;counterfactual sensitivity testing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If one authorization-relevant fact changes and the model preserves the same classification, the benchmark exposes a specific failure mode.&lt;/p&gt;

&lt;p&gt;The model may understand the terminology.&lt;/p&gt;

&lt;p&gt;It may understand the vulnerability class.&lt;/p&gt;

&lt;p&gt;But it may not be correctly conditioning its conclusion on the evidence that actually determines the security property.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Evidence-State Modeling
&lt;/h1&gt;

&lt;p&gt;ProofSec explicitly models the evidentiary state of a scenario.&lt;/p&gt;

&lt;p&gt;The benchmark uses states including:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WEAK
PARTIAL
DECISIVE
CONTRADICTORY
NEGATIVE
UNKNOWN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates an evidence hierarchy rather than treating every security-relevant observation as equally probative.&lt;/p&gt;

&lt;p&gt;A simplified progression is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Predictable identifier
        │
        ▼
Weak security indicator
        │
        ▼
Ownership relationship established
        │
        ▼
Cross-principal access demonstrated
        │
        ▼
Authorization invariant violated
        │
        ▼
DECISIVE evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Consider the difference between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Predictable ID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unauthorized cross-user object access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These observations possess radically different evidentiary weight.&lt;/p&gt;

&lt;p&gt;The first may justify investigation.&lt;/p&gt;

&lt;p&gt;The second can establish a concrete violation of an authorization property.&lt;/p&gt;

&lt;p&gt;ProofSec therefore attempts to prevent a model from collapsing the following distinction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Suspicion
    ≠
Evidence
    ≠
Proof
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That distinction is foundational to trustworthy security analysis.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Contradictory Evidence
&lt;/h1&gt;

&lt;p&gt;Real security investigations are not monotonic.&lt;/p&gt;

&lt;p&gt;Evidence can conflict.&lt;/p&gt;

&lt;p&gt;Telemetry can be stale.&lt;/p&gt;

&lt;p&gt;Caches can contain misleading artifacts.&lt;/p&gt;

&lt;p&gt;Fixtures can resemble production responses.&lt;/p&gt;

&lt;p&gt;A preliminary observation can subsequently be invalidated by a higher-authority observation.&lt;/p&gt;

&lt;p&gt;ProofSec therefore incorporates &lt;strong&gt;contradiction-resolution scenarios&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A simplified reasoning sequence might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Initial observation
        │
        ▼
HTTP 200 response
        │
        ▼
Potential authorization anomaly
        │
        ├───────────────┐
        │               │
        ▼               ▼
Synthetic fixture   Actual endpoint
        │               │
        ▼               ▼
Cached response      HTTP 403
        │               │
        └───────┬───────┘
                ▼
       Re-evaluate hypothesis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important capability is not simply detecting the first suspicious observation.&lt;/p&gt;

&lt;p&gt;The model must determine whether later evidence changes the validity of the original hypothesis.&lt;/p&gt;

&lt;p&gt;This introduces a critical distinction between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence accumulation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence revision
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A model that merely accumulates confirming signals can behave very differently from one capable of &lt;strong&gt;hypothesis revision under contradictory evidence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;ProofSec deliberately tests that boundary.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Negative Evidence
&lt;/h1&gt;

&lt;p&gt;Many vulnerability benchmarks are heavily oriented toward positive findings.&lt;/p&gt;

&lt;p&gt;ProofSec deliberately gives &lt;strong&gt;negative evidence&lt;/strong&gt; first-class status.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User A requests User B's object
                │
                ▼
Authorization rule verified
                │
                ▼
Cross-user request returns 403
                │
                ▼
Unauthorized access not demonstrated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A security reasoning system must be able to update its hypothesis in both directions.&lt;/p&gt;

&lt;p&gt;It must identify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence supporting vulnerability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence weakening or falsifying vulnerability hypothesis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This matters because security investigation is fundamentally adversarial.&lt;/p&gt;

&lt;p&gt;The objective is not to collect evidence that confirms the initial hypothesis.&lt;/p&gt;

&lt;p&gt;The objective is to determine whether the hypothesis survives attempts to falsify it.&lt;/p&gt;

&lt;p&gt;That makes negative evidence an important component of &lt;strong&gt;hypothesis discrimination&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Authority Bias and Terminology Robustness
&lt;/h1&gt;

&lt;p&gt;Another failure mode targeted by ProofSec is &lt;strong&gt;authority and terminology bias&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cybersecurity vocabulary carries enormous semantic weight.&lt;/p&gt;

&lt;p&gt;Terms such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;critical
confirmed
exploit
CVE
researcher
privilege escalation
authorization bypass
security issue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;can exert disproportionate influence over LLM outputs.&lt;/p&gt;

&lt;p&gt;ProofSec therefore evaluates whether the model remains anchored to technical evidence when the surrounding terminology changes.&lt;/p&gt;

&lt;p&gt;The underlying principle is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Terminology describes a claim. Evidence substantiates it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Consider two descriptions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Possible authorization issue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Confirmed critical authorization vulnerability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the underlying technical evidence is unchanged, the semantic framing should not arbitrarily alter the actual security state.&lt;/p&gt;

&lt;p&gt;This probes &lt;strong&gt;linguistic framing sensitivity&lt;/strong&gt; and &lt;strong&gt;authority-induced classification drift&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The benchmark is therefore not only testing cybersecurity knowledge.&lt;/p&gt;

&lt;p&gt;It is testing whether that knowledge remains subordinate to the evidentiary record.&lt;/p&gt;




&lt;h1&gt;
  
  
  Structured Outputs
&lt;/h1&gt;

&lt;p&gt;I intentionally avoided unconstrained free-form text as the primary evaluation interface.&lt;/p&gt;

&lt;p&gt;Each model response is constrained into a structured schema containing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;classification
evidence_state
supporting_evidence
missing_evidence
safe_verification
impact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a deterministic machine-readable boundary between inference and evaluation.&lt;/p&gt;

&lt;p&gt;The primary scoring target is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;classification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The remaining fields provide diagnostic observability.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;classification:
Vulnerable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;could be accompanied by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;supporting_evidence:
"The identifier is sequential."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That exposes a potentially significant evidentiary defect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Predictable Identifier
        ≠
Proven Unauthorized Access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The final classification alone cannot reveal whether the model arrived at the conclusion through valid or invalid reasoning.&lt;/p&gt;

&lt;p&gt;Structured assessment therefore provides a richer &lt;strong&gt;diagnostic surface&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Deterministic Ground Truth
&lt;/h1&gt;

&lt;p&gt;I deliberately avoided making another LLM the primary arbiter of the classification.&lt;/p&gt;

&lt;p&gt;ProofSec uses canonical ground-truth labels and deterministic assertions.&lt;/p&gt;

&lt;p&gt;The core evaluation chain is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scenario
   ↓
Model
   ↓
Structured Classification
   ↓
Canonical Ground Truth
   ↓
Exact Assertion
   ↓
Score
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scenario
   ↓
Model A
   ↓
Model B judges Model A
   ↓
Score
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the core classification metric, deterministic evaluation establishes a cleaner experimental boundary.&lt;/p&gt;

&lt;p&gt;It also reduces the possibility of &lt;strong&gt;evaluation contamination&lt;/strong&gt;, where the judgment model introduces another layer of model-dependent interpretation into the primary metric.&lt;/p&gt;




&lt;h1&gt;
  
  
  Dataset Integrity
&lt;/h1&gt;

&lt;p&gt;A benchmark is only scientifically useful if its evaluation corpus is reproducible.&lt;/p&gt;

&lt;p&gt;ProofSec v0.2 uses a frozen dataset representation with a SHA-256 integrity digest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;422501a4db424c30c8ef24b61183351ec8a4bd2096e2671cf0e6bdf91e133a80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project maintains a manifest and an integrity-verification workflow.&lt;/p&gt;

&lt;p&gt;The intended reproducibility invariant is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Same benchmark version
        +
Same task corpus
        +
Same evaluation protocol
        =
Comparable experiment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without corpus integrity, two apparently identical experiments can silently evaluate different datasets.&lt;/p&gt;

&lt;p&gt;That means dataset provenance, versioning, and integrity verification are part of the experimental methodology itself.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Benchmark Itself Became an Experiment
&lt;/h1&gt;

&lt;p&gt;One of the most valuable discoveries during the project was that &lt;strong&gt;benchmark engineering is itself part of evaluation science&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My initial task implementation used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with assertions.&lt;/p&gt;

&lt;p&gt;That produced pass/fail-style behavior.&lt;/p&gt;

&lt;p&gt;I initially expected the benchmark to expose a numerical accuracy metric.&lt;/p&gt;

&lt;p&gt;That assumption was incorrect.&lt;/p&gt;

&lt;p&gt;I subsequently changed the task interface to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and explicitly returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;accuracy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;correct&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;accuracy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This exposed a broader principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The semantics of the evaluation harness are part of the experimental design.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A benchmark can execute successfully while still reporting an invalid measurement if the scoring contract is incorrectly defined.&lt;/p&gt;

&lt;p&gt;In other words:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Correct Inference
        ≠
Correct Evaluation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A trustworthy benchmark requires both.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Kaggle Runtime Was Another Experimental Variable
&lt;/h1&gt;

&lt;p&gt;One early published iteration failed with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NameError: name 'ALL_TASKS_JSON' is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was not a model reasoning failure.&lt;/p&gt;

&lt;p&gt;The model never reached the reasoning stage.&lt;/p&gt;

&lt;p&gt;The task failed during execution before the first model inference step.&lt;/p&gt;

&lt;p&gt;That forced a more rigorous separation of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Dataset Integrity
        │
        ▼
Task Packaging
        │
        ▼
Runtime Execution
        │
        ▼
Model Inference
        │
        ▼
Structured Parsing
        │
        ▼
Assertion
        │
        ▼
Scoring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This distinction is fundamental.&lt;/p&gt;

&lt;p&gt;A benchmark must not silently transform:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Runtime Error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model Error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those are different failure classes with different remediation paths.&lt;/p&gt;

&lt;p&gt;It also exposed an important deployment boundary.&lt;/p&gt;

&lt;p&gt;My local development environment contained the canonical task source under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\User\Documents\ProofSec\kaggle\tasks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but a Kaggle-hosted execution environment cannot directly access that Windows filesystem.&lt;/p&gt;

&lt;p&gt;The benchmark therefore has to package the necessary evaluation corpus and task implementation into the executable artifact available to the remote runtime.&lt;/p&gt;

&lt;p&gt;That became an important lesson in &lt;strong&gt;benchmark portability and execution-environment isolation&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Versioned Benchmark Development
&lt;/h1&gt;

&lt;p&gt;The benchmark went through multiple iterations while I validated the evaluation infrastructure.&lt;/p&gt;

&lt;p&gt;One development version displayed assertion counts including:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Sonnet 4.6    0 Pass
GPT-5.5             75 Pass
Gemini 3.5 Flash    95 Pass
Gemini 3.7 Flash    87 Pass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A subsequent controlled version successfully executed its smoke-test assertions across the evaluated models.&lt;/p&gt;

&lt;p&gt;These development-stage measurements should not be interpreted as a universal model ranking.&lt;/p&gt;

&lt;p&gt;They represent different stages of benchmark engineering.&lt;/p&gt;

&lt;p&gt;During this process I was simultaneously validating:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;dataset construction&lt;/li&gt;
&lt;li&gt;task implementation&lt;/li&gt;
&lt;li&gt;structured-output schema&lt;/li&gt;
&lt;li&gt;assertion semantics&lt;/li&gt;
&lt;li&gt;scoring semantics&lt;/li&gt;
&lt;li&gt;remote runtime packaging&lt;/li&gt;
&lt;li&gt;model inference&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This separation is essential for responsible interpretation.&lt;/p&gt;

&lt;p&gt;A benchmark-development artifact is not automatically equivalent to a final scientific measurement.&lt;/p&gt;




&lt;h1&gt;
  
  
  Local Validation
&lt;/h1&gt;

&lt;p&gt;Before treating Kaggle execution as authoritative, I also used local evaluation to inspect the complete 110-case corpus.&lt;/p&gt;

&lt;p&gt;Representative local validation produced:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Correct&lt;/th&gt;
&lt;th&gt;Total&lt;/th&gt;
&lt;th&gt;Accuracy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;110&lt;/td&gt;
&lt;td&gt;72.73%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.7 Flash&lt;/td&gt;
&lt;td&gt;86&lt;/td&gt;
&lt;td&gt;110&lt;/td&gt;
&lt;td&gt;78.18%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.5 Flash&lt;/td&gt;
&lt;td&gt;84&lt;/td&gt;
&lt;td&gt;110&lt;/td&gt;
&lt;td&gt;76.36%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5&lt;/td&gt;
&lt;td&gt;67&lt;/td&gt;
&lt;td&gt;110&lt;/td&gt;
&lt;td&gt;60.91%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These figures are &lt;strong&gt;local validation measurements under the specific execution conditions used during development&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They should not be interpreted as immutable measurements of model capability.&lt;/p&gt;

&lt;p&gt;LLM inference can vary because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;model revisions&lt;/li&gt;
&lt;li&gt;provider routing&lt;/li&gt;
&lt;li&gt;stochastic inference&lt;/li&gt;
&lt;li&gt;runtime configuration&lt;/li&gt;
&lt;li&gt;API behavior&lt;/li&gt;
&lt;li&gt;execution environment&lt;/li&gt;
&lt;li&gt;infrastructure conditions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This variability is itself relevant to reproducibility.&lt;/p&gt;

&lt;p&gt;The objective was therefore not to reduce the benchmark to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Model X is better."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The objective was to characterize &lt;strong&gt;failure modes, evidentiary behavior, and reasoning sensitivity under a controlled corpus&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  A Particularly Interesting Failure Mode
&lt;/h1&gt;

&lt;p&gt;One of the recurring failure patterns motivating ProofSec can be represented as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Security Vocabulary Recognition
              ↓
       Semantic Activation
              ↓
     Premature Classification
              ↓
 Evidence Is Never Actually Tested
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The desired reasoning pathway is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scenario
   ↓
Extract Security-Relevant Claims
   ↓
Identify Actors and Authorization Boundaries
   ↓
Identify Directly Observed Facts
   ↓
Separate Indicators from Decisive Evidence
   ↓
Evaluate Contradictory Evidence
   ↓
Evaluate Negative Evidence
   ↓
Determine Evidentiary Sufficiency
   ↓
Classify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The distinction is fundamental.&lt;/p&gt;

&lt;p&gt;A model can possess extensive cybersecurity knowledge while still being unreliable at &lt;strong&gt;evidence-grounded adjudication&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is the capability ProofSec attempts to isolate.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why "Insufficient Evidence" Matters
&lt;/h1&gt;

&lt;p&gt;This is one of the most consequential design decisions in ProofSec.&lt;/p&gt;

&lt;p&gt;A conventional benchmark might ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is the system vulnerable?

YES / NO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ProofSec instead represents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vulnerable
Not Vulnerable
Insufficient Evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This explicitly models &lt;strong&gt;epistemic uncertainty&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The model must distinguish between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Observed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Established
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That distinction matters operationally.&lt;/p&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unsupported Finding
        ↓
Analyst Investigation
        ↓
Engineering Interruption
        ↓
Potential Remediation
        ↓
Operational Cost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A system that generates large quantities of unsupported security findings can impose substantial downstream cost even when its vulnerability-recognition capability appears impressive.&lt;/p&gt;

&lt;p&gt;Abstention is therefore not merely a failure to classify.&lt;/p&gt;

&lt;p&gt;Under uncertainty, abstention can be a legitimate and necessary security behavior.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Benchmark Is Essentially Testing Epistemic Discipline
&lt;/h1&gt;

&lt;p&gt;At a deeper level, ProofSec is not simply a cybersecurity benchmark.&lt;/p&gt;

&lt;p&gt;It evaluates whether an LLM can maintain an explicit boundary between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What do I know?
        ↓
What does the evidence establish?
        ↓
What remains unknown?
        ↓
What conclusion is justified?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is fundamentally an &lt;strong&gt;epistemic reasoning problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cybersecurity provides a particularly concrete environment in which to measure it because security conclusions often have direct operational consequences.&lt;/p&gt;

&lt;p&gt;The same methodology could potentially extend to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;code review&lt;/li&gt;
&lt;li&gt;incident response&lt;/li&gt;
&lt;li&gt;fraud detection&lt;/li&gt;
&lt;li&gt;compliance analysis&lt;/li&gt;
&lt;li&gt;threat intelligence&lt;/li&gt;
&lt;li&gt;infrastructure diagnostics&lt;/li&gt;
&lt;li&gt;financial anomaly investigation&lt;/li&gt;
&lt;li&gt;legal document analysis&lt;/li&gt;
&lt;li&gt;scientific reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The security domain is simply where I chose to operationalize the problem.&lt;/p&gt;




&lt;h1&gt;
  
  
  Engineering Stack
&lt;/h1&gt;

&lt;p&gt;ProofSec is implemented using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Kaggle Benchmarks&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kaggle_benchmarks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Pydantic&lt;/li&gt;
&lt;li&gt;structured model outputs&lt;/li&gt;
&lt;li&gt;deterministic assertions&lt;/li&gt;
&lt;li&gt;JSON-based frozen corpus&lt;/li&gt;
&lt;li&gt;SHA-256 integrity verification&lt;/li&gt;
&lt;li&gt;controlled perturbation generation&lt;/li&gt;
&lt;li&gt;evidence-state annotations&lt;/li&gt;
&lt;li&gt;local validation&lt;/li&gt;
&lt;li&gt;Kaggle-hosted execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture maintains explicit boundaries between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PROMPT CONSTRUCTION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MODEL INFERENCE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STRUCTURED PARSING
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EVALUATION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SCORING
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the system substantially easier to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;debug&lt;/li&gt;
&lt;li&gt;version&lt;/li&gt;
&lt;li&gt;reproduce&lt;/li&gt;
&lt;li&gt;audit&lt;/li&gt;
&lt;li&gt;extend&lt;/li&gt;
&lt;li&gt;attribute failures within&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The benchmark is therefore treated as an engineered evaluation artifact rather than merely a collection of prompts.&lt;/p&gt;




&lt;h1&gt;
  
  
  Reproducibility and Development Workflow
&lt;/h1&gt;

&lt;p&gt;The development workflow became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Security Hypothesis
        ↓
Construct Controlled Scenario
        ↓
Define Canonical Ground Truth
        ↓
Generate Adversarial / Paired Variant
        ↓
Validate Dataset
        ↓
Freeze Corpus
        ↓
Generate Integrity Hash
        ↓
Implement Structured Task
        ↓
Run Local Validation
        ↓
Validate Kaggle Packaging
        ↓
Execute Against Multiple Models
        ↓
Inspect Assertions
        ↓
Analyze Failure Modes
        ↓
Revise Benchmark Infrastructure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This treats the benchmark as a versioned research artifact.&lt;/p&gt;

&lt;p&gt;The project structure is maintained as an engineering repository containing the benchmark implementation, evaluation infrastructure, integrity controls, and supporting documentation.&lt;/p&gt;

&lt;p&gt;The objective is to make the benchmark auditable rather than opaque.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Learned
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Security reasoning is not vulnerability keyword matching
&lt;/h2&gt;

&lt;p&gt;The presence of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ID
endpoint
HTTP 200
user
invoice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;does not automatically establish IDOR.&lt;/p&gt;

&lt;p&gt;The authorization relationship is the security property that matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Counterfactual sensitivity is extremely valuable
&lt;/h2&gt;

&lt;p&gt;If a single security-relevant fact changes, the model should respond to that change.&lt;/p&gt;

&lt;p&gt;Controlled perturbation therefore provides a much stronger probe of reasoning sensitivity than simply increasing the number of unrelated benchmark questions.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Negative evidence deserves first-class treatment
&lt;/h2&gt;

&lt;p&gt;A security reasoning system must be capable of recognizing evidence that weakens or falsifies its initial hypothesis.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Contradictions expose hypothesis-update behavior
&lt;/h2&gt;

&lt;p&gt;A model that performs well under clean, monotonic evidence may behave very differently when observations conflict.&lt;/p&gt;

&lt;p&gt;Contradiction handling is therefore a meaningful robustness dimension.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Abstention is measurable
&lt;/h2&gt;

&lt;p&gt;"Insufficient Evidence" can be treated as an explicit epistemic state rather than an evasive response.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Structured outputs improve diagnosability
&lt;/h2&gt;

&lt;p&gt;A classification tells us:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What did the model decide?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A structured assessment can additionally expose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What evidence did it identify?
What evidence did it consider missing?
What verification did it propose?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That creates a substantially richer diagnostic surface.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. The benchmark harness must be engineered like software
&lt;/h2&gt;

&lt;p&gt;Dataset defects, packaging failures, schema violations, runtime exceptions, parsing failures, and model reasoning failures require separate failure categories.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Reproducibility is part of validity
&lt;/h2&gt;

&lt;p&gt;A benchmark without corpus integrity, version control, and execution controls can silently drift.&lt;/p&gt;

&lt;p&gt;A score without provenance is considerably less useful than a score attached to a reproducible experimental configuration.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Want to Measure Next
&lt;/h1&gt;

&lt;p&gt;ProofSec v0.2 focuses on controlled evidence reasoning.&lt;/p&gt;

&lt;p&gt;The next iteration can extend the methodology considerably.&lt;/p&gt;

&lt;h2&gt;
  
  
  Temporal Reasoning
&lt;/h2&gt;

&lt;p&gt;Instead of presenting all evidence simultaneously:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T0 → Initial Telemetry
T1 → Additional Observation
T2 → Contradictory Artifact
T3 → Authorization Test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I want to evaluate whether the model updates its hypothesis correctly as evidence arrives.&lt;/p&gt;

&lt;p&gt;This transforms static classification into a &lt;strong&gt;sequential evidence-update problem&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Confidence Calibration
&lt;/h2&gt;

&lt;p&gt;Instead of evaluating only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;classification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;evaluate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;classification
+
confidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then measure whether confidence is statistically aligned with empirical correctness.&lt;/p&gt;

&lt;p&gt;A model that is wrong with extremely high confidence represents a fundamentally different operational risk profile from a model that identifies uncertainty.&lt;/p&gt;




&lt;h2&gt;
  
  
  Evidence Attribution
&lt;/h2&gt;

&lt;p&gt;Require the model to answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which exact fact changed your classification?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enables a deeper evaluation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Correct Conclusion
        +
Correct Evidentiary Basis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;versus:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Correct Conclusion
        +
Incorrect Evidentiary Basis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This distinction matters because a model can occasionally arrive at the correct answer for the wrong reasons.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cross-Domain Generalization
&lt;/h2&gt;

&lt;p&gt;The framework can be extended into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSRF
Authentication Bypass
Privilege Escalation
CSRF
Path Traversal
Race Conditions
Business Logic Flaws
Cloud IAM
API Authorization
Multi-Tenant Isolation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The broader research question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Is evidence-grounded security reasoning a generalizable capability, or is it primarily a collection of domain-specific semantic associations?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  The Bigger Question
&lt;/h1&gt;

&lt;p&gt;When I started building ProofSec, the obvious question was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Which LLM is better at cybersecurity?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After engineering the benchmark, that no longer seemed like the most interesting question.&lt;/p&gt;

&lt;p&gt;The more fundamental question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can we construct evaluations that determine whether an AI security conclusion is actually justified by the evidence available to it?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A leaderboard such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model A - 82%
Model B - 79%
Model C - 76%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is useful.&lt;/p&gt;

&lt;p&gt;But it is incomplete.&lt;/p&gt;

&lt;p&gt;For an AI security system, I want to know:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What evidence did the model use?

What evidence did it ignore?

Did it infer facts that were never provided?

Did it confuse an indicator with proof?

Did it recognize negative evidence?

Did it resolve contradictions?

Did terminology alter its classification?

Did it respond to a one-fact perturbation?

Did it revise its hypothesis?

Did it recognize when the evidence was insufficient?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those questions are much closer to the requirements of a real security-analysis system.&lt;/p&gt;




&lt;h1&gt;
  
  
  My Benchmark
&lt;/h1&gt;

&lt;h2&gt;
  
  
  ProofSec - Security Evidence Reasoning Benchmark
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.kaggle.com/benchmarks/anuththara2007/proofsec-security-evidence-reasoning-benchmark/versions/1" rel="noopener noreferrer"&gt;Open ProofSec on Kaggle&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ProofSec v0.2&lt;/strong&gt; contains &lt;strong&gt;110 security reasoning cases&lt;/strong&gt; designed around controlled evidence manipulation, structured classification, deterministic ground truth, integrity verification, and reproducible multi-model evaluation.&lt;/p&gt;

&lt;p&gt;The benchmark is built around one principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Security conclusions should be proportional to the evidence supporting them.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ProofSec operationalizes that principle through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;controlled one-fact perturbations&lt;/li&gt;
&lt;li&gt;evidence-state modeling&lt;/li&gt;
&lt;li&gt;contradiction resolution&lt;/li&gt;
&lt;li&gt;negative evidence&lt;/li&gt;
&lt;li&gt;authority and terminology robustness&lt;/li&gt;
&lt;li&gt;structured outputs&lt;/li&gt;
&lt;li&gt;deterministic assertions&lt;/li&gt;
&lt;li&gt;frozen corpus integrity&lt;/li&gt;
&lt;li&gt;SHA-256 verification&lt;/li&gt;
&lt;li&gt;cross-model execution&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Open-Source Implementation
&lt;/h1&gt;

&lt;p&gt;The benchmark implementation and supporting engineering work are available on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/anuththara2007-W/ProofSec" rel="noopener noreferrer"&gt;ProofSec GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository is intended to make the benchmark more than a Kaggle submission.&lt;/p&gt;

&lt;p&gt;It provides an engineering artifact around the evaluation methodology, allowing the benchmark to be inspected, versioned, reproduced, and extended independently of the Kaggle interface.&lt;/p&gt;

&lt;p&gt;The broader objective is to preserve the chain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research Hypothesis
        ↓
Dataset Construction
        ↓
Ground Truth
        ↓
Evaluation Harness
        ↓
Integrity Verification
        ↓
Model Execution
        ↓
Results
        ↓
Failure Analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That provenance matters.&lt;/p&gt;

&lt;p&gt;A benchmark should not only report a number.&lt;/p&gt;

&lt;p&gt;It should make it possible to understand &lt;strong&gt;where that number came from&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Takeaway
&lt;/h1&gt;

&lt;p&gt;The most important result from building ProofSec was not a single model score.&lt;/p&gt;

&lt;p&gt;It was discovering how easily an evaluation can appear to measure security reasoning while actually measuring something else.&lt;/p&gt;

&lt;p&gt;A benchmark can accidentally measure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Keyword Recognition
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence Reasoning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can measure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Runtime Correctness
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Model Correctness
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can measure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Confidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence-Justified Certainty
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It can measure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Semantic Familiarity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Causal Sensitivity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it can report a precise-looking number while the underlying dataset, runtime, scoring semantics, or evaluation protocol is not actually controlled.&lt;/p&gt;

&lt;p&gt;ProofSec is my attempt to make those boundaries explicit.&lt;/p&gt;

&lt;p&gt;The objective is not simply to build an LLM that identifies the largest number of possible vulnerabilities.&lt;/p&gt;

&lt;p&gt;The objective is to construct an evaluation framework capable of answering a substantially harder question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;When an AI claims that a security vulnerability exists, did the available evidence actually justify that claim?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the standard I want AI-assisted security tooling to eventually be held to.&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Did the model recognize the vulnerability vocabulary?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Did the model establish the security claim from the evidence?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That distinction is the entire premise of ProofSec.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ProofSec Benchmark&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.kaggle.com/benchmarks/anuththara2007/proofsec-security-evidence-reasoning-benchmark/versions/1" rel="noopener noreferrer"&gt;ProofSec on Kaggle&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ProofSec Source Repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/anuththara2007-W/ProofSec" rel="noopener noreferrer"&gt;ProofSec on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kaggle Benchmarking Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/challenges/kaggle-2026-09-23"&gt;Kaggle Benchmarking Challenge on DEV&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  kagglechallenge #kaggle #ai #machinelearning #llm #cybersecurity #securityresearch #benchmarking #airesearch #python #softwareengineering #llmsecurity #applicationsecurity #securityengineering #aisafety #airesearch #llmreasoning #securityautomation #researchengineering
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>kagglechallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Weaponizing a CVSS 10.0 PoC: Building a Zero-Touch RSC Recon Engine with GitHub Copilot</title>
      <dc:creator>Anuththara Wickramasekara </dc:creator>
      <pubDate>Thu, 24 Sep 2026 09:34:22 +0000</pubDate>
      <link>https://dev.to/anuththara2007w/weaponizing-a-cvss-100-poc-building-a-zero-touch-rsc-recon-engine-with-github-copilot-58fg</link>
      <guid>https://dev.to/anuththara2007w/weaponizing-a-cvss-100-poc-building-a-zero-touch-rsc-recon-engine-with-github-copilot-58fg</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/mlh-hackathon"&gt;MLH x DEV Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every security researcher has a "Project Graveyard" - a dusty local directory where dormant Proof of Concepts (PoCs), 2 AM exploit scripts, and ephemeral bypasses go to die.&lt;/p&gt;

&lt;p&gt;For me, that script was a raw, 50-line Python snippet authored in December 2025. A CVSS 10.0 vulnerability (CVE-2025-55182 / React2Shell) had just dropped, exposing a critical unauthenticated Remote Code Execution (RCE) attack vector via unsafe deserialization of the React Flight protocol.&lt;/p&gt;

&lt;p&gt;My script successfully fingerprinted the vulnerability, but its architecture was archaic: synchronous, entirely ephemeral, and reliant on manual DevTools injection to scan a target DOM. It was a functional PoC, but terrible for actual field reconnaissance.&lt;/p&gt;

&lt;p&gt;When the &lt;strong&gt;MLH Finish-Up-a-Thon&lt;/strong&gt; launched, I decided to pull this script out of the archive and operationalize it. Armed with &lt;strong&gt;GitHub Copilot&lt;/strong&gt; as my autonomous platform engineer, I spent 48 hours transforming a brittle terminal script into a highly resilient, event-driven, Manifest V3 Chrome Extension.&lt;/p&gt;

&lt;p&gt;Here is how we turned digital duct tape into a production-grade vulnerability reconnaissance asset.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built: The RSC Reconnaissance Engine
&lt;/h2&gt;

&lt;p&gt;I engineered the &lt;strong&gt;RSC Fingerprint Detector&lt;/strong&gt;, a Manifest V3 (MV3) Chrome extension designed for passive and active telemetry gathering on React Server Components (RSC) and the React2Shell deserialization vulnerability class.&lt;/p&gt;

&lt;p&gt;To eliminate false positives during target enumeration, the extension deploys a strict, dual-phase heuristic pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Passive Reconnaissance (Zero-Touch):&lt;/strong&gt; Silently hooks the global execution context (&lt;code&gt;window.__next_f&lt;/code&gt;), performs script asset introspection (&lt;code&gt;react-server-dom-webpack&lt;/code&gt;), utilizes DOM attribute scanning (&lt;code&gt;data-rsc&lt;/code&gt;), and monitors network traffic for specific HTTP response headers (&lt;code&gt;Vary: RSC&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active Probing:&lt;/strong&gt; Fires a cross-origin, asynchronous &lt;code&gt;fetch&lt;/code&gt; with a crafted &lt;code&gt;X-RSC-Probe&lt;/code&gt; header payload. It then parses the resulting content-type entropy to extract the exact React Flight protocol signature without triggering target backend alerts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Architecture Upgrade:&lt;/strong&gt; We migrated from a synchronous, single-vector Python script that lost its execution context on page reload, to a declarative MV3 architecture. The new engine features IndexedDB ACID transactions for persistent telemetry, cross-context Inter-Process Communication (IPC), and DOM isolation via Shadow DOM to prevent CSS cross-contamination.&lt;/p&gt;

&lt;h2&gt;
  
  
  Telemetry &amp;amp; Visual Proof
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/anuththara2007-W/CVE-2025-55182-Exploit-extension?utm_source=gemini" rel="noopener noreferrer"&gt;anuththara2007-W/CVE-2025-55182-Exploit-extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is nothing quite as satisfying as the visual proof of operationalizing a raw exploit script into a deployable tool.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;December 2025 (The Ephemeral PoC)&lt;/th&gt;
&lt;th&gt;May 2026 (The Operationalized Asset)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;Raw console execution. Highly manual. Zero state persistence.&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Isolated UI, real-time threat badges, and active CVE mapping.&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Partner Technologies: GitHub Copilot as a Cyber-Operations Ally
&lt;/h2&gt;

&lt;p&gt;Writing the core heuristic logic for vulnerability detection is the fun part. Wrestling with Chrome’s restrictive Content Security Policies (CSP), isolated execution worlds, and MV3 lifecycle deprecations is the grueling friction that kills side projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without GitHub Copilot, this asset would still be a dormant script.&lt;/strong&gt; I didn't just use it for autocomplete; I utilized it as a senior platform architect who understood the Chrome Sandbox limitations intimately. Here is how Copilot acted as an elite force multiplier:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Bypassing the Manifest V3 Sandbox Constraints&lt;/strong&gt;&lt;br&gt;
Background pages are dead in MV3. Copilot flawlessly orchestrated my &lt;code&gt;manifest.json&lt;/code&gt; schema, registering the Service Worker and migrating my network interception logic to &lt;code&gt;declarativeNetRequest&lt;/code&gt; instead of the blocking &lt;code&gt;webRequest&lt;/code&gt; API. It completely bypassed the dreaded "persistent flag" runtime errors that plague MV3 migrations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Bridging the Asynchronous IPC Gap&lt;/strong&gt;&lt;br&gt;
When setting up &lt;code&gt;chrome.runtime.sendMessage&lt;/code&gt; across isolated execution contexts (content script to background worker), Copilot automatically injected the mandatory &lt;code&gt;return true&lt;/code&gt; directive inside the &lt;code&gt;onMessage&lt;/code&gt; listener.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The Technical Impact:&lt;/em&gt; In MV3, failing to return &lt;code&gt;true&lt;/code&gt; immediately terminates the IPC message channel, causing silent failures for asynchronous callbacks. Copilot patched this race condition before the code even compiled.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3. Architecting Persistent Telemetry&lt;/strong&gt;&lt;br&gt;
I needed persistent local storage for scan logs but wanted to avoid bloated wrapper libraries. Copilot generated a raw IndexedDB implementation from scratch, engineering the &lt;code&gt;onupgradeneeded&lt;/code&gt; handler, object store schemas, and timestamp indexing. It proactively wrapped the database transactions in &lt;code&gt;try/catch&lt;/code&gt; blocks, implementing idempotency and retry logic for transient database lock errors.&lt;/p&gt;
&lt;h3&gt;
  
  
  The "Mic-Drop" Network Interception
&lt;/h3&gt;

&lt;p&gt;The most impressive moment occurred while configuring the passive packet-sniffing logic. I wrote a single comment:&lt;br&gt;
&lt;code&gt;// Capture RSC responses via webRequest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Copilot instantly synthesized this interception block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;webRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onHeadersReceived&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;details&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isRSC&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;details&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseHeaders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;some&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 
      &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;content-type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;text/x-component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isRSC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;saveFlight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;details&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Trigger telemetry extraction&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;urls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;all_urls&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;responseHeaders&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;// &amp;lt;-- Copilot successfully identified this mandatory MV3 bypass!&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Injecting &lt;code&gt;"responseHeaders"&lt;/code&gt; into the &lt;code&gt;extraInfoSpec&lt;/code&gt; array is an obscure, critical MV3 security requirement. If omitted, Chrome silently sanitizes the headers from your extension's execution context. Copilot's deep contextual awareness of Chrome's security model saved me hours of debugging silent telemetry drops.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hackathon Experience
&lt;/h2&gt;

&lt;p&gt;Participating as a Solo Developer in the MLH Finish-Up-a-Thon completely shifted my perspective on software development in the security space.&lt;/p&gt;

&lt;p&gt;Standard hackathons prioritize reckless velocity-getting a prototype to compile by any means necessary. This event prioritized &lt;em&gt;craftsmanship and operational readiness&lt;/em&gt;. It forced me to analyze the "last mile" of software engineering: error boundaries, state persistence, UI reactivity, and adhering to strict platform security models.&lt;/p&gt;

&lt;p&gt;We often abandon security research tools because the friction of engineering a deployable interface outweighs the adrenaline of writing the initial exploit logic. GitHub Copilot eradicated that friction. It handled the exhausting platform boilerplate, allowing me to focus 100% of my cognitive load on the vulnerability architecture.&lt;/p&gt;

&lt;p&gt;My biggest takeaway? A dead PoC doesn't have to stay in the graveyard. With the right AI tooling and a structured deadline, you can resurrect a forgotten script and weaponize it into a professional-grade asset.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclaimer: This reconnaissance tool is intended strictly for authorized vulnerability scanning, threat intelligence, and educational purposes. Use only on infrastructure you own or have explicit, documented authorization to test.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mlhacks</category>
      <category>devchallenge</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>CVE-2026-20127 Defensive Companion</title>
      <dc:creator>Anuththara Wickramasekara </dc:creator>
      <pubDate>Sun, 12 Jul 2026 04:29:34 +0000</pubDate>
      <link>https://dev.to/anuththara2007w/cve-2026-20127-defensive-companion-5ej5</link>
      <guid>https://dev.to/anuththara2007w/cve-2026-20127-defensive-companion-5ej5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CVE‑2026‑20127 Defensive Companion&lt;/strong&gt; - a fully offline, enterprise‑grade browser extension (Manifest V3) that transforms raw exploit intelligence into a real‑time threat analysis laboratory. It provides deep‑dive visibility into the authentication bypass vulnerability in Cisco Catalyst SD‑WAN Controllers (vSmart), enabling SOC teams and defensive researchers to dissect the DTLS handshake flaw, extract Indicators of Compromise, and deploy mitigation strategies without ever exposing operational data to external networks.&lt;/p&gt;

&lt;p&gt;The extension delivers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;offline NLP knowledge engine&lt;/strong&gt; that answers natural‑language queries about the vulnerability, detection, and remediation - powered entirely by 17 segmented JSON intelligence domains parsed from the original exploit research.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;interactive Protocol Explorer&lt;/strong&gt; that renders the legitimate vs. exploited DTLS handshake sequences, highlighting the exact memory corruption in &lt;code&gt;vbond_proc_challenge_ack_ack()&lt;/code&gt; at &lt;code&gt;0x38AB7&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Packet Anatomy Viewer&lt;/strong&gt; breaking down the forged &lt;code&gt;CHALLENGE_ACK_ACK&lt;/code&gt; message byte‑by‑byte.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;report generator&lt;/strong&gt; that compiles on‑demand Markdown threat summaries for downstream distribution.&lt;/li&gt;
&lt;li&gt;Strict &lt;strong&gt;air‑gapped design&lt;/strong&gt;: zero external API calls, rigid Content Security Policy, and the minimal possible permissions (&lt;code&gt;activeTab&lt;/code&gt;, &lt;code&gt;sidePanel&lt;/code&gt;, &lt;code&gt;storage&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to encapsulate months of passion for reverse engineering and defensive research into a single, elegant tool that makes sophisticated protocol analysis accessible to every security professional - anywhere, with no cloud dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;The extension’s side panel is the persistent analyst workspace. Below is a capture of the dashboard showing the interactive protocol explorer, local assistant, and IOC extraction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr55ppbz5lc0d9uaaly1s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr55ppbz5lc0d9uaaly1s.png" alt="CVE-2026-20127 Defensive Companion Dashboard" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Visual walk‑through: left pane - protocol sequence diagram with the vulnerable state transition highlighted; right pane - offline NLP assistant answering a detection query; bottom bar - quick IOC summary (malicious &lt;code&gt;verify_status&lt;/code&gt; byte, targeted ports, anomalous log patterns).&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anuththara2007-W" rel="noopener noreferrer"&gt;
        anuththara2007-W
      &lt;/a&gt; / &lt;a href="https://github.com/anuththara2007-W/CVE-2026-20127-Exploit-Extension" rel="noopener noreferrer"&gt;
        CVE-2026-20127-Exploit-Extension
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Executive Summary&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;The CVE-2026-20127 Defensive Companion is a premier, enterprise-grade Browser Extension engineered for proactive threat intelligence and defensive analysis. This tool encapsulates authoritative technical research concerning the authentication bypass vulnerability in the Cisco Catalyst SD-WAN Controller (vSmart). By delivering an offline, heavily localized intelligence layer, it empowers Security Operations Centers (SOC) and defensive researchers to rapidly analyze packet structures, trace authentication flows, and instantly extract Indicators of Compromise (IOCs) without exposing active investigative data to external networks.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Technical Background&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;The Cisco Catalyst SD-WAN architecture relies on the &lt;code&gt;vdaemon&lt;/code&gt; service to establish and maintain control-plane DTLS connections between edge devices and the controller. The underlying vulnerability (CVE-2026-20127) exploits a failure in state machine validation during the DTLS handshake sequence, explicitly impacting ports typically associated with vSmart control traffic (e.g., 12346, 52521). The vulnerability allows unauthorized actors to bypass X.509 certificate validation and forge an authenticated state within the internal controller…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anuththara2007-W/CVE-2026-20127-Exploit-Extension" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Spark
&lt;/h3&gt;

&lt;p&gt;Cisco’s disclosure of CVE‑2026‑20127 - an unauthenticated DTLS handshake bypass in the vSmart controller’s &lt;code&gt;vdaemon&lt;/code&gt; service - immediately ignited my passion. A single missing state‑machine check in the &lt;code&gt;vbond_proc_challenge_ack_ack()&lt;/code&gt; function allowed an attacker to forge an authenticated session without ever presenting a valid certificate. The original exploit repository laid bare the raw mechanics; I wanted to turn that knowledge into a defensive force multiplier that would outlive the patch cycle.&lt;/p&gt;

&lt;p&gt;This challenge provided the perfect forcing function. In one weekend, I built an extension that doesn’t just describe the vulnerability - it &lt;em&gt;teaches&lt;/em&gt; the protocol weakness, arms defenders with live detection rules, and does so in a completely offline package that respects the operational security of the most sensitive environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture: Isolated Intelligence, Maximum Impact
&lt;/h3&gt;

&lt;p&gt;The extension adheres to the strict separation enforced by Manifest V3, while delivering a reactive, near‑instant experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Layer (&lt;code&gt;src/knowledge&lt;/code&gt;)&lt;/strong&gt;&lt;br&gt;
The raw exploit research was parsed into 17 domain‑specific JSON objects covering everything from the DTLS state machine (message types 8,9,10) to IOC fingerprints in &lt;code&gt;vsyslog&lt;/code&gt; and &lt;code&gt;auth.log&lt;/code&gt;. This structured intelligence is the foundation of the offline engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Offline NLP Engine (&lt;code&gt;src/services&lt;/code&gt;)&lt;/strong&gt;&lt;br&gt;
A custom, zero‑latency pipeline runs entirely in the browser:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tokenization &amp;amp; stop‑word removal&lt;/strong&gt; on the user’s natural‑language query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heuristic intent detection&lt;/strong&gt; - mapping phrases like “how to detect” to the &lt;code&gt;Detection&lt;/code&gt; knowledge domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic retrieval&lt;/strong&gt; against the pre‑built inverted index (a &lt;code&gt;Set&amp;lt;string&amp;gt;&lt;/code&gt; intersection over tokens).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Template‑driven synthesis&lt;/strong&gt; that assembles the matched JSON fragments into human‑readable Markdown, complete with memory addresses, log signatures, and ACL recommendations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All indexing happens synchronously at side‑panel load, keeping query response times sub‑millisecond.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Presentation Layer (React 19 + Vite + Tailwind)&lt;/strong&gt;&lt;br&gt;
The UI is built as a single‑page application mounted in the &lt;code&gt;sidePanel&lt;/code&gt;. Key design choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lazy‑loaded components&lt;/strong&gt; ensure instant first paint; the Protocol Explorer and Packet Viewer are loaded only when their tabs are activated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framer Motion&lt;/strong&gt; hardware‑accelerates the DTLS sequence animations, making the state‑transition attack path intuitively visible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lucide React&lt;/strong&gt; provides a professional icon set that scales across Chrome’s light/dark modes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Browser Integration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;service worker&lt;/strong&gt; (&lt;code&gt;background.ts&lt;/code&gt;) acts as the central event bus, routing messages between the popup, side panel, and storage layers with mandatory &lt;code&gt;return true&lt;/code&gt; for async &lt;code&gt;chrome.runtime.onMessage&lt;/code&gt; listeners.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;chrome.storage.local&lt;/code&gt; persists user preferences and the most recent report snapshot.&lt;/li&gt;
&lt;li&gt;The manifest requests only &lt;code&gt;activeTab&lt;/code&gt;, &lt;code&gt;sidePanel&lt;/code&gt;, and &lt;code&gt;storage&lt;/code&gt; - no &lt;code&gt;webRequest&lt;/code&gt;, no &lt;code&gt;declarativeNetRequest&lt;/code&gt;. All intelligence is self‑contained; the tool makes zero network requests, guaranteeing that no sensitive investigation data leaks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technical Deep Dive: Why the Vulnerability Exists
&lt;/h3&gt;

&lt;p&gt;The extension’s Protocol Explorer visualises the core flaw. In the legitimate flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Client sends DTLS &lt;code&gt;ClientHello&lt;/code&gt; with X.509 cert.&lt;/li&gt;
&lt;li&gt;Server issues &lt;code&gt;CHALLENGE&lt;/code&gt; (&lt;code&gt;msg_type=8&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Client responds &lt;code&gt;CHALLENGE_ACK&lt;/code&gt; (&lt;code&gt;msg_type=9&lt;/code&gt;) with cryptographic proof.&lt;/li&gt;
&lt;li&gt;Server validates proof, sends &lt;code&gt;CHALLENGE_ACK_ACK&lt;/code&gt; (&lt;code&gt;msg_type=10&lt;/code&gt;), and sets &lt;code&gt;*(BYTE*)(peer_state+70) = 1&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The exploit skips step 3 entirely. The attacker intercepts the &lt;code&gt;CHALLENGE&lt;/code&gt; and immediately crafts a &lt;code&gt;CHALLENGE_ACK_ACK&lt;/code&gt; with a non‑zero &lt;code&gt;verify_status&lt;/code&gt; byte. Because &lt;code&gt;vbond_proc_msg()&lt;/code&gt; exempts &lt;code&gt;msg_type=10&lt;/code&gt; from authentication checks, the packet reaches the vulnerable handler, which blindly trusts the client‑supplied status and marks the peer as authenticated.&lt;/p&gt;

&lt;p&gt;The extension renders these two flows side‑by‑side, highlighting the missing validation gate, and overlays the exact binary patch (upgrade to v20.12.6.1) that introduces the state‑machine enforcement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Detection &amp;amp; Mitigation Built In
&lt;/h3&gt;

&lt;p&gt;Beyond visualisation, the Knowledge Engine codifies actionable detection guidance directly from the exploit research:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;vsyslog anomaly&lt;/strong&gt;: Alert on &lt;code&gt;control-connection-state-change&lt;/code&gt; with &lt;code&gt;peer-vmanage-system-ip&lt;/code&gt; of &lt;code&gt;0.0.0.0&lt;/code&gt; followed by immediate &lt;code&gt;down&lt;/code&gt; state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;auth.log anomaly&lt;/strong&gt;: Unexpected SSH key acceptance for &lt;code&gt;vmanage-admin&lt;/code&gt; on port 830 immediately after DTLS instability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network ACLs&lt;/strong&gt;: Strictly restrict inbound DTLS ports (12346, 52521) to known edge routers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Patch imperative&lt;/strong&gt;: Upgrade to v20.12.6.1+, which adds the missing &lt;code&gt;verify_status&lt;/code&gt; validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every answer is synthesized from the local JSON store; the assistant is not a generative AI that hallucinates. It’s a deterministic retrieval engine that guarantees factual accuracy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Passion in Every Component
&lt;/h3&gt;

&lt;p&gt;This wasn’t a casual build. The extension reflects a deep obsession with protocol‑level security research. I manually disassembled the &lt;code&gt;vdaemon&lt;/code&gt; logic, traced the memory writes, and translated the binary analysis into interactive UI elements. The NLP engine itself was hand‑crafted - no TensorFlow, no external models - because I wanted the intellectual satisfaction of building a pure, dependency‑free reasoning core that respects the air‑gap.&lt;/p&gt;

&lt;p&gt;The project is a love letter to the art of defense: taking an attacker’s blueprint and forging a shield that educates and protects simultaneously. The World Cup of cybersecurity is happening every day in data centers and SOCs, and this tool is my seat in the stands, cheering for the blue team.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>From Zero to Manifest V3: How GitHub Copilot Helped Me Finish an RSC Vulnerability Detector for CVE‑2025‑55182</title>
      <dc:creator>Anuththara Wickramasekara </dc:creator>
      <pubDate>Sun, 31 May 2026 14:20:47 +0000</pubDate>
      <link>https://dev.to/anuththara2007w/from-zero-to-manifest-v3-how-github-copilot-helped-me-finish-an-rsc-vulnerability-detector-for-22pp</link>
      <guid>https://dev.to/anuththara2007w/from-zero-to-manifest-v3-how-github-copilot-helped-me-finish-an-rsc-vulnerability-detector-for-22pp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  From Zero to Manifest V3: How GitHub Copilot Helped Me Finish an RSC Vulnerability Detector for CVE-2025-55182
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;RSC Fingerprint Detector&lt;/strong&gt; - a Manifest V3 Chrome extension that performs &lt;strong&gt;passive and active reconnaissance&lt;/strong&gt; of React Server Components (RSC) and the &lt;strong&gt;React2Shell&lt;/strong&gt; vulnerability class (CVE-2025-55182, CVE-2025-66478). These vulnerabilities stem from unsafe deserialisation of the React Flight protocol, enabling unauthenticated remote code execution on any Next.js App Router endpoint.&lt;/p&gt;

&lt;p&gt;The extension implements a &lt;strong&gt;dual-phase detection pipeline&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Passive fingerprinting&lt;/strong&gt;: Heuristic analysis of the global namespace (&lt;code&gt;window.__next_f&lt;/code&gt;), script asset introspection (&lt;code&gt;react-server-dom-webpack&lt;/code&gt;), DOM attribute scanning (&lt;code&gt;data-rsc&lt;/code&gt;, &lt;code&gt;data-reactroot&lt;/code&gt;), and response header inspection (&lt;code&gt;Content-Type: text/x-component&lt;/code&gt;, &lt;code&gt;Vary: RSC&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active probing&lt;/strong&gt;: A cross-origin fetch with a custom &lt;code&gt;X-RSC-Probe&lt;/code&gt; header, followed by content-type entropy analysis and Flight protocol signature extraction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The original project was a 50-line ephemeral script that relied on manual DevTools injection. The finished version is a &lt;strong&gt;fully isolated, event-driven Chrome extension&lt;/strong&gt; with a declarative ruleset, persistent IndexedDB storage, and a reactive UI - all built with GitHub Copilot as the primary force multiplier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Repository&lt;/strong&gt;: &lt;a href="https://github.com/anuththara2007-W/CVE-2025-55182-Exploit-extension" rel="noopener noreferrer"&gt;https://github.com/anuththara2007-W/CVE-2025-55182-Exploit-extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual proof of completion arc&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Before (abandoned console script)&lt;/th&gt;
&lt;th&gt;After (production extension)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;Only raw console output, no UI, single detection vector&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Modern popup, status badges, active probe results, CVE mapping&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Before screenshot&lt;/strong&gt;: &lt;a href="https://github.com/anuththara2007-W/CVE-2025-55182-Exploit-extension/raw/main/images/img1.png" rel="noopener noreferrer"&gt;https://github.com/anuththara2007-W/CVE-2025-55182-Exploit-extension/raw/main/images/img1.png&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After screenshot&lt;/strong&gt;: &lt;a href="https://i.postimg.cc/wT2vX4xH/Annotation-2026-05-31-184616.png" rel="noopener noreferrer"&gt;https://i.postimg.cc/wT2vX4xH/Annotation-2026-05-31-184616.png&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;December 2025 - The CVE Disclosure&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
When CVE-2025-55182 was publicly disclosed (CVSS 10.0, unauthenticated RCE via Flight protocol deserialisation), I wrote a minimal Python script that checked for &lt;code&gt;window.__next_f&lt;/code&gt;. It worked, but it was a &lt;strong&gt;single-vector, synchronous, non-persistent&lt;/strong&gt; tool. Each scan required manual injection of the script into the target page's console. The script was abandoned after 48 hours because the effort to productionise it (manifest, permission handling, cross-context messaging, error recovery) exceeded the perceived value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;May 2026 - The Revival&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The Finish-Up-A-Thon provided a forcing function. Using GitHub Copilot as a &lt;strong&gt;context-aware pair programmer&lt;/strong&gt;, I transformed the script into a production extension with the following architectural improvements:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Original (Dec 2025)&lt;/th&gt;
&lt;th&gt;Finished (May 2026)&lt;/th&gt;
&lt;th&gt;Technical Depth&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Detection vectors&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1 (&lt;code&gt;window.__next_f&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;4 (globals, script asset fingerprinting, DOM attributes, response headers)&lt;/td&gt;
&lt;td&gt;Multi-heuristic fusion reduces false negatives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active fingerprinting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;fetch&lt;/code&gt; with &lt;code&gt;X-RSC-Probe&lt;/code&gt;, content-type parsing, Flight protocol signature detection&lt;/td&gt;
&lt;td&gt;AbortController timeout, CORS-aware, idempotent retry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Execution context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Console injection&lt;/td&gt;
&lt;td&gt;Isolated content script + background service worker&lt;/td&gt;
&lt;td&gt;Cross-context message passing with &lt;code&gt;chrome.runtime.sendMessage&lt;/code&gt; and mandatory &lt;code&gt;return true&lt;/code&gt; for async response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;State persistence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None (ephemeral)&lt;/td&gt;
&lt;td&gt;IndexedDB schema (object stores: &lt;code&gt;detections&lt;/code&gt;, &lt;code&gt;flights&lt;/code&gt;) with ACID transactions&lt;/td&gt;
&lt;td&gt;Schema versioning, index creation (&lt;code&gt;timestamp&lt;/code&gt;), FIFO eviction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UI/UX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Raw terminal&lt;/td&gt;
&lt;td&gt;Web-based popup with reactive event handlers and status badges&lt;/td&gt;
&lt;td&gt;CSS Grid/flex, card design, shadow DOM isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Distribution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local script&lt;/td&gt;
&lt;td&gt;Unpacked Chrome extension with &lt;code&gt;manifest.json&lt;/code&gt; (MV3)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;declarativeNetRequest&lt;/code&gt; permission, &lt;code&gt;host_permissions&lt;/code&gt; for &lt;code&gt;&amp;lt;all_urls&amp;gt;&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;strong&gt;completion arc&lt;/strong&gt; is not just feature addition - it is a migration from an &lt;strong&gt;ad-hoc, single-tenant script&lt;/strong&gt; to a &lt;strong&gt;reusable, multi-tenant security utility&lt;/strong&gt; that respects Chrome's extension security model (CSP, isolated worlds, least privilege).&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot - Technical Breakdown
&lt;/h2&gt;

&lt;p&gt;Without Copilot, this extension would still be a forgotten folder. Copilot acted as a &lt;strong&gt;semi-autonomous engineering partner&lt;/strong&gt;, handling the following high-complexity tasks:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technical Area&lt;/th&gt;
&lt;th&gt;Specific Copilot Contribution&lt;/th&gt;
&lt;th&gt;Why a Human (or I) Would Have Struggled&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Manifest V3 permissions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Generated the entire &lt;code&gt;manifest.json&lt;/code&gt; with &lt;code&gt;activeTab&lt;/code&gt;, &lt;code&gt;scripting&lt;/code&gt;, &lt;code&gt;declarativeNetRequest&lt;/code&gt;, &lt;code&gt;host_permissions&lt;/code&gt;, and the correct &lt;code&gt;service_worker&lt;/code&gt; registration&lt;/td&gt;
&lt;td&gt;MV3 deprecated background pages. Copilot knew the new schema and avoided the &lt;code&gt;persistent&lt;/code&gt; flag error.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cross-context message passing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wrote &lt;code&gt;chrome.runtime.onMessage&lt;/code&gt; listeners with the required &lt;code&gt;return true&lt;/code&gt; to keep the message channel open for asynchronous &lt;code&gt;sendResponse&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;I would have forgotten &lt;code&gt;return true&lt;/code&gt;, causing silent failures in the popup.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IndexedDB schema design&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Produced the &lt;code&gt;initDB&lt;/code&gt; function with &lt;code&gt;onupgradeneeded&lt;/code&gt; handler, object store creation, and index definitions (&lt;code&gt;timestamp&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;I had never written IndexedDB without a wrapper. Copilot generated transaction boundaries and error recovery.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Declarative DOM scanning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Suggested &lt;code&gt;document.querySelectorAll('[data-rsc], [data-reactroot], #__next')&lt;/code&gt; and the fallback to &lt;code&gt;window.__next_f&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;I did not know all RSC markers. Copilot extracted them from its training corpus of React codebases.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active probe fetch with AbortController&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Generated a &lt;code&gt;fetch&lt;/code&gt; with a 2-second timeout, custom headers, and response header extraction, including CORS-aware error handling&lt;/td&gt;
&lt;td&gt;Writing a timeout with &lt;code&gt;AbortController&lt;/code&gt; and cleaning up the abort listener is error-prone. Copilot did it correctly.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Popup UI reactivity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built the entire HTML/CSS card layout, plus the &lt;code&gt;addEventListener&lt;/code&gt; wiring and state synchronisation with &lt;code&gt;chrome.storage.local&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;I am not a frontend developer. Copilot produced a modern, accessible UI that works across Chrome versions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Error recovery and idempotency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Added &lt;code&gt;try/catch&lt;/code&gt; blocks to every async operation and implemented retry logic for transient IndexedDB lock errors&lt;/td&gt;
&lt;td&gt;Without this, the extension would freeze on first error. Copilot made it resilient.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The single most impressive Copilot moment&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
When I started typing &lt;code&gt;// Capture RSC responses via webRequest&lt;/code&gt;, Copilot auto-completed the entire &lt;code&gt;chrome.webRequest.onHeadersReceived&lt;/code&gt; listener, including the filtering condition (&lt;code&gt;details.responseHeaders.some(h =&amp;gt; h.name.toLowerCase() === 'content-type' &amp;amp;&amp;amp; h.value.includes('text/x-component'))&lt;/code&gt;) and the asynchronous &lt;code&gt;saveFlight&lt;/code&gt; call. It even added a comment explaining that MV3 requires &lt;code&gt;'responseHeaders'&lt;/code&gt; in the extraInfoSpec array. That single completion saved me 90 minutes of reading Chrome's migration guide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copilot did not write the whole extension.&lt;/strong&gt; I architected the detection heuristics, chose the CVE-2025-55182 mapping, and performed manual testing on live targets (e.g., &lt;code&gt;nextjs.org&lt;/code&gt;, &lt;code&gt;vercel.com&lt;/code&gt;, local Next.js sandboxes). But Copilot handled the &lt;strong&gt;boilerplate, the edge cases, and the Chrome-specific quirks&lt;/strong&gt; - turning a 50-line script into a 500-line production extension in two evenings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Deep Dive - How Copilot Solved Specific Problems
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Asynchronous idempotency in message handlers&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Copilot correctly added &lt;code&gt;return true&lt;/code&gt; inside &lt;code&gt;chrome.runtime.onMessage&lt;/code&gt; to indicate that the response will be sent asynchronously. Without this, the popup would time out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IndexedDB versioning and schema migration&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Copilot generated the &lt;code&gt;onupgradeneeded&lt;/code&gt; block with conditional object store creation, preventing &lt;code&gt;ConstraintError&lt;/code&gt; on subsequent extension updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Closure serialisation for injected scripts&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
When injecting the detection function via &lt;code&gt;chrome.scripting.executeScript&lt;/code&gt;, Copilot used &lt;code&gt;func&lt;/code&gt; instead of &lt;code&gt;code&lt;/code&gt;, avoiding CSP violations and maintaining lexical scope.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DeclarativeNetRequest vs WebRequest&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Copilot recommended using &lt;code&gt;declarativeNetRequest&lt;/code&gt; for passive header inspection, which is more performant and aligns with MV3's shift away from blocking &lt;code&gt;webRequest&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Heuristic entropy reduction&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Copilot suggested combining multiple low-certainty signals (e.g., &lt;code&gt;data-rsc&lt;/code&gt; + &lt;code&gt;#__next&lt;/code&gt; + &lt;code&gt;__next_f&lt;/code&gt;) into a confidence score, reducing false positives.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Without Copilot, this extension would not exist. With Copilot, it is a robust, field-ready security tool.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Team submission&lt;/strong&gt;: Solo developer - Anuththara Wickramasekara&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Disclaimer&lt;/strong&gt;: This tool is intended for authorised security testing and educational purposes only. Use only on systems you own or have explicit permission to test. The author assumes no liability for misuse.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
  </channel>
</rss>
