<?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: Srichinmai Sripathi</title>
    <description>The latest articles on DEV Community by Srichinmai Sripathi (@chinmai_sri).</description>
    <link>https://dev.to/chinmai_sri</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%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png</url>
      <title>DEV Community: Srichinmai Sripathi</title>
      <link>https://dev.to/chinmai_sri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chinmai_sri"/>
    <language>en</language>
    <item>
      <title>something i learned and new in the cyber attacks</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Mon, 03 Aug 2026 22:26:17 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/something-i-learned-and-new-in-the-cyber-attacks-41e1</link>
      <guid>https://dev.to/chinmai_sri/something-i-learned-and-new-in-the-cyber-attacks-41e1</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" class="crayons-story__hidden-navigation-link"&gt;Why In-Browser Protection Fails: Agentless Security vs. Instrumented Script Defenses&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/chinmai_sri" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" alt="chinmai_sri profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/chinmai_sri" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Srichinmai Sripathi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Srichinmai Sripathi
                
              
              &lt;div id="story-author-preview-content-4283805" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/chinmai_sri" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Srichinmai Sripathi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 31&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" id="article-link-4283805"&gt;
          Why In-Browser Protection Fails: Agentless Security vs. Instrumented Script Defenses
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cybersecurity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cybersecurity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Mon, 03 Aug 2026 22:25:13 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/-3din</link>
      <guid>https://dev.to/chinmai_sri/-3din</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" class="crayons-story__hidden-navigation-link"&gt;Why In-Browser Protection Fails: Agentless Security vs. Instrumented Script Defenses&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/chinmai_sri" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" alt="chinmai_sri profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/chinmai_sri" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Srichinmai Sripathi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Srichinmai Sripathi
                
              
              &lt;div id="story-author-preview-content-4283805" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/chinmai_sri" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Srichinmai Sripathi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 31&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" id="article-link-4283805"&gt;
          Why In-Browser Protection Fails: Agentless Security vs. Instrumented Script Defenses
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cybersecurity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cybersecurity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Why In-Browser Protection Fails: Agentless Security vs. Instrumented Script Defenses</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Fri, 31 Jul 2026 23:06:34 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n</link>
      <guid>https://dev.to/chinmai_sri/why-in-browser-protection-fails-agentless-security-vs-instrumented-script-defenses-300n</guid>
      <description>&lt;p&gt;A deep-dive into why instrumented client-side security tools create single-point-of-failure supply chain risks, analyzing the July 2026 JScrambler compromise, BuiltWith competitive market metrics, and empirical agentless scanner benchmarks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Key Takeaway&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;Requiring third-party security vendors to inject code into your build pipelines or web browser runtimes turns those vendors into prime supply chain targets. The recent compromise of the JScrambler npm package ecosystem underscores why web security must shift to a non-invasive, agentless auditing model.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The July 2026 JScrambler Supply Chain Incident
&lt;/h2&gt;

&lt;p&gt;On July 11, 2026, threat actors executed a high-impact software supply chain attack against JScrambler, a popular provider of client-side JavaScript protection and obfuscation tooling.&lt;/p&gt;

&lt;p&gt;By obtaining compromised npm publishing credentials, the attackers uploaded tampered releases directly to the official npm registry. The malicious release window spanned core package versions jscrambler &lt;strong&gt;(8.14.0, 8.16.0, 8.17.0, 8.18.0, 8.20.0)&lt;/strong&gt; along with widely used build plugins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;jscrambler-webpack-plugin (8.6.2)&lt;/li&gt;
&lt;li&gt;jscrambler-metro-plugin (9.0.2)&lt;/li&gt;
&lt;li&gt;gulp-jscrambler (8.6.2)&lt;/li&gt;
&lt;li&gt;grunt-jscrambler (8.5.2)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Anatomy of the Payload
&lt;/h2&gt;

&lt;p&gt;The tampered packages contained a multi-stage native dropper configured to execute automatically during npm install or build phase step execution. Once triggered on developer workstations or CI/CD runner instances (across Windows, macOS, and Linux), the infostealer payload systematically harvested:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud &amp;amp; Infrastructure Credentials&lt;/strong&gt;: Secret keys, tokens, and config files for GCP, AWS, and Azure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer &amp;amp; Session Tokens&lt;/strong&gt;: Session cookies, Git credentials, and browser storage tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Development Tool Configurations&lt;/strong&gt;: API keys and environment variables used by local coding agents and developer environments.&lt;/p&gt;

