
<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>Mon, 13 Apr 2026 14:43:04 GMT</lastBuildDate>
        <item>
            <title><![CDATA[How Cloudflare is using automation to tackle phishing head on]]></title>
            <link>https://blog.cloudflare.com/how-cloudflare-is-using-automation-to-tackle-phishing/</link>
            <pubDate>Mon, 17 Mar 2025 05:00:00 GMT</pubDate>
            <description><![CDATA[ How Cloudflare is using threat intelligence and our Developer Platform products to automate phishing abuse reports. ]]></description>
            <content:encoded><![CDATA[ <p>Phishing attacks have grown both in volume and in sophistication over recent years. Today’s threat isn’t just about sending out generic <a href="https://www.cloudflare.com/learning/email-security/what-is-email/"><u>emails</u></a> — bad actors are using advanced phishing techniques like <a href="https://bolster.ai/blog/man-in-the-middle-phishing"><u>2 factor monster in the middle</u></a> (MitM) attacks, <a href="https://blog.cloudflare.com/how-cloudflare-cloud-email-security-protects-against-the-evolving-threat-of-qr-phishing/"><u>QR codes</u></a> to bypass detection rules, and <a href="https://www.malwarebytes.com/blog/news/2025/01/ai-supported-spear-phishing-fools-more-than-50-of-targets"><u>using artificial intelligence (AI)</u></a> to craft personalized and targeted phishing messages at scale. Industry organizations such as the Anti-Phishing Working Group (APWG) <a href="https://docs.apwg.org/reports/apwg_trends_report_q2_2024.pdf"><u>have shown</u></a> that phishing incidents continue to climb year over year.</p><p>To combat both the increase in phishing attacks and the growing complexity, we have built advanced automation tooling to both detect and take action. </p><p>In the first half of 2024, Cloudflare resolved 37% of phishing reports using automated means, and the median time to take action on hosted phishing reports was 3.4 days. In the second half of 2024, after deployment of our new tooling, we were able to expand our automated systems to resolve 78% of phishing reports with a median time to take action on hosted phishing reports of under an hour.</p><p>In this post we dig into some of the details of how we implemented these improvements.</p>
    <div>
      <h3>The phishing site problem</h3>
      <a href="#the-phishing-site-problem">
        
      </a>
    </div>
    <p><a href="https://blog.cloudflare.com/dispelling-the-generative-ai-fear-how-cloudflare-secures-inboxes-against-ai-enhanced-phishing/"><u>Cloudflare has observed a similar increase</u></a> in the volume of phishing activity throughout 2023 and 2024. We receive <a href="https://abuse.cloudflare.com/"><u>abuse reports</u></a> from anyone on the Internet that may have seen potentially abusive behaviors from websites using Cloudflare services. Our Trust &amp; Safety investigators and engineers have been tasked with responding to these complaints, and more recently have been using the data from these reports to improve our threat intelligence, brand protection, and email security product offerings.</p><p>Cloudflare has always believed in using the vast amounts of traffic that flows through our network to improve threat detection and customer security. This has been at the core of how we protect our customers from <a href="https://www.cloudflare.com/learning/ddos/glossary/denial-of-service/"><u>DoS attacks</u></a> and other <a href="https://www.cloudflare.com/learning/security/what-is-cyber-security/"><u>cybersecurity</u></a> threats. We've been applying the same concepts our internal teams use to mitigate <a href="https://www.cloudflare.com/learning/email-security/how-to-prevent-phishing/"><u>phishing</u></a> to improve detection of phishing on our network and our ability to detect and notify our customers about potential risks to their brand.</p><p>Prior to last year, phishing abuse reported to Cloudflare relied on manual, human review and intervention to remediate. Trust &amp; Safety (T&amp;S) investigators would have to look at each complaint, the allegations made by the reporter, and the content on the reported websites to make assessments as quickly as possible about whether the website was phishing or <a href="https://www.cloudflare.com/learning/ddos/glossary/malware/"><u>malware</u></a>.</p><p>Given the growing scale of our customer base and phishing across the Internet, this became unsustainable. By collecting a group of internal experts on abuse, we were able to tackle this problem by using insights across our network, internal data from our <a href="https://developers.cloudflare.com/cloudflare-one/email-security/"><u>Email Security</u></a> product, external feeds from trusted sources, and years of abuse report processing data to automatically assess risk of likely phishing and recommend appropriate action.</p>
    <div>
      <h3>Turning our intelligence inward</h3>
      <a href="#turning-our-intelligence-inward">
        
      </a>
    </div>
    <p>We built our automated phishing identification on the <a href="https://www.cloudflare.com/developer-platform/products/"><u>Cloudflare Developer Platform</u></a> so that we could meet our scanning demand without concern for how we might scale. This allowed us to focus more on creating a great phishing detection engine and less on the infrastructure required to meet that demand. </p><p>Each URL submitted to our phishing detection <a href="https://workers.cloudflare.com/"><u>Worker</u></a> begins with an initial scan by the <a href="https://radar.cloudflare.com/scan"><u>Cloudflare URL Scanner</u></a>. The scan provides us with the rendered HTML, network requests, and attributes of the site. After scanning, we collect reputational information about the site by submitting the HTML and page resources to our in-house <a href="https://www.cloudflare.com/learning/ai/what-is-machine-learning/"><u>machine learning</u></a> classifiers; meanwhile, the <a href="https://www.cloudflare.com/learning/security/what-are-indicators-of-compromise/"><u>indicators of compromise (IOCs)</u></a> are sent to our suite of <a href="https://www.cloudflare.com/learning/security/glossary/threat-intelligence-feed/"><u>threat feeds</u></a> and domain categorization tools to highlight any known malicious sites or site categorizations.</p><p>Once we have all of this information collected, we expose it to a set of rules and heuristics that identify the URL as phishing or not based on how T&amp;S investigators have traditionally responded to similar abuse reports and patterns of bad behaviors we’ve observed. Rules will suggest decisions to make against the reports, and remediations to make against harmful content. It is through this process that we were able to convert the manual reviews by T&amp;S investigators into an automated flow of phishing identification. We also recognize that reporters make mistakes or even deliberately try to weaponize abuse processes. Our rules must therefore consider the possibility of false positives, in which reports are created against legitimate websites (intentionally or unintentionally). False positives can erode the trust of our customers and create incidents, so automation must include processes to disregard erroneous reports.</p><p>The magic of all of this was the powerful suite of tools on the Cloudflare Developer Platform. Whether it was using <a href="https://developers.cloudflare.com/kv/"><u>KV</u></a> to store report summaries that could scale indefinitely or <a href="https://developers.cloudflare.com/durable-objects/"><u>Durable Objects</u></a> to keep running counters of an unlimited number of attributes that could be tracked or leveraged over time, we were able to integrate the solutions quickly allowing us easily add or remove new enrichments with little effort. We also made use of <a href="https://developers.cloudflare.com/hyperdrive/"><u>Hyperdrive</u></a> to access the internal Postgres database that stores our abuse reports, <a href="https://developers.cloudflare.com/queues/"><u>Queues</u></a> to manage the scanning jobs, <a href="https://developers.cloudflare.com/workers-ai/"><u>Workers AI</u></a> to run machine learning classifiers, and <a href="https://developers.cloudflare.com/d1/"><u>D1</u></a> to store detection logs for efficacy and evaluation review. To tie it all together, the team also deployed a <a href="https://developers.cloudflare.com/pages/framework-guides/deploy-a-remix-site/"><u>Remix Pages UI</u></a> to present all the phishing detection engine’s analysis to T&amp;S investigators for follow-on investigations and evaluations of inconclusive results.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7MQYa4u71uKm9J6AaNxQNy/0cce686f51988ece4a1a46d87dae6df9/image1.png" />
          </figure><p><sup><i>Architecture of Trust &amp; Safety’s phishing automation detection pipeline</i></sup></p>
    <div>
      <h3>Moving forward</h3>
      <a href="#moving-forward">
        
      </a>
    </div>
    <p>The same intelligence we’re gathering to expedite and refine abuse report processing isn’t just for abuse response; it’s also used to empower our customers. By analyzing patterns and trends of abusive behaviors — such as identifying common phrases used in phishing attempts, recognizing infrastructure used by malicious actors or spotting coordinated campaigns across multiple domains — we enhance the efficacy of our application security, email security, and threat intelligence products.</p><p>For our <a href="https://developers.cloudflare.com/learning-paths/application-security/security-center/brand-protection/"><u>Brand Protection</u></a> customers, this translates into a significant advantage: the ability to easily report suspected abuse directly from the Cloudflare dashboard. This feature ensures that potential phishing sites are addressed rapidly, minimizing the risk to your customers and brand reputation. Furthermore, the Trust and Safety team can use this information to take action on similar threats across the Cloudflare network, protecting all customers, even those who aren't Brand Protection users.</p><p>Alongside our network-wide efforts, we’ve also been partnering with our customers, as well as experts outside of Cloudflare, to understand trends they are seeing in their own phishing mitigation efforts. By soliciting intelligence regarding the abuse issues that affect the attack’s targets, we can better identify and prevent abuse of Cloudflare products. We’ve been able to use these partnerships and discussions with external organizations to craft highly targeted rules that head off emerging patterns of phishing activity. </p>
    <div>
      <h3>It takes a village: if you see something, say something</h3>
      <a href="#it-takes-a-village-if-you-see-something-say-something">
        
      </a>
    </div>
    <p>If you believe you’ve identified phishing activity that is passing through Cloudflare’s network, please report it via our <a href="https://abuse.cloudflare.com/"><u>abuse reporting form</u></a>. For technical users who might be interested in a programmatic way to report to us, please review our <a href="https://developers.cloudflare.com/api/resources/abuse_reports/"><u>abuse reporting API</u></a> documentation.</p><p>We invite all of our customers to join us in helping make the Internet safer:</p><ol><li><p>Enterprise customers should speak with their Customer Success Manager about enabling <a href="https://blog.cloudflare.com/safeguarding-your-brand-identity-logo-matching-for-brand-protection/"><u>Brand Protection</u></a>, included by default for all enterprise customers. </p></li><li><p>For existing users of the Brand Protection product, update your <a href="https://developers.cloudflare.com/security-center/brand-protection/"><u>brand's assets</u></a>, so we can better identify the legitimate websites and logos of our customers vs. possible phishing activity.</p></li><li><p>As a Cloudflare customer, make sure your <a href="https://developers.cloudflare.com/fundamentals/setup/account/account-security/abuse-contact/"><u>abuse contact</u></a> is up-to-date in the Cloudflare dashboard.</p></li></ol><p></p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Abuse]]></category>
            <category><![CDATA[Threat Intelligence]]></category>
            <category><![CDATA[Phishing]]></category>
            <category><![CDATA[Policy & Legal]]></category>
            <guid isPermaLink="false">3Bb3gcZ92DhVXA44P3XF7x</guid>
            <dc:creator>Javier Castro</dc:creator>
            <dc:creator>Justin Paine</dc:creator>
            <dc:creator>Rachael Truong</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare incident on February 6, 2025]]></title>
            <link>https://blog.cloudflare.com/cloudflare-incident-on-february-6-2025/</link>
            <pubDate>Fri, 07 Feb 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[ On Thursday, February 6, 2025, we experienced an outage with our object storage service (R2) and products that rely on it. Here's what happened and what we're doing to fix this going forward. ]]></description>
            <content:encoded><![CDATA[ <p>Multiple Cloudflare services, including our <a href="https://www.cloudflare.com/developer-platform/products/r2/"><u>R2 object storage</u></a>, were unavailable for 59 minutes on Thursday, February 6, 2025. This caused all operations against R2 to fail for the duration of the incident, and caused a number of other Cloudflare services that depend on R2 — including <a href="https://www.cloudflare.com/developer-platform/products/cloudflare-stream/"><u>Stream</u></a>, <a href="https://www.cloudflare.com/developer-platform/products/cloudflare-images/"><u>Images</u></a>, <a href="https://www.cloudflare.com/developer-platform/products/cache-reserve/"><u>Cache Reserve</u></a>, <a href="https://www.cloudflare.com/developer-platform/products/vectorize/"><u>Vectorize</u></a> and <a href="https://developers.cloudflare.com/logs/edge-log-delivery/"><u>Log Delivery</u></a> — to suffer significant failures.</p><p>The incident occurred due to human error and insufficient validation safeguards during a routine abuse remediation for a report about a phishing site hosted on R2. The action taken on the complaint resulted in an advanced product disablement action on the site that led to disabling the production R2 Gateway service responsible for the R2 API.  </p><p>Critically, this incident did <b>not</b> result in the loss or corruption of any data stored on R2. </p><p>We’re deeply sorry for this incident: this was a failure of a number of controls, and we are prioritizing work to implement additional system-level controls related not only to our abuse processing systems, but so that we continue to reduce the blast radius of <i>any</i> system- or human- action that could result in disabling any production service at Cloudflare.</p>
    <div>
      <h2>What was impacted?</h2>
      <a href="#what-was-impacted">
        
      </a>
    </div>
    <p>All customers using Cloudflare R2 would have observed a 100% failure rate against their R2 buckets and objects during the primary incident window. Services that depend on R2 (detailed in the table below) observed heightened error rates and failure modes depending on their usage of R2.</p><p>The primary incident window occurred between 08:14 UTC to 09:13 UTC, when operations against R2 had a 100% error rate. Dependent services (detailed below) observed increased failure rates for operations that relied on R2.</p><p>From 09:13 UTC to 09:36 UTC, as R2 recovered and clients reconnected, the backlog and resulting spike in client operations caused load issues with R2's metadata layer (built on Durable Objects). This impact was significantly more isolated: we observed a 0.09% increase in error rates in calls to Durable Objects running in North America during this window. </p><p>The following table details the impacted services, including the user-facing impact, operation failures, and increases in error rates observed:</p><table><tr><td><p><b>Product/Service</b></p></td><td><p><b>Impact</b></p></td></tr><tr><td><p><b>R2</b></p></td><td><p>100% of operations against R2 buckets and objects, including uploads, downloads, and associated metadata operations were impacted during the primary incident window. During the secondary incident window, we observed a &lt;1% increase in errors as clients reconnected and increased pressure on R2's metadata layer.</p><p>There was no data loss within the R2 storage subsystem: this incident impacted the HTTP frontend of R2. Separation of concerns and blast radius management meant that the underlying R2 infrastructure was unaffected by this.</p></td></tr><tr><td><p><b>Stream</b></p></td><td><p>100% of operations (upload &amp; streaming delivery) against assets managed by Stream were impacted during the primary incident window.</p></td></tr><tr><td><p><b>Images</b></p></td><td><p>100% of operations (uploads &amp; downloads) against assets managed by Images were impacted during the primary incident window.</p><p>Impact to Image Delivery was minor: success rate dropped to 97% as these assets are fetched from existing customer backends and do not rely on intermediate storage.</p></td></tr><tr><td><p><b>Cache Reserve</b></p></td><td><p>Cache Reserve customers observed an increase in requests to their origin during the incident window as 100% of operations failed. This resulted in an increase in requests to origins to fetch assets unavailable in Cache Reserve during this period. This impacted less than 0.049% of all cacheable requests served during the incident window.</p><p>User-facing requests for assets to sites with Cache Reserve did not observe failures as cache misses failed over to the origin.</p></td></tr><tr><td><p><b>Log Delivery</b></p></td><td><p>Log delivery was delayed during the primary incident window, resulting in significant delays (up to an hour) in log processing, as well as some dropped logs. </p><p>Specifically:</p><p>Non-R2 delivery jobs would have experienced up to 4.5% data loss during the incident. This level of data loss could have been different between jobs depending on log volume and buffer capacity in a given location.</p><p>R2 delivery jobs would have experienced up to 13.6% data loss during the incident. </p><p>R2 is a major destination for Cloudflare Logs. During the primary incident window, all available resources became saturated attempting to buffer and deliver data to R2. This prevented other jobs from acquiring resources to process their queues. Data loss (dropped logs) occurred when the job queues expired their data (to allow for new, incoming data). The system recovered when we enabled a kill switch to stop processing jobs sending data to R2.</p></td></tr><tr><td><p><b>Durable Objects</b></p></td><td><p>Durable Objects, and services that rely on it for coordination &amp; storage, were impacted as the stampeding horde of clients re-connecting to R2 drove an increase in load.</p><p>We observed a 0.09% actual increase in error rates in calls to Durable Objects running in North America, starting at 09:13 UTC and recovering by 09:36 UTC.</p></td></tr><tr><td><p><b>Cache Purge</b></p></td><td><p>Requests to the Cache Purge API saw a 1.8% error rate (HTTP 5xx) increase and a 10x increase in p90 latency for purge operations during the primary incident window. Error rates returned to normal immediately after this.</p></td></tr><tr><td><p><b>Vectorize</b></p></td><td><p>Queries and operations against Vectorize indexes were impacted during the primary incident window. 75% of queries to indexes failed (the remainder were served out of cache) and 100% of insert, upsert, and delete operations failed during the incident window as Vectorize depends on R2 for persistent storage. Once R2 recovered, Vectorize systems recovered in full.</p><p>We observed no continued impact during the secondary incident window, and we have not observed any index corruption as the Vectorize system has protections in place for this.</p></td></tr><tr><td><p><b>Key Transparency Auditor</b></p></td><td><p>100% of signature publish &amp; read operations to the KT auditor service failed during the primary incident window. No third party reads occurred during this window and thus were not impacted by the incident.</p></td></tr><tr><td><p><b>Workers &amp; Pages</b></p></td><td><p>A small volume (0.002%) of deployments to Workers and Pages projects failed during the primary incident window. These failures were limited to services with bindings to R2, as our control plane was unable to communicate with the R2 service during this period.</p></td></tr></table>
    <div>
      <h2>Incident timeline and impact</h2>
      <a href="#incident-timeline-and-impact">
        
      </a>
    </div>
    <p>The incident timeline, including the initial impact, investigation, root cause, and remediation, are detailed below.</p><p><b>All timestamps referenced are in Coordinated Universal Time (UTC).</b></p>
<div><table><colgroup>
<col></col>
<col></col>
</colgroup>
<thead>
  <tr>
    <th><span>Time</span></th>
    <th><span>Event</span></th>
  </tr></thead>
<tbody>
  <tr>
    <td><span>2025-02-06 08:12</span></td>
    <td><span>The R2 Gateway service is inadvertently disabled while responding to an abuse report.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:14</span></td>
    <td><span>-- IMPACT BEGINS --</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:15</span></td>
    <td><span>R2 service metrics begin to show signs of service degradation.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:17</span></td>
    <td><span>Critical R2 alerts begin to fire due to our service no longer responding to our health checks.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:18</span></td>
    <td><span>R2 on-call engaged and began looking at our operational dashboards and service logs to understand impact to availability.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:23</span></td>
    <td><span>Sales engineering escalated to the R2 engineering team that customers are experiencing a rapid increase in HTTP 500’s from all R2 APIs.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:25 </span></td>
    <td><span>Internal incident declared.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:33</span></td>
    <td><span>R2 on-call was unable to identify the root cause and escalated to the lead on-call for assistance.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:42</span></td>
    <td><span>Root cause identified as R2 team reviews service deployment history and configuration, which surfaces the action and the validation gap that allowed this to impact a production service.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:46</span></td>
    <td><span>On-call attempts to re-enable the R2 Gateway service using our internal admin tooling, however this tooling was unavailable because it relies on R2.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:49</span></td>
    <td><span>On-call escalates to an operations team who has lower level system access and can re-enable the R2 Gateway service. </span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 08:57</span></td>
    <td><span>The operations team engaged and began to re-enable the R2 Gateway service.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 09:09</span></td>
    <td><span>R2 team triggers a redeployment of the R2 Gateway service.</span></td>
  </tr>
  <tr>
    <td><span> 2025-02-06 09:10</span></td>
    <td><span>R2 began to recover as the forced re-deployment rolled out as clients were able to reconnect to R2.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 09:13</span></td>
    <td><span>-- IMPACT ENDS --</span><br /><span>R2 availability recovers to within its service-level objective (SLO). Durable Objects begins to observe a slight increase in error rate (0.09%) for Durable Objects running in North America due to the spike in R2 clients reconnecting.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 09:36</span></td>
    <td><span>The Durable Objects error rate recovers.</span></td>
  </tr>
  <tr>
    <td><span>2025-02-06 10:29</span></td>
    <td><span>The incident is closed after monitoring error rates.</span></td>
  </tr>
</tbody></table></div><p>At the R2 service level, our internal Prometheus metrics showed R2’s SLO near-immediately drop to 0% as R2’s Gateway service stopped serving all requests and terminated in-flight requests.</p><p>The slight delay in failure was due to the product disablement action taking 1–2 minutes to take effect as well as our configured metrics aggregation intervals:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4pbONRcG99RWttIUyGqnI6/bad397f73762a706285ea143ed2418b3/BLOG-2685_2.png" />
          </figure><p>For context, R2’s architecture separates the Gateway service, which is responsible for authenticating and serving requests to R2’s S3 &amp; REST APIs and is the “front door” for R2 — its metadata store (built on Durable Objects), our intermediate caches, and the underlying, distributed storage subsystem responsible for durably storing objects. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/E2cgDKA2zGwaQDBs31tPk/4272c94625fd788148d16a90cc7cceaa/Image_20250206_172217_707.png" />
          </figure><p>During the incident, all other components of R2 remained up: this is what allowed the service to recover so quickly once the R2 Gateway service was restored and re-deployed. The R2 Gateway acts as the coordinator for all work when operations are made against R2. During the request lifecycle, we validate authentication and authorization, write any new data to a new immutable key in our object store, then update our metadata layer to point to the new object. When the service was disabled, all running processes stopped.</p><p>While this means that all in-flight and subsequent requests fail, anything that had received a HTTP 200 response had already succeeded with no risk of reverting to a prior version when the service recovered. This is critical to R2’s consistency guarantees and mitigates the chance of a client receiving a successful API response without the underlying metadata <i>and </i>storage infrastructure having persisted the change.  </p>
    <div>
      <h2>Deep dive </h2>
      <a href="#deep-dive">
        
      </a>
    </div>
    <p><b>Due to human error and insufficient validation safeguards in our admin tooling, the R2 Gateway service was taken down as part of a routine remediation for a phishing URL.</b></p><p>During a routine abuse remediation, action was taken on a complaint that inadvertently disabled the R2 Gateway service instead of the specific endpoint/bucket associated with the report. This was a failure of multiple system level controls (first and foremost) and operator training. </p><p>A key system-level control that led to this incident was in how we identify (or "tag") internal accounts used by our teams. Teams typically have multiple accounts (dev, staging, prod) to reduce the blast radius of any configuration changes or deployments, but our abuse processing systems were not explicitly configured to identify these accounts and block disablement actions against them. Instead of disabling the specific endpoint associated with the abuse report, the system allowed the operator to (incorrectly) disable the R2 Gateway service. </p><p>Once we identified this as the cause of the outage, remediation and recovery was inhibited by the lack of direct controls to revert the product disablement action and the need to engage an operations team with lower level access than is routine. The R2 Gateway service then required a re-deployment in order to rebuild its routing pipeline across our edge network.</p><p>Once re-deployed, clients were able to re-connect to R2, and error rates for dependent services (including Stream, Images, Cache Reserve and Vectorize) returned to normal levels.</p>
    <div>
      <h2>Remediation and follow-up steps</h2>
      <a href="#remediation-and-follow-up-steps">
        
      </a>
    </div>
    <p>We have taken immediate steps to resolve the validation gaps in our tooling to prevent this specific failure from occurring in the future.</p><p>We are prioritizing several work-streams to implement stronger, system-wide controls (defense-in-depth) to prevent this, including how we provision internal accounts so that we are not relying on our teams to correctly and reliably tag accounts. A key theme to our remediation efforts here is around removing the need to rely on training or process, and instead ensuring that our systems have the right guardrails and controls built-in to prevent operator errors.</p><p>These work-streams include (but are not limited to) the following:</p><ul><li><p><b>Actioned: </b>deployed additional guardrails implemented in the Admin API to prevent product disablement of services running in internal accounts.</p></li><li><p><b>Actioned</b>: Product disablement actions in the abuse review UI have been disabled while we add more robust safeguards. This will prevent us from inadvertently repeating similar high-risk manual actions.</p></li><li><p><b>In-flight</b>: Changing how we create all internal accounts (staging, dev, production) to ensure that all accounts are correctly provisioned into the correct organization. This must include protections against creating standalone accounts to avoid re-occurrence of this incident (or similar) in the future.</p></li><li><p><b>In-flight: </b>Further restricting access to product disablement actions beyond the remediations recommended by the system to a smaller group of senior operators.</p></li><li><p><b>In-flight</b>: Two-party approval required for ad-hoc product disablement actions. Going forward, if an investigator requires additional remediations, they must be submitted to a manager or a person on our approved remediation acceptance list to approve their additional actions on an abuse report. </p></li><li><p><b>In-flight</b>: Expand existing abuse checks that prevent accidental blocking of internal hostnames to also prevent any product disablement action of products associated with an internal Cloudflare account.  </p></li><li><p><b>In-flight</b>: Internal accounts are being moved to our new Organizations model ahead of public release of this feature. The R2 production account was a member of this organization, but our abuse remediation engine did not have the necessary protections to prevent acting against accounts within this organization.</p></li></ul><p>We’re continuing to discuss &amp; review additional steps and effort that can continue to reduce the blast radius of any system- or human- action that could result in disabling any production service at Cloudflare.</p>
    <div>
      <h2>Conclusion</h2>
      <a href="#conclusion">
        
      </a>
    </div>
    <p>We understand this was a serious incident, and we are painfully aware of — and extremely sorry for — the impact it caused to customers and teams building and running their businesses on Cloudflare.</p><p>This is the first (and ideally, the last) incident of this kind and duration for R2, and we’re committed to improving controls across our systems and workflows to prevent this in the future.</p> ]]></content:encoded>
            <category><![CDATA[Post Mortem]]></category>
            <category><![CDATA[Outage]]></category>
            <category><![CDATA[undefined]]></category>
            <guid isPermaLink="false">mDiwAePfMfpVHMlYrfrFu</guid>
            <dc:creator>Matt Silverlock</dc:creator>
            <dc:creator>Javier Castro</dc:creator>
        </item>
        <item>
            <title><![CDATA[Introducing Requests for Information (RFIs) and Priority Intelligence Requirements (PIRs) for threat intelligence teams]]></title>
            <link>https://blog.cloudflare.com/threat-intel-rfi-pir/</link>
            <pubDate>Fri, 08 Mar 2024 14:00:13 GMT</pubDate>
            <description><![CDATA[ Our Security Center now houses Requests for Information (RFIs) and Priority Intelligence Requirements (PIRs). These features are available via API as well and Cloudforce One customers can start leveraging them today for enhanced security analysis ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3dVTzn72D5tpx8uhtK9Vit/ad87c4a8f50f758c82f3b09658dc4f82/image4-25.png" />
            
            </figure><p><a href="/introducing-cloudforce-one-threat-operations-and-threat-research/">Cloudforce One</a> is our threat operations and research team. Its primary objective: track and disrupt threat actors targeting Cloudflare and the customer systems we protect. <a href="https://www.cloudflare.com/en-gb/application-services/products/cloudforceone/">Cloudforce One customers</a> can engage directly with analysts on the team to help understand and stop the specific threats targeting them.</p><p>Today, we are releasing in general availability two new tools that will help Cloudforce One customers get the best value out of the service by helping us prioritize and organize the information that matters most to them: Requests for Information (RFIs) and Priority Intelligence Requirements (PIRs). We’d also like to review how we’ve used the Cloudflare <a href="https://developers.cloudflare.com/workers/">Workers</a> and <a href="https://developers.cloudflare.com/pages">Pages</a> platform to build our internal pipeline to not only perform investigations on behalf of our customers, but conduct our own internal investigations of the threats and attackers we track.</p>
    <div>
      <h3>What are Requests for Information (RFIs)?</h3>
      <a href="#what-are-requests-for-information-rfis">
        
      </a>
    </div>
    <p>RFIs are designed to streamline the process of accessing critical intelligence. They provide an avenue for users to submit specific queries and requests directly into Cloudforce One's analysis queue. Essentially, they are a well-structured way for you to tell the team what to focus their research on to best support your security posture.</p><p>Each RFI filed is routed to an analyst and treated as a targeted call for information on specific threat elements. From malware analysis to <a href="https://www.cloudflare.com/learning/ddos/what-is-a-ddos-attack/">DDoS attack</a> analysis, we have a group of seasoned threat analysts who can provide deeper insight into a wide array of attacks. Those who have found RFIs invaluable typically belong to <a href="https://www.cloudflare.com/learning/security/glossary/what-is-a-security-operations-center-soc/">Security Operation Centers</a>, Incident Response Teams, and Threat Research/Intelligence teams dedicated to supporting internal investigations within an organization. This approach proves instrumental in unveiling potential vulnerabilities and enhancing the understanding of the security posture, especially when confronting complex risks.</p><p>Creating an RFI is straightforward. Through the Security Center dashboard, users can create and track their RFIs:</p><ol><li><p><b>Submission</b>: Submit requests via Cloudforce One RFI Dashboard:a. Threat: The threat or campaign you would like more information onb. Priority: routine, high or urgentc. Type: Binary Analysis, Indicator Analysis, Traffic Analysis, Threat Detection Signature, Passive DNS Resolution, DDoS Attack or Vulnerabilityd. Output: Malware Analysis Report, Indicators of Compromise, or Threat Research Report</p></li><li><p><b>Tracking</b>: Our Threat Research team begins work and the customer can track progress (open, in progress, pending, published, complete) via the RFI Dashboard. Automated alerts are sent to the customer with each status change.</p></li><li><p><b>Delivery</b>: Customers can access/download the RFI response via the RFI Dashboard.</p></li></ol>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4ovThbZzH3fMIT7aBbHqcP/a2d374d81960c926958b4eb0d19a484e/pasted-image-0-7.png" />
            
            </figure><p><i>Fabricated example of the detailed view of an RFI and communication with the Cloudflare Threat Research Team</i></p><p>Once an RFI is submitted, teams can stay informed about the progress of their requests through automated alerts. These alerts, generated when a Cloudforce One analyst has completed the request, are delivered directly to the user’s email or to a team chat channel via a webhook.</p>
    <div>
      <h3>What are Priority Intelligence Requirements (PIRs)?</h3>
      <a href="#what-are-priority-intelligence-requirements-pirs">
        
      </a>
    </div>
    <p>Priority Intelligence Requirements (PIRs) are a structured approach to identifying intelligence gaps, formulating precise requirements, and organizing them into categories that align with Cloudforce One's overarching goals. For example, you can create a PIR signaling to the Cloudforce One team what topic you would like more information on.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/58S0RVvoHSSuMenctFVdVH/95a54a5436b667a223aea37a8c2de71c/Screenshot-2024-03-08-at-15.44.24.png" />
            
            </figure><p><b>PIR dashboard with fictitious examples of priority intelligence requirements</b></p><p>PIRs help target your intelligence collection efforts toward the most relevant insights, enabling you to make informed decisions and <a href="https://www.cloudflare.com/cybersecurity-risk-management/">strengthen your organization's cybersecurity posture</a>.</p><p>While PIRs currently offer a framework for prioritizing intelligence requirements, our vision extends beyond static requirements. Looking ahead, our plan is to evolve PIRs into dynamic tools that integrate real-time intelligence from Cloudforce One. Enriching PIRs by integrating them with real-time intelligence from Cloudforce One will provide immediate insights into your Cloudflare environment, facilitating a direct and meaningful connection between ongoing threat intelligence and your predefined intelligence needs.</p>
    <div>
      <h3>What drives Cloudforce One?</h3>
      <a href="#what-drives-cloudforce-one">
        
      </a>
    </div>
    <p>Since our inception, Cloudforce One has been actively collaborating with our Security Incident Response Team (SIRT) and Trust and Safety (T&amp;S) team, aiming to provide valuable insights into attacks targeting Cloudflare and counteract the misuse of Cloudflare services. Throughout these investigations, we recognized the need for a centralized platform to capture insights from Cloudflare's unique perspective on the Internet, aggregate data, and correlate reports.</p><p>In the past, our approach would have involved deploying a frontend UI and backend API in a core data center, leveraging common services like Postgres, Redis, and a Ceph storage solution. This conventional route would have entailed managing Docker deployments, constantly upgrading hosts for vulnerabilities, and dealing with a complex environment where we must juggle secrets, external service configurations, and maintaining availability.</p><p>Instead, we welcomed being <a href="https://www.cloudflare.com/the-net/top-of-mind-security/customer-zero/">Customer Zero</a> for Cloudflare and fully embraced Cloudflare's Workers and Pages platforms to construct a powerful threat investigation tool, and since then, we haven’t looked back. For anyone that has used Workers in the past, much of what we have done is not revolutionary, but almost commonplace given the ease of configuring and implementing the features in Cloudflare Workers. We routinely store file data in <a href="https://developers.cloudflare.com/r2">R2</a>, metadata in <a href="https://developers.cloudflare.com/kv">KV</a>, and indexed data in <a href="https://www.cloudflare.com/developer-platform/products/d1/">D1</a>. That being said, we do have a few non-standard deployments as well, further outlined below.</p><p>Altogether, our Threats Investigation architecture consists of five services, four of which are deployed at the edge with the other one deployed in our core data centers due to data dependency constraints.</p><ul><li><p><b>RFIs &amp; PIRs</b>: This API manages our formal Cloudforce One requests and customer priorities submitted via the Cloudflare Dashboard.</p></li><li><p><b>Threats:</b> Our UI, deployed via Pages, serves as the interface for interacting with all of our Cloudforce One services, Cloudflare internal services, and the RFIs and PIRs submitted by our customers.</p></li><li><p><b>Cases</b>: A case management system that allows analysts to store notes, Indicators of Compromise (IOCs), malware samples, and data analytics related to an attack. The service provides live updates to all analysts viewing the case, facilitating real-time collaboration. Each case is a Durable Object that is connected to via a Websocket that stores “files” and “file content” in the Durable Object’s persistent storage. Metadata for the case is made searchable via D1.</p></li><li><p><b>Leads</b>: A queue of informal internal and external requests that may be reviewed by Cloudforce One when doing threat hunting discovery. Lead content is stored into KV, while metadata and extracted IOCs are stored in D1.</p></li><li><p><b>Binary DB:</b> A raw binary file warehouse for any file we come across during our investigation. Binary DB also serves as the repository for malware samples used in some of our machine learning training. Each file is stored in R2, with its associated metadata stored in KV.</p></li></ul>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/w9NH6Cz20Uu6bRKwzeQzN/3e43e370555ed59c8ac221b7f0a89aee/image1-29.png" />
            
            </figure><p><i>Cloudforce One Threat Investigation Architecture</i></p><p>At the heart of our Threats ecosystem is our case management service built on Workers and Durable Objects. We were inspired to build this tool because we often had to jump into collaborative documents that were not designed to store forensic data, organize it, mark sections with <a href="https://www.cisa.gov/news-events/news/traffic-light-protocol-tlp-definitions-and-usage">Traffic Light Protocol</a> (TLP) releasability codes, and relate analysis to existing RFIs or Leads.</p><p>Our concept of cases is straightforward — each case is a Durable Object that can accept HTTP REST API or <a href="https://developers.cloudflare.com/durable-objects/learning/websockets/">WebSocket</a> connections. Upon initiating a WebSocket connection, it is seamlessly incorporated into the Durable Object's in-memory state, allowing us to instantly broadcast real-time events to all users engaged with the case. Each case comprises distinct folders, each housing a collection of files containing content, releasability information, and file metadata.</p><p>Practically, our Durable Object leverages its persistent storage with each storage key prefixed with the value type: “case”, “folder”, or “file” followed by the UUID assigned to the file. Each case value has metadata associated with the case and a list of folders that belong to the case. Each folder has the folder’s name and a list of files that belong to it.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/22WN1PQAbDZHhEQonQnuVi/6fcbc648a76ebcca4ee03212ed40993d/image5-17.png" />
            
            </figure><p>Our internal Threats UI helps us tie together the service integrations with our threat hunting analysis. It is here we do our day-to-day work which allows us to bring our unique insights into Cloudflare attacks. Below is an example of our Case Management in action where we tracked the <a href="/malicious-redalert-rocket-alerts-application-targets-israeli-phone-calls-sms-and-user-information">RedAlerts attack</a> before we formalized our analysis into the blog.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2e2DI2UBqkXEshsi3eeh3z/499caf983895ef76d84bee4d7f66ec4a/image2-25.png" />
            
            </figure><p>What good is all of this if we can’t search it? The <a href="https://developers.cloudflare.com/workers-ai">Workers AI</a> team launched <a href="https://developers.cloudflare.com/vectorize">Vectorize</a> and enabled inference on the edge, so we decided to go all in on Workers and began indexing all case files as they’re being edited so that they can be searched. As each case file is being updated in the Durable Object, the content of the file is pushed to <a href="https://developers.cloudflare.com/queues/">Cloudflare Queues</a>. This data is consumed by an indexing engine consumer that does two things: extracts and indexes indicators of compromise, and embeds the content into a vector and pushes it into Vectorize. Both of the search mechanisms also pass the reference case and file identifiers so that the case may be found upon searching.</p><p>Given how easy it is to set up Workers AI, we took the final step of implementing a full <a href="https://developers.cloudflare.com/workers-ai/tutorials/build-a-retrieval-augmented-generation-ai/">Retrieval Augmented Generation (RAG)</a> AI to allow analysts to ask questions about our previous analysis. Each question undergoes the same process as the content that is indexed. We pull out any indicators of compromise and embed the question into a vector, so we can use both results to search our indexes and Vectorize respectively, and provide the most relevant results for the request. Lastly, we send the vector data to a text-generation model using Workers AI that then returns a response to our analysts.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7jVrsni5cUJ9kv0iXuLimo/006d596729ac03191d80421c165af9f9/image3-28.png" />
            
            </figure>
    <div>
      <h3>Using RFIs and PIRs</h3>
      <a href="#using-rfis-and-pirs">
        
      </a>
    </div>
    <p>Imagine submitting an RFI for “Passive DNS Resolution - IOCs” and receiving real-time updates directly within the PIR, guiding your next steps.</p><p>Our workflow ensures that the intelligence you need is not only obtained but also used optimally. This approach empowers your team to tailor your intelligence gathering, strengthening your cybersecurity strategy and security posture.</p><p>Our mission for Cloudforce One is to equip organizations with the tools they need to stay one step ahead in the rapidly changing world of cybersecurity. The addition of RFIs and PIRs marks another milestone in this journey, empowering users with enhanced threat intelligence capabilities.</p>
    <div>
      <h3>Getting started</h3>
      <a href="#getting-started">
        
      </a>
    </div>
    <p>Cloudforce One customers can already see the PIR and RFI Dashboard in their Security Center, and they can also use the API if they prefer that option. Click to see more documentation about our <a href="https://developers.cloudflare.com/api/operations/cloudforce-one-request-list">RFI</a> and our <a href="https://developers.cloudflare.com/api/operations/cloudforce-one-priority-list">PIR</a> APIs.</p><p>If you’re looking to try out the new RFI and PIR capabilities within the Security Center, contact your Cloudflare account team or fill out <a href="https://www.cloudflare.com/en-gb/zero-trust/lp/cloudforce-one-threat-intel-subscription/?cf_target_id=99B9BF88D6D4607E503427CE17D61E89">this form</a> and someone will be in touch. Finally, if you’re interested in joining the Cloudflare team, check out our open job postings <a href="https://www.cloudflare.com/en-gb/careers/?cf_target_id=96C6F98DE231254296C355D2DDABBF2E">here</a>.</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Cloudforce One]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Threat Intelligence]]></category>
            <category><![CDATA[Application Services]]></category>
            <category><![CDATA[Visibility]]></category>
            <guid isPermaLink="false">4bKTNfcYPf9CVYUB1yStOQ</guid>
            <dc:creator>Javier Castro</dc:creator>
            <dc:creator>Alexandra Moraru</dc:creator>
        </item>
        <item>
            <title><![CDATA[Malicious “RedAlert - Rocket Alerts” application targets Israeli phone calls, SMS, and user information]]></title>
            <link>https://blog.cloudflare.com/malicious-redalert-rocket-alerts-application-targets-israeli-phone-calls-sms-and-user-information/</link>
            <pubDate>Sat, 14 Oct 2023 00:00:55 GMT</pubDate>
            <description><![CDATA[ On October 13, 2023, Cloudflare’s Cloudforce One Threat Operations Team became aware of a malicious Google Android application impersonating the real-time rocket alert app, Red Alert, which  provides real-time rocket alerts for Israeli citizens ]]></description>
            <content:encoded><![CDATA[ <p></p><p>On October 13, 2023, Cloudflare’s Cloudforce One Threat Operations Team became aware of a website hosting a Google Android Application (APK) impersonating the legitimate RedAlert - Rocket Alerts application (<a href="https://play.google.com/store/apps/details?id=com.red.alert&amp;hl=en&amp;pli=1">https://play.google.com/store/apps/details?id=com.red.alert&amp;hl=en&amp;pli=1</a>).  More than 5,000 rockets have been launched into Israel since the attacks from Hamas began on October 7th 2023.  RedAlert - Rocket Alerts developed by Elad Nava allows individuals to receive timely and precise alerts about incoming airstrikes. Many people living in Israel rely on these alerts to seek safety - a service which has become increasingly important given the newest escalations in the region.</p><p>Applications alerting of incoming airstrikes have become targets as only days ago, Pro-Palestinian hacktivist group AnonGhost exploited a vulnerability in another application, “Red Alert: Israel” by Kobi Snir. (<a href="https://cybernews.com/cyber-war/israel-redalert-breached-anonghost-hamas/">https://cybernews.com/cyber-war/israel-redalert-breached-anonghost-hamas/</a>) Their exploit allowed them to intercept requests, expose servers and APIs, and send fake alerts to some app users, including a message that a “nuclear bomb is coming”. AnonGhost also claimed they attacked other rocket alert applications, including RedAlert by Elad Nava. As of October 11, 2023, the RedAlert app was reportedly functioning normally.</p><p>In the last two days, a new malicious website (<i>hxxps://redalerts[.]me</i>) has advertised the download of well-known open source application RedAlert by Elad Nava (<a href="https://github.com/eladnava/redalert-android">https://github.com/eladnava/redalert-android</a>). Domain impersonation continues to be a popular vector for attackers, as the legitimate website for the application (<i>hxxps://redalert[.]me</i> ) differs from the malicious website by only one letter. Further, threat actors continue to exploit open source code and deploy modified, malicious versions to unsuspecting users.</p><p>The malicious website hosted links to both the iOS and the Android version of the RedAlert app. But while the link to the Apple App Store referred to the legitimate version of the RedAlert app by Elad Nava, the link supposedly referring to the Android version hosted on the Play Store directly downloads a malicious APK file. This attack demonstrates the danger of sideloading applications directly from the Internet as opposed to installing applications from the approved app store.</p><p>The malicious RedAlert version imitates the legitimate rocket alert application but simultaneously collects sensitive user data. Additional permissions requested by the malicious app include access to contacts, call logs, SMS, account information, as well as an overview of all installed apps.</p><p>The website hosting the malicious file was created on October 12, 2023 and has since been taken offline. Only users who installed the Android version of the app from this specific website are impacted and urgently advised to delete the app. Users can determine if they installed the malicious version by reviewing the permissions granted to the RedAlert app. If users are unsure whether they installed the malicious version, they can delete the RedAlert applications and reinstall the legitimate version directly in the Play Store.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6nCyNtOTncD702msYn7mzW/9550d6742b8bbf6ba382d36166da4357/pasted-image-0--13-.png" />
            
            </figure><p><i>Screenshot of the attacker site </i><a href="https://redalerts\[.\]me"><i>https://redalerts\[.\]me</i></a></p>
    <div>
      <h3>Malicious Android Package Kit (APK) Analysis</h3>
      <a href="#malicious-android-package-kit-apk-analysis">
        
      </a>
    </div>
    <p>The malicious Android Package Kit (APK) file is installed by a user when they click the Google Play button on the fake RedAlert site. Once clicked, the user downloads the app directly from the fake site at <code><i>hxxps://redalerts[.]me/app.apk</i></code>. The SHA-256 hash of the APK is <code><i>5087a896360f5d99fbf4eb859c824d19eb6fa358387bf6c2c5e836f7927921c5</i></code>.</p>
    <div>
      <h2>Capabilities</h2>
      <a href="#capabilities">
        
      </a>
    </div>
    <p>A quick analysis of the <i>AndroidManifest.xml</i> file shows several differences compared to the legitimate, open source RedAlert application. Most notable are the additional permissions needed to collect information on the victim. The permissions added are listed below:</p><ul><li><p>android.permission.GET_ACCOUNTS</p></li><li><p>android.permission.QUERY_ALL_PACKAGES</p></li><li><p>android.permission.READ_CALL_LOG</p></li><li><p>android.permission.READ_CONTACTS</p></li><li><p>android.permission.READ_PHONE_NUMBERS</p></li><li><p>android.permission.READ_PHONE_STATE</p></li><li><p>android.permission.READ_PRIVILEGED_PHONE_STATE</p></li><li><p>android.permission.READ_SMS</p></li></ul><p>The application is designed to look and act like RedAlert. However, upon opening the app, a malicious service is started in the background. The <code><i>startService()</i></code> call is the only change to the <code><i>onCreate()</i></code> method, and this begins the sequence of malicious activity, which the actor has placed in a package called <code><i>com.company.allinclusive.AI</i></code></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5SOvfo0vzlyyREVB4A9Jyt/a3a971fe5b0860bb403528579a5f5393/pasted-image-0--14-.png" />
            
            </figure><p><i>The attacker starts their malicious code within the legitimate RedAlert code com.red.alert.activities: Main.java</i></p><p>The service is run to gather data from victims’ phones and upload it to the actor’s secure server. The data is extensive and includes:</p><ul><li><p>SIM information, including IMEI and IMSI numbers, network type, country, voicemail number, PIN status, and more</p></li><li><p>Full Contact list</p></li><li><p>All SMS messages, including content and metadata for all statuses (e.g. received, outgoing, sent, etc.)</p></li><li><p>A list of accounts associated with the device</p></li><li><p>All phone calls and conversation details for including incoming, outgoing, missed, rejected, and blocked calls</p></li><li><p>Logged-in email and app accounts</p></li><li><p>List of installed applications</p></li></ul><p>The actor’s code for gathering this information is illustrated below.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/33VyzytviTDeG7qXy6aCrK/3f74918c7ceaaae9a9ce18fd650050a2/Screenshot-2023-10-13-at-3.32.27-PM.png" />
            
            </figure><p><i>com.company.allinclusive.AI: AIMain.java contains the data the attacker will capture form the target</i></p><p>Stolen data is uploaded to an HTTP server at a hardcoded IP address. The actor has a <i>Tools</i> class which details the IP address where the data is to be uploaded:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5Fh4WgPsM5kmKnuM8Jqyxh/1307c4a8306bafcdfd47cc2f5e5323b8/Screenshot-2023-10-13-at-3.31.42-PM.png" />
            
            </figure><p><b>com.company.allinclusive.AI: Tools.java stores the attackers command and control for the malware</b></p><p>Although HTTP and port 80 are specified, the actor appears to have the ability to use HTTPS and port 443 if a certificate is found bundled within the application package:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4ty1JMARyIggOGXmFoJjcE/7c4fe21747005a3882da8d2ca448583d/Screenshot-2023-10-13-at-3.30.20-PM.png" />
            
            </figure><p><i>com.company.allinclusive.AI: UploadFileAsync.java</i></p><p>Data is uploaded through a <i>Connector</i> class, written by the actor. The <i>Connector</i> is responsible for encrypting the stolen data and uploading it to the HTTP server. In this sample, files are encrypted with AES in CBC mode with PKCS5 Padding. The keys are randomly generated and appended to the packaged data, however the keys are encrypted with RSA using a public key bundled in the malicious app. Because of this, anybody who is able to intercept the stolen data will be unable to decrypt it without the actor’s private key.</p><p>The encrypted files have names that look like <i>_</i><i>.final</i>, which contain:</p><ul><li><p><i><b>_</b></i><i><b>.enc</b></i><b> (encrypted data)</b></p></li><li><p><i><b>_</b></i><i><b>.param</b></i><b> (AES encryption parameters, e.g. key and IV)</b></p></li><li><p><i><b>_</b></i><i><b>.eparam</b></i><b> (RSA parameters, e.g. public key)</b></p></li></ul>
    <div>
      <h2>Anti-Analysis Runtime Capabilities</h2>
      <a href="#anti-analysis-runtime-capabilities">
        
      </a>
    </div>
    <p>To avoid detection the actor included anti-analysis capabilities which can run at the time the app is started. The methods for anti-analysis that the attacker has included were anti-debugging, anti-emulation, and anti-test operations</p>
    <div>
      <h3>Anti-Debugging</h3>
      <a href="#anti-debugging">
        
      </a>
    </div>
    <p>The application makes a simple call using the builtin <i>android.os.Debug</i> package to see if the application is being debugged.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7n1Dsyz3tBVwTCQDzQjCpu/62e2fcf823fee0b7c1f144d1d302c557/Screenshot-2023-10-13-at-3.29.28-PM.png" />
            
            </figure><p><i>com.company.allinclusive.AI.anti.debugger: FindDebugger.java</i></p>
    <div>
      <h3>Anti-Emulation</h3>
      <a href="#anti-emulation">
        
      </a>
    </div>
    <p>The application attempts to locate certain files and identifiers to determine whether it is being run in an emulated environment. A snippet of these indicators are shown below:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5oRGahgfmW0fqsFZ3L7Bi1/c63b68f780e19a3a3d8f005db7e15c50/pasted-image-0--12--1.png" />
            
            </figure><p><i>com.company.allinclusive.AI.anti.emulator: FindEmulator.java checks for common emulators</i></p>
    <div>
      <h3>Anti-Test</h3>
      <a href="#anti-test">
        
      </a>
    </div>
    <p>The application has utilities to identify whether a test user (“monkey”) is using the application:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5bibuD77OAXj6pBVkBb012/9d5c06d0c17b43978e70bfe6101ea8d4/Screenshot-2023-10-13-at-3.28.48-PM.png" />
            
            </figure><p><i>com.company.allinclusive.AI.anti.monkey: FindMonkey.java</i></p><p>These methodologies are all rudimentary checks for whether the application is under runtime analysis. It does not, however, protect the malicious code against static analysis.</p>
    <div>
      <h2>How To Detect This Malware On Your Device</h2>
      <a href="#how-to-detect-this-malware-on-your-device">
        
      </a>
    </div>
    <p>If you have installed RedAlert on your device, the extraneous permissions added by the actor can be used to determine whether you have been compromised. The following permissions appearing on the RedAlert app (whether or not enabled) would indicate compromise:</p><ul><li><p>Call Logs</p></li><li><p>Contacts</p></li><li><p>Phone</p></li><li><p>SMS</p></li></ul>
    <div>
      <h2>How To Protect Yourself</h2>
      <a href="#how-to-protect-yourself">
        
      </a>
    </div>
    <p>You can avoid attacks like this by following the guidance below:</p><ul><li><p>Keep your mobile device up to date on the latest software version at all times</p></li><li><p>Consider using Cloudflare Teams (with <a href="https://www.cloudflare.com/zero-trust/products/gateway/">Cloudflare Gateway</a>)</p></li><li><p>Avoid using third party mobile application stores</p></li><li><p>Never install applications from Internet URLs or sideload payloads</p></li><li><p>Consider using <a href="https://1.1.1.1/family/">1.1.1.1 for families</a> to block malicious domains on your network</p></li></ul>
    <div>
      <h2>IOCs</h2>
      <a href="#iocs">
        
      </a>
    </div>
    <table><colgroup><col></col><col></col></colgroup><tbody><tr><td><p><span>Type</span></p></td><td><p><span>Indicator</span></p></td></tr><tr><td><p><span>Malicious RedAlert APK Download URL</span></p></td><td><p><span>hxxp://redalerts[.]me/app.apk</span></p></td></tr><tr><td><p><span>Malicious RedAlert APK Command and Control</span></p></td><td><p><span>hxxp://23.254.228[.]135:80/file.php</span></p></td></tr><tr><td><p><span>Malicious RedAlert APK</span></p></td><td><p><span>5087a896360f5d99fbf4eb859c824d19eb6fa358387bf6c2c5e836f7927921c5</span></p></td></tr><tr><td><p><span>Public key, RSA/ECB/PKCS1Padding</span></p></td><td><p><span>MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvBYe8dLw1TVH39EVQEwCr7kgBRtQz2M2vQbgkbr0UiTFm0Tk9KVZ1jn0uVgJ+dh1I7uuIfzFEopFQ35OxRnjmNAJsOYpYA5ZvD2llS+KUyE4TRJZGh+dfGjc98dCGCVW9aPVuyfciFNpzGU+lUV/nIbi8xmHOSzho+GZvrRWNDvJqmX7Xunjr1crAKIpG1kF8bpa9+VkoKnMOqFBTc6aPEmwj4CmeTsTy+j7ubdKc8tsdoCTGfrLzVj4wlGDjtf06dYEtZ6zvdBbzb4UA6Ilxsb12KY03qdlqlFREqCxjtJUYDEYChnpOSkrzpLOu+TTkAlW68+u6JjgE8AAAnjpIGRRNvuj5ZfTS3Ub3xEABBRUuHcesseuaN3wVwvMBIMbWJabVUWUNWYyCewxrtdrc8HStECbS/b05j2lv6Cl1Qv1iQefurL/hvfREmxlHAnkCmzTxlrEStHHnNmhWOccQI+u0VO6klJShNg8XlRsKXnqpPi3aicki+QMo3i1oWOve6aWkAIJvmHaY4Gmz0nX2foxlJ2YxOGQe0rUAqDXa8S6tYSmIyCYJoTmllvwJAEpCtOFxerZIAa/1BaxYFhH/iQUzzayJuc6ooUmKLw7q72pe3tN0cRT3RAJUmRwTcV5hL+UQgakkSzIMFBpM/rpvNC0Qy94mtpNf6iA6gbKm40CAwEAAQ==</span></p></td></tr></tbody></table><hr /><p>Under attack? Contact our <a href="https://www.cloudflare.com/under-attack-hotline/">hotline</a> to speak with someone immediately.<i>Visit</i> <a href="https://1.1.1.1/"><i>1.1.1.1</i></a> <i>from any device to get started with our free app that makes your Internet faster and safer.To learn more about our mission to help build a better Internet, start</i> <a href="https://www.cloudflare.com/learning/what-is-cloudflare/"><i>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[Cloudforce One]]></category>
            <category><![CDATA[Vulnerabilities]]></category>
            <category><![CDATA[Internet Traffic]]></category>
            <category><![CDATA[Malware]]></category>
            <category><![CDATA[Threat Intelligence]]></category>
            <guid isPermaLink="false">5EMFsMJweR3mxektZeptQt</guid>
            <dc:creator>Blake Darché</dc:creator>
            <dc:creator>Armen Boursalian</dc:creator>
            <dc:creator>Javier Castro</dc:creator>
        </item>
    </channel>
</rss>