
<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>Sat, 04 Apr 2026 17:33:44 GMT</lastBuildDate>
        <item>
            <title><![CDATA[How Cloudflare is staying ahead of the AMD vulnerability known as “Zenbleed”]]></title>
            <link>https://blog.cloudflare.com/zenbleed-vulnerability/</link>
            <pubDate>Tue, 25 Jul 2023 00:47:12 GMT</pubDate>
            <description><![CDATA[ The Google Information Security Team revealed a new flaw in AMD's Zen 2 processors in a blog post today. The 'Zenbleed' flaw affects the entire Zen 2 product stack, from AMD's EPYC data center processors to the Ryzen 3000 CPUs, and can be exploited to steal sensitive data processed in the CPU,  ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3AjDL54Fb9R0RTh36P3ERj/ee33a666223b9455aa23138de04f4a40/Screenshot-2023-07-24-at-4.17.34-PM.png" />
            
            </figure><p>The Google Information Security Team revealed a new flaw in AMD's Zen 2 processors in a <a href="https://web.archive.org/web/20230724143835/https://lock.cmpxchg8b.com/zenbleed.html">blog post</a> today. The 'Zenbleed' flaw affects the entire Zen 2 product stack, from AMD's EPYC data center processors to the Ryzen 3000 CPUs, and can be exploited to steal sensitive data processed in the CPU, including encryption keys and login credentials. Currently the attack can only be executed by an attacker with an ability to execute native code on the affected machine. While there might be a possibility to execute this attack via the browser on the remote machine it hasn’t been yet demonstrated.</p><p>Cloudflare’s network includes servers using AMD’s Zen line of CPUs. We are patching our entire fleet of potentially impacted servers with AMD’s microcode to mitigate this potential vulnerability. While our network will soon be protected, we will continue to monitor for any signs of attempted exploitation of the vulnerability and will report on any attempts we discover in the wild. To better understand the Zenbleed vulnerability, read on.</p>
    <div>
      <h3>Background</h3>
      <a href="#background">
        
      </a>
    </div>
    <p>Understanding how a CPU executes programs is crucial to comprehending the attack's workings. The CPU works with an arithmetic processing unit called the ALU. The ALU is used to perform mathematical tasks. Operations like addition, multiplication, and floating-point calculations fall under this category. The CPU's clock signal controls the application-specific digital circuitry that the ALU uses to carry out these functions.</p><p>For data to reach the ALU, it has to pass through a series of storage systems. These include <a href="https://en.wikipedia.org/wiki/Computer_data_storage">secondary</a> memory, <a href="https://computersciencewiki.org/index.php/Primary_memory">primary</a> memory, <a href="/impact-of-cache-locality/">cache</a> memory, and CPU registers. Since the registers of the CPU are the target of this attack, we will go into a little more depth. Depending on the design of the computer, the CPU registers can store either 32 or 64 bits of information. The ALU can access the data in these registers and complete the operation.</p><p>As the demands on CPUs have increased, there has been a need for faster ways to perform calculations. Advanced Vector Extensions (or AVX) were developed to speed up the processing of large data sets by applications. AVX are extensions to the x86 instruction set architecture, which are relevant to x86-based CPUs from Intel and AMD. With the help of compatible software and the extra instruction set, compatible processors could handle more complex tasks. The primary motivation for developing this instruction set was to speed up operations associated with data compression, image processing, and cryptographic computations.</p><p>The vector data used by AVX instructions is stored in 16 <a href="https://en.wikipedia.org/wiki/Advanced_Vector_Extensions">YMM registers</a>, each of which is 256 bits in size. The Y-register in the XMM register set is where the 128-bit values are stored, hence the name. Instructions from the arithmetic, logic, and trigonometry families of the AVX standard all make use of the YMM registers. They can also be used to keep masks - data that is used to filter out certain vector components.</p><p>Vectorized operations can be executed with great efficiency using the YMM registers. Applications that process large amounts of data stand to gain significantly from them, but they are increasingly the focus of malicious activity.</p><p>For example, the <code>glibc</code> library is using AVX instructions to speed up operations of string functions like strlen, memcpy or memcmp. These instructions are often used to process sensitive data such as passwords.</p>
    <div>
      <h3>The Attack</h3>
      <a href="#the-attack">
        
      </a>
    </div>
    <p>Modern processors highly optimize the runtime by executing micro-operations out of order. To  improve the runtime of resolving branch instructions, the branch prediction unit predicts the outcome of branches. Based on the prediction, instructions will be executed speculatively (They retire, however, in order to guarantee correctness). In case the prediction was incorrect, the instructions are rolled back and the other branch is executed. However, traces left in the microarchitectural components, e.g. in the cache, are still visible and can be recovered, for instance, via a <a href="https://spectreattack.com/spectre.pdf">cache side-channel attack</a>.</p><p>Because of their potential use for storing private information, AVX registers are especially susceptible to these kinds of attacks. A speculative execution attack on the AVX registers, for instance, could give an attacker access to cryptographic keys and passwords.</p><p>As mentioned above, the Google Information Security Team discovered a vulnerability in AMD's <a href="https://en.wikipedia.org/wiki/Zen_2">Zen 2</a>-architecture-based CPUs, wherein data from another process and/or thread could be stored in the YMM registers, a 256-bit series of extended registers, potentially allowing an attacker access to sensitive information. This vulnerability is caused by a register not being written to 0 correctly under specific microarchitectural circumstances. Although this error is associated with speculative execution, it is not a side channel vulnerability.</p><p>Zenbleed works by leveraging speculative execution to reset the z-bit flag, which indicates zeroed out data for a XMM register, and then dump the content of a register. The full attack works as follows: First, the XMM Register Merge Optimization is triggered which tracks XMM registers, where the upper parts have been cleared to zero. Register renaming is triggered by using a mov instruction, which resolves data dependencies by abstracting logical registers and physical registers. By exploiting a misprediction of a conditional branch the <code>vzeroupper</code> instruction, which zeros out the upper half of the AVX registers, is speculatively executed. When this instruction is rolled back due to the misprediction, the AVX register is left in an undefined state.</p><p>This undefined upper half points to random data from the physical register file of the same CPU core, i.e. reading register content of potentially other processes. The whole attack can be compared to exploiting a use-after-free vulnerability. This attack does not require exploiting a side channel. Thus, data can be directly read from the AVX registers. The public proof-of-concept achieves a leakage rate of 30 kb/s per core.</p><p>Since the register file is shared by all the processes running on the same physical core, this exploit can be used to eavesdrop on even the most fundamental system operations by monitoring the data being transferred between the CPU and the rest of the computer.</p>
    <div>
      <h3>Fixing the Bleed</h3>
      <a href="#fixing-the-bleed">
        
      </a>
    </div>
    <p>Given that the successful exploitation of this vulnerability requires very precise timing that is difficult to achieve without executing native code the vulnerability, filed under <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-20593">CVE-2023-20593</a>, has initially received the CVSS score of 6.5 and therefore was classified as Medium Risk. The initial mitigation suggested by the researcher is achieved by turning off certain functionality via modification of the Model Specific Register - namely <code>DE_CFG</code>. This change will prevent certain instructions with complex side effects like <code>vzeroupper</code> from being speculatively executed.</p><p>The following <a href="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=0bc3126c9cfa0b8c761483215c25382f831a7c6f">microcode</a> update is getting applied to our entire server fleet that contains potentially affected AMD Zen processors. We have seen no evidence of the bug being exploited and will continue to monitor traffic across our network for any attempts to exploit the bug and report on our findings.</p> ]]></content:encoded>
            <category><![CDATA[Hardware]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Vulnerabilities]]></category>
            <guid isPermaLink="false">7f4PsuKFgO8SqplMOw645G</guid>
            <dc:creator>Derek Chamorro</dc:creator>
            <dc:creator>Martin Schwarzl</dc:creator>
            <dc:creator>Michal Melewski</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare is not affected by the OpenSSL vulnerabilities CVE-2022-3602 and CVE-2022-3786]]></title>
            <link>https://blog.cloudflare.com/cloudflare-is-not-affected-by-the-openssl-vulnerabilities-cve-2022-3602-and-cve-2022-37/</link>
            <pubDate>Wed, 02 Nov 2022 09:31:15 GMT</pubDate>
            <description><![CDATA[ Information on CVE-2022-3602 and CVE-2022-3786, and why Cloudflare was not impacted ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Yesterday, November 1, 2022, OpenSSL released version 3.0.7 to patch <a href="https://www.openssl.org/news/secadv/20221101.txt">CVE-2022-3602 and CVE-2022-3786</a>, two HIGH risk vulnerabilities in the OpenSSL 3.0.x cryptographic library. Cloudflare is not affected by these vulnerabilities because <a href="/make-ssl-boring-again/">we use BoringSSL</a> in our products.</p><p>These vulnerabilities are memory corruption issues, in which attackers may be able to execute arbitrary code on a victim’s machine. CVE-2022-3602 was initially announced as a CRITICAL severity vulnerability, but it was downgraded to HIGH because it was deemed difficult to exploit with <a href="https://www.cloudflare.com/learning/security/what-is-remote-code-execution/">remote code execution (RCE)</a>. Unlike previous situations where users of OpenSSL were almost universally vulnerable, software that is using other versions of OpenSSL (like 1.1.1) are not vulnerable to this attack.</p>
    <div>
      <h3>How do these issues affect clients and servers?</h3>
      <a href="#how-do-these-issues-affect-clients-and-servers">
        
      </a>
    </div>
    <p>These vulnerabilities reside in the code responsible for X.509 certificate verification - most often executed on the client side to <a href="https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/">authenticate the server and the certificate presented</a>. In order to be impacted by this vulnerability the victim (client or server) needs a few conditions to be true:</p><ul><li><p>A malicious certificate needs to be signed by a Certificate Authority that the victim trusts.</p></li><li><p>The victim needs to validate the malicious certificate or ignore a series of warnings from the browser.</p></li><li><p>The victim needs to be running OpenSSL 3.0.x before 3.0.7.</p></li></ul><p>For a client to be affected by this vulnerability, they would have to visit a malicious site that presents a certificate containing an exploit payload. In addition, this malicious certificate would have to be signed by a trusted certificate authority (CA).</p><p>Servers with a vulnerable version of OpenSSL can be attacked if they support mutual authentication - a scenario where both client and a server provide a valid and signed X.509 certificate, and the client is able to present a certificate with an exploit payload to the server.</p>
    <div>
      <h3>How should you handle this issue?</h3>
      <a href="#how-should-you-handle-this-issue">
        
      </a>
    </div>
    <p>If you’re managing services that run OpenSSL: you should patch vulnerable OpenSSL packages. On a Linux system you can determine if you have any processes dynamically loading OpenSSL with the <code>lsof</code> command. Here’s an example of finding OpenSSL being used by NGINX.</p>
            <pre><code>root@55f64f421576:/# lsof | grep libssl.so.3
nginx   1294     root  mem       REG              254,1           925009 /usr/lib/x86_64-linux-gnu/libssl.so.3 (path dev=0,142)</code></pre>
            <p>Once the package maintainers for your Linux distro release OpenSSL 3.0.7 you can patch by updating your package sources and upgrading the libssl3 package. On Debian and Ubuntu this can be done with the apt-get upgrade command</p>
            <pre><code>root@55f64f421576:/# apt-get --only-upgrade install libssl3</code></pre>
            <p>With that said, it’s possible that you could be running a vulnerable version of OpenSSL that the <code>lsof</code> command can’t find because your process is statically compiled. It’s important to update your statically compiled software that you are responsible for maintaining, and make sure that over the coming days you are updating your operating system and other installed software that might contain the vulnerable OpenSSL versions.</p>
    <div>
      <h3>Key takeaways</h3>
      <a href="#key-takeaways">
        
      </a>
    </div>
    <p>Cloudflare’s use of BoringSSL helped us be confident that the issue would not impact us prior to the release date of the vulnerabilities.</p><p>More generally, the vulnerability is a reminder that memory safety is still an important issue. This issue may be difficult to exploit because it requires a maliciously crafted certificate that is signed by a trusted CA, and certificate issuers are likely to begin validating that the certificates they sign don’t contain payloads that exploit these vulnerabilities.  However, it’s still important to patch your software and upgrade your vulnerable OpenSSL packages to OpenSSL 3.0.7 given the severity of the issue.</p><p><i>To learn more about our mission to help build a better Internet,</i> <a href="https://www.cloudflare.com/learning/what-is-cloudflare/"><i>start here</i></a><i>. If you're looking for a new career direction, check out</i> <a href="https://cloudflare.com/careers"><i>our open positions</i></a><i>.</i></p> ]]></content:encoded>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Vulnerabilities]]></category>
            <guid isPermaLink="false">2DyDy3WGm4DFxuZUAsUgc7</guid>
            <dc:creator>Evan Johnson</dc:creator>
            <dc:creator>Michal Melewski</dc:creator>
        </item>
    </channel>
</rss>