&lt;p&gt;Because build plugins execute with full access to environment variables and system processes, every organization integrating JScrambler into their build chain immediately exposed their secrets and downstream environments to compromise.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Architectural Fallacy of Instrumented Security
&lt;/h2&gt;

&lt;p&gt;The JScrambler incident exposes a fundamental security paradox in modern application security: &lt;strong&gt;Invasive security instrumentation increases your supply chain attack surface.&lt;/strong&gt;&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%2Faxgj414fg6dp9ei32tst.jpg" 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%2Faxgj414fg6dp9ei32tst.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Instrumented Model (High Risk, Invasive)
&lt;/h2&gt;

&lt;p&gt;Traditional client-side security vendors insist that protection must happen inside the client’s build system or browser DOM. This approach forces engineering teams to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add heavy build-time dependencies (npm build plugins, Webpack loaders).&lt;/li&gt;
&lt;li&gt;Inject third-party JavaScript into customer-facing checkout pages.&lt;/li&gt;
&lt;li&gt;Grant high-privileged execution rights to vendor scripts on developer machines and in customer browsers.&lt;/li&gt;
&lt;li&gt;When a vendor operating under this model suffers a credential leak or repository breach,** their compromise instantly propagates downstream to every enterprise customer trusting their build chain.**&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Agentless Model (PCI Oasis: Zero-Trust, URL-Only)
&lt;/h2&gt;

&lt;p&gt;In contrast, PCI Oasis operates on an agentless, zero-trust audit model.&lt;/p&gt;

&lt;p&gt;Rather than embedding code into your build pipeline or browser DOM, PCI Oasis scans your web applications externally by consuming only public HTTPS URLs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zero npm Dependencies: No build plugins, zero code modifications, and no secrets required in CI/CD environments.&lt;/li&gt;
&lt;li&gt;Zero Supply Chain Risk: Even in the event of an adversary targeting our systems, your build pipeline and customer runtimes remain completely isolated and untouchable.&lt;/li&gt;
&lt;li&gt;Continuous Edge Scanning: Evaluates DOM integrity, script behavior, network connections, and e-skimming vectors from an unprivileged, external observer perspective.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Competitive Market Intelligence (BuiltWith Analysis)
&lt;/h2&gt;

&lt;p&gt;Using BuiltWith market data and competitive web-crawling telemetry, our team analyzed the global deployment footprint of JScrambler across enterprise web applications.&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%2Fj3i3x7d627u37ns63sxt.jpg" 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%2Fj3i3x7d627u37ns63sxt.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Market Findings (~560 Monitored Enterprise Deployments):
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;560+ High-Traffic Enterprise Sites&lt;/strong&gt; currently bundle JScrambler scripts or build plugins into their web applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;74% of Monitored Sites&lt;/strong&gt; deploy JScrambler specifically in payment gateways and checkout flows to satisfy PCI DSS client-side script compliance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply Chain Exposure Rate:&lt;/strong&gt; Approximately 38% of those organizations utilized automated npm dependency updates (^8.14.0) in their CI/CD pipelines, making them instantly vulnerable during the July 11 attack window.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exposing market-wide technology fingerprints similar to the BuiltWith intelligence model—demonstrates how vulnerable third-party script configurations propagate silently across key financial, retail, and healthcare portals.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Scanner Benchmark: Agentless Performance Across 5 Target Sites
&lt;/h2&gt;

&lt;p&gt;To validate whether an agentless approach can match or exceed the detection capabilities of invasive client-side scripts, we ran the PCI Oasis Agentless Scanner against 5 live enterprise target sites currently deploying client-side script protections.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmark Test Setup
&lt;/h2&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%2Fuunwdk18lbdg1t4q8xi4.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%2Fuunwdk18lbdg1t4q8xi4.png" alt=" " width="728" height="734"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Benchmark Takeaway
&lt;/h2&gt;

&lt;p&gt;Without installing a single line of code, modifying any build script, or touching customer source code, the PCI Oasis Agentless Scanner successfully identified 100% of DOM modifications, unmanaged third-party scripts, and telemetry anomalies across all 5 test sites.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Aligning with PCI DSS 4.0 Requirements
&lt;/h2&gt;

&lt;p&gt;With the release of PCI DSS 4.0, merchants and payment processors must satisfy strict requirements around client-side script management:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirement 6.4.3:&lt;/strong&gt; Authorize and manage all client-side JavaScript executing in cardholder data environments (CDE).&lt;br&gt;
&lt;strong&gt;Requirement 11.6.1:&lt;/strong&gt; Deploy a change and tamper-detection mechanism to alert on unauthorized modifications to HTTP headers and payment page contents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Agentless Compliance Wins&lt;/strong&gt;&lt;br&gt;
Attempting to fulfill Req 6.4.3 and 11.6.1 by adding more third-party scripts into your checkout flow creates a dangerous circular dependency. If the security script itself is compromised, your tamper-detection is bypassed.&lt;/p&gt;

&lt;p&gt;PCI Oasis provides independent, third-party validation that meets PCI DSS 4.0 standards while keeping your CDE isolated from third-party supply chain vulnerabilities.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion &amp;amp; Action Items
&lt;/h2&gt;

&lt;p&gt;The July 2026 JScrambler attack is a stark reminder: &lt;strong&gt;Security tooling should never be a&lt;/strong&gt; &lt;strong&gt;threat vector&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended Immediate Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit Your npm Dependencies&lt;/strong&gt;: Check build manifests for jscrambler versions 8.14.0 through 8.20.0 and rotate any cloud credentials present on affected build environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decouple Security from Runtime:&lt;/strong&gt; Shift client-side auditing to an agentless, URL-driven external model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scan Your Domain Today:&lt;/strong&gt; Run a zero-footprint PCI Oasis scan to establish a clean, non-invasive baseline for your client-side assets.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Interested in assessing your site’s client-side script risk without installing vendor scripts? Contact the PCI Oasis research team or explore our agentless scanner lab.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>security</category>
      <category>architecture</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>How We Bypassed OTP Rate Limits via IP Rotation on a Major Streaming Platform</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Fri, 22 May 2026 19:59:07 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/how-we-bypassed-otp-rate-limits-via-ip-rotation-on-a-major-streaming-platform-32oh</link>
      <guid>https://dev.to/chinmai_sri/how-we-bypassed-otp-rate-limits-via-ip-rotation-on-a-major-streaming-platform-32oh</guid>
      <description>&lt;p&gt;At our engineering team, we have been building an autonomous browser agent that navigates the web to test checkout and subscription flows. Recently, we pointed our test runner at a major subscription video streaming platform to analyze how it handled user authentication.&lt;/p&gt;

&lt;p&gt;What started as a routine crawler testing run ended in the discovery of two significant API vulnerabilities: a High-severity Account Takeover (ATO) via OTP brute forcing and a Medium-severity SMS Flooding/DoS vulnerability.&lt;/p&gt;

&lt;p&gt;Here is the step-by-step breakdown of how we intercepted the auth flow, reverse-engineered the rate-limiting rules, and proved that a simple IP rotation completely bypasses the platform's defenses.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Intercepting the Auth Flow
&lt;/h2&gt;

&lt;p&gt;Because the service is a subscription streaming platform, user registration is required before arriving at any checkout screen. To understand how they authorize users, we used a Playwright network interception script to capture traffic during a standard login attempt.&lt;/p&gt;

&lt;p&gt;We uncovered a 4-step API chain pointing to their authentication service:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Guest Registration: POST /api/v1/user/guest/register returns an anonymous session ID.&lt;/li&gt;
&lt;li&gt;OTP Generation: POST /api/v1/user/auth/generateOTP triggers a 4-digit OTP code sent to the mobile number.&lt;/li&gt;
&lt;li&gt;OTP Validation: POST /api/v1/user/auth/validateOTP validates the code.&lt;/li&gt;
&lt;li&gt;Subscription Status: POST /api/v1/subscription/current pulls the active subscription details.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Reverse-Engineering the Rate Limiter
&lt;/h2&gt;

&lt;p&gt;Once we mapped the API, we wrote a script to stress-test the rate limits on both the OTP generation and validation endpoints. We ran three scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scenario A: Brute-force wrong OTP codes to measure the validation lockout threshold.&lt;/li&gt;
&lt;li&gt;Scenario B: Spam the resend OTP endpoint to measure the generation lockout threshold.&lt;/li&gt;
&lt;li&gt;Scenario C (Identity Bypass): Rotate the session identifiers (deviceId and session tokens) while keeping the same source IP to see if the counter resets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Results:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validation Limit: The API allowed 5 incorrect attempts before returning an HTTP 429 API rate limit exceeded message with a variable retry-after cooldown (between 10s to 20s).&lt;/li&gt;
&lt;li&gt;Generation Limit: The API allowed 5 SMS requests before lockout, but with a tiny 3-second cooldown.&lt;/li&gt;
&lt;li&gt;Identity Bypass: Rotating session-specific device IDs did not bypass the limit. The API gateway successfully tracked requests by the client's source IP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But this IP-only protection introduced a massive vulnerability.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Vulnerability: Account Takeover (ATO)
&lt;/h2&gt;

&lt;p&gt;Because the rate limit is tied solely to the client IP address and not to the target phone number, the system is highly vulnerable to distributed brute-forcing.&lt;/p&gt;

&lt;p&gt;The platform uses a 4-digit OTP (only 10,000 possible combinations, from 0000 to 9999). If a malicious actor wants to compromise a specific phone number, they don't need to bypass the IP rate limit—they just need to rotate their IP.&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.amazonaws.com%2Fuploads%2Farticles%2F8t1nnqkuk31ggkqv0af6.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2F8t1nnqkuk31ggkqv0af6.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Math:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lockout rate: 5 attempts per IP before a temporary block.&lt;/li&gt;
&lt;li&gt;Evasion: By rotating requests through a residential proxy pool of 100 IPs, an attacker can execute 500 attempts every 20 seconds.&lt;/li&gt;
&lt;li&gt;Time to Compromise: $$\frac{10,000 \text{ combinations}}{1,500 \text{ attempts/minute}} \approx 6.6 \text{ minutes}$$&lt;/li&gt;
&lt;li&gt;Cost: Extremely low cost for residential proxy bandwidth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Within 7 minutes, an attacker can exhaust the entire keyspace, validate the correct OTP, and gain a valid authentication token for any registered phone number.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. SMS Flooding &amp;amp; Denial of Service
&lt;/h2&gt;

&lt;p&gt;Similarly, the 3-second cooldown on the /generateOTP endpoint is trivial to exploit. By routing requests through a rotating proxy pool, an attacker can bypass the 3-second cooldown and flood a victim's phone with thousands of SMS messages per minute.&lt;/p&gt;

&lt;p&gt;$$\text{5 SMS} \times \frac{60\text{s}}{3\text{s}} = 100\text{SMS/min per IP}$$ With 10 proxy IPs, that is 1,000 SMS messages sent to a single victim every minute, resulting in severe harassment, carrier costs, and temporary denial of mobile service.&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.amazonaws.com%2Fuploads%2Farticles%2Fw6etbnrgsi0ora0h0fkn.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fw6etbnrgsi0ora0h0fkn.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Responsible Disclosure &amp;amp; Recommendations
&lt;/h2&gt;

&lt;p&gt;_All testing was strictly restricted to developer-owned SIM cards/phone numbers, and no live user accounts were targeted. We have responsibly disclosed these findings to the platform vendor.&lt;/p&gt;

&lt;p&gt;To fix these vulnerabilities, we recommend implementing the following architectural remediations:_&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Implement Account Lockout: Tie the rate limiter to the phone number (identity) instead of just the IP address. Lock the phone number out of the authentication flow after 5 failed validation attempts.&lt;/li&gt;
&lt;li&gt;Increase Entropy: Shift from a 4-digit OTP (10,000 combinations) to a 6-digit OTP (1,000,000 combinations). This increases the search space by a factor of 100, rendering brute-forcing through proxy pools completely impractical.&lt;/li&gt;
&lt;li&gt;Strict Token TTLs: Shorten the OTP validity window to 2 minutes.&lt;/li&gt;
&lt;li&gt;CAPTCHA Gateways: Introduce a reCAPTCHA or Turnstile verification challenge after the first OTP resend attempt on the registration screen.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>agents</category>
      <category>startup</category>
    </item>
    <item>
      <title>hi</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Thu, 14 May 2026 05:02:33 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/hi-5gci</link>
      <guid>https://dev.to/chinmai_sri/hi-5gci</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" class="crayons-story__hidden-navigation-link"&gt;I Built an AI That Has to Lie to the Internet to Do Its Job&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/chinmai_sri" class="crayons-avatar  crayons-avatar--l  "&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" alt="chinmai_sri profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/chinmai_sri" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Srichinmai Sripathi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Srichinmai Sripathi
                
              
              &lt;div id="story-author-preview-content-3665779" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/chinmai_sri" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Srichinmai Sripathi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" id="article-link-3665779"&gt;
          I Built an AI That Has to Lie to the Internet to Do Its Job
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Thu, 14 May 2026 05:02:24 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/-8jh</link>
      <guid>https://dev.to/chinmai_sri/-8jh</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" class="crayons-story__hidden-navigation-link"&gt;I Built an AI That Has to Lie to the Internet to Do Its Job&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/chinmai_sri" class="crayons-avatar  crayons-avatar--l  "&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" alt="chinmai_sri profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/chinmai_sri" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Srichinmai Sripathi
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Srichinmai Sripathi
                
              
              &lt;div id="story-author-preview-content-3665779" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/chinmai_sri" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3927912%2Ffedb15b2-df07-4267-8e3f-022a87e8a0ce.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Srichinmai Sripathi&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" id="article-link-3665779"&gt;
          I Built an AI That Has to Lie to the Internet to Do Its Job
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>I Built an AI That Has to Lie to the Internet to Do Its Job</title>
      <dc:creator>Srichinmai Sripathi</dc:creator>
      <pubDate>Wed, 13 May 2026 19:51:26 +0000</pubDate>
      <link>https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj</link>
      <guid>https://dev.to/chinmai_sri/i-built-an-ai-that-has-to-lie-to-the-internet-to-do-its-job-7pj</guid>
      <description>&lt;p&gt;At PCI Oasis Inc ,  I was handed a task that sounded simple on paper:&lt;/p&gt;

&lt;p&gt;"Help build a crawler that navigates e-commerce websites from the homepage to the checkout page."&lt;/p&gt;

&lt;p&gt;Easy enough, right? Open a browser, click some buttons, reach checkout. Done.&lt;/p&gt;

&lt;p&gt;Except the internet doesn't want you to do that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Every major e-commerce platform, your favourite fashion brands, electronics stores, and sneaker sites run some form of bot detection. Cloudflare. DataDome. PerimeterX. Akamai. Kasada.&lt;/p&gt;

&lt;p&gt;These systems are sophisticated. They don't just check if you're sending the right HTTP headers. They watch how you behave in the browser.&lt;/p&gt;

&lt;p&gt;They measure things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does your mouse move in a straight line?&lt;/li&gt;
&lt;li&gt;Do you type at a perfectly constant speed?&lt;/li&gt;
&lt;li&gt;Does your browser have a Canvas fingerprint they've seen a thousand times before?&lt;/li&gt;
&lt;li&gt;Is your WebGL renderer showing signs of a headless cloud VM?&lt;/li&gt;
&lt;li&gt;If anything looks off and I mean anything you get a CAPTCHA, a silent redirect, or just an empty page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our crawler had to get through all of that. Autonomously. On any site. Without a human in the loop.&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.amazonaws.com%2Fuploads%2Farticles%2Fpz25ctot1ayjjbkvqsje.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fpz25ctot1ayjjbkvqsje.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fingerprint, Meet Counterfeit
&lt;/h2&gt;

&lt;p&gt;Here's what I didn't expect: your browser has a fingerprint, and headless browsers have a very obvious one.&lt;/p&gt;

&lt;p&gt;When Chrome runs in headless mode on a cloud server, several things give it away. &lt;br&gt;
The fix? Patch every one of these before the page even loads.&lt;/p&gt;

&lt;p&gt;But that's just the beginning. The really interesting stuff is the Canvas fingerprint.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Your Browser's Art Class Betrays You
&lt;/h2&gt;

&lt;p&gt;Here's something wild: websites can tell a lot about your browser by asking it to draw something.&lt;/p&gt;

&lt;p&gt;The HTML5 Canvas API lets JavaScript render graphics. But the exact pixel output of that rendering varies slightly between real hardware, operating systems, and GPU drivers. Headless Chrome on a cloud VM produces a consistent, identifiable hash — because it always runs on the same virtual GPU.&lt;/p&gt;

&lt;p&gt;Bot detection systems have a database of these hashes. If yours matches a known headless browser fingerprint blocked.&lt;/p&gt;

&lt;p&gt;The solution? Add noise to the Canvas output. Tiny, imperceptible random variations that make each session produce a unique hash.&lt;/p&gt;

&lt;p&gt;Same goes for WebGL — the GPU fingerprint. Headless Chrome on GCP returns "Google SwiftShader" as the renderer. That's a dead giveaway.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Mouse Problem
&lt;/h2&gt;

&lt;p&gt;This one is my favourite.&lt;/p&gt;

&lt;p&gt;Humans don't move their mouse in straight lines. Watch yourself right now your cursor curves, accelerates, decelerates, overshoots slightly and corrects. It's a beautiful, messy, organic path.&lt;/p&gt;

&lt;p&gt;Bots move in straight lines. Or they teleport. Both are instant flags.&lt;/p&gt;

&lt;p&gt;The solution: Bézier curve mouse simulation.&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.amazonaws.com%2Fuploads%2Farticles%2Fenfiitvw05y3fj0fho5k.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fenfiitvw05y3fj0fho5k.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Bézier curve is a mathematical curve defined by control points. By generating random control points between the current cursor position and the target, you get a realistic, curved path with natural acceleration and deceleration.&lt;/p&gt;

&lt;p&gt;Typing works the same way. Real people don't type at exactly 120ms per keystroke. They have rhythm, occasional hesitation, and natural variance. Gaussian-distributed delays simulate that.&lt;/p&gt;
&lt;h2&gt;
  
  
  But Wait!!  What About the AI Part?
&lt;/h2&gt;

&lt;p&gt;Here's the thing I learned that I didn't expect going in:&lt;/p&gt;

&lt;p&gt;The hardest part of building an AI-powered crawler isn't the AI.&lt;/p&gt;

&lt;p&gt;It's getting the browser to a state where the AI's decisions can actually execute.&lt;/p&gt;

&lt;p&gt;Once you've dealt with fingerprinting, WAFs, and cookie consent banners the AI's job of "figure out how to navigate this checkout" is almost the easy part. The browser is finally in a clean, unblocked state where clicks actually work.&lt;/p&gt;

&lt;p&gt;I can't share everything about how the AI navigation works that's the core product. But I'll say this: the most interesting design decision was figuring out when NOT to use AI.&lt;/p&gt;

&lt;p&gt;Calling an LLM for every single navigation step is slow and expensive. The real insight was building a system that handles ~60% of decisions with zero AI at all, pure pattern matching and saves the AI for the genuinely hard cases.&lt;/p&gt;

&lt;p&gt;That's the architectural principle I'm taking with me: AI is most powerful when it's used precisely, not constantly.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Took Away
&lt;/h2&gt;

&lt;p&gt;The impressive part isn't the model. It's everything around the model the infrastructure that gets it into a position where it can actually do something useful.&lt;/p&gt;

&lt;p&gt;The browser stealth work, the WAF bypass strategies, the Bézier mouse simulation none of that involves a single API call to an LLM. But without it, the AI is completely useless.&lt;/p&gt;

&lt;p&gt;That gap between "AI that works in demos" and "AI that works in production on the real internet" is enormous. And crossing it is mostly an engineering problem, not an AI problem.&lt;/p&gt;

&lt;p&gt;If this was interesting to you, the company I worked with PCI Oasis builds security tools for e-commerce payment protection. Their e-skimming labs (the other project I worked on) are open to the public at labs.pcioasis.com if you want to explore real attack simulations in a safe environment. &lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.pcioasis.com/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;pcioasis.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;And if you have questions about any of the techniques above, drop them in the comments. Happy to dig in.&lt;/p&gt;

&lt;p&gt;Thanks for reading my article :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>security</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
