<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0">
<id>tag:blogger.com,1999:blog-1176949257541686127</id>
<updated>2025-08-05T22:32:11.078-04:00</updated>
<category term="android security"/>
<category term="android"/>
<category term="Security"/>
<category term="chrome security"/>
<category term="chrome"/>
<category term="Open Source"/>
<category term="rust"/>
<category term="pixel"/>
<category term="google play"/>
<category term="privacy"/>
<category term="app security"/>
<category term="vulnerabilities"/>
<category term="google play protect"/>
<category term="pha family highlights"/>
<category term="#sharethemicincyber"/>
<category term="C++"/>
<category term="Titan M2"/>
<category term="diversity"/>
<category term="encryption"/>
<category term="memory safety"/>
<category term="private compute core"/>
<category term="supply chain"/>
<category term="#supplychain #security #opensource"/>
<category term="AI Security"/>
<category term="CTF"/>
<category term="Gboard"/>
<category term="Rowhammer"/>
<category term="VDP"/>
<category term="android tr"/>
<category term="big data"/>
<category term="biometrics"/>
<category term="blackhat"/>
<category term="chrome enterprise"/>
<category term="connected devices"/>
<category term="federated learning"/>
<category term="fuzzing"/>
<category term="hacking"/>
<category term="interoperability"/>
<category term="iot security"/>
<category term="kubernetes"/>
<category term="linux kernel"/>
<category term="security rewards program"/>
<category term="sigstore"/>
<category term="spyware"/>
<category term="targeted spyware"/>
<category term="tensor"/>
<category term="workshop"/>
<title type="text">Google Online Security Blog</title>
<subtitle type="html">The latest news and insights from Google on security and safety on the Internet.</subtitle>
<link href="http://security.googleblog.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default?redirect=false" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/" rel="alternate" type="text/html"/>
<link href="http://pubsubhubbub.appspot.com/" rel="hub"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default?start-index=26&max-results=25&redirect=false" rel="next" type="application/atom+xml"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<generator uri="http://www.blogger.com" version="7.00">Blogger</generator>
<openSearch:totalResults>632</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>25</openSearch:itemsPerPage>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-9038653691227621808</id>
<published>2025-07-21T17:34:00.008-04:00</published>
<updated>2025-08-04T17:40:56.573-04:00</updated>
<title type="text">Introducing OSS Rebuild: Open Source, Rebuilt to Last</title>
<content type="html"><span class="byline-author">Posted by Matthew Suozzo, Google Open Source Security Team (GOSST)</span><div><br /></div><div><span id="docs-internal-guid-0d823a3a-7fff-31cb-bbfd-deb41fcd8145"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Today we're excited to announce OSS Rebuild, a new project to strengthen trust in open source package ecosystems by reproducing upstream artifacts. As supply chain attacks continue to target widely-used dependencies, OSS Rebuild gives security teams powerful data to avoid compromise without burden on upstream maintainers.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The project comprises:</span></p><br /><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Automation</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> to derive declarative build definitions for existing PyPI (Python), npm (JS/TS), and Crates.io (Rust) packages.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://slsa.dev" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">SLSA Provenance</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> for thousands of packages across our supported ecosystems, meeting SLSA Build Level 3 requirements with no publisher intervention.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Build observability and verification tools</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> that security teams can integrate into their existing vulnerability management workflows.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Infrastructure definitions</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> to allow organizations to easily run their own instances of OSS Rebuild to rebuild, generate, sign, and distribute provenance.</span></p></li></ul><br /><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Challenges</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Open source software has become the foundation of our digital world. From critical infrastructure to everyday applications, OSS components now account for </span><a href="https://static.carahsoft.com/concrete/files/1617/1597/8665/2024_Open_Source_Security_and_Risk_Analysis_Report_WRAPPED.pdf" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">77%</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> of modern applications. With an estimated value exceeding </span><a href="https://www.hbs.edu/ris/Publication%20Files/24-038_51f8444f-502c-4139-8bf2-56eb4b65c58a.pdf" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">$12 trillion</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, open source software has never been more integral to the global economy.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Yet this very ubiquity makes open source an attractive target: Recent high-profile supply chain attacks have demonstrated sophisticated methods for compromising widely-used packages. Each incident erodes trust in open ecosystems, creating hesitation among both contributors and consumers.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The security community has responded with initiatives like </span><a href="http://scorecard.dev/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OpenSSF Scorecard</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><a href="https://blog.pypi.org/posts/2023-04-20-introducing-trusted-publishers/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">pypi's Trusted Publishers</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, and </span><a href="https://github.blog/2023-04-19-introducing-npm-package-provenance/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">npm's native SLSA support</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. However, there is no panacea: Each effort targets a certain aspect of the problem, often making tradeoffs like shifting work onto publishers and maintainers.</span></p><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Our Aim</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our aim with OSS Rebuild is to empower the security community to deeply understand and control their supply chains by making package consumption as transparent as using a source repository. Our rebuild platform unlocks this transparency by utilizing a declarative build process, build instrumentation, and network monitoring capabilities which, within the </span><a href="https://slsa.dev/spec/v1.0/levels#build-track" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">SLSA Build</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> framework, produces fine-grained, durable, trustworthy security metadata.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Building on the hosted infrastructure model that we pioneered with </span><a href="https://github.com/google/oss-fuzz" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSS Fuzz</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> for memory issue detection, OSS Rebuild similarly seeks to use hosted resources to address security challenges in open source, this time aimed at securing the software supply chain.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our vision extends beyond any single ecosystem: We are committed to bringing supply chain transparency and security to all open source software development. Our initial support for the PyPI (Python), npm (JS/TS), and Crates.io (Rust) package registries—providing rebuild provenance for many of their most popular packages—is just the beginning of our journey.</span></p><br /><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">How OSS Rebuild Works</span></h4><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfsIwZQ4rw9fIh98NeN_LIDA02i6bu13nW4MHLQtGXCLKxdCQU3IMNCoy2eYlVrnTE3ntDMAwVgplosBHL-_ElPhAQNh1kBN3Hgz6QPq0mFcSIPlVC_pUqrsnF9_s6nNRg2j6DIfrDqLGt33Futda6HmSletctGX72E7d4_s-TQ7g_dNvZPtKIboF9esHb" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="612" data-original-width="1428" height="274" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfsIwZQ4rw9fIh98NeN_LIDA02i6bu13nW4MHLQtGXCLKxdCQU3IMNCoy2eYlVrnTE3ntDMAwVgplosBHL-_ElPhAQNh1kBN3Hgz6QPq0mFcSIPlVC_pUqrsnF9_s6nNRg2j6DIfrDqLGt33Futda6HmSletctGX72E7d4_s-TQ7g_dNvZPtKIboF9esHb=w641-h274" width="641" /></a></div><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Through automation and heuristics, we determine a prospective build definition for a target package and rebuild it. We semantically compare the result with the existing upstream artifact, normalizing each one to remove instabilities that cause bit-for-bit comparisons to fail (e.g. archive compression). Once we reproduce the package, we publish the build definition and outcome via </span><a href="https://slsa.dev/spec/v0.1/provenance" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">SLSA Provenance</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. This attestation allows consumers to reliably verify a package's origin within the source history, understand and repeat its build process, and customize the build from a known-functional baseline (or maybe even use it to generate more detailed </span><a href="https://slsa.dev/spec/v1.0/faq#q-how-does-slsa-and-slsa-provenance-relate-to-sbom" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">SBOMs</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">).</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">With OSS Rebuild's existing automation for PyPI, npm, and Crates.io, most packages obtain protection effortlessly without user or maintainer intervention. Where automation isn't currently able to fully reproduce the package, we offer manual build specification so the whole community benefits from individual contributions.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">And we are also excited at the potential for AI to help reproduce packages: Build and release processes are often described in natural language documentation which, while difficult to utilize with discrete logic, is increasingly useful to language models. Our initial experiments have demonstrated the approach's viability in automating exploration and testing, with limited human intervention, even in the most complex builds.</span></p><br /><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Our Capabilities</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">OSS Rebuild helps detect several classes of supply chain compromise:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Unsubmitted Source Code</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> - When published packages contain code not present in the public source repository, OSS Rebuild will not attest to the artifact.</span></p></li><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="2" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: circle; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Real world attack: </span><a href="https://www.theregister.com/2024/12/05/solana_javascript_sdk_compromised/" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">solana/webjs (2024)</span></a></p></li></ul><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Build Environment Compromise </span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">- By creating standardized, minimal build environments with comprehensive monitoring, OSS Rebuild can detect suspicious build activity or avoid exposure to compromised components altogether.</span></p></li><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="2" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: circle; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Real world attack: </span><a href="https://www.wiz.io/blog/github-action-tj-actions-changed-files-supply-chain-attack-cve-2025-30066" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">tj-actions/changed-files (2025)</span></a></p></li></ul><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Stealthy Backdoors</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> - Even sophisticated backdoors like xz often exhibit anomalous behavioral patterns during builds. OSS Rebuild's dynamic analysis capabilities can detect unusual execution paths or suspicious operations that are otherwise impractical to identify through manual review.</span></p></li><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="2" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: circle; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Real world attack: </span><a href="https://www.akamai.com/blog/security-research/critical-linux-backdoor-xz-utils-discovered-what-to-know" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">xz-utils (2024)</span></a></p></li></ul></ul><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">For enterprises and security professionals, OSS Rebuild can...</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Enhance metadata without changing registries </span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">by enriching data for upstream packages. No need to maintain custom registries or migrate to a new package ecosystem.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Augment SBOMs </span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">by adding detailed build observability information to existing Software Bills of Materials, creating a more complete security picture.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Accelerate vulnerability response</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> by providing a path to vendor, patch, and re-host upstream packages using our verifiable build definitions.</span></p></li></ul><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">For publishers and maintainers of open source packages, OSS Rebuild can...</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Strengthen package trust</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> by providing consumers with independent verification of the packages' build integrity, regardless of the sophistication of the original build.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Retrofit historical packages' integrity</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> with high-quality build attestations, regardless of whether build attestations were present or supported at the time of publication.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Reduce CI security-sensitivity</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> allowing publishers to focus on core development work. CI platforms tend to have complex authorization and execution models and by performing separate rebuilds, the CI environment no longer needs to be load-bearing for your packages' security.</span></p></li></ul><br /><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Check it out!</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The easiest (</span><a href="https://docs.oss-rebuild.dev/storage.html" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">but not only!</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">) way to access OSS Rebuild attestations is to use the provided Go-based command-line interface. It can be compiled and installed easily:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #188038; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">$ go install github.com/google/oss-rebuild/cmd/oss-rebuild@latest</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">You can fetch OSS Rebuild's SLSA Provenance:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #188038; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">$ oss-rebuild get cratesio syn 2.0.39</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">..or explore the rebuilt versions of a particular package:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #188038; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">$ oss-rebuild list pypi absl-py</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">..or even rebuild the package for yourself:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #188038; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">$ oss-rebuild get npm lodash 4.17.20 --output=dockerfile | \</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="color: #188038; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;docker run $(docker buildx build -q -)</span></p><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Join Us in Helping Secure Open Source</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">OSS Rebuild is not just about fixing problems; it's about empowering end-users to make open source ecosystems more secure and transparent through collective action. If you're a </span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">developer, enterprise, or security researcher</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> interested in OSS security, we invite you to follow along and get involved!</span></p><br /><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Check out the code, share your ideas, and voice your feedback at </span><a href="http://github.com/google/oss-rebuild" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">github.com/google/oss-rebuild</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Explore the data and </span><a href="https://github.com/google/oss-rebuild/blob/main/CONTRIBUTING.md" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">contribute</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> to improving support for your critical ecosystems and packages.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Learn more about SLSA Provenance at </span><a href="https://slsa.dev/" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">slsa.dev</span></a></p></li></ul></span></div></content>
<link href="http://security.googleblog.com/feeds/9038653691227621808/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/9038653691227621808?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/9038653691227621808" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/9038653691227621808" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/07/introducing-oss-rebuild-open-source.html" rel="alternate" title="Introducing OSS Rebuild: Open Source, Rebuilt to Last" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEjfsIwZQ4rw9fIh98NeN_LIDA02i6bu13nW4MHLQtGXCLKxdCQU3IMNCoy2eYlVrnTE3ntDMAwVgplosBHL-_ElPhAQNh1kBN3Hgz6QPq0mFcSIPlVC_pUqrsnF9_s6nNRg2j6DIfrDqLGt33Futda6HmSletctGX72E7d4_s-TQ7g_dNvZPtKIboF9esHb=s72-w641-h274-c" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-1495335074080890598</id>
<published>2025-07-08T13:36:00.001-04:00</published>
<updated>2025-07-08T13:36:01.203-04:00</updated>
<title type="text">Advancing Protection in Chrome on Android</title>
<content type="html"><span class="byline-author">Posted by David Adrian, Javier Castro &amp; Peter Kotwicz, Chrome Security Team</span>
<p>
Android recently announced <a href="https://security.googleblog.com/2025/05/advanced-protection-mobile-devices.html">Advanced Protection</a>, which extends Google’s <a href="https://landing.google.com/intl/en_in/advancedprotection/">Advanced Protection Program</a> to a device-level security setting for Android users that need heightened security—such as journalists, elected officials, and public figures. Advanced Protection gives you the ability to activate Google’s strongest security for mobile devices, providing greater peace of mind that you’re better protected against the most sophisticated threats.
</p>
<p>
Advanced Protection acts as a single control point for at-risk users on Android that enables important security settings across applications, including many of your favorite Google apps, including Chrome. In this post, we’d like to do a deep dive into the Chrome features that are integrated with Advanced Protection, and how enterprises and users outside of Advanced Protection can leverage them.
</p>
<p>
Android Advanced Protection integrates with Chrome on Android in three main ways:
</p>
<ul>
<li><strong>Enables the “Always Use Secure Connections” </strong>setting for both public and private sites, so that users are protected from attackers reading confidential data or injecting malicious content into insecure plaintext HTTP connections. Insecure HTTP represents less than 1% of page loads for Chrome on Android. </li>
<li><strong>Enables full Site Isolation </strong>on mobile devices<strong> </strong>with 4GB+ RAM, so that potentially malicious sites are never loaded in the same process as legitimate websites. Desktop Chrome clients already have full Site Isolation.</li>
<li><strong>Reduces attack surface </strong>by disabling Javascript optimizations, so that Chrome has a smaller attack surface and is harder to exploit.</li>
</ul>
<p>
Let’s take a look at all three, learn what they do, and how they can be controlled outside of Advanced Protection.
</p>
<h3 style="text-align: left;">Always Use Secure Connections</h3>
<p>
“Always Use Secure Connections” (also known as HTTPS-First Mode in blog posts and HTTPS-Only Mode in the enterprise policy) is a Chrome setting that forces HTTPS wherever possible, and asks for explicit permission from you before connecting to a site insecurely. There may be attackers attempting to interpose on connections on any network, whether that network is a coffee shop, airport, or an Internet backbone. This setting protects users from these attackers reading confidential data and injecting malicious content into otherwise innocuous webpages. This is particularly useful for Advanced Protection users, since in 2023, plaintext HTTP was <a href="https://citizenlab.ca/2023/09/predator-in-the-wires-ahmed-eltantawy-targeted-with-predator-spyware-after-announcing-presidential-ambitions/">used as an exploitation vector during the Egyptian election</a>.
</p>
<p>
Beyond Advanced Protection, we <a href="https://blog.chromium.org/2023/08/towards-https-by-default.html">previously posted</a> about how our goal is to eventually enable “Always Use Secure Connections” by default for all Chrome users. As we work towards this goal, in the last two years we have quietly been enabling it in more places beyond Advanced Protection, to help protect more users in risky situations, while limiting the number of warnings users might click through:
</p>
<ul>
<li>We added a new variant of the setting that only warns on public sites, and doesn’t warn on local networks or single-label hostnames (e.g. <code>192.168.0.1</code>, <code>shortlink/</code>, <code>10.0.0.1</code>). These names often cannot be issued a publicly-trusted HTTPS certificate. This variant protects against most threats—accessing a public website insecurely—but still allows for users to access local sites, which may be on a more trusted network, without seeing a warning. </li>
<li>We’ve automatically enabled “Always Use Secure Connections” for public sites in Incognito Mode for the last year, since Chrome 127 in June 2024.</li>
<li>We automatically prevent downgrades from HTTPS to plaintext HTTP on sites that Chrome knows you typically access over HTTPS (a heuristic version of the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security">HSTS header</a>), since Chrome 133 in January 2025.</li></ul><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1HgJLjo8SSJOSaofi-04nW0P6izX70Lq12Y8J_Rxm_M0i5DaYCQKTD34SA9KBd4SSWP-7YrsX3N_6x9EU-t4OL54ODNAaLSTxgmHxLn-4khVXEfCrtlX__DYOaeLStl9yaCJOaP7N3FpzwAp-UzdkS9YZvPgSxCeIZSMk1O0sNqKjLsR_zTQk5PGX1XLt/s1600/Screenshot%202025-07-08%20at%2012.26.45%E2%80%AFPM.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="866" data-original-width="407" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1HgJLjo8SSJOSaofi-04nW0P6izX70Lq12Y8J_Rxm_M0i5DaYCQKTD34SA9KBd4SSWP-7YrsX3N_6x9EU-t4OL54ODNAaLSTxgmHxLn-4khVXEfCrtlX__DYOaeLStl9yaCJOaP7N3FpzwAp-UzdkS9YZvPgSxCeIZSMk1O0sNqKjLsR_zTQk5PGX1XLt/s1600/Screenshot%202025-07-08%20at%2012.26.45%E2%80%AFPM.png" /></a></div><p style="text-align: center;"><em>Always Use Secure Connections has two modes—warn on insecure public sites, and warn on any insecure site.</em>
</p>
Any user can enable “Always Use Secure Connections” in the Chrome Privacy and Security settings, regardless of if they’re using Advanced Protection. Users can choose if they would like to warn on <em>any</em> insecure site, or only insecure public sites. Enterprises can opt their fleet into either mode, and set exceptions using the <code><a href="https://chromeenterprise.google/policies/#HttpsOnlyMode">HTTPSOnlyMode</a></code> and <code><a href="https://chromeenterprise.google/policies/#HttpAllowlist">HTTPAllowlist</a></code> policies, respectively. Website operators should protect their users' confidentiality, ensure their content is delivered exactly as they intended, and avoid warnings, by deploying HTTPS.<div><br /><h3 style="text-align: left;">Full Site Isolation</h3><p style="text-align: left;"><a href="https://youtu.be/OH-bt7spDgo?si=42mRq7VdtpC1q-5P">Site Isolation</a> is a security feature in Chrome that isolates each website into its own rendering OS process. This means that different websites, even if loaded in a single tab of the same browser window, are kept completely separate from each other in memory. This isolation prevents a malicious website from accessing data or code from another website, even if that malicious website manages to exploit a vulnerability in Chrome’s renderer—a second bug to escape the renderer sandbox is required to access other sites. Site isolation improves security, but requires extra memory to have one process per site. Chrome Desktop isolates all sites by default. However, Android is particularly sensitive to memory usage, so for mobile Android form factors, when Advanced Protection is off, Chrome will only isolate a site if a user logs into that site, or if the user submits a form on that site. On Android devices with 4GB+ RAM in Advanced Protection (and on all desktop clients), Chrome will isolate <em>all</em> sites. Full Site Isolation significantly reduces the risk of cross-site data leakage for Advanced Protection users.
</p><h3 style="text-align: left;">JavaScript Optimizations and Security</h3><p style="text-align: left;">
Advanced Protection reduces the attack surface of Chrome by disabling the higher-level optimizing Javascript compilers inside V8. V8 is Chrome’s high-performance Javascript and <a href="https://webassembly.org/">WebAssembly</a> engine. The optimizing compilers in V8 make certain websites run faster, however they historically also have been a source of known exploitation of Chrome. Of all the patched security bugs in V8 with known exploitation, disabling the optimizers would have mitigated ~50%. However, the optimizers are why Chrome scores the highest on industry-wide benchmarks such as <a href="https://browserbench.org/Speedometer3.0/">Speedometer</a>. Disabling the optimizers blocks a large class of exploits, at the cost of causing performance issues for some websites.
</p><p style="text-align: left;">
Javascript optimizers can be disabled outside of Advanced Protection Mode via the “Javascript optimization &amp; security” Site Setting. The Site Setting also enables users to disable/enable Javascript optimizers on a per-site basis. Disabling these optimizing compilers is not limited to Advanced Protection. Since Chrome 133, we’ve exposed this as a Site Setting that allows users to enable or disable the higher-level optimizing compilers on a per-site basis, as well as change the default.
</p><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Dq8CpPPUekjbnx8TsxdjfADyWQwNAc4C_yzqUSk7fOmORNB_CAbEoNz9TOGr_8uhZyzBsgdShufodjp4gQAQeTZP1OF_sit9wEjBhZmRbDDp1CyOQsHBCJEGuQ1gHj2mSxoHW6ixhlmzEvcCY5ko8J7krahh8jZxNYwsGN-zTUQsJ4Psm-E810GmrAy9/s1600/Screenshot%202025-07-08%20at%2012.31.19%E2%80%AFPM.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="730" data-original-width="672" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Dq8CpPPUekjbnx8TsxdjfADyWQwNAc4C_yzqUSk7fOmORNB_CAbEoNz9TOGr_8uhZyzBsgdShufodjp4gQAQeTZP1OF_sit9wEjBhZmRbDDp1CyOQsHBCJEGuQ1gHj2mSxoHW6ixhlmzEvcCY5ko8J7krahh8jZxNYwsGN-zTUQsJ4Psm-E810GmrAy9/s1600/Screenshot%202025-07-08%20at%2012.31.19%E2%80%AFPM.png" /></a></div><p style="text-align: center;"><em>Settings -&gt; Privacy and Security -&gt; Javascript optimization and security</em>
</p><p>
This setting can be controlled by the <code><a href="https://chromeenterprise.google/policies/#DefaultJavaScriptOptimizerSetting">DefaultJavaScriptOptimizerSetting</a></code> enterprise policy, alongside <code><a href="https://chromeenterprise.google/policies/#JavaScriptOptimizerAllowedForSites">JavaScriptOptimizerAllowedForSites</a></code> and <code><a href="https://chromeenterprise.google/policies/#JavaScriptOptimizerBlockedForSites">JavaScriptOptimizerBlockedForSites</a></code> for managing the allowlist and denylist. Enterprises can use this policy to block access to the optimizer, while still allowlisting<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> the SaaS vendors their employees use on a daily basis. It’s available on Android and desktop platforms
</p><p>
Chrome aims for the default configuration to be secure for all its users, and we’re continuing to raise the bar for V8 security in the default configuration by <a href="https://v8.dev/blog/sandbox">rolling out the V8 sandbox</a>.
</p><h3 style="text-align: left;">Protecting All Users</h3><p>
Billions of people use Chrome and Android, and not all of them have the same risk profile. Less sophisticated attacks by commodity malware can be very lucrative for attackers when done at scale, but so can sophisticated attacks on targeted users. This means that we cannot expect the security tradeoffs we make for the default configuration of Chrome to be suitable for everyone.
</p><p>
Advanced Protection, and the security settings associated with it, are a way for users with varying risk profiles to tailor Chrome to their security needs, either as an individual at-risk user. Enterprises with a fleet of managed Chrome installations can also enable the underlying settings now. Advanced Protection is available on Android 16 in Chrome 137+.
</p><p>
We additionally recommend at-risk users join the <a href="https://landing.google.com/intl/en_in/advancedprotection/">Advanced Protection Program with their Google accounts</a>, which will require the account to use phishing-resistant multi-factor authentication methods and enable Advanced Protection on any of the user’s Android devices. We also recommend users enable automatic updates and always keep their Android phones and web browsers up to date.
</p><!--Footnotes themselves at the bottom.-->
<h3 style="text-align: left;">Notes</h3><div class="footnotes"><hr /><ol><li id="fn1">
Allowlisting only works on platforms capable of full site isolation—any desktop platform and Android devices with 2GB+ RAM. This is because internally allowlisting is dependent on <a href="issues.chromium.org/issues/40259221">origin isolation</a>.&nbsp;<a href="#fnref1" rev="footnote">↩</a></li></ol></div></div></content>
<link href="http://security.googleblog.com/feeds/1495335074080890598/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/1495335074080890598?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1495335074080890598" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1495335074080890598" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/07/advancing-protection-in-chrome-on.html" rel="alternate" title="Advancing Protection in Chrome on Android" type="text/html"/>
<author>
<name>Google</name>
<uri>http://www.blogger.com/profile/11822708545141062574</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1HgJLjo8SSJOSaofi-04nW0P6izX70Lq12Y8J_Rxm_M0i5DaYCQKTD34SA9KBd4SSWP-7YrsX3N_6x9EU-t4OL54ODNAaLSTxgmHxLn-4khVXEfCrtlX__DYOaeLStl9yaCJOaP7N3FpzwAp-UzdkS9YZvPgSxCeIZSMk1O0sNqKjLsR_zTQk5PGX1XLt/s72-c/Screenshot%202025-07-08%20at%2012.26.45%E2%80%AFPM.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-1436003009998740920</id>
<published>2025-06-13T12:03:00.007-04:00</published>
<updated>2025-06-13T14:49:19.308-04:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="AI Security"/>
<title type="text">Mitigating prompt injection attacks with a layered defense strategy</title>
<content type="html"><span class="byline-author">Posted by Google GenAI Security Team</span><div><br /></div><div><span id="docs-internal-guid-673cf5ee-7fff-42cb-83fa-7f963bac5563"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">With the rapid adoption of generative AI, a new wave of threats is emerging across the industry with the aim of manipulating the AI systems themselves. One such emerging attack vector is indirect prompt injections. Unlike direct prompt injections, where an attacker directly inputs malicious commands into a prompt, indirect prompt injections involve hidden malicious instructions within external data sources. These may include emails, documents, or calendar invites that instruct AI to exfiltrate user data or execute other rogue actions. As more governments, businesses, and individuals adopt generative AI to get more done, this subtle yet potentially potent attack becomes increasingly pertinent across the industry, demanding immediate attention and robust security measures.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">At Google, our teams have a longstanding precedent of investing in a defense-in-depth strategy, including robust evaluation, threat analysis, </span><a href="https://research.google/pubs/an-introduction-to-googles-approach-for-secure-ai-agents/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">AI security best practices</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><a href="https://blog.google/technology/safety-security/googles-ai-red-team-the-ethical-hackers-making-ai-safer/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">AI red-teaming</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, adversarial training, and model hardening for generative AI tools. This approach enables safer adoption of </span><a href="https://workspace.google.com/solutions/ai/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Gemini in Google Workspace</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> and the </span><a href="https://blog.google/products/gemini/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Gemini app</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (we refer to both in this blog as “Gemini” for simplicity). Below we describe our prompt injection mitigation product strategy based on extensive research, development, and deployment of improved security mitigations.</span></p><br /><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;"><span face="Arial, sans-serif" style="color: #434343; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">A layered security approach</span><span face="Arial, sans-serif" style="color: #434343; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /><br /></span></h3><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Google has taken a layered security approach introducing security measures designed for each stage of the prompt lifecycle. From Gemini 2.5 model hardening, to purpose-built machine learning (ML) models detecting malicious instructions, to system-level safeguards, we are meaningfully elevating the difficulty, expense, and complexity faced by an attacker. This approach compels adversaries to resort to methods that are either more easily identified or demand greater resources.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our model training with adversarial data significantly enhanced our defenses against indirect prompt injection attacks in Gemini 2.5 models (</span><a href="https://storage.googleapis.com/deepmind-media/Security%20and%20Privacy/Gemini_Security_Paper.pdf" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">technical details</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">). This inherent model resilience is augmented with additional defenses that we built directly into Gemini, including:&nbsp;</span></p><br /><ol style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Prompt injection content classifiers</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Security thought reinforcement</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Markdown sanitization and suspicious URL redaction</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">User confirmation framework</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">End-user security mitigation notifications</span></p></li></ol><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This layered approach to our security strategy strengthens the overall security framework for Gemini – throughout the prompt lifecycle and across diverse attack techniques.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">1. Prompt injection content classifiers</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Through collaboration with leading AI security researchers via </span><a href="https://bughunters.google.com/about/rules/google-friends/5238081279623168/abuse-vulnerability-reward-program-rules" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Google's AI Vulnerability Reward Program (VRP)</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, we've curated one of the world’s most advanced catalogs of generative AI vulnerabilities and adversarial data. Utilizing this resource, we built and are in the process of rolling out proprietary machine learning models that can detect malicious prompts and instructions within various formats, such as emails and files, drawing from real-world examples. Consequently, when users query Workspace data with Gemini, the content classifiers filter out harmful data containing malicious instructions, helping to ensure a secure end-to-end user experience by retaining only safe content. For example, if a user receives an email in Gmail that includes malicious instructions, our content classifiers help to detect and disregard malicious instructions, then generate a safe response for the user. This is in addition to built-in defenses in Gmail that automatically block more than 99.9% of spam, phishing attempts, and malware.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="border: none; display: inline-block; height: 393px; overflow: hidden; width: 624px;"><img height="393" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXePgxMV37fyKPlpp54xFHVtYLigC9Tt32y2B8dOEjRDzvL2xiwN9vx0-oNwPO19CMMNGHovtXa4dLS97sZSJICODbOrCyvKIOivcR_oJzTwM2SFG8DdFIoZPzKOvrV05G7_0fMSQw?key=qBd-QKEP_GpIw65Q_IOEgQ" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="color: #434343; font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">A diagram of Gemini’s actions based on the detection of the malicious instructions by content classifiers.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">2. Security thought reinforcement</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This technique adds targeted security instructions surrounding the prompt content to remind the large language model (LLM) to perform the user-directed task and ignore any adversarial instructions that could be present in the content. With this approach, we steer the LLM to stay focused on the task and ignore harmful or malicious requests added by a threat actor to execute indirect prompt injection attacks.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="border: none; display: inline-block; height: 393px; overflow: hidden; width: 624px;"><img height="393" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfSfilVHvpF2aOIIc5I2S0mobMGoRwXb85XXRdyCq_j2ylJ30oAaY7KrIYtpcHWs21MxkrOtT1_zpVy-R4CSk3owlx896fckltob_Fc7t7K2TYk7XZjVMWDCY-O8RE4l9QbXxKK5w?key=qBd-QKEP_GpIw65Q_IOEgQ" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="color: #434343; font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">A diagram of Gemini’s actions based on additional protection provided by the security thought reinforcement technique.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">3. Markdown sanitization and suspicious URL redaction&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our markdown sanitizer identifies external image URLs and will not render them, making the “EchoLeak” 0-click image rendering exfiltration </span><a href="https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-32711" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">vulnerability</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> not applicable to Gemini. From there, a key protection against prompt injection and data exfiltration attacks occurs at the URL level. With external data containing dynamic URLs, users may encounter unknown risks as these URLs may be designed for indirect prompt injections and data exfiltration attacks. Malicious instructions executed on a user's behalf may also generate harmful URLs. With Gemini, our defense system includes suspicious URL detection based on </span><a href="https://safebrowsing.google.com/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Google Safe Browsing</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> to differentiate between safe and unsafe links, providing a secure experience by helping to prevent URL-based attacks. For example, if a document contains malicious URLs and a user is summarizing the content with Gemini, the suspicious URLs will be redacted in Gemini’s response.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="border: none; display: inline-block; height: 391px; overflow: hidden; width: 624px;"><img height="391" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeOQ69HwjpDYi9jCb_8alM2rBNC09Kx124kotYR8xzNSXygaNI-2eMBVdMYiBJ_aH-9tGFuXXphLbCg_g74nzI9VsEuSxpLrBGuwkjH2vt2j-WAgJz0dyD1EJt6qGugfBMtTHjPnqU?key=qBd-QKEP_GpIw65Q_IOEgQ" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Gemini in Gmail provides a summary of an email thread. In the summary, there is an unsafe URL. That URL is redacted in the response and is replaced with the text “suspicious link removed”.</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">4. User confirmation framework</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Gemini also features a contextual user confirmation system. This framework enables Gemini to require user confirmation for certain actions, also known as “Human-In-The-Loop” (HITL), using these responses to bolster security and streamline the user experience. For example, potentially risky operations like deleting a calendar event may trigger an explicit user confirmation request, thereby helping to prevent undetected or immediate execution of the operation.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="border: none; display: inline-block; height: 399px; overflow: hidden; width: 429px;"><img height="399" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXegtOKYti58PeD2EGB9-tpYShPjKYJdHcv7I5u4s9WL0ZkzZy2P95ETc-RkdU1YUZWtNat9-WhfF5aekjmUiKxLNlV5yUYXUsTiXXj_RjmPd2Z50u4cUuwhFndXU5GslBudLDkGspk?key=qBd-QKEP_GpIw65Q_IOEgQ" style="margin-left: 0px; margin-top: 0px;" width="429" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The Gemini app with instructions to delete all events on Saturday. Gemini responds with the events found on Google Calendar and asks the user to confirm this action.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">5. End-user security mitigation notifications</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">A key aspect to keeping our users safe is sharing details on attacks that we’ve stopped so users can watch out for similar attacks in the future. To that end, when security issues are mitigated with our built-in defenses, end users are provided with contextual information allowing them to learn more via dedicated help center articles. For example, if Gemini summarizes a file containing malicious instructions and one of Google’s prompt injection defenses mitigates the situation, a security notification with a “Learn more” link will be displayed for the user. Users are encouraged to become more familiar with our prompt injection defenses by reading the </span><a href="https://support.google.com/docs/answer/16204578" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Help Center article</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="border: none; display: inline-block; height: 362px; overflow: hidden; width: 161px;"><img height="362" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfW5ATEo44XQK2kcE3wjUkVhF719xvF-rNzKu_1rQNwWuToygqGObc1dlJGFHobh1-94FMUbpJKWeng3giTTfse17sZHnWnm0udVBafKOKmdzstST24BJnkALrWGyCz4qD08t-Q_w?key=qBd-QKEP_GpIw65Q_IOEgQ" style="margin-left: 0px; margin-top: 0px;" width="161" /></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Gemini in Docs with instructions to provide a summary of a file. Suspicious content was detected and a response was not provided. There is a yellow security notification banner for the user and a statement that Gemini’s response has been removed, with a “Learn more” link to </span><a href="https://support.google.com/docs/answer/16204578" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">a relevant Help Center article</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;"><span face="Arial, sans-serif" style="color: #434343; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Moving forward</span></h3><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our comprehensive prompt injection security strategy strengthens the overall security framework for Gemini. Beyond the techniques described above, it also involves rigorous testing through manual and automated red teams, generative AI security BugSWAT events, strong security standards like our Secure AI Framework (SAIF), and partnerships with both external researchers via the Google AI Vulnerability Reward Program (VRP) and industry peers via the Coalition for Secure AI (CoSAI). Our commitment to trust includes collaboration with the security community to responsibly disclose AI security vulnerabilities, share our latest threat intelligence on ways we see bad actors trying to leverage AI, and offering insights into our work to build stronger prompt injection defenses.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Working closely with industry partners is crucial to building stronger protections for all of our users. To that end, we’re fortunate to have strong collaborative partnerships with numerous researchers, such as Ben Nassi (Confidentiality), Stav Cohen (Technion), and Or Yair (SafeBreach), as well as other AI Security researchers participating in our BugSWAT events and AI VRP program. We appreciate the work of these researchers and others in the community to help us red team and refine our defenses.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We continue working to make upcoming Gemini models inherently more resilient and add additional prompt injection defenses directly into Gemini later this year. To learn more about Google’s progress and research on generative AI threat actors, attack techniques, and vulnerabilities, take a look at the following resources:</span></p><br /><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://www.rsaconference.com/usa/google-cloud-security" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Beyond Speculation: Data-Driven Insights into AI and Cybersecurity</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> (RSAC 2025 conference keynote) from Google’s Threat Intelligence Group (GTIG)</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://cloud.google.com/blog/topics/threat-intelligence/adversarial-misuse-generative-ai?e=48754805" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Adversarial Misuse of Generative AI</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> (blog post) from Google’s Threat Intelligence Group (GTIG)</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://research.google/pubs/an-introduction-to-googles-approach-for-secure-ai-agents/" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Google's Approach for Secure AI Agents</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> (white paper) from Google’s Secure AI Framework (SAIF) team</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://deepmind.google/discover/blog/advancing-geminis-security-safeguards/" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Advancing Gemini's security safeguards</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> (blog post) from Google’s DeepMind team</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="https://storage.googleapis.com/deepmind-media/Security%20and%20Privacy/Gemini_Security_Paper.pdf" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline;">Lessons from Defending Gemini Against Indirect Prompt Injections</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline;"> </span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline;">(white paper) from Google’s DeepMind team</span></p></li></ul></span></div></content>
<link href="http://security.googleblog.com/feeds/1436003009998740920/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/1436003009998740920?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1436003009998740920" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1436003009998740920" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/06/mitigating-prompt-injection-attacks.html" rel="alternate" title="Mitigating prompt injection attacks with a layered defense strategy" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://lh7-rt.googleusercontent.com/docsz/AD_4nXePgxMV37fyKPlpp54xFHVtYLigC9Tt32y2B8dOEjRDzvL2xiwN9vx0-oNwPO19CMMNGHovtXa4dLS97sZSJICODbOrCyvKIOivcR_oJzTwM2SFG8DdFIoZPzKOvrV05G7_0fMSQw=s72-c?key=qBd-QKEP_GpIw65Q_IOEgQ" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-3813850667407802524</id>
<published>2025-05-30T10:59:00.005-04:00</published>
<updated>2025-05-30T11:02:16.536-04:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="chrome"/>
<category scheme="http://www.blogger.com/atom/ns#" term="chrome security"/>
<title type="text">Sustaining Digital Certificate Security - Upcoming Changes to the Chrome Root Store</title>
<content type="html"><span class="byline-author">Posted by Chrome Root Program, Chrome Security Team</span>
<p>
<em>Note: Google Chrome communicated its removal of default trust of Chunghwa Telecom and Netlock in the public forum on May 30, 2025.</em>
</p>
<p>
The <a href="https://googlechrome.github.io/chromerootprogram/">Chrome Root Program Policy</a> states that Certification Authority (CA) certificates included in the <a href="https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/root_store.md">Chrome Root Store</a> must provide value to Chrome end users that exceeds the risk of their continued inclusion. It also describes many of the <a href="https://googlechrome.github.io/chromerootprogram/#51-incident-reports">factors</a> we consider significant when CA Owners disclose and respond to incidents. When things don’t go right, we expect CA Owners to commit to meaningful and demonstrable change resulting in evidenced continuous improvement.
</p>
<p>
Chrome's confidence in the reliability of Chunghwa Telecom and Netlock as CA Owners included in the Chrome Root Store has diminished due to patterns of concerning behavior observed over the past year. These patterns represent a loss of integrity and fall short of expectations, eroding trust in these CA Owners as publicly-trusted certificate issuers trusted by default in Chrome. To safeguard Chrome’s users, and preserve the integrity of the <a href="https://security.googleblog.com/2023/05/how-chrome-root-program-keeps-users-safe.html#:~:text=Chrome%20uses%20digital,the%20%E2%80%9CWeb%20PKI.%E2%80%9D">Chrome Root Store</a>, we are taking the following action.
</p>
<p>
<span style="text-decoration:underline;">Upcoming change in Chrome 139 and higher:</span>
</p>
<ul>
<li>Transport Layer Security (TLS) server authentication certificates validating to the following root CA certificates whose earliest Signed Certificate Timestamp (SCT) is dated after July 31, 2025 11:59:59 PM UTC, will no longer be trusted by default.</li>
<ul>
<li><a href="https://crt.sh/?q=c0a6f4dc63a24bfdcf54ef2a6a082a0a72de35803e2ff5ff527ae5d87206dfd5">OU=ePKI Root Certification Authority,O=Chunghwa Telecom Co., Ltd.,C=TW</a></li>
<li><a href="https://crt.sh/?q=f015ce3cc239bfef064be9f1d2c417e1a0264a0a94be1f0c8d121864eb6949cc">CN=HiPKI Root CA - G1,O=Chunghwa Telecom Co., Ltd.,C=TW</a></li>
<li><a href="https://crt.sh/?q=6c61dac3a2def031506be036d2a6fe401994fbd13df9c8d466599274c446ec98">CN=NetLock Arany (Class Gold) Főtanúsítvány,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU</a></li></ul>
</li><li>
TLS server authentication certificates validating to the above set of roots whose <em>earliest</em> SCT is <span style="text-decoration:underline;">on or before</span> <strong>July 31, 2025 11:59:59 PM UTC,</strong> will be unaffected by this change. </li>
</ul>
<p>
This approach attempts to minimize disruption to existing subscribers using a previously announced Chrome <a href="https://source.chromium.org/chromium/chromium/src/+/main:net/cert/root_store.proto;drc=a783c3bab474ff68e675e2753f91c92ca817e072;l=15?q=f:root_store.proto&ss=chromium">feature</a> to remove default trust based on the SCTs in certificates.
</p>
<p>
Additionally, should a Chrome user or enterprise <a href="https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md#How-does-the-Chrome-Certificate-Verifier-integrate-with-platform-trust-stores-for-local-trust-decisions">explicitly trust</a> any of the above certificates on a platform and version of Chrome <a href="https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md#when-did-these-features-land">relying</a> on the <a href="https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/root_store.md">Chrome Root Store</a> (e.g., explicit trust is conveyed through a Group Policy Object on Windows), the SCT-based constraints described above will be overridden and certificates will function as they do today.
</p>
<p>
To further minimize risk of disruption, website operators are encouraged to review the “Frequently Asked Questions" listed below.
</p>
<h3>Why is Chrome taking action?</h3>
<p>
CAs serve a privileged and trusted role on the internet that underpin encrypted connections between browsers and websites. With this tremendous responsibility comes an expectation of adhering to reasonable and consensus-driven security and compliance expectations, including those defined by the <a href="https://cabforum.org/working-groups/server/baseline-requirements/requirements/">CA/Browser Forum TLS Baseline Requirements</a>.
</p>
<p>
Over the past several months and years, we have observed a pattern of compliance failures, unmet improvement commitments, and the absence of tangible, measurable progress in response to publicly disclosed incident reports. When these factors are considered in aggregate and considered against the inherent risk each publicly-trusted CA poses to the internet, continued public trust is no longer justified.
</p>
<h3>When will this action happen?</h3>
<p>
The action of Chrome, by default, no longer trusting new TLS certificates issued by these CAs will begin on approximately August 1, 2025, affecting certificates issued at that point or later.
</p>
<p>
This action will occur in Versions of <a href="https://chromiumdash.appspot.com/schedule">Chrome 139</a> and greater on Windows, macOS, ChromeOS, Android, and Linux. Apple policies prevent the Chrome Certificate Verifier and corresponding Chrome Root Store from being used on Chrome for iOS.
</p>
<h3>What is the user impact of this action?</h3>
<p>
By default, Chrome users in the above populations who navigate to a website serving a certificate from Chunghwa Telecom or Netlock issued <strong>after</strong> July 31, 2025 will see a full page interstitial <a href="https://untrusted-root.badssl.com/">similar to this one</a>.
</p>
<p>
Certificates issued by other CAs are not impacted by this action.
</p>
<h3>How can a website operator tell if their website is affected?</h3>
<p>
Website operators can determine if they are affected by this action by using the Chrome Certificate Viewer.
</p>
<p>
<span style="text-decoration:underline;">Use the Chrome Certificate Viewer</span>
</p>
<ul>
<li>Navigate to a website (e.g., <a href="https://www.google.com">https://www.google.com</a>)</li>
<li>Click the “Tune" icon</li>
<li>Click “Connection is Secure" </li>
<li>Click “Certificate is Valid" (the Chrome Certificate Viewer will open)</li>
<ul>
<li><strong>Website owner action is <span style="text-decoration:underline;">not</span> required</strong>, if the “Organization (O)” field listed beneath the “Issued By" heading <strong>does not</strong> contain “Chunghwa Telecom" , “行政院” , “NETLOCK Ltd.”, or “NETLOCK Kft.”</li>
<li><strong>Website owner action is required</strong>, if the “Organization (O)” field listed beneath the “Issued By" heading contains “Chunghwa Telecom" , “行政院” , “NETLOCK Ltd.”, or “NETLOCK Kft.”</li>
</ul></li>
</ul>
<h3>What does an affected website operator do?</h3>
<p>
We recommend that affected website operators transition to a new publicly-trusted CA Owner as soon as reasonably possible. To avoid adverse website user impact, action <strong>must</strong> be completed <strong>before</strong> the existing certificate(s) expire if expiry is planned to take place <strong>after</strong> July 31, 2025.
</p>
<p>
While website operators could delay the impact of blocking action by choosing to collect and install a new TLS certificate issued from Chunghwa Telecom or Netlock before Chrome’s blocking action begins on August 1, 2025, website operators will inevitably need to collect and install a new TLS certificate from one of the many other CAs included in the <a href="https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/root_store.md">Chrome Root Store</a>.
</p>
<h3>Can I test these changes before they take effect?</h3>
<p>
Yes.
</p>
<p>
A command-line flag was added beginning in Chrome 128 that allows administrators and power users to simulate the effect of an SCTNotAfter distrust constraint as described in this blog post.
</p>
<p>
<span style="text-decoration: underline;">How to: Simulate an SCTNotAfter distrust</span></p><p>1. Close all open versions of Chrome</p><p>2. Start Chrome using the following command-line flag, substituting variables described below with actual values</p>
<div class="code">
<i>--test-crs-constraints=$[Comma Separated List of Trust Anchor Certificate SHA256 Hashes]:sctnotafter=$[epoch_timestamp]</i>
</div><p>
</p><p>
3. Evaluate the effects of the flag with test websites</p><p>
<p>
Learn more about command-line flags <a href="https://developer.chrome.com/docs/web-platform/chrome-flags#command-line_flags">here</a>.
</p>
<h3>I use affected certificates for my internal enterprise network, do I need to do anything?</h3>
<p>
Beginning in Chrome 127, enterprises can override Chrome Root Store constraints like those described in this blog post by installing the corresponding root CA certificate as a <a href="https://chromium.googlesource.com/chromium/src/+/main/net/data/ssl/chrome_root_store/faq.md#How-does-the-Chrome-Certificate-Verifier-integrate-with-platform-trust-stores-for-local-trust-decisions">locally-trusted root</a> on the platform Chrome is running (e.g., installed in the Microsoft Certificate Store as a Trusted Root CA).
</p>
<h3>How do enterprises add a CA as locally-trusted?</h3>
<p>
Customer organizations should use <a href="https://chromeenterprise.google/policies/#CACertificates">this</a> enterprise policy or defer to platform provider guidance for trusting root CA certificates.
</p>
<h3>What about other Google products?</h3>
<p>
Other Google product team updates may be made available in the future.
</p></content>
<link href="http://security.googleblog.com/feeds/3813850667407802524/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/3813850667407802524?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/3813850667407802524" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/3813850667407802524" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/05/sustaining-digital-certificate-security-chrome-root-store-changes.html" rel="alternate" title="Sustaining Digital Certificate Security - Upcoming Changes to the Chrome Root Store" type="text/html"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-2734899265680414650</id>
<published>2025-05-23T07:57:00.000-04:00</published>
<updated>2025-05-23T07:57:56.388-04:00</updated>
<title type="text">Tracking the Cost of Quantum Factoring</title>
<content type="html"><span class="byline-author">Posted by Craig Gidney, Quantum Research Scientist, and Sophie Schmieg, Senior Staff Cryptography Engineer&nbsp;</span><div><br /></div><div><span id="docs-internal-guid-3f867679-7fff-3eae-84b0-0610fb0f5a39"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="background-color: white; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Google Quantum AI's mission is to build best in class quantum computing for </span><a href="https://research.google/blog/developing-industrial-use-cases-for-physical-simulation-on-future-error-corrected-quantum-computers/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="background-color: white; color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">otherwise unsolvable problems</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. For decades the quantum and security communities have also known that large-scale quantum computers will at some point in the future likely be able to break many of today’s secure public key cryptography algorithms, such as </span><a href="https://en.wikipedia.org/wiki/RSA_cryptosystem" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Rivest–Shamir–Adleman (RSA)</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. Google has long worked with the U.S. National Institute of Standards and Technology (NIST) and others in government, industry, and academia to develop and transition to post-quantum cryptography (PQC), which is expected to be resistant to quantum computing attacks. As quantum computing technology continues to advance, ongoing multi-stakeholder collaboration and action on PQC is critical.</span></p><div><br /></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In order to plan for the transition from today’s cryptosystems to an era of PQC, it's important the size and performance of a future quantum computer that could likely break current cryptography algorithms is carefully characterized. Yesterday, we published a <a href="https://arxiv.org/abs/2505.15917">preprint </a>demonstrating that 2048-bit RSA encryption could theoretically be broken by a quantum computer with 1 million noisy qubits running for one week. This is a 20-fold decrease in the number of qubits from </span><a href="https://arxiv.org/abs/1905.09749" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">our previous estimate</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, published in 2019. Notably, quantum computers with relevant error rates currently have on the order of only 100 to 1000 qubits, and the National Institute of Standards and Technology (NIST) recently released </span><a href="https://www.federalregister.gov/documents/2024/08/14/2024-17956/announcing-issuance-of-federal-information-processing-standards-fips-fips-203-module-lattice-based" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">standard PQC algorithms</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> that are expected to be resistant to future large-scale quantum computers. However, this new result does underscore the importance of migrating to these standards in line with </span><a href="https://nvlpubs.nist.gov/nistpubs/ir/2024/NIST.IR.8547.ipd.pdf" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">NIST recommended timelines</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Estimated resources for factoring have been steadily decreasing</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Quantum computers break RSA by factoring numbers, using Shor’s algorithm. Since Peter Shor </span><a href="https://ieeexplore.ieee.org/document/365700" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">published</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> this algorithm in 1994, the estimated number of qubits needed to run it has steadily decreased. For example, in 2012, it was </span><a href="https://doi.org/10.1103/PhysRevA.86.032324" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">estimated</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> that a 2048-bit RSA key could be broken by a quantum computer with a billion physical qubits. In 2019, using the same physical assumptions – which consider qubits with a slightly lower error rate than Google Quantum AI’s </span><a href="https://doi.org/10.1038/s41586-024-08449-y" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">current quantum computers</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> – the estimate was </span><a href="https://doi.org/10.22331/q-2021-04-15-433" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">lowered</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> to 20 million physical qubits.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_tljknRmP1Ypp9OiFdhj4dSP3FPYTp8WsIDrJWcQvLIJkziuUT1bE4eTU6zkmHovjQ9wafhaIlDvFYhT-OhHoNnJVfk2DI5uz3gBwwtNN2SLTz4Nuqi_Eehrrs9UnCY8OWe_8RVYEBuNgBXZeIZ7Cld9WzuuS8K5i1dW0LKKiPGTzNim6hoDSCjb46FZV/s620/Screenshot%202025-05-22%20at%204.07.26%E2%80%AFPM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="350" data-original-width="620" height="325" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_tljknRmP1Ypp9OiFdhj4dSP3FPYTp8WsIDrJWcQvLIJkziuUT1bE4eTU6zkmHovjQ9wafhaIlDvFYhT-OhHoNnJVfk2DI5uz3gBwwtNN2SLTz4Nuqi_Eehrrs9UnCY8OWe_8RVYEBuNgBXZeIZ7Cld9WzuuS8K5i1dW0LKKiPGTzNim6hoDSCjb46FZV/w575-h325/Screenshot%202025-05-22%20at%204.07.26%E2%80%AFPM.png" width="575" /></a></div><p></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center; text-indent: 36pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center; text-indent: 36pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><i>Historical estimates of the number of physical qubits needed to factor 2048-bit RSA integers.</i></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">This result represents a 20-fold decrease compared to our estimate from 2019</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The reduction in physical qubit count comes from two sources: better algorithms and better error correction – whereby qubits used by the algorithm ("logical qubits") are redundantly encoded across many physical qubits, so that errors can be detected and corrected.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">On the algorithmic side, the key change is to compute an approximate modular exponentiation rather than an exact one. An algorithm for doing this, while using only small work registers, was discovered </span><a href="https://eprint.iacr.org/2024/222" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">in 2024 by Chevignard and Fouque and Schrottenloher</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. Their algorithm used 1000x more operations than prior work, but we found ways to reduce that overhead down to 2x.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">On the error correction side, the key change is tripling the storage density of idle logical qubits by adding a second layer of error correction. Normally more error correction layers means more overhead, but a good combination was </span><a href="https://doi.org/10.1038/s41467-025-59714-1" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">discovered</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> by the Google Quantum AI team in 2023. Another notable error correction improvement is using "magic state cultivation", </span><a href="https://arxiv.org/abs/2409.17595" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">proposed</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> by the Google Quantum AI team in 2024, to reduce the workspace required for certain basic quantum operations. These error correction improvements aren't specific to factoring and also reduce the required resources for other quantum computations like in chemistry and materials simulation.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Security implications</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">NIST recently </span><a href="https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">concluded</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> a PQC competition that resulted in the first set of PQC standards. These algorithms can already be deployed to defend against quantum computers well before a working cryptographically relevant quantum computer is built.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To assess the security implications of quantum computers, however, it’s instructive to additionally take a closer look at the affected algorithms (see </span><a href="https://bughunters.google.com/blog/5108747984306176/google-s-threat-model-for-post-quantum-cryptography" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">here</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> for a detailed look): RSA and Elliptic Curve Diffie-Hellman. As asymmetric algorithms, they are used for encryption in transit, including encryption for messaging services, as well as digital signatures (widely used to prove the authenticity of documents or software, e.g. the identity of websites). For asymmetric encryption, in particular encryption in transit, the motivation to migrate to PQC is made more urgent due to the fact that an adversary can collect ciphertexts, and later decrypt them once a quantum computer is available, known as a “store now, decrypt later” attack. Google has therefore been encrypting traffic both </span><a href="https://blog.chromium.org/2024/05/advancing-our-amazing-bet-on-asymmetric.html" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">in Chrome</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> and </span><a href="https://cloud.google.com/blog/products/identity-security/why-google-now-uses-post-quantum-cryptography-for-internal-comms?e=48754805" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">internally</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, switching to the standardized version of ML-KEM once it became available. Notably </span><span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">not</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> affected is symmetric cryptography, which is primarily deployed in encryption at rest, and to enable some stateless services.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">For signatures, things are more complex. Some signature use cases are similarly urgent, e.g., when public keys are fixed in hardware. In general, the landscape for signatures is mostly remarkable due to the higher complexity of the transition, since signature keys are used in many different places, and since these keys tend to be longer lived than the usually ephemeral encryption keys. Signature keys are therefore harder to replace and much more attractive targets to attack, especially when compute time on a quantum computer is a limited resource. This complexity likewise motivates moving earlier rather than later. To enable this, we have </span><a href="https://cloud.google.com/blog/products/identity-security/announcing-quantum-safe-digital-signatures-in-cloud-kms?e=48754805" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">added</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> PQC signature schemes in public preview in Cloud KMS.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The </span><a href="https://nvlpubs.nist.gov/nistpubs/ir/2024/NIST.IR.8547.ipd.pdf" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">initial public draft</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> of the NIST internal report on the transition to post-quantum cryptography standards states that vulnerable systems should be deprecated after 2030 and disallowed after 2035. Our work highlights the importance of adhering to this recommended timeline.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">More from Google on PQC: </span><a href="https://cloud.google.com/security/resources/post-quantum-cryptography?e=48754805" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">https://cloud.google.com/security/resources/post-quantum-cryptography?e=48754805</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span></p></span><br /></div></content>
<link href="http://security.googleblog.com/feeds/2734899265680414650/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/2734899265680414650?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/2734899265680414650" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/2734899265680414650" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/05/tracking-cost-of-quantum-factori.html" rel="alternate" title="Tracking the Cost of Quantum Factoring" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_tljknRmP1Ypp9OiFdhj4dSP3FPYTp8WsIDrJWcQvLIJkziuUT1bE4eTU6zkmHovjQ9wafhaIlDvFYhT-OhHoNnJVfk2DI5uz3gBwwtNN2SLTz4Nuqi_Eehrrs9UnCY8OWe_8RVYEBuNgBXZeIZ7Cld9WzuuS8K5i1dW0LKKiPGTzNim6hoDSCjb46FZV/s72-w575-h325-c/Screenshot%202025-05-22%20at%204.07.26%E2%80%AFPM.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-4284088541533635953</id>
<published>2025-05-13T12:59:00.019-04:00</published>
<updated>2025-05-14T12:28:23.434-04:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="android"/>
<category scheme="http://www.blogger.com/atom/ns#" term="android security"/>
<title type="text">What’s New in Android Security and Privacy in 2025</title>
<content type="html"><span class="byline-author">Posted by Dave Kleidermacher, VP Engineering, Android Security and Privacy
</span>
<p>
Android’s intelligent protections keep you safe from everyday dangers. Our dedication to your security is validated by security experts, who consistently <a href="https://omdia.tech.informa.com/om124947/mobile-device-security-scorecard-2024">rank</a> top Android devices highest in security, and score Android smartphones, led by the Pixel 9 Pro, as <a href="https://www.leviathansecurity.com/blog/2025-mobile-platform-fraud-prevention-assessment">leaders in anti-fraud efficacy</a>.<br><br>Android is always developing new protections to keep you, your device, and your data safe. Today, we’re announcing new features and enhancements that build on our industry-leading protections to help keep you safe from scams, fraud, and theft on Android.
</p>
<h3><strong>Smarter protections against phone call scams</strong></h3>
<p>
Our research shows that phone scammers often try to trick people into performing specific actions to initiate a scam, like changing default device security settings or granting elevated permissions to an app. These actions can result in spying, fraud, and other abuse by giving an attacker deeper access to your device and data. To combat phone scammers, we’re working to block specific actions and warn you of these sophisticated attempts. This happens completely on device and is applied only with conversations with non-contacts.
</p>
<p>
Android’s new in-call protections<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup> provide an additional layer of defense, preventing you from taking risky security actions during a call like:
</p>
<ul>
<li>Disabling <a href="https://support.google.com/googleplay/answer/2812853?hl=en">Google Play Protect</a>, Android’s built-in security protection, that is on by default and continuously scans for malicious app behavior, no matter the download source.</li>
<li>Sideloading an app for the first time from a web browser, messaging app or other source – which may not have been vetted for security and privacy by Google. </li>
<li>Granting accessibility permissions, which can give a newly downloaded malicious app access to gain control over the user's device and steal sensitive/private data, like banking information. </li>
</ul>
<p>
And if you’re screen sharing during a phone call, Android will now automatically prompt you to stop sharing at the end of a call. These protections help safeguard you against scammers that attempt to gain access to sensitive information to conduct fraud.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjow61g9yHqra-E4XmwWfw1eGul9-mS1FzQEpgk65h0LkwTG9sojL0eSKruDS4LjZ31AGDOkNbSCM3A8zo5EEQQziHfxV6yZmo0883nK_JeoGBzKQowypG26j07kcR1mUOaKasvPEIM7z_BbKdHn51Zz4ZSvU4UKCDCVibJpxXWQWvE9T75OxMIuDscDfFt/s3852/In-call%20scam%20protections.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="400" data-original-height="3852" data-original-width="1819" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjow61g9yHqra-E4XmwWfw1eGul9-mS1FzQEpgk65h0LkwTG9sojL0eSKruDS4LjZ31AGDOkNbSCM3A8zo5EEQQziHfxV6yZmo0883nK_JeoGBzKQowypG26j07kcR1mUOaKasvPEIM7z_BbKdHn51Zz4ZSvU4UKCDCVibJpxXWQWvE9T75OxMIuDscDfFt/s400/In-call%20scam%20protections.png"/></a></div>
</p>
<p>
<h3><strong>Piloting enhanced in-call protection for banking apps</strong></h3><br>Screen sharing scams are becoming quite common, with fraudsters often impersonating banks, government agencies, and other trusted institutions – using screen sharing to guide users to perform costly actions such as mobile banking transfers. To better protect you from these attacks, we’re piloting new in-call protections for banking apps, starting in the UK.
</p>
<p>
When you launch a participating banking app while screen sharing with an unknown contact, your Android device will warn you about the potential dangers and give you the option to end the call and to stop screen sharing with one tap.
</p>
<p>
This feature will be enabled automatically for participating banking apps whenever you're on a phone call with an unknown contact on Android 11+ devices. We are working with UK banks Monzo, NatWest and Revolut to pilot this feature for their customers in the coming weeks and will assess the results of the pilot ahead of a wider roll out.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgazI7OnC0_YruQgR-UJnwAW9pMl9EhAv4S46-smwzVK5E2L9Ba9y8BnkejL1p_RsoblFqiQ0eTOmoscdozHKclGdO6eimKZvBaEJldWVPZHC6TOI5LsHq0T75dWUSiqZ5CK2_sq3MFoD8_FmSdSTgRelChy_EhxtuDmeXtdWHpoIW-T0QHnLrR46cI2UoT/s3852/Bank%20App%20Scam%20Warning.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="400" data-original-height="3852" data-original-width="1819" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgazI7OnC0_YruQgR-UJnwAW9pMl9EhAv4S46-smwzVK5E2L9Ba9y8BnkejL1p_RsoblFqiQ0eTOmoscdozHKclGdO6eimKZvBaEJldWVPZHC6TOI5LsHq0T75dWUSiqZ5CK2_sq3MFoD8_FmSdSTgRelChy_EhxtuDmeXtdWHpoIW-T0QHnLrR46cI2UoT/s400/Bank%20App%20Scam%20Warning.png"/></a></div>
</p>
<h3><br><strong>Making real-time Scam Detection in Google Messages even more intelligent</strong></h3>
<p>
<strong><br></strong>We <a href="https://security.googleblog.com/2025/03/new-ai-powered-scam-detection-features.html">recently launched</a> AI-powered Scam Detection in Google Messages and Phone by Google to protect you from conversational scams that might sound innocent at first, but turn malicious and can lead to financial loss or data theft. When Scam Detection discovers a suspicious conversation pattern, it warns you in real-time so you can react before falling victim to a costly scam. <br><br>AI-powered Scam Detection is always improving to help keep you safe while also keeping your privacy in mind. With Google’s advanced on-device AI, your conversations stay private to you. All message processing remains on-device and you’re always in control. You can turn off Spam Protection, which includes Scam Detection, in your Google Messages at any time.
</p>
<p>
Prior to targeting conversational scams, Scam Detection in Google Messages focused on analyzing and detecting <a href="https://security.googleblog.com/2024/10/5-new-protections-on-google-messages.html">package delivery and job seeking scams</a>. We’ve now expanded our detections to help protect you from a wider variety of sophisticated scams including:
</p>
<ul>
<li>Toll road and other billing fee scams </li>
<li>Crypto scams</li>
<li>Financial impersonation scams </li>
<li>Gift card and prize scams </li>
<li>Technical support scams </li>
<li>And more</li>
</ul>
These enhancements apply to all Google Messages users.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiq6VPWebm1gTF3gjiRENp_h6p9FWGJ2f6BzjgCD-tEeO6Phek7d9Z2S1RG5qa2mWxZ9riVnKipcR7wQTsbssIoojt5veJ52ZeKQvm7LQ6mK0APyS3y8YQuOeX1x1i__za5VvOYQBlaqUOW-O45Z-q_J-GApDIFoPIBbIoubFGt8Mf3Ib2iu5oEXYh0oG9/s3835/Scam%20Detection%20%28Caiman%29.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="400" data-original-height="3835" data-original-width="1814" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiq6VPWebm1gTF3gjiRENp_h6p9FWGJ2f6BzjgCD-tEeO6Phek7d9Z2S1RG5qa2mWxZ9riVnKipcR7wQTsbssIoojt5veJ52ZeKQvm7LQ6mK0APyS3y8YQuOeX1x1i__za5VvOYQBlaqUOW-O45Z-q_J-GApDIFoPIBbIoubFGt8Mf3Ib2iu5oEXYh0oG9/s400/Scam%20Detection%20%28Caiman%29.png"/></a></div>
</p><br>
<h3><strong>Fighting fraud and impersonation with Key Verifier</strong><br></h3>
<p>
To help protect you from scammers who try to impersonate someone you know, we’re launching a helpful tool called Key Verifier. The feature allows you and the person you’re messaging to verify the identity of the other party through public encryption keys, protecting your end-to-end encrypted messages in Google Messages. By verifying contact keys in your Google Contacts app (through a QR code scanning or number comparison), you can have an extra layer of assurance that the person on the other end is genuine and that your conversation is private with them. <br>
</p>
<p>
Key Verifier provides a visual way for you and your contact to quickly confirm that your secret keys match, strengthening your confidence that you’re communicating with the intended recipient and not a scammer. For example, if an attacker gains access to a friend’s phone number and uses it on another device to send you a message – which can happen as a result of a SIM swap attack – their contact's verification status will be marked as no longer verified in the Google Contacts app, suggesting your friend’s account may be compromised or has been changed. Key Verifier will launch later this summer in Google Messages on Android 10+ devices.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpeph5euEeeDQHOlrJJ9kB136S2AATQd6QqzZ9v3K8P72lpeOKJkY7aYxfg2Va4PdAUXj1jVP2og-0FOMX5Un7MBRS4Bkm-_JMFW4yGpu0xHD89fBQLL9HR7yCYUt2aH0S3N4piTHcqfXo_VuXAwLtbLiclIcd3KPH0GtsYfVstcgsaUVhzOJ6m7pM8GET/s3891/Key%20Verifier%20combined.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="400" data-original-height="3852" data-original-width="3891" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpeph5euEeeDQHOlrJJ9kB136S2AATQd6QqzZ9v3K8P72lpeOKJkY7aYxfg2Va4PdAUXj1jVP2og-0FOMX5Un7MBRS4Bkm-_JMFW4yGpu0xHD89fBQLL9HR7yCYUt2aH0S3N4piTHcqfXo_VuXAwLtbLiclIcd3KPH0GtsYfVstcgsaUVhzOJ6m7pM8GET/s400/Key%20Verifier%20combined.png"/></a></div>
</p>
<h3><strong>Comprehensive mobile theft protection, now even stronger</strong></h3>
<p>
<br>Physical device theft can lead to financial fraud and data theft, with the value of your banking and payment information many times exceeding the value of your phone. This is one of the reasons why last year we launched the mobile industry’s most comprehensive suite of <a href="https://security.googleblog.com/2024/10/android-theft-protection.html">theft protection</a> features to protect you before, during, and after a theft. Since launch, our theft protection features have helped protect data on hundreds of thousands of devices that may have fallen into the wrong hands. This includes devices that were locked by Remote Lock or Theft Detection Lock and remained locked for over 48 hours.
</p>
<p>
Most recently, we launched <a href="https://security.googleblog.com/2025/01/android-theft-protection-identity-check-expanded-features.html">Identity Check</a> for Pixel and Samsung One UI 7 devices, providing an extra layer of security even if your PIN or password is compromised. This protection will also now be available from more device manufacturers on supported devices that upgrade to Android 16.
</p>
<p>
Coming later this year, we’re further hardening Factory Reset protections, which will restrict all functionalities on devices that are reset without the owner’s authorization. You'll also gain more control over our <a href="https://support.google.com/accounts/answer/6160491?hl=en">Remote Lock</a> feature with the addition of a security challenge question, helping to prevent unauthorized actions.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKABHmoqb3bZSeHL4335vvdxmjy3YtYhiA-umoOjCpme8DBW_xGmOncmxYsBzdiA5iM6ArfvvAxPSJESedWd9ei-J_tnPT4tU2M2TSz-8NVay6Py2EI6YERWgofmq2dGr8KH08DqGXHRmBQMz_El669tceurFkA14qpZNZlfCpnDqOp9ArHfw9rE6jGGCd/s3891/FRP%20and%20Remote%20Lock%20security%20question%20combined.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="400" data-original-height="3852" data-original-width="3891" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKABHmoqb3bZSeHL4335vvdxmjy3YtYhiA-umoOjCpme8DBW_xGmOncmxYsBzdiA5iM6ArfvvAxPSJESedWd9ei-J_tnPT4tU2M2TSz-8NVay6Py2EI6YERWgofmq2dGr8KH08DqGXHRmBQMz_El669tceurFkA14qpZNZlfCpnDqOp9ArHfw9rE6jGGCd/s400/FRP%20and%20Remote%20Lock%20security%20question%20combined.png"/></a></div>
</p>
<p>
We’re also enhancing your security against thieves in Android 16 by providing more protection for one-time passwords that are received when your phone is locked.<strong> </strong>In higher risk scenarios<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup>, Android will hide one-time passwords on your lock screen, ensuring that only you can see them after unlocking your device. <br><br>
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWyK3UKkP2KDahi0NNKJl2dBz0EnAuYuxSDVmWY0Zu4y5dHvrPvoAqk4yrOdIrMxlVNtHHBw46N7KdIZ_DAOOvfOxLe5gdATM3hRyBcHRLIMf5LH35NobLh87TXxtQPDLxQciCneyhF9MXWLtT-90JylcOGeGUrnFwjYk8Mf5N8cGal6kn4B2rCQHQmu-i/s3852/OTP%20lock%20screen%20protection.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="400" data-original-height="3852" data-original-width="1819" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWyK3UKkP2KDahi0NNKJl2dBz0EnAuYuxSDVmWY0Zu4y5dHvrPvoAqk4yrOdIrMxlVNtHHBw46N7KdIZ_DAOOvfOxLe5gdATM3hRyBcHRLIMf5LH35NobLh87TXxtQPDLxQciCneyhF9MXWLtT-90JylcOGeGUrnFwjYk8Mf5N8cGal6kn4B2rCQHQmu-i/s400/OTP%20lock%20screen%20protection.png"/></a></div>
</p>
<h3><strong>Advanced Protection: Google’s strongest security for mobile devices</strong></h3>
<p>
Protecting users who need heightened security has been a long-standing commitment at Google, which is why we have our <a href="https://landing.google.com/intl/en_in/advancedprotection/">Advanced Protection Program</a> that provides Google’s strongest protections against targeted attacks.<br><br>To enhance these existing device defenses, Android 16 extends Advanced Protection with a device-level security setting for Android users. Whether you’re an at-risk individual – such as a journalist, elected official, or public figure – or you just prioritize security, Advanced Protection gives you the ability to activate Google’s strongest security for mobile devices, providing greater peace of mind that you’re protected against the most sophisticated threats.
</p>
<p>
Advanced Protection is available on devices with Android 16. Learn more in our <a href="https://security.googleblog.com/2025/05/advanced-protection-mobile-devices.html">blog</a>.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhia8RAF24s4G62lyYo_53G1UngXY2d7M8bflBlJvpTUKhwwCiLJ9NrOc43SGOMO_ZIJD3X6E1QJy_HMO-LLh4UK07iCabwQuy5c1fnf0_k9HMxlIgR4WNnvVTKEvHHrI2-KA8SnqsH2pzwypEWw56BzNxaXg7-8MgPSSYyW9pMsZJpkWBdnGMT33-3Hu4b/s3852/Advanced%20Protection.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="400" data-original-height="3852" data-original-width="1819" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhia8RAF24s4G62lyYo_53G1UngXY2d7M8bflBlJvpTUKhwwCiLJ9NrOc43SGOMO_ZIJD3X6E1QJy_HMO-LLh4UK07iCabwQuy5c1fnf0_k9HMxlIgR4WNnvVTKEvHHrI2-KA8SnqsH2pzwypEWw56BzNxaXg7-8MgPSSYyW9pMsZJpkWBdnGMT33-3Hu4b/s400/Advanced%20Protection.png"/></a></div>
</p>
<h3><strong> More intelligent defenses against bad apps with Google Play Protect</strong></h3>
<p>
One way malicious developers try to trick people is by hiding or changing their app icon, making unsafe apps more difficult to find and remove. Now, Google Play Protect <a href="https://security.googleblog.com/2024/11/new-real-time-protections-on-Android.html">live threat detection</a> will catch apps and alert you when we detect this deceptive behavior. This feature will be available to Google Pixel 6+ and a selection of new devices from other manufacturers in the coming months.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFOWqW8D-v4sSdWKr2dg3JBnZ91Tk4Yi1LJpnrt72HxwrjY-bBIb28AJPaZ_aD3Wbw6l3v1cbO2OHGZrC-9Bw83sKvG1TkOrp42PCiFwClUTuk3rb4HoQr4yANgBvROQnHxRJe_KTf1N5W_q1vzVKinf8Ql9EznSo4TpwQQHayVgSMxjaKIAMW6zU-asdt/s1926/Live%20threat%20detection%20%281%29%20%281%29.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="400" data-original-height="1926" data-original-width="910" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFOWqW8D-v4sSdWKr2dg3JBnZ91Tk4Yi1LJpnrt72HxwrjY-bBIb28AJPaZ_aD3Wbw6l3v1cbO2OHGZrC-9Bw83sKvG1TkOrp42PCiFwClUTuk3rb4HoQr4yANgBvROQnHxRJe_KTf1N5W_q1vzVKinf8Ql9EznSo4TpwQQHayVgSMxjaKIAMW6zU-asdt/s400/Live%20threat%20detection%20%281%29%20%281%29.png"/></a></div>
</p>
<p>
Google Play Protect always checks each app before it gets installed on your device, regardless of the install source. It conducts <a href="https://security.googleblog.com/2023/10/enhanced-google-play-protect-real-time.html">real-time scanning</a> of an app, enhanced by on-device machine learning, when users try to install an app that has never been seen by Google Play Protect to help detect emerging threats.
</p>
<p>
We’ve made Google Play Protect’s on-device capabilities smarter to help us identify more malicious applications even faster to keep you safe. Google Play Protect now uses a new set of on-device <a href="https://virustotal.github.io/yara/">rules</a> to specifically look for text or binary patterns to quickly identify malware families. If an app shows these malicious patterns, we can alert you before you even install it. And to keep you safe from new and emerging malware and their variants, we will update these rules frequently for better classification over time.
</p>
<p>
This update to Google Play Protect is now available globally for all Android users with Google Play services.
</p>
<h3><strong> Always advancing Android security</strong></h3>
<p>
<br>In addition to new features that come in numbered Android releases, we're constantly enhancing your protection on Android through seamless Google Play services updates and other <a href="https://blog.google/technology/safety-security/how-were-using-ai-to-combat-the-latest-scams/">improvements</a>, ensuring you benefit from the latest security advancements continuously. This allows us to rapidly deploy critical defenses and keep you ahead of emerging threats, making your Android experience safer every day.<br><br>Through close collaboration with our partners across the Android ecosystem and the broader security community, we remain focused on bringing you security enhancements and innovative new features to help keep you safe.
</p>
<!-- Footnotes themselves at the bottom. -->
<h2>Notes</h2>
<div class="footnotes">
<hr>
<ol><li id="fn1">
<p>
In-call protection for disabling Google Play Protect is available on Android 6+ devices. Protections for sideloading an app and turning on accessibility permissions are available on Android 16 devices.&nbsp;<a href="#fnref1" rev="footnote">&#8617;</a><li id="fn2">
<p>
When a user’s device is not connected to Wi-Fi and has not been recently unlocked&nbsp;<a href="#fnref2" rev="footnote">&#8617;</a>
</ol></div></content>
<link href="http://security.googleblog.com/feeds/4284088541533635953/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/4284088541533635953?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/4284088541533635953" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/4284088541533635953" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/05/whats-new-in-android-security-privacy-2025.html" rel="alternate" title="What’s New in Android Security and Privacy in 2025" type="text/html"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjow61g9yHqra-E4XmwWfw1eGul9-mS1FzQEpgk65h0LkwTG9sojL0eSKruDS4LjZ31AGDOkNbSCM3A8zo5EEQQziHfxV6yZmo0883nK_JeoGBzKQowypG26j07kcR1mUOaKasvPEIM7z_BbKdHn51Zz4ZSvU4UKCDCVibJpxXWQWvE9T75OxMIuDscDfFt/s72-c/In-call%20scam%20protections.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-3412153442126761276</id>
<published>2025-05-13T12:59:00.017-04:00</published>
<updated>2025-05-13T14:04:26.321-04:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="android"/>
<category scheme="http://www.blogger.com/atom/ns#" term="android security"/>
<title type="text">Advanced Protection: Google’s Strongest Security for Mobile Devices</title>
<content type="html"><span class="byline-author">Posted by Il-Sung Lee, Group Product Manager, Android Security</span>
<p>
Protecting users who need heightened security has been a long-standing commitment at Google, which is why we have our <a href="https://landing.google.com/intl/en_in/advancedprotection/">Advanced Protection Program</a> that provides Google’s strongest protections against targeted attacks.<br><br>To enhance these existing device defenses, Android 16 extends Advanced Protection with a device-level security setting for Android users. Whether you’re an at-risk individual – such as a journalist, elected official, or public figure – or you just prioritize security, Advanced Protection gives you the ability to activate Google’s strongest security for mobile devices, providing greater peace of mind that you’re protected against the most sophisticated threats.
</p>
<p>
<h3><strong>Simple to activate, powerful in protection</strong></h3><p>Advanced Protection ensures all of Android's highest security features are enabled and are seamlessly working together to safeguard you against online attacks, harmful apps, and data risks. <br><br>Advanced Protection activates a powerful array of security features, combining new capabilities with pre-existing ones that have earned top ratings in <a href="https://services.google.com/fh/files/misc/mobile_device_security_scorecard_2024.pdf">security comparisons</a>, all designed to protect your device across several critical areas.<br><br>We're also introducing innovative, Android-specific features, such as Intrusion Logging. This industry-first feature securely backs up device logs in a privacy-preserving and tamper-resistant way, accessible only to the user. These logs enable a forensic analysis if a device compromise is ever suspected.
</p>
<p>
Advanced Protection gives users:
</p>
<ul>
<li><strong>Best-in-class protection, minimal disruption:</strong> Advanced Protection gives users the option to equip their devices with Android’s most effective security features for proactive defense, with a user-friendly and low-friction experience.</li>
<li><strong>Easy activation:</strong> Advanced Protection makes security easy and accessible. You don’t need to be a security expert to benefit from enhanced security. </li>
<li><strong>Defense-in-depth: </strong>Once a user turns on Advanced Protection, the system prevents accidental or malicious disablement of the individual security features under the Advanced Protection umbrella. This reflects a "defense-in-depth" strategy, where multiple security layers work together.</li>
<li><strong>Seamless security integration with apps: </strong>Advanced Protection acts as a single control point that enables important security settings across many of your favorite Google apps, including Chrome, Google Message, and Phone by Google. Advanced Protection will also incorporate third-party applications that choose to integrate in the future.<strong><br></strong></li>
</ul>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpOX6brq1JJ9qQqy7w91bC9E00p_ctgmF1AXRQUKBBcZuzXeqENMhWcwSLiXtITkRmXs9x4-ecPkQyc5Op29Etv4jU-FoqYiknAPhOSuHx-wh4QPSNfgloKz3QLopk8XIlIXwuII7rpC3SkqtPdasiYckOfrP_3eAGR6NEYxXc9s0T5qss0f_YsL2umBpL/s3867/Advanced%20Protection%20combined.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="400" data-original-height="3852" data-original-width="3867" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpOX6brq1JJ9qQqy7w91bC9E00p_ctgmF1AXRQUKBBcZuzXeqENMhWcwSLiXtITkRmXs9x4-ecPkQyc5Op29Etv4jU-FoqYiknAPhOSuHx-wh4QPSNfgloKz3QLopk8XIlIXwuII7rpC3SkqtPdasiYckOfrP_3eAGR6NEYxXc9s0T5qss0f_YsL2umBpL/s400/Advanced%20Protection%20combined.png"/></a></div>
<p>
<h3><strong>How your Android device becomes fortified with Advanced Protection </strong></h3>
</p>
<p>
Advanced Protection manages the following existing and new security features for your device, ensuring they are activated and cannot be disabled across critical protection areas:
</p>
<p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx660nq5Ioqk6mXsxweVu-BGO5l_KG5g5LOmib66vr7e3keic8QeXzteB8Ad-EbB52RcEDeYbuE6B9OJ62s51VxmCU3jw5niqEeQx8p0uByWDAr6Zb2H3zANvZM5r69hQoBL7HxLETlSnuppW6Et28jkgLLpsE1-z8Vu6SoYHs2zXjHl5Ck79K9qzkAiXK/s1600/Advanced%20Protection%20table%20%281%20column%29.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="11837" data-original-width="4965" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx660nq5Ioqk6mXsxweVu-BGO5l_KG5g5LOmib66vr7e3keic8QeXzteB8Ad-EbB52RcEDeYbuE6B9OJ62s51VxmCU3jw5niqEeQx8p0uByWDAr6Zb2H3zANvZM5r69hQoBL7HxLETlSnuppW6Et28jkgLLpsE1-z8Vu6SoYHs2zXjHl5Ck79K9qzkAiXK/s1600/Advanced%20Protection%20table%20%281%20column%29.png"/></a></div>
<h3><strong> Continuously evolving Advanced Protection</strong></h3><p>With the release of Android 16, users who choose to activate Advanced Protection will gain immediate access to a core suite of enhanced security features. Additional Advanced Protection features like Intrusion Logging, USB protection, the option to disable auto-reconnect to insecure networks, and integration with Scam Detection for Phone by Google will become available later this year.
</p>
<p>
We are committed to continuously expanding the security and privacy capabilities within Advanced Protection, so users can benefit from the best of Android’s powerful security features.
</p></content>
<link href="http://security.googleblog.com/feeds/3412153442126761276/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/3412153442126761276?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/3412153442126761276" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/3412153442126761276" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/05/advanced-protection-mobile-devices.html" rel="alternate" title="Advanced Protection: Google’s Strongest Security for Mobile Devices" type="text/html"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpOX6brq1JJ9qQqy7w91bC9E00p_ctgmF1AXRQUKBBcZuzXeqENMhWcwSLiXtITkRmXs9x4-ecPkQyc5Op29Etv4jU-FoqYiknAPhOSuHx-wh4QPSNfgloKz3QLopk8XIlIXwuII7rpC3SkqtPdasiYckOfrP_3eAGR6NEYxXc9s0T5qss0f_YsL2umBpL/s72-c/Advanced%20Protection%20combined.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-6392506608742168193</id>
<published>2025-05-08T12:59:00.001-04:00</published>
<updated>2025-05-08T12:59:22.695-04:00</updated>
<title type="text">Using AI to stop tech support scams in Chrome</title>
<content type="html"><span class="byline-author">Posted by Jasika Bawa, Andy Lim, and Xinghui Lu, Google Chrome Security</span>
<p>
Tech support scams are an increasingly prevalent form of cybercrime, characterized by deceptive tactics aimed at extorting money or gaining unauthorized access to sensitive data. In a tech support scam, the goal of the scammer is to trick you into believing your computer has a serious problem, such as a virus or malware infection, and then convince you to pay for unnecessary services, software, or grant them remote access to your device. Tech support scams on the web often employ alarming pop-up warnings mimicking legitimate security alerts. We've also observed them to use full-screen takeovers and disable keyboard and mouse input to create a sense of crisis.
</p>
<p>
Chrome has always worked with Google Safe Browsing to help keep you safe online. Now, with this week's launch of Chrome 137, Chrome will offer an additional layer of protection using the on-device Gemini Nano large language model (LLM). This new feature will leverage the LLM to generate signals that will be used by Safe Browsing in order to deliver higher confidence verdicts about potentially dangerous sites like tech support scams.
</p>
<p>
Initial research using LLMs has shown that they are relatively effective at understanding and classifying the varied, complex nature of websites. As such, we believe we can leverage LLMs to help detect scams at scale and adapt to new tactics more quickly. But why on-device? Leveraging LLMs on-device allows us to see threats <em>when</em> users see them. We’ve found that the average malicious site exists for less than 10 minutes, so on-device protection allows us to detect and block attacks that haven't been crawled before. The on-device approach also empowers us to see threats <em>the way</em> users see them. Sites can render themselves differently for different users, often for legitimate purposes (e.g. to account for device differences, offer personalization, provide time-sensitive content), but sometimes for illegitimate purposes (e.g. to evade security crawlers) – as such, having visibility into how sites are presenting themselves to real users enhances our ability to assess the web.
</p>
<p>
<strong>How it works</strong>
</p>
<p>
At a high level, here's how this new layer of protection works.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdBy208g6OvBj96GRY-gYdb-cZ_IgKRDRkXh3-hLO3hR8IyCBIZifB6dnNP_vIfLFkoDb18TQeNJ-rDQKftNE9784jClEgqkx_8jsI1EJeaKcAaVSGhp41a2frCVKtBkjAhpCwI3u7bnW2wEJ8V9VQoTwxc-gsWE6oKNh6Ps01FPQg54tHxCzOq2Nk_O2g/s1600/Screenshot%202025-05-07%20at%202.35.55%E2%80%AFPM.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="534" data-original-width="939" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdBy208g6OvBj96GRY-gYdb-cZ_IgKRDRkXh3-hLO3hR8IyCBIZifB6dnNP_vIfLFkoDb18TQeNJ-rDQKftNE9784jClEgqkx_8jsI1EJeaKcAaVSGhp41a2frCVKtBkjAhpCwI3u7bnW2wEJ8V9VQoTwxc-gsWE6oKNh6Ps01FPQg54tHxCzOq2Nk_O2g/s1600/Screenshot%202025-05-07%20at%202.35.55%E2%80%AFPM.png"/></a></div>
<p style="text-align: center">
Overview of how on-device LLM assistance in mitigating scams works
</p>
<p>
When a user navigates to a potentially dangerous page, specific triggers that are characteristic of tech support scams (for example, the use of the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Keyboard/lock">keyboard lock API</a>) will cause Chrome to evaluate the page using the on-device Gemini Nano LLM. Chrome provides the LLM with the contents of the page that the user is on and queries it to extract security signals, such as the intent of the page. This information is then sent to Safe Browsing for a final verdict. If Safe Browsing determines that the page is likely to be a scam based on the LLM output it receives from the client, in addition to other intelligence and metadata about the site, Chrome will show a warning interstitial.
</p>
<p>
This is all done in a way that preserves performance and privacy. In addition to ensuring that the LLM is only triggered sparingly and run locally on the device, we carefully manage resource consumption by considering the number of tokens used, running the process asynchronously to avoid interrupting browser activity, and implementing throttling and quota enforcement mechanisms to limit GPU usage. LLM-summarized security signals are only sent to Safe Browsing for users who have opted-in to the <a href="https://support.google.com/chrome/answer/9890866?hl=en&co=GENIE.Platform%3DDesktop&oco=0#zippy=%2Cenhanced-protection">Enhanced Protection mode of Safe Browsing</a> in Chrome, giving them protection against threats Google may not have seen before. Standard Protection users will also benefit indirectly from this feature as we add newly discovered dangerous sites to blocklists.
</p>
<p>
<strong>Future considerations</strong>
</p>
<p>
The scam landscape continues to evolve, with bad actors constantly adapting their tactics. Beyond tech support scams, in the future we plan to use the capabilities described in this post to help detect other popular scam types, such as package tracking scams and unpaid toll scams. We also plan to utilize the growing power of Gemini to extract additional signals from website content, which will further enhance our detection capabilities. To protect even more users from scams, we are working on rolling out this feature to Chrome on Android later this year. And finally, we are collaborating with our research counterparts to explore solutions to potential exploits such as prompt injection in content and timing bypass.
</p>
</content>
<link href="http://security.googleblog.com/feeds/6392506608742168193/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/6392506608742168193?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/6392506608742168193" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/6392506608742168193" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/05/using-ai-to-stop-tech-support-scams-in.html" rel="alternate" title="Using AI to stop tech support scams in Chrome" type="text/html"/>
<author>
<name>Google</name>
<uri>http://www.blogger.com/profile/11822708545141062574</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdBy208g6OvBj96GRY-gYdb-cZ_IgKRDRkXh3-hLO3hR8IyCBIZifB6dnNP_vIfLFkoDb18TQeNJ-rDQKftNE9784jClEgqkx_8jsI1EJeaKcAaVSGhp41a2frCVKtBkjAhpCwI3u7bnW2wEJ8V9VQoTwxc-gsWE6oKNh6Ps01FPQg54tHxCzOq2Nk_O2g/s72-c/Screenshot%202025-05-07%20at%202.35.55%E2%80%AFPM.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-8658392310115427210</id>
<published>2025-04-04T14:53:00.028-04:00</published>
<updated>2025-04-04T15:54:57.258-04:00</updated>
<title type="text"> Google announces Sec-Gemini v1, a new experimental cybersecurity model </title>
<content type="html"><span class="byline-author">Posted by Elie Burzstein and Marianna Tishchenko, Sec-Gemini team</span><div><span id="docs-internal-guid-71c2d7e6-7fff-48bf-cdde-faea037e55cf"><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2iLBsDwjQZ5dcZiB5fLbEDTriscDFw_MxjgrGXQiKqBuCAl5fA2D9qlcmncyfJhanbUhGvXV5FmyTBlAB-6cve9DVOwsuMqaZCEd6Mb1xb5TI5eYinYsM9lX5lZPPT9fBzSrWrosR4btlaX9uELKwotgYMuwyilH37MOx_0-J_bQ-R7zw7zSmW5Jyoh9/s1920/banner-sec-gemini-v1.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="271" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2iLBsDwjQZ5dcZiB5fLbEDTriscDFw_MxjgrGXQiKqBuCAl5fA2D9qlcmncyfJhanbUhGvXV5FmyTBlAB-6cve9DVOwsuMqaZCEd6Mb1xb5TI5eYinYsM9lX5lZPPT9fBzSrWrosR4btlaX9uELKwotgYMuwyilH37MOx_0-J_bQ-R7zw7zSmW5Jyoh9/w482-h271/banner-sec-gemini-v1.jpg" width="482" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><p></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Today, we’re announcing Sec-Gemini v1, a new experimental AI model focused on advancing cybersecurity AI frontiers.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">As outlined a year ago, defenders face the daunting task of securing against all cyber threats, while attackers need to successfully find and exploit only a single vulnerability. This fundamental asymmetry has made securing systems extremely difficult, time consuming and error prone. AI-powered cybersecurity workflows have the potential to help shift the balance back to the defenders by force multiplying cybersecurity professionals like never before.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Effectively powering SecOps workflows requires state-of-the-art reasoning capabilities and extensive current cybersecurity knowledge. Sec-Gemini v1 achieves this by combining Gemini’s advanced capabilities with near real-time cybersecurity knowledge and tooling. This combination allows it to achieve superior performance on key cybersecurity workflows, including incident root cause analysis, threat analysis, and vulnerability impact understanding.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We firmly believe that successfully pushing AI cybersecurity frontiers to decisively tilt the balance in favor of the defenders requires a strong collaboration across the cybersecurity community. This is why we are making Sec-Gemini v1 freely available to select organizations, institutions, professionals, and NGOs for research purposes.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Sec-Gemini v1 outperforms other models on key cybersecurity benchmarks as a result of its advanced integration of Google Threat Intelligence (GTI), </span><a href="https://osv.dev/" style="text-decoration-line: none;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSV</span></a><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, and other key data sources. Sec-Gemini v1 outperforms other models on CTI-MCQ, a leading threat intelligence benchmark, by at least 11% (See Figure 1). It also outperforms other models by at least 10.5% on the CTI-Root Cause Mapping benchmark (See Figure 2):</span></p><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy89jfgtn6XfSvNYnUPO2fCpjprGRpqIGJN8chB3kAUITDnR2hdhLOHNxjQUQmALd06fbYZ2psN0qQx3lem1KvrFDv5EgYd9t-D726j9z_E3WlMB67qyKUXmqAUUsQIv9iCJFgEAWWmcHBK9JiGa59RPp8WES6WLePd5U2q0BhAi-_1_pmTyrj2kgLvF3M/s3840/sec-gemini-mcq-v2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="3840" height="354" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy89jfgtn6XfSvNYnUPO2fCpjprGRpqIGJN8chB3kAUITDnR2hdhLOHNxjQUQmALd06fbYZ2psN0qQx3lem1KvrFDv5EgYd9t-D726j9z_E3WlMB67qyKUXmqAUUsQIv9iCJFgEAWWmcHBK9JiGa59RPp8WES6WLePd5U2q0BhAi-_1_pmTyrj2kgLvF3M/w630-h354/sec-gemini-mcq-v2.png" width="630" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Figure 1</span><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: Sec-Gemini v1 outperforms other models on the CTI-MCQ Cybersecurity Threat Intelligence benchmark.</span></p><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ2NXgo_Ad2DvSmb7s5lvXfuIFKLmJVcG0nfD0JicVcj70sPVh1sHiJzl8xOGJODKlNS9AxIQP_GOfk_aojjuJpKcUTJtRAo7a_iBdanSxQMoeBpgnUR35YtifWimRb4cKDqDsEjACrerR5ZZ-BHncz6fr_G7UWaCzDo8x6jQ0WthroD_By96IPcEh7eQq/s3840/sec-gemini-rcm-v2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2160" data-original-width="3840" height="357" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ2NXgo_Ad2DvSmb7s5lvXfuIFKLmJVcG0nfD0JicVcj70sPVh1sHiJzl8xOGJODKlNS9AxIQP_GOfk_aojjuJpKcUTJtRAo7a_iBdanSxQMoeBpgnUR35YtifWimRb4cKDqDsEjACrerR5ZZ-BHncz6fr_G7UWaCzDo8x6jQ0WthroD_By96IPcEh7eQq/w635-h357/sec-gemini-rcm-v2.png" width="635" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Figure 2</span><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: Sec-Gemini v1 has outperformed other models in a Cybersecurity Threat Intelligence-Root Cause Mapping (CTI-RCM) benchmark that evaluates an LLM's ability to understand the nuances of vulnerability descriptions, identify vulnerabilities underlying root causes, and accurately classify them according to the CWE taxonomy.</span></p><div><span><br /></span></div><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Below is an example of the comprehensiveness of Sec-Gemini v1’s answers in response to key cybersecurity questions. First, Sec-Gemini v1 is able to determine that Salt Typhoon is a threat actor (not all models do) and provides a comprehensive description of that threat actor, thanks to its deep integration with Mandiant Threat intelligence data.</span></p><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqmyEAE4n0E5vAFWT0JUWRM5yhFsDUppsy-yLU6RJHqKGTUb5vHxgxKkJqADIjpffelRRAMjLNIR8GkclAeV7jJMpb7R0BtokYKd_hmMs6hwc2rsKzI8n0ostR9aZxFi6SMgv8NlezW6EHbfJPW7zubdZl5R3t6KqCgmmMqvLPXWctvYwhb2z1-xMX5iS/s1204/sec-gemini-ti-v2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="627" data-original-width="1204" height="369" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAqmyEAE4n0E5vAFWT0JUWRM5yhFsDUppsy-yLU6RJHqKGTUb5vHxgxKkJqADIjpffelRRAMjLNIR8GkclAeV7jJMpb7R0BtokYKd_hmMs6hwc2rsKzI8n0ostR9aZxFi6SMgv8NlezW6EHbfJPW7zubdZl5R3t6KqCgmmMqvLPXWctvYwhb2z1-xMX5iS/w706-h369/sec-gemini-ti-v2.png" width="706" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: -4.5pt; margin-top: 0pt;"><br /></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Next, in response to a question about the vulnerabilities in the Salt Typhoon description, Sec-Gemini v1 outputs not only vulnerability details (thanks to its integration with OSV data, the open-source vulnerabilities database operated by Google), but also contextualizes the vulnerabilities with respect to threat actors (using Mandiant data). With Sec-Gemini v1, analysts can understand the risk and threat profile associated with specific vulnerabilities faster.</span></p><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVc2aMRO1xZtnTYc2mSrvlIyRSVYmoN9nKaF3MlEbmFCKPLoCxlzXPxNPgT3fzfQ_eW5w9WUbHQKb1bWDeaPbDqKtszerCHjpxBH026J45jLNGsyPrlw9xwhu3QhZWzxbZYrUYWaMeIHUE4QvcMXWQMmzgnrd3sKFu-EJKK84zF3SKzAlb9xU9j6t6NDhz/s1204/sec-gemini-cve-v2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="627" data-original-width="1204" height="366" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVc2aMRO1xZtnTYc2mSrvlIyRSVYmoN9nKaF3MlEbmFCKPLoCxlzXPxNPgT3fzfQ_eW5w9WUbHQKb1bWDeaPbDqKtszerCHjpxBH026J45jLNGsyPrlw9xwhu3QhZWzxbZYrUYWaMeIHUE4QvcMXWQMmzgnrd3sKFu-EJKK84zF3SKzAlb9xU9j6t6NDhz/w700-h366/sec-gemini-cve-v2.png" width="700" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><br /><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">If you are interested in collaborating with us on advancing the AI cybersecurity frontier, please request early access to Sec-Gemini v1 via </span><a href="https://docs.google.com/forms/d/1MBVz-2Zf7u8fEiZlP2_Kw_ZIlu-NQ372dkodFhqcYaQ/edit" style="text-decoration-line: none;"><span face="&quot;Google Sans Text&quot;, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">this form</span></a><span face="&quot;Google Sans Text&quot;, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. </span></span><br /><br /><br /><br /><br /><br /><br /><br /></div></content>
<link href="http://security.googleblog.com/feeds/8658392310115427210/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/8658392310115427210?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/8658392310115427210" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/8658392310115427210" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/04/google-launches-sec-gemini-v1-new.html" rel="alternate" title=" Google announces Sec-Gemini v1, a new experimental cybersecurity model " type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2iLBsDwjQZ5dcZiB5fLbEDTriscDFw_MxjgrGXQiKqBuCAl5fA2D9qlcmncyfJhanbUhGvXV5FmyTBlAB-6cve9DVOwsuMqaZCEd6Mb1xb5TI5eYinYsM9lX5lZPPT9fBzSrWrosR4btlaX9uELKwotgYMuwyilH37MOx_0-J_bQ-R7zw7zSmW5Jyoh9/s72-w482-h271-c/banner-sec-gemini-v1.jpg" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-2453153095504753937</id>
<published>2025-04-04T13:00:00.000-04:00</published>
<updated>2025-04-04T13:00:39.435-04:00</updated>
<title type="text">Taming the Wild West of ML: Practical Model Signing with Sigstore</title>
<content type="html"><span class="byline-author">Posted by Mihai Maruseac, Google Open Source Security Team (GOSST)</span><div><br /></div><div><br /></div><div><span id="docs-internal-guid-a10726a9-7fff-f692-f6b7-18bb0beac320"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In partnership with NVIDIA and HiddenLayer, as part of the </span><a href="http://openssf.org/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Open Source Security Foundation</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, we are now launching the first stable version of </span><a href="https://pypi.org/project/model-signing/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">our model signing library</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. Using digital signatures like those from </span><a href="http://sigstore.dev/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Sigstore</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, we allow users to verify that the model used by the application is exactly the model that was created by the developers. In this blog post we will illustrate why this release is important from Google’s point of view.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">With the advent of LLMs, the ML field has entered an era of rapid evolution. We have seen remarkable progress leading to weekly launches of various applications which incorporate ML models to perform tasks ranging from customer support, software development, and even performing security critical tasks.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">However, this has also opened the door to a new wave of security threats. </span><a href="https://userpages.cs.umbc.edu/hpirsiav/papers/hidden_aaai20.pdf" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Model</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> and </span><a href="https://blog.barracuda.com/2024/04/03/generative-ai-data-poisoning-manipulation" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">data poisoning</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><a href="https://hiddenlayer.com/innovation-hub/indirect-prompt-injection-of-claude-computer-use/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">prompt injection</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><a href="https://hiddenlayer.com/innovation-hub/prompt-injection-attacks-on-llms/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">prompt leaking</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> and </span><a href="https://hiddenlayer.com/innovation-hub/the-tactics-and-techniques-of-adversarial-ml/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">prompt evasion</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> are just a few of the risks that have recently been in the news. Garnering less attention are the risks around the ML supply chain process: since models are an uninspectable collection of weights (sometimes also with arbitrary code), an attacker can </span><a href="https://hiddenlayer.com/innovation-hub/weaponizing-machine-learning-models-with-ransomware/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">tamper</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> with them and achieve significant impact to those using the models. Users, developers, and practitioners need to examine an important question during their risk assessment process: “can I trust this model?”</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Since its launch, </span><a href="https://saif.google/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Google’s Secure AI Framework</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (SAIF) has created guidance and technical solutions for creating AI applications that users can trust. A first step in achieving trust in the model is to permit users to verify its integrity and provenance, to prevent tampering across all processes from training to usage, via cryptographic signing.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="color: #93c47d; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">The ML supply chain</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To understand the need for the model signing project, let’s look at the way ML powered applications are developed, with an eye to where malicious tampering can occur.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Applications that use advanced AI models are typically developed in at least three different stages. First, a large foundation model is trained on large datasets. Next, a separate ML team finetunes the model to make it achieve good performance on application specific tasks. Finally,&nbsp; this fine-tuned model is embedded into an application.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirFnLgF-xOqlXxchjcODsEud658EcnN_yViNmDeVS9VNKDwUZAvbgGCvUUzBm3Pau5xfSjELbV_fVsajWxAzCrH0rRIF5kOSZBpd0JBFTn1ImeL4-6inFTLqv2HUtMouOJy-HEgJ4S1zqdD0HsjijinoSR2TGDNT0PHLqJlS2brnktpBa7TxidvE1Ys1dp/s672/Screenshot%202025-04-04%20at%209.50.42%E2%80%AFAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="274" data-original-width="672" height="253" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirFnLgF-xOqlXxchjcODsEud658EcnN_yViNmDeVS9VNKDwUZAvbgGCvUUzBm3Pau5xfSjELbV_fVsajWxAzCrH0rRIF5kOSZBpd0JBFTn1ImeL4-6inFTLqv2HUtMouOJy-HEgJ4S1zqdD0HsjijinoSR2TGDNT0PHLqJlS2brnktpBa7TxidvE1Ys1dp/w623-h253/Screenshot%202025-04-04%20at%209.50.42%E2%80%AFAM.png" width="623" /></a></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The three steps involved in building an application that uses large language models.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">These three stages are usually handled by different teams, and potentially even different companies, since each stage requires specialized expertise. To make models available from one stage to the next, practitioners leverage </span><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">model hubs</span><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, which are repositories for storing models. </span><a href="https://kaggle.com/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Kaggle</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> and </span><a href="https://huggingface.co/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">HuggingFace</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> are popular open source options, although internal model hubs could also be used.</span></p><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This separation into stages creates multiple opportunities where a malicious user (or external threat actor who has compromised the internal infrastructure) could tamper with the model. This could range from just a slight alteration of the model weights that control model behavior, to </span><a href="https://arxiv.org/abs/2206.07840" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">injecting architectural backdoors</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> — completely new model behaviors and capabilities that could be triggered only on specific inputs. It is also possible to exploit the serialization format and inject arbitrary code execution in the model as saved on disk — our </span><a href="https://storage.googleapis.com/gweb-research2023-media/pubtools/7769.pdf" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">whitepaper on AI supply chain integrity</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> goes into more details on how popular model serialization libraries could be exploited. The following diagram summarizes the risks across the ML supply chain for developing a single model, as discussed in the whitepaper.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmyFX8ulsCDPqyt5wddDVeYg0sbWhCQSCdzl5mamsidfd2hF-hO3Bpx0OMCleAUwEa_KEz-kdBbAX0_9PTWj47HbERCcaO14zGbak5hs4DfEIafIHZ3hSkVkPwN5DgBcb0tuMkr3DKnEg0HNnkFAtImVmblrw5R85nvJz1V8FIg9Qka5Cd8IounucjRxUY/s704/Screenshot%202025-04-04%20at%209.50.59%E2%80%AFAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="385" data-original-width="704" height="337" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmyFX8ulsCDPqyt5wddDVeYg0sbWhCQSCdzl5mamsidfd2hF-hO3Bpx0OMCleAUwEa_KEz-kdBbAX0_9PTWj47HbERCcaO14zGbak5hs4DfEIafIHZ3hSkVkPwN5DgBcb0tuMkr3DKnEg0HNnkFAtImVmblrw5R85nvJz1V8FIg9Qka5Cd8IounucjRxUY/w617-h337/Screenshot%202025-04-04%20at%209.50.59%E2%80%AFAM.png" width="617" /></a></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The supply chain diagram for building a single model, illustrating some supply chain risks (oval labels) and where model signing can defend against them (check marks)</span></p><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The diagram shows several places where the model could be compromised. Most of these could be prevented by signing the model during training and verifying integrity before any usage, in every step: the signature would have to be verified when the model gets uploaded to a model hub, when the model gets selected to be deployed into an application (embedded or via remote APIs) and when the model is used as an intermediary during another training run. Assuming the training infrastructure is trustworthy and not compromised, this approach guarantees that each model user can trust the model.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="color: #93c47d; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Sigstore for ML models</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Signing models is inspired by code signing, a critical step in traditional software development. A signed binary artifact helps users identify its producer and prevents tampering after publication. The average developer, however, would not want to manage keys and rotate them on compromise.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">These challenges are addressed by using </span><a href="https://www.sigstore.dev/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Sigstore</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, a collection of tools and services that make code signing secure and easy. By binding an OpenID Connect token to a workload or developer identity, Sigstore alleviates the need to manage or rotate long-lived secrets. Furthermore, signing is made transparent so signatures over malicious artifacts could be audited in a public transparency log, by anyone. This ensures that split-view attacks are not possible, so any user would get the exact same model. These features are why we recommend Sigstore’s signing mechanism as the default approach for signing ML models.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Today the OSS community is releasing the v1.0 stable version of our </span><a href="https://pypi.org/project/model-signing/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">model signing library</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> as a Python package supporting Sigstore and traditional signing methods. This model signing library is specialized to handle the sheer scale of ML models (which are usually much larger than traditional software components), and handles signing models represented as a directory tree. The package provides CLI utilities so that users can sign and verify model signatures for individual models. The package can also be used as a library which we plan to incorporate directly into model hub upload flows as well as into ML frameworks.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="color: #93c47d; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Future goals</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We can view model signing as establishing the foundation of trust in the ML ecosystem. We envision extending this approach to also include datasets and other ML-related artifacts. Then, we plan to build on top of signatures, towards fully tamper-proof metadata records, that can be read by both humans and machines. This has the potential to automate a significant fraction of the work needed to perform incident response in case of a compromise in the ML world. In an ideal world, an ML developer would not need to perform any code changes to the training code, while the framework itself would handle model signing and verification in a transparent manner.</span></p><div><span><br /></span></div><br /><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">If you are interested in the future of this project, join the </span><a href="https://docs.google.com/document/d/1L3ZEIN3mHNORB9xBw0yuVUe6T_yrlumnXK5_iIw3wkk/edit?tab=t.0" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OpenSSF meetings attached to the project</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. To shape the future of building tamper-proof ML, join the </span><a href="https://www.coalitionforsecureai.org/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Coalition for Secure AI</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, where we are </span><a href="https://github.com/cosai-oasis/ws1-supply-chain/issues/4" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">planning to work on building the entire trust ecosystem</span></a><span style="font-family: Roboto, sans-serif; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> together with the open source community. In collaboration with multiple industry partners, we are starting up a special interest group under CoSAI for defining the future of ML signing and including tamper-proof ML metadata, such as model cards and evaluation results.</span></span></div></content>
<link href="http://security.googleblog.com/feeds/2453153095504753937/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/2453153095504753937?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/2453153095504753937" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/2453153095504753937" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/04/taming-wild-west-of-ml-practical-model.html" rel="alternate" title="Taming the Wild West of ML: Practical Model Signing with Sigstore" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirFnLgF-xOqlXxchjcODsEud658EcnN_yViNmDeVS9VNKDwUZAvbgGCvUUzBm3Pau5xfSjELbV_fVsajWxAzCrH0rRIF5kOSZBpd0JBFTn1ImeL4-6inFTLqv2HUtMouOJy-HEgJ4S1zqdD0HsjijinoSR2TGDNT0PHLqJlS2brnktpBa7TxidvE1Ys1dp/s72-w623-h253-c/Screenshot%202025-04-04%20at%209.50.42%E2%80%AFAM.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-3901413346063142227</id>
<published>2025-03-27T16:49:00.000-04:00</published>
<updated>2025-03-27T16:49:41.552-04:00</updated>
<title type="text">New security requirements adopted by HTTPS certificate industry</title>
<content type="html"><span class="byline-author">Posted by Chrome Root Program, Chrome Security Team</span>
<p>
The Chrome Root Program launched in 2022 as part of Google’s ongoing commitment to upholding secure and reliable network connections in Chrome. We previously described how the Chrome Root Program <a href="https://security.googleblog.com/2023/05/how-chrome-root-program-keeps-users-safe.html">keeps users safe</a>, and <a href="https://blog.chromium.org/2023/10/unlocking-power-of-tls-certificate.html">described</a> how the program is focused on promoting technologies and practices that strengthen the underlying security assurances provided by Transport Layer Security (TLS). Many of these initiatives are described on our forward looking, public roadmap named “<a href="https://www.chromium.org/Home/chromium-security/root-ca-policy/moving-forward-together/">Moving Forward, Together.</a>”
</p>
<p>
At a high-level, “Moving Forward, Together” is our vision of the future. It is non-normative and considered distinct from the requirements detailed in the <a href="https://googlechrome.github.io/chromerootprogram/">Chrome Root Program Policy</a>. It’s focused on themes that we feel are essential to further improving the Web PKI ecosystem going forward, complementing Chrome’s <a href="https://www.chromium.org/developers/core-principles/">core principles</a> of speed, security, stability, and simplicity. These themes include:
</p>
<ul>
<li>Encouraging modern infrastructures and agility</li>
<li>Focusing on simplicity</li>
<li>Promoting automation</li>
<li>Reducing mis-issuance</li>
<li>Increasing accountability and ecosystem integrity</li>
<li>Streamlining and improving domain validation practices</li>
<li>Preparing for a "post-quantum" world</li>
</ul>
<p>
Earlier this month, two “Moving Forward, Together” initiatives became required practices in the CA/Browser Forum <a href="https://cabforum.org/working-groups/server/baseline-requirements/requirements/">Baseline Requirements</a> (BRs). The CA/Browser Forum is a cross-industry group that works together to develop minimum requirements for TLS certificates. Ultimately, these new initiatives represent an improvement to the security and agility of every TLS connection relied upon by Chrome users.
</p>
<p>
If you’re unfamiliar with HTTPS and certificates, see the “Introduction” of <a href="https://blog.chromium.org/2023/10/unlocking-power-of-tls-certificate.html">this</a> blog post for a high-level overview.
</p>
<p>
<strong>Multi-Perspective Issuance Corroboration</strong>
</p>
<p>
Before issuing a certificate to a website, a Certification Authority (CA) must verify the requestor legitimately controls the domain whose name will be represented in the certificate. This process is referred to as "domain control validation" and there are several <a href="https://cabforum.org/working-groups/server/baseline-requirements/requirements/#3224-validation-of-domain-authorization-or-control">well-defined</a> methods that can be used. For example, a CA can specify a random value to be placed on a website, and then perform a check to verify the value’s presence has been published by the certificate requestor.
</p>
<p>
Despite the existing domain control validation requirements defined by the CA/Browser Forum, peer-reviewed research authored by the <a href="https://citp.princeton.edu/">Center for Information Technology Policy</a> (CITP) of Princeton University and others <a href="https://www.usenix.org/conference/usenixsecurity18/presentation/birge-lee">highlighted</a> <a href="https://www.usenix.org/conference/usenixsecurity21/presentation/birge-lee">the</a> <a href="https://dl.acm.org/doi/10.1145/3243734.3243790">risk</a> of Border Gateway Protocol (BGP) attacks and prefix-hijacking resulting in fraudulently issued certificates. This risk was not merely theoretical, as it was demonstrated that attackers successfully exploited this vulnerability on numerous occasions, with just <a href="https://freedom-to-tinker.com/2022/03/09/attackers-exploit-fundamental-flaw-in-the-webs-security-to-steal-2-million-in-cryptocurrency/">one</a> of these attacks resulting in approximately $2 million dollars of direct losses.
</p>
<p>
Multi-Perspective Issuance Corroboration (referred to as "MPIC") enhances existing domain control validation methods by reducing the likelihood that routing attacks can result in fraudulently issued certificates. Rather than performing domain control validation and authorization from a single geographic or routing vantage point, which an adversary could influence as demonstrated by security researchers, MPIC implementations perform the same validation from multiple geographic locations and/or Internet Service Providers. This has been <a href="https://drive.google.com/file/d/15e4Z9InYbThwJsDuH0oS7vfXKvdSBzi9/view">observed</a> as an <a href="https://arxiv.org/abs/2302.08000">effective countermeasure</a> against ethically conducted, real-world BGP hijacks.
</p>
<p>
The Chrome Root Program <a href="https://drive.google.com/file/d/1LTwtAwHXcSaPVSsqKQztNJrV2ozHJ7ZL/view?usp=sharing">led</a> a work team of ecosystem participants, which culminated in a CA/Browser Forum Ballot to require adoption of MPIC via <a href="https://cabforum.org/2024/08/05/ballot-sc067v3-require-domain-validation-and-caa-checks-to-be-performed-from-multiple-network-perspectives-corroboration/">Ballot SC-067</a>. The ballot received unanimous support from organizations who participated in voting. Beginning March 15, 2025, CAs issuing publicly-trusted certificates must now rely on MPIC as part of their certificate issuance process. Some of these CAs are relying on the <a href="https://open-mpic.org/">Open MPIC Project</a> to ensure their implementations are robust and consistent with ecosystem expectations.
</p>
<p>
We’d especially like to thank Henry Birge-Lee, Grace Cimaszewski, Liang Wang, Cyrill Krähenbühl, Mihir Kshirsagar, Prateek Mittal, Jennifer Rexford, and others from Princeton University for their sustained efforts in promoting meaningful web security improvements and ongoing partnership.
</p>
<p>
<strong>Linting</strong>
</p>
<p>
Linting refers to the automated process of analyzing X.509 certificates to detect and prevent errors, inconsistencies, and non-compliance with requirements and industry standards. Linting ensures certificates are well-formatted and include the necessary data for their intended use, such as website authentication.
</p>
<p>
Linting can expose the use of weak or obsolete cryptographic algorithms and other known insecure practices, improving overall security. Linting improves interoperability and helps CAs reduce the risk of non-compliance with industry standards (e.g., CA/Browser Forum TLS Baseline Requirements). Non-compliance can result in certificates being "mis-issued". Detecting these issues before a certificate is in use by a site operator reduces the negative impact associated with having to correct a mis-issued certificate.
</p>
<p>
There are numerous open-source linting projects in existence (e.g., <a href="https://github.com/certlint/certlint">certlint</a>, <a href="https://github.com/digicert/pkilint">pkilint</a>, <a href="https://github.com/kroeckx/x509lint">x509lint</a>, and <a href="https://github.com/zmap/zlint">zlint</a>), in addition to numerous custom linting projects maintained by members of the Web PKI ecosystem. “Meta” linters, like <a href="https://github.com/pkimetal/pkimetal">pkimetal</a>, combine multiple linting tools into a single solution, offering simplicity and significant performance improvements to implementers compared to implementing multiple standalone linting solutions.
</p>
<p>
Last spring, the Chrome Root Program led ecosystem-wide experiments, emphasizing the need for linting adoption due to the discovery of widespread certificate mis-issuance. We later participated in drafting CA/Browser Forum <a href="https://cabforum.org/2024/08/05/ballot-sc075-pre-sign-linting/">Ballot SC-075</a> to require adoption of certificate linting. The ballot received unanimous support from organizations who participated in voting. Beginning March 15, 2025, CAs issuing publicly-trusted certificates must now rely on linting as part of their certificate issuance process.
</p>
<p>
<strong>What’s next?</strong>
</p>
<p>
We recently landed an updated version of the <a href="https://googlechrome.github.io/chromerootprogram/">Chrome Root Program Policy</a> that further aligns with the goals outlined in “Moving Forward, Together.” The Chrome Root Program remains committed to proactive advancement of the Web PKI. This commitment was recently realized in practice through our proposal to <a href="https://cabforum.org/2024/11/14/ballot-sc080v3-sunset-the-use-of-whois-to-identify-domain-contacts-and-relying-dcv-methods/">sunset</a> <a href="https://labs.watchtowr.com/we-spent-20-to-achieve-rce-and-accidentally-became-the-admins-of-mobi/">demonstrated weak</a> domain control validation methods permitted by the CA/Browser Forum TLS Baseline Requirements. The weak validation methods in question are now prohibited beginning July 15, 2025.
</p>
<p>
It’s essential we all work together to continually improve the Web PKI, and reduce the opportunities for risk and abuse before measurable harm can be realized. We continue to value collaboration with web security professionals and the members of the CA/Browser Forum to realize a safer Internet. Looking forward, we’re excited to explore a reimagined Web PKI and Chrome Root Program with even stronger security assurances for the web as we navigate the transition to <a href="https://blog.chromium.org/2024/05/advancing-our-amazing-bet-on-asymmetric.html">post-quantum cryptography</a>. We’ll have more to say about quantum-resistant PKI later this year.
</p></content>
<link href="http://security.googleblog.com/feeds/3901413346063142227/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/3901413346063142227?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/3901413346063142227" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/3901413346063142227" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/03/new-security-requirements-adopted-by.html" rel="alternate" title="New security requirements adopted by HTTPS certificate industry" type="text/html"/>
<author>
<name>Google</name>
<uri>http://www.blogger.com/profile/11822708545141062574</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-7342235147435620181</id>
<published>2025-03-26T13:00:00.000-04:00</published>
<updated>2025-03-26T13:00:12.123-04:00</updated>
<title type="text">Titan Security Keys now available in more countries</title>
<content type="html"><span class="byline-author">Posted by Christiaan Brand, Group Product Manager</span><div><br /></div><div><span id="docs-internal-guid-ffe22ef3-7fff-f108-c3d2-6b52edd25849"><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We’re excited to announce that starting today, </span><a href="https://store.google.com/product/titan_security_key" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Titan Security Keys</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> are available for purchase in more than 10 new countries:</span></p><ul style="margin-bottom: 0; margin-top: 0; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Ireland</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Portugal</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">The Netherlands</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Denmark</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Norway</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Sweden</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Finland</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Australia</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">New Zealand</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Singapore</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Puerto Rico</span></p></li></ul><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This expansion means Titan Security Keys are now available in 22 markets, including previously announced countries like Austria, Belgium, Canada, France, Germany, Italy, Japan, Spain, Switzerland, the UK, and the US.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">What is a Titan Security Key?</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">A Titan Security Key is a small, physical device that you can use to verify your identity when you sign in to your Google Account. It’s like a second password that’s much harder for cybercriminals to steal.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Titan Security Keys allow you to store your </span><a href="https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">passkeys</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> on a strong, purpose-built device that can help protect you against phishing and other online attacks. They’re easy to use and work with a wide range of devices and services as they’re compatible with the FIDO2 standard.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">How do I use a Titan Security Key?</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To use a Titan Security Key, you simply plug it into your computer’s USB port or tap it to your device using NFC. When you’re asked to verify your identity, you’ll just need to tap the button on the key.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Where can I buy a Titan Security Key?</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">You can buy Titan Security Keys on the </span><a href="https://store.google.com/product/titan_security_key" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Google Store</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We’re committed to making our products available to as many people as possible and we hope this expansion will help more people stay safe online.</span></p><div><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></div></span></div></content>
<link href="http://security.googleblog.com/feeds/7342235147435620181/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/7342235147435620181?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7342235147435620181" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7342235147435620181" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/03/titan-security-keys-now-available-in.html" rel="alternate" title="Titan Security Keys now available in more countries" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-7784387405354995945</id>
<published>2025-03-17T12:46:00.006-04:00</published>
<updated>2025-03-17T12:47:25.782-04:00</updated>
<title type="text">Announcing OSV-Scanner V2: Vulnerability scanner and remediation tool for open source </title>
<content type="html"><span class="byline-author">Posted by Rex Pan and Xueqin Cui, Google Open Source Security Team</span><div><br /></div><div><br /></div><div><span id="docs-internal-guid-6b7c8ef5-7fff-40c4-8cc2-553417ed5f4c"><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In December 2022, we released the open source</span><a href="https://security.googleblog.com/2022/12/announcing-osv-scanner-vulnerability.html" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;"> OSV-Scanner</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> tool, and earlier this year, we open sourced</span><a href="https://security.googleblog.com/2025/01/osv-scalibr-library-for-software.html" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;"> OSV-SCALIBR</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. OSV-Scanner and OSV-SCALIBR, together with </span><a href="https://osv.dev" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSV.dev</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> are components of an open platform for managing vulnerability metadata and enabling simple and accurate matching and remediation of known vulnerabilities. Our goal is to simplify and streamline vulnerability management for developers and security teams alike.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Today, we're thrilled to announce the launch of OSV-Scanner V2.0.0, following the </span><a href="https://osv.dev/blog/posts/osv-scanner-v2-beta1-is-ready/" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">announcement of the beta version</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. This V2 release builds upon the foundation we laid with OSV-SCALIBR and adds significant new capabilities to OSV-Scanner, making it a comprehensive vulnerability scanner and remediation tool with broad support for formats and ecosystems.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="color: #434343; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">What’s new</span></h3><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Enhanced Dependency Extraction with OSV-SCALIBR</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This release represents the first major integration of OSV-SCALIBR features into OSV-Scanner, which is </span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">now the official command-line code and container scanning tool for the OSV-SCALIBR library.</span><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> This integration also expanded our support for the kinds of dependencies we can extract from projects and containers:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Source manifests and lockfiles:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">.NET: deps.json</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Python: uv.lock</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">JavaScript: bun.lock</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Haskell: cabal.project.freeze, stack.yaml.lock</span></p></li></ul><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Artifacts:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Node modules</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Python wheels</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Java uber jars</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Go binaries</span></p></li></ul><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></h4><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Layer and base image-aware container scanning</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Previously, OSV-Scanner focused on scanning of source repositories and language package manifests and lockfiles. OSV-Scanner V2 adds support for comprehensive, layer-aware scanning for Debian, Ubuntu, and Alpine container images. OSV-Scanner can now analyze container images to provide:</span></p><br /><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Layers where a package was first introduced</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Layer history and commands</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Base images the image is based on (leveraging a </span><a href="https://docs.deps.dev/api/v3alpha/#querycontainerimages" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">new experimental API</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> provided by deps.dev).</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">OS/Distro the container is running on</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Filtering of vulnerabilities that are unlikely to impact your container image</span></p></li></ul><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This layer analysis currently supports the following OSes and languages:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Distro Support:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Alpine OS</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Debian</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Ubuntu</span></p></li></ul><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Language Artifacts Support:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Go</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Java</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Node</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Python</span></p></li></ul><br /><br /><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Interactive HTML output</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Presenting vulnerability scan information in a clear and actionable way is difficult, particularly in the context of container scanning. To address this, we built a new interactive local HTML output format. This provides more interactivity and information compared to terminal only outputs, including:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Severity breakdown</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Package and ID filtering</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Vulnerability importance filtering</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Full vulnerability advisory entries</span></p></li></ul><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">And additionally for container image scanning:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Layer filtering</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Image layer information</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Base image identification</span></p></li></ul><div><span style="font-family: Roboto, sans-serif;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGBqMKTU5seRruSxekFdlridqRFEICndCscz4EJGYFFXG72Bjt3UpM4ynXi9lGPIcdcAuCO5vHOqz6-VO3qjC1j-O63cSYvlnIWdiumXPf-bktMlfhWqbin7wnLmHyiE5FddDt9apZi0_70ZlUShEL7c-ddUotkTNkxHI8ynfVUyVqlJjneSBnxU6mGbBZ/s624/Screenshot%202025-03-17%20at%209.45.02%E2%80%AFAM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="489" data-original-width="624" height="407" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGBqMKTU5seRruSxekFdlridqRFEICndCscz4EJGYFFXG72Bjt3UpM4ynXi9lGPIcdcAuCO5vHOqz6-VO3qjC1j-O63cSYvlnIWdiumXPf-bktMlfhWqbin7wnLmHyiE5FddDt9apZi0_70ZlUShEL7c-ddUotkTNkxHI8ynfVUyVqlJjneSBnxU6mGbBZ/w519-h407/Screenshot%202025-03-17%20at%209.45.02%E2%80%AFAM.png" width="519" /></a></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: center;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Illustration of HTML output for container image scanning</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: center;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h4 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 14pt;"><span face="Arial, sans-serif" style="color: #666666; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Guided remediation for Maven pom.xml</span></h4><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Last year we released a feature called </span><a href="https://osv.dev/blog/posts/announcing-guided-remediation-in-osv-scanner/" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">guided remediation for npm</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, which streamlines vulnerability management by intelligently suggesting prioritized, targeted upgrades and offering flexible strategies. This ultimately maximizes security improvements while minimizing disruption. We have now expanded this feature to Java through support for Maven pom.xml.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">With guided remediation support for Maven, you can remediate vulnerabilities in both direct and transitive dependencies through direct version updates or overriding versions through dependency management.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We’ve introduced a few new things for our Maven support:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">A new remediation strategy override.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Support for reading and writing pom.xml files, including writing changes to local parent pom files. We leverage OSV-Scalibr for Maven transitive dependency extraction.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">A private registry can be specified to fetch Maven metadata.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">A new experimental subcommend to update all your dependencies in pom.xml to the latest version.</span></p></li></ul><div><span style="font-family: Roboto, sans-serif;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We also introduced machine readable output for guided remediation that makes it easier to integrate guided remediation into your workflow.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="color: #434343; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">What’s next?</span></h3><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We have exciting plans for the remainder of the year, including:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 12pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Continued OSV-SCALIBR Convergence: </span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; text-wrap-mode: wrap; vertical-align: baseline;">We will continue to converge OSV-Scanner and OSV-SCALIBR to bring </span><a href="https://github.com/google/osv-scanner/issues/1701" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">OSV-SCALIBR’s functionality</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; text-wrap-mode: wrap; vertical-align: baseline;"> to OSV-Scanner’s CLI interface.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 10pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Expanded Ecosystem Support:</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> We'll expand the number of ecosystems we support across all the features currently in OSV-Scanner, including more languages for guided remediation, OS advisories for container scanning, and more general lockfile support for source code scanning.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 10pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Full Filesystem Accountability for Containers: </span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Another goal of osv-scanner is to give you the ability to know and account for </span><span style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">every single file </span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">on your container image, including sideloaded binaries downloaded from the internet.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 10pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Reachability Analysis:</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> We're working on integrating reachability analysis to provide deeper insights into the potential impact of vulnerabilities.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Roboto, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 10pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">VEX Support:</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> We're planning to add support for Vulnerability Exchange (VEX) to facilitate better communication and collaboration around vulnerability information.</span></p></li></ul><div><span style="font-family: Roboto, sans-serif;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="color: #434343; font-size: 14pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Try OSV-Scanner V2</span></h3><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">You can try V2.0.0 and contribute to its ongoing development by checking out </span><a href="http://github.com/google/osv-scanner" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSV-Scanner</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> or the </span><a href="https://github.com/google/osv-scalibr" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSV-SCALIBR</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> repository. We welcome your feedback and contributions as we continue to improve the platform and make vulnerability management easier for everyone.</span></p><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">If you have any questions or if you would like to contribute, don't hesitate to reach out to us at osv-discuss@google.com, or post an issue in our</span><a href="https://github.com/google/osv-scanner/issues" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;"> issue tracker</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></span></div></content>
<link href="http://security.googleblog.com/feeds/7784387405354995945/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/7784387405354995945?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7784387405354995945" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7784387405354995945" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/03/announcing-osv-scanner-v2-vulnerability.html" rel="alternate" title="Announcing OSV-Scanner V2: Vulnerability scanner and remediation tool for open source " type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGBqMKTU5seRruSxekFdlridqRFEICndCscz4EJGYFFXG72Bjt3UpM4ynXi9lGPIcdcAuCO5vHOqz6-VO3qjC1j-O63cSYvlnIWdiumXPf-bktMlfhWqbin7wnLmHyiE5FddDt9apZi0_70ZlUShEL7c-ddUotkTNkxHI8ynfVUyVqlJjneSBnxU6mGbBZ/s72-w519-h407-c/Screenshot%202025-03-17%20at%209.45.02%E2%80%AFAM.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-2746219251958853689</id>
<published>2025-03-07T14:09:00.010-05:00</published>
<updated>2025-03-11T13:52:54.341-04:00</updated>
<title type="text">Vulnerability Reward Program: 2024 in Review</title>
<content type="html"><span class="byline-author">Posted by Dirk Göhmann</span><div><br /></div><div><br /></div><div><br /></div><div><span id="docs-internal-guid-8f36334a-7fff-e14f-3329-1ee23b8cf24f"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In 2024, our Vulnerability Reward Program confirmed the ongoing value of engaging with the security research community to make Google and its products safer. This was evident as we awarded just shy of $12 million to over 600 researchers based in countries around the globe across all of our programs.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Vulnerability Reward Program 2024 in Numbers</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgykfc4B2pIcSR8GbN-6N_nP-pVCR2VhnG6USVmkwjkbT70jNidQXhZrDnLp9O4KK2OEFkDVt_ytqzafMIN3oxh4-JHhm43uJsPv60KGuxkkQ9CXlHuNqyT1ecbOhwI-AjnRkK6F0rBKOlZqHN9w6Y-AX26XaBA0hpD68-eXMHGzDrG_-RBDnUiz5tvlxn2/s592/Screenshot%202025-03-07%20at%2011.07.56%E2%80%AFAM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="290" data-original-width="592" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgykfc4B2pIcSR8GbN-6N_nP-pVCR2VhnG6USVmkwjkbT70jNidQXhZrDnLp9O4KK2OEFkDVt_ytqzafMIN3oxh4-JHhm43uJsPv60KGuxkkQ9CXlHuNqyT1ecbOhwI-AjnRkK6F0rBKOlZqHN9w6Y-AX26XaBA0hpD68-eXMHGzDrG_-RBDnUiz5tvlxn2/w614-h301/Screenshot%202025-03-07%20at%2011.07.56%E2%80%AFAM.png" width="614" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3oDoS_tOfcvCpevEZkZyp1zz2sTmcMpi1OaqGmz8rYdoDfq3WM8OTn3GssbaicNqrEgLDBjKSW8KDVpT8NmwtQkkfkRGCLocapLY3077MP0f4C2G6gYrps14S-_yhowS2yYPCTBpzUMPmZA9N_ymIYL9bV1xax9n3NlAVNuRxthOLrtQdjSqI0I9e2Xa2/s588/Screenshot%202025-03-07%20at%2011.08.05%E2%80%AFAM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="298" data-original-width="588" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3oDoS_tOfcvCpevEZkZyp1zz2sTmcMpi1OaqGmz8rYdoDfq3WM8OTn3GssbaicNqrEgLDBjKSW8KDVpT8NmwtQkkfkRGCLocapLY3077MP0f4C2G6gYrps14S-_yhowS2yYPCTBpzUMPmZA9N_ymIYL9bV1xax9n3NlAVNuRxthOLrtQdjSqI0I9e2Xa2/w613-h310/Screenshot%202025-03-07%20at%2011.08.05%E2%80%AFAM.png" width="613" /></a></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">You can learn about who’s reporting to the Vulnerability Reward Program via our </span><a href="https://bughunters.google.com/leaderboard" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Leaderboard</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> – and find out more about </span><a href="https://www.linkedin.com/pulse/proud-dads-tale-two-bug-hunting-daughters-responsible-dustin-kirkland-hxwec" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">our youngest security researchers</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> who’ve recently joined the ranks of Google bug hunters.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">VRP Highlights in 2024</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In 2024 we made a series of changes and improvements coming to our vulnerability reward programs and related initiatives:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">The Google VRP revamped its </span><a href="https://bughunters.google.com/blog/5400513950908416/increasing-google-alphabet-vrp-rewards-up-to-151-515" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">reward structure</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">, bumping rewards up to a maximum of $151,515, the Mobile VRP is now offering </span><a href="https://bughunters.google.com/blog/5792192022577152/one-year-of-mobile-vrp-reward-increases-and-lessons-learned" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">up to $300,000</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> for critical vulnerabilities in top-tier apps, Cloud VRP has a top-tier </span><a href="https://bughunters.google.com/about/rules/google-friends/4849867320328192/cloud-vulnerability-reward-program-rules#reward-amounts" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">award of up $151,51</span></a><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">5</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">, and Chrome awards now peak at $250,000 (see the below section on Chrome for details).</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">We rolled out </span><a href="https://bughunters.google.com/blog/6752136441233408/capturing-the-flags-of-the-internet-find-0-days-in-oss-and-write-scanners-to-detect-them" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">InternetCTF</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> – to get rewarded, discover novel code execution vulnerabilities in open source and provide Tsunami plugin patches for them.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">The </span><a href="https://bughunters.google.com/about/rules/google-friends/5238081279623168/abuse-vulnerability-reward-program-rules" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Abuse VRP</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> saw a 40% YoY increase in payouts – we received over 250 valid bugs targeting abuse and misuse issues in Google products, resulting in over $290,000 in rewards.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">To improve the payment process for rewards going to bug hunters, we </span><a href="https://bughunters.google.com/blog/6483936851394560/announcing-bugcrowd-as-a-new-bughunters-google-com-payment-option" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">introduced Bugcrowd</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> as an additional payment option on </span><a href="http://bughunters.google.com" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">bughunters.google.com</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> alongside the existing standard Google payment option.&nbsp;</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">We hosted two editions of bugSWAT for training, skill sharing, and, of course, some live hacking – in August, we had 16 bug hunters in attendance in Las Vegas, and in October, as part of our annual security conference </span><a href="https://www.youtube.com/watch?v=ZoymeQXNUK8" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">ESCAL8 in Malaga, Spain</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">, we welcomed 40 of our top researchers. Between these two events, our bug hunters were rewarded $370,000 (and plenty of swag).</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">We doubled down on our commitment to support the next generation of security engineers by hosting four </span><a href="https://buildyourfuture.withgoogle.com/events/init.g-cybersecurityworkshopforstudents" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">init.g workshops</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> (</span><a href="https://www.unlv.edu/announcement/howard-r-hughes-college-engineering/google-sponsors-initgvegas-student-event-unlv" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Las Vegas</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">, </span><a href="https://x.com/GoogleVRP/status/1828861253600625145" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">São Paulo</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">, </span><a href="https://x.com/GoogleVRP/status/1840743882981609886" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Paris</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">, and </span><a href="https://x.com/GoogleVRP/status/1847682261711298886" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Malaga</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">). Follow the </span><a href="https://x.com/GoogleVRP" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Google VRP channel</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> on X to stay tuned on future events.</span></p></li></ul><div><span face="Arial, sans-serif"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><div><span face="Arial, sans-serif"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">More detailed updates on selected programs are shared in the following sections.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Android and Google Devices</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In 2024, the Android and Google Devices Security Reward Program and the Google Mobile Vulnerability Reward Program, both part of the broader Google Bug Hunters program, continued their mission to fortify the Android ecosystem, achieving new heights in both impact and severity. We awarded over $3.3 million in rewards to researchers who demonstrated exceptional skill in uncovering critical vulnerabilities within Android and Google mobile applications.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The above numbers mark a significant change compared to previous years. Although we saw an 8% decrease in the total number of submissions, there was a 2% increase in the number of critical and high vulnerabilities. In other words, fewer researchers are submitting fewer, but more impactful bugs, and are citing the improved security posture of the Android operating system as the central challenge. This showcases the program's sustained success in hardening Android.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This year, we had a heightened focus on Android Automotive OS and WearOS, bringing actual automotive devices to multiple live hacking events and conferences. At ESCAL8, we hosted a live-hacking challenge focused on Pixel devices, resulting in over $75,000 in rewards in one weekend, and the discovery of several memory safety vulnerabilities. To facilitate learning, we launched a new </span><a href="https://bughunters.google.com/learn/improving-your-reports/getting-started/6218686980816896/researching-android-app-security#android-app-hacking-course-on-hextree" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Android hacking course</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> in collaboration with external security researchers, focused on mobile app security, designed for newcomers and veterans alike. Stay tuned for more.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We extend our deepest gratitude to the dedicated researchers who make the Android ecosystem safer. We're proud to work with you! Special thanks to Zinuo Han </span><a href="https://x.com/ele7enxxh" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">(@ele7enxxh</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">) for their expertise in Bluetooth security, blunt (</span><a href="https://x.com/blunt_qian" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">@blunt_qian</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">) for holding the record for the most valid reports submitted to the Google Play Security Reward Program, and WANG,YONG (</span><a href="https://x.com/ThomasKing2014" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">@ThomasKing2014</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">) for groundbreaking research on rooting Android devices with kernel MTE enabled. We also appreciate all researchers who participated in last year's bugSWAT event in Málaga. Your contributions are invaluable!&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Chrome</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Chrome did some remodeling in 2024 as we </span><a href="https://bughunters.google.com/blog/5302044291629056/chrome-vrp-reward-updates-to-incentivize-deeper-research" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">updated our reward amounts and structure to incentivize deeper research</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. For example, we increased our maximum reward for a single issue to $250,000 for demonstrating RCE in the browser or other non-sandboxed process, and more if done directly without requiring a renderer compromise.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In 2024, UAF mitigation MiraclePtr was fully launched across all platforms, and a year after the initial launch, MiraclePtr-protected bugs are no longer being considered exploitable security bugs. In tandem, we increased the </span><a href="https://g.co/chrome/vrp#miracleptr-bypass-reward" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">MiraclePtr Bypass Reward </span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">to $250,128. Between April and November, we also launched the first and second iterations of the </span><a href="https://g.co/chrome/vrp#v8-sandbox-bypass-rewards" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">V8 Sandbox Bypass Rewards</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> as part of the progression towards the V8 sandbox, eventually becoming a security boundary in Chrome.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We received 337 reports of unique, valid security bugs in Chrome during 2024, and awarded 137 Chrome VRP researchers $3.4 million in total. The highest single reward of 2024 was $100,115 and was awarded to Mickey for their report of a </span><a href="https://issues.chromium.org/issues/340122160" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">MiraclePtr Bypass</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> after MiraclePtr was initially enabled across most platforms in Chrome M115 in 2023. We rounded out the year by announcing the </span><a href="https://issues.chromium.org/issues/386306231" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">top 20 Chrome VRP researchers for 2024</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, all of whom were gifted new Chrome VRP swag, featuring our new Chrome VRP mascot, </span><a href="https://bsky.app/profile/amyre.bsky.social/post/3lhmecymobk2k" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Bug</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Cloud VRP</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The </span><a href="https://cloud.google.com/blog/products/identity-security/google-cloud-launches-new-vulnerability-rewards-program" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Cloud VRP</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> launched in October as a Cloud-focused vulnerability reward program dedicated to Google Cloud products and services. As part of the launch, we also updated our product tiering and improved our reward structure to better align our reports with their impact on Google Cloud. This resulted in over 150 Google Cloud products coming under the top two reward tiers, enabling better rewards for our Cloud researchers and a more secure cloud.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Since its launch, Google Cloud VRP triaged over 400 reports and filed over 200 unique security vulnerabilities for Google Cloud products and services leading to over $500,000 in researcher rewards.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our highlight last year was launching at the bugSWAT event in Málaga where we got to meet many of our amazing researchers who make our program so successful! The overwhelming positive feedback from the researcher community continues to propel us to mature Google Cloud VRP further this year. Stay tuned for some exciting announcements!</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Generative AI</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><br /><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We’re celebrating an exciting </span><a href="https://bughunters.google.com/blog/5474186394206208/celebrating-one-year-of-ai-bug-bounties-at-alphabet" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">first year of AI bug bounties. </span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;We received over 150 bug reports – over $55,000 in rewards so far – with one-in-six leading to key improvements.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We also ran a bugSWAT live-hacking event targeting LLM products and received 35 reports, totaling more than $87,000 – including issues like “</span><a href="https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Hacking Google Bard - From Prompt Injection to Data Exfiltration</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">” and “</span><a href="https://www.landh.tech/blog/20240304-google-hack-50000/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">We Hacked Google A.I. for $50,000</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">”.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Keep an eye on Gen AI in 2025 as we focus on expanding scope and sharing additional ways for our researcher community to contribute.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Looking Forward to 2025</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><br /><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In 2025, we will be celebrating 15 years of VRP at Google, during which we have remained fully committed to fostering collaboration, innovation, and transparency with the security community, and will continue to do so in the future. Our goal remains to stay ahead of emerging threats, adapt to evolving technologies, and continue to strengthen the security posture of Google’s products and services.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We want to send a huge thank you to our bug hunter community for helping us make Google products and platforms more safe and secure for our users around the world – and invite researchers not yet engaged with the Vulnerability Reward Program to join us in our mission to keep Google safe!&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Thank you to Dirk Göhmann, Amy Ressler, Eduardo Vela, Jan Keller, Krzysztof Kotowicz, Martin Straka, Michael Cote, Mike Antares, Sri Tulasiram, and Tony Mendez. </span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Tip: Want to be informed of new developments and events around our Vulnerability Reward Program? Follow the </span><a href="https://x.com/GoogleVRP" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Google VRP channel</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> on X to stay in the loop and be sure to check out the </span><a href="https://bughunters.google.com/blog" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Security Engineering blog,</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> which covers topics ranging from VRP updates to security practices and vulnerability descriptions (30 posts in 2024)!</span></p></span><br /></div></content>
<link href="http://security.googleblog.com/feeds/2746219251958853689/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/2746219251958853689?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/2746219251958853689" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/2746219251958853689" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/03/vulnerability-reward-program-2024-in.html" rel="alternate" title="Vulnerability Reward Program: 2024 in Review" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgykfc4B2pIcSR8GbN-6N_nP-pVCR2VhnG6USVmkwjkbT70jNidQXhZrDnLp9O4KK2OEFkDVt_ytqzafMIN3oxh4-JHhm43uJsPv60KGuxkkQ9CXlHuNqyT1ecbOhwI-AjnRkK6F0rBKOlZqHN9w6Y-AX26XaBA0hpD68-eXMHGzDrG_-RBDnUiz5tvlxn2/s72-w614-h301-c/Screenshot%202025-03-07%20at%2011.07.56%E2%80%AFAM.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-7487222855150187635</id>
<published>2025-03-04T11:59:00.000-05:00</published>
<updated>2025-03-04T11:59:32.949-05:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="android"/>
<category scheme="http://www.blogger.com/atom/ns#" term="android security"/>
<category scheme="http://www.blogger.com/atom/ns#" term="pixel"/>
<title type="text">New AI-Powered Scam Detection Features to Help Protect You on Android</title>
<content type="html"><span class="byline-author">Posted by Lyubov Farafonova, Product Manager, Phone by Google; Alberto Pastor Nieto, Sr. Product Manager Google Messages and RCS Spam and Abuse</span>
<p>
Google has been at the forefront of protecting users from the ever-growing threat of <a href="https://blog.google/products/android/android-scam-and-phishing-protection/">scams</a> and <a href="https://blog.google/products/android/how-android-helps-you-stay-safe-from-mobile-fraud-apps/">fraud</a> with <a href="https://security.googleblog.com/2024/05/io-2024-whats-new-in-android-security.html">cutting-edge technologies and security expertise</a> for years. In 2024, scammers used increasingly sophisticated tactics and generative AI-powered tools to steal more than $1 trillion from mobile consumers globally, <a href="https://www.gasa.org/post/global-state-of-scams-report-2024-1-trillion-stolen-in-12-months-gasa-feedzai">according to the Global Anti-Scam Alliance</a>. And with the majority of scams now delivered through phone calls and text messages, we’ve been focused on making Android’s safeguards even more intelligent with powerful Google AI to help keep your financial information and data safe.
</p>
<p>
Today, we’re launching two new industry-leading AI-powered scam detection features for calls and text messages, designed to protect users from increasingly complex and damaging scams. These features specifically target conversational scams, which can often appear initially harmless before evolving into harmful situations. <br><br>To enhance our detection capabilities, we partnered with financial institutions around the world to better understand the latest advanced and most common scams their customers are facing. For example, users are experiencing more conversational text scams that begin innocently, but gradually manipulate victims into sharing sensitive data, handing over funds, or switching to other messaging apps. And more phone calling scammers are using spoofing techniques to hide their real numbers and pretend to be trusted companies.
</p>
<p>
Traditional spam protections are focused on protecting users before the conversation starts, and are less effective against these latest tactics from scammers that turn dangerous mid-conversation and use social engineering techniques. To better protect users, we invested in new, intelligent AI models capable of detecting suspicious patterns and delivering real-time warnings over the course of a conversation, all while prioritizing user privacy.
</p>
<h3>Scam Detection for messages</h3>
<p>
We’re building on our <a href="https://security.googleblog.com/2024/10/5-new-protections-on-google-messages.html">enhancements to existing Spam Protection in Google Messages</a> that strengthen defenses against job and delivery scams, which are continuing to roll out to users. We’re now introducing Scam Detection to detect a wider range of fraudulent activities. <br><br>Scam Detection in Google Messages uses powerful Google AI to proactively address conversational scams by providing real-time detection even after initial messages are received. When the on-device AI detects a suspicious pattern in SMS, MMS, and RCS messages, users will now get a message warning of a likely scam with an option to dismiss or report and block the sender.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIyU-fEhIoz3CIVleuuPXK3rusITDaVfONA_0NcCiYpV-dAYbd16jETa9rSutRPm5d5QIT8dL1iKUeNfHq2XWp6wcHTnMR9bKJs68P4bd82EWSc6EGFFBUxZbajBi75SxlalFNQZEBTazAk0g-kNqBHqLtF3-pnLjS1rlnJcexy-lyxWh_5LXxswKb3wEg/s1078/Pixel%209%20Pro_Scam%20Detection%20-%20Google%20Messages.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1078" data-original-width="591" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIyU-fEhIoz3CIVleuuPXK3rusITDaVfONA_0NcCiYpV-dAYbd16jETa9rSutRPm5d5QIT8dL1iKUeNfHq2XWp6wcHTnMR9bKJs68P4bd82EWSc6EGFFBUxZbajBi75SxlalFNQZEBTazAk0g-kNqBHqLtF3-pnLjS1rlnJcexy-lyxWh_5LXxswKb3wEg/s600/Pixel%209%20Pro_Scam%20Detection%20-%20Google%20Messages.png"/></a></div>
</p>
<p>
As part of the Spam Protection setting, Scam Detection on Google Messages is on by default and only applies to conversations with non-contacts. Your privacy is protected with Scam Detection in Google Messages, with all message <a href="https://support.google.com/messages/answer/9327903?hl=en">processing remaining on-device</a>. Your conversations remain private to you; if you choose to report a conversation to help reduce widespread spam, only sender details and recent messages with that sender are shared with Google and carriers. You can turn off Spam Protection, which includes Scam Detection, in your Google Messages at any time.
</p>
<p>
Scam Detection in Google Messages is launching in English first in the U.S., U.K. and Canada and will expand to more countries soon.
</p>
<h3>Scam Detection for calls</h3>
<p>
More than half of Americans <a href="https://services.google.com/fh/files/misc/2025_phone_by_google_call_scam_report.pdf">reported</a> receiving at least one scam call per day in 2024. To combat the rise of sophisticated conversational scams that deceive victims over the course of a phone call, we <a href="https://security.googleblog.com/2024/11/new-real-time-protections-on-Android.html">introduced</a> Scam Detection late last year to U.S.-based English-speaking Phone by Google public beta users on Pixel phones.
</p>
<p>
We use AI models processed on-device to analyze conversations in real-time and warn users of potential scams. If a caller, for example, tries to get you to provide payment via gift cards to complete a delivery, Scam Detection will alert you through audio and haptic notifications and display a warning on your phone that the call may be a scam.
</p>
<p>
During our <a href="https://security.googleblog.com/2024/11/new-real-time-protections-on-Android.html">limited beta</a>, we analyzed calls with Gemini Nano, Google’s built-in, on-device foundation model, on Pixel 9 devices and used smaller, robust on-device machine-learning models for Pixel 6+ users. Our testing showed that Gemini Nano outperformed other models, so as a result, we're currently expanding the availability of the beta to bring the most capable Scam Detection to all English-speaking Pixel 9+ users in the U.S.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfEwOWvGCqqF3Rdofhvk8BJea9bZzRF81ZlrWja9HzmYjIDJUiwwepS-wDtqOe9Qa3RNo5ZltN6v83stA7MOuwJfp_ZOzXtBYbmY25PauKfQsahLw-0yFJMIJYZsTk4Tr5RB1_Xf4xFqi2xRQIRZaWRjMe9ijUnkOVWFvXKUD4Dg79aA9zY6PfdQgfTssJ/s1078/Pixel%209%20Pro_Scam%20Detection%20-%20Phone%20by%20Google.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1078" data-original-width="582" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfEwOWvGCqqF3Rdofhvk8BJea9bZzRF81ZlrWja9HzmYjIDJUiwwepS-wDtqOe9Qa3RNo5ZltN6v83stA7MOuwJfp_ZOzXtBYbmY25PauKfQsahLw-0yFJMIJYZsTk4Tr5RB1_Xf4xFqi2xRQIRZaWRjMe9ijUnkOVWFvXKUD4Dg79aA9zY6PfdQgfTssJ/s600/Pixel%209%20Pro_Scam%20Detection%20-%20Phone%20by%20Google.png"/></a></div>
</p>
<p>
Similar to Scam Detection in messaging, we built this feature to protect your privacy by processing everything on-device. Call audio is processed ephemerally and no conversation audio or transcription is recorded, stored on the device, or sent to Google or third parties. Scam Detection in Phone by Google is off by default to give users control over this feature, as phone call audio is more ephemeral compared to messages, which are stored on devices. Scam Detection only applies to calls that could potentially be scams, and is never used during calls with your contacts. If enabled, Scam Detection will beep at the start and during the call to notify participants the feature is on. You can turn off Scam Detection at any time, during an individual call or for all future calls.
</p>
<p>
According to our <a href="https://services.google.com/fh/files/misc/2025_phone_by_google_call_scam_report.pdf">research</a> and a Scam Detection beta user survey, these types of alerts have already helped people be more cautious on the phone, detect suspicious activity, and avoid falling victim to conversational scams.
</p>
<h3>Keeping Android users safe with the power of Google AI</h3><br>
We're committed to keeping Android users safe, and that means constantly evolving our defenses against increasingly sophisticated scams and fraud. Our investment in intelligent protection is having real-world impact for billions of users. <a href="https://www.leviathansecurity.com/">Leviathan Security Group</a>, a cybersecurity firm, conducted a funded evaluation of fraud protection features on a number of smartphones and found that <a href="https://www.leviathansecurity.com/blog/2025-mobile-platform-fraud-prevention-assessment">Android smartphones, led by the Pixel 9 Pro, scored highest</a> for built-in security features and anti-fraud efficacy<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup>.
</p>
<p>
With AI-powered innovations like Scam Detection in Messages and Phone by Google, we're giving you more tools to stay one step ahead of bad actors. We're constantly working with our partners across the Android ecosystem to help bring new security features to even more users. Together, we’re always working to keep you safe on Android.
</p>
<!-- Footnotes themselves at the bottom. -->
<h2>Notes</h2>
<div class="footnotes">
<hr>
<ol><li id="fn1">
<p>
<em>Based on third-party research funded by Google LLC in Feb 2025 comparing the Pixel 9 Pro, iPhone 16 Pro, Samsung S24+ and Xiaomi 14 Ultra. Evaluation based on no-cost smartphone features enabled by default. Some features may not be available in all countries.</em>&nbsp;<a href="#fnref1" rev="footnote">&#8617;</a>
</ol></div></content>
<link href="http://security.googleblog.com/feeds/7487222855150187635/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/7487222855150187635?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7487222855150187635" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7487222855150187635" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/03/new-ai-powered-scam-detection-features.html" rel="alternate" title="New AI-Powered Scam Detection Features to Help Protect You on Android" type="text/html"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIyU-fEhIoz3CIVleuuPXK3rusITDaVfONA_0NcCiYpV-dAYbd16jETa9rSutRPm5d5QIT8dL1iKUeNfHq2XWp6wcHTnMR9bKJs68P4bd82EWSc6EGFFBUxZbajBi75SxlalFNQZEBTazAk0g-kNqBHqLtF3-pnLjS1rlnJcexy-lyxWh_5LXxswKb3wEg/s72-c/Pixel%209%20Pro_Scam%20Detection%20-%20Google%20Messages.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-4881259953162954101</id>
<published>2025-02-25T15:04:00.000-05:00</published>
<updated>2025-02-25T15:04:10.769-05:00</updated>
<title type="text">Securing tomorrow's software: the need for memory safety standards </title>
<content type="html"><span class="byline-author">Posted by Alex Rebert, Security Foundations, Ben Laurie, Research, Murali Vijayaraghavan, Research and Alex Richardson, Silicon</span><div><br /></div><div><br /></div><div><span id="docs-internal-guid-51019a63-7fff-4892-bdfa-9c020946a1d1"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">For decades, memory safety vulnerabilities have been at the center of various security incidents across the industry, eroding trust in technology and costing </span><a href="https://en.wikipedia.org/wiki/Petya_(malware_family)" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">billions</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. Traditional approaches, like code auditing, fuzzing, and exploit mitigations </span><span style="background-color: white; color: #444746; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 10.5pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">–</span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> while helpful </span><span style="background-color: white; color: #444746; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 10.5pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">–</span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> haven't been enough to stem the tide, while incurring an increasingly high cost.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In this blog post, we are calling for a fundamental shift: a collective commitment to finally eliminate this class of vulnerabilities, anchored on </span><a href="https://blog.google/technology/safety-security/tackling-cybersecurity-vulnerabilities-through-secure-by-design/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">secure-by-design practices</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span style="background-color: white; color: #444746; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 10.5pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">–</span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> not just for ourselves but for the generations that follow.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The shift we are calling for is reinforced by a recent </span><a href="https://cacm.acm.org/opinion/it-is-time-to-standardize-principles-and-practices-for-software-memory-safety/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">ACM article calling to </span><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">standardize memory safety</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> we took part in releasing with academic and industry partners. It's a recognition that the lack of memory safety is no longer a niche technical problem but a societal one, impacting everything from national security to personal privacy.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">The standardization opportunity</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Over the past decade, a confluence of secure-by-design advancements has matured to the point of practical, widespread deployment. This includes memory-safe languages, now including high-performance ones such as Rust, as well as safer language subsets like </span><a href="https://clang.llvm.org/docs/SafeBuffers.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Safe Buffers</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> for C++.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">These tools are already proving effective. In Android for example, the increasing adoption of memory-safe languages like Kotlin and Rust in new code has driven a </span><a href="https://security.googleblog.com/2024/09/eliminating-memory-safety-vulnerabilities-Android.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">significant reduction in vulnerabilities</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Looking forward, we're also seeing exciting and promising developments in hardware. Technologies like ARM's </span><a href="https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/enhancing-memory-safety" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Memory Tagging Extension</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (MTE) and the </span><a href="https://en.wikipedia.org/wiki/Capability_Hardware_Enhanced_RISC_Instructions" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Capability Hardware Enhanced RISC Instructions</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (CHERI) architecture offer a complementary defense, particularly for existing code.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="display: inline-block; position: relative; width: 100px;"></span></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">While these advancements are encouraging, achieving comprehensive memory safety across the entire software industry requires more than just individual technological progress:&nbsp; we need to create the right environment and accountability for their widespread adoption. Standardization is key to this.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To facilitate standardization, we suggest establishing a common framework for specifying and objectively assessing memory safety assurances; doing so will lay the foundation for creating a market in which vendors are incentivized to invest in memory safety. Customers will be empowered to recognize, demand, and reward safety. This framework will provide governments and businesses with the clarity to specify memory safety requirements, driving the procurement of more secure systems.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The framework we are proposing would complement existing efforts by defining specific, measurable criteria for achieving different levels of memory safety assurance across the industry. In this way, policymakers will gain the technical foundation to craft effective policy initiatives and incentives promoting memory safety.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">A blueprint for a memory-safe future</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We know there's more than one way of solving this problem, and we are ourselves </span><a href="https://security.googleblog.com/2024/10/safer-with-google-advancing-memory.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">investing</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> in several. Importantly, our vision for achieving memory safety through standardization focuses on </span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">defining the desired outcomes</span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> rather than locking ourselves into specific technologies.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To translate this vision into an effective standard, we need a framework that will:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Foster innovation and support diverse approaches: </span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The standard should focus on the security properties we want to achieve (e.g., freedom from spatial and temporal safety violations) rather than mandating specific implementation details. The framework should therefore be technology-neutral, allowing vendors to choose the best approach for their products and requirements. This encourages innovation and allows software and hardware manufacturers to adopt the best solutions as they emerge.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Tailor memory safety requirements based on need: </span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The framework should establish different levels of safety assurance, akin to </span><a href="https://slsa.dev/spec/v0.1/levels" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">SLSA levels</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, recognizing that different applications have different security needs and cost constraints. Similarly, we likely need distinct guidance for developing new systems and improving existing codebases. For instance, we probably do not need every single piece of code to be formally proven. This allows for </span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">tailored security</span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, ensuring appropriate levels of memory safety for various contexts.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Enable objective assessment: </span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The framework should define clear criteria and potentially metrics for assessing memory safety and compliance with a given level of assurance. The goal would be to objectively compare the memory safety assurance of different software components or systems, much like we assess energy efficiency today. This will move us beyond subjective claims and towards objective and comparable security properties across products.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Be practical and actionable</span><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: Alongside the technology-neutral framework, we need best practices for existing technologies. The framework should provide guidance on how to effectively leverage specific technologies to meet the standards. This includes answering questions such as when and to what extent unsafe code is acceptable within larger software systems, and guidelines on structuring such unsafe dependencies to support compositional reasoning about safety.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Google's commitment</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">At Google, we're not just advocating for standardization and a memory-safe future, we're actively working to build it.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We are collaborating with industry and academic partners to develop potential standards, and our joint authorship of the recent </span><a href="https://cacm.acm.org/opinion/it-is-time-to-standardize-principles-and-practices-for-software-memory-safety/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">CACM call-to-action</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> marks an important first step in this process. In addition, as outlined in our </span><a href="https://blog.google/technology/safety-security/google-secure-by-design-pledge/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Secure by Design whitepaper</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> and in our </span><a href="https://security.googleblog.com/2024/10/safer-with-google-advancing-memory.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">memory safety strategy</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, we are deeply committed to building security into the foundation of our products and services.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This commitment is also reflected in our internal efforts. We are prioritizing memory-safe languages, and have already seen significant reductions in vulnerabilities by adopting languages like Rust in combination with existing, wide-spread usage of Java, Kotlin, and Go where performance constraints permit. We recognize that a complete transition to those languages will take time. That's why we're also investing in techniques to improve the safety of our existing C++ codebase by design, such as </span><a href="https://security.googleblog.com/2024/11/retrofitting-spatial-safety-to-hundreds.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">deploying hardened libc++</span></a><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Let's build a memory-safe future together</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This effort isn't about picking winners or dictating solutions. It's about creating a level playing field, empowering informed decision-making, and driving a virtuous cycle of security improvement. It's about enabling a future where:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><ul style="margin-bottom: 0; margin-top: 0; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Developers and vendors can confidently build more secure systems, knowing their efforts can be objectively assessed.</span></p></li><li aria-level="1" dir="ltr" style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Businesses can procure memory-safe products with assurance, reducing their risk and protecting their customers.</span></p></li></ul><ul style="margin-bottom: 0; margin-top: 0; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Governments can effectively protect critical infrastructure and incentivize the adoption of secure-by-design practices.</span></p></li><li aria-level="1" dir="ltr" style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Consumers are empowered to make decisions about the services they rely on and the devices they use with confidence – knowing the security of each option was assessed against a common framework.&nbsp;</span></p></li></ul><div><span style="font-family: Google Sans, sans-serif;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The journey towards memory safety requires a collective commitment to standardization. We need to build a future where memory safety is not an afterthought but a foundational principle, a future where the next generation inherits a digital world that is secure by design.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Acknowledgments</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: &quot;Google Sans&quot;, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We'd like to thank our CACM article co-authors for their invaluable contributions: Robert N. M. Watson, John Baldwin, Tony Chen, David Chisnall, Jessica Clarke, Brooks Davis, Nathaniel Wesley Filardo, Brett Gutstein, Graeme Jenkinson, Christoph Kern, Alfredo Mazzinghi, Simon W. Moore, Peter G. Neumann, Hamed Okhravi, Peter Sewell, Laurence Tratt, Hugo Vincent, and Konrad Witaszczyk, as well as many others.</span></p></span></div></content>
<link href="http://security.googleblog.com/feeds/4881259953162954101/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/4881259953162954101?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/4881259953162954101" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/4881259953162954101" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/02/securing-tomorrows-software-need-for.html" rel="alternate" title="Securing tomorrow's software: the need for memory safety standards " type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-8768325532611192027</id>
<published>2025-01-29T12:59:00.002-05:00</published>
<updated>2025-01-29T13:39:07.407-05:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="android"/>
<category scheme="http://www.blogger.com/atom/ns#" term="android security"/>
<category scheme="http://www.blogger.com/atom/ns#" term="google play"/>
<category scheme="http://www.blogger.com/atom/ns#" term="google play protect"/>
<title type="text">How we kept the Google Play & Android app ecosystems safe in 2024</title>
<content type="html"><span class="byline-author">Posted by Bethel Otuteye and Khawaja Shams (Android Security and Privacy Team), and Ron Aquino (Play Trust and Safety)</span>
<p>
Android and Google Play comprise a vibrant ecosystem with billions of users around the globe and millions of helpful apps. Keeping this ecosystem safe for users and developers remains our top priority. However, like any flourishing ecosystem, it also attracts its share of bad actors. That’s why every year, we continue to invest in more ways to protect our community and fight bad actors, so users can trust the apps they download from Google Play and developers can build thriving businesses.
</p>
<p>
Last year, those investments included AI-powered threat detection, stronger privacy policies, supercharged developer tools, new industry-wide alliances, and more. As a result, <strong>we prevented 2.36 million policy-violating apps from being published on Google Play and banned more than 158,000 bad developer accounts that attempted to publish harmful apps. </strong><br>
</p>
<p>
But that was just the start. For more, take a look at our recent highlights from 2024:
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW25Q2BOplDtBkLAULliNUloMIIcD0j6UtJgrmz3bAioa7gEFKdoY71iDoJ9gvbw-UnKJzsicA3AiLIiPLTBXBXg_n_yWPlSQem3jcrJy9CzLRxhkZjntJeT0juhMcfBDJWTs5I19TJwy3gffYYNCG7y9Xch63Otldnt1JmFGjEJdQbPktay3xw-z98T4z/s1600/bad_app_3b_stat%20_1200x630%20%20%20.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="630" data-original-width="1201" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW25Q2BOplDtBkLAULliNUloMIIcD0j6UtJgrmz3bAioa7gEFKdoY71iDoJ9gvbw-UnKJzsicA3AiLIiPLTBXBXg_n_yWPlSQem3jcrJy9CzLRxhkZjntJeT0juhMcfBDJWTs5I19TJwy3gffYYNCG7y9Xch63Otldnt1JmFGjEJdQbPktay3xw-z98T4z/s1600/bad_app_3b_stat%20_1200x630%20%20%20.jpg"/></a></div>
</p>
<p>
<h3>Google’s advanced AI: helping make Google Play a safer place</h3><br><br>To keep out bad actors, we have always used a combination of human security experts and the latest threat-detection technology. In 2024, we used Google’s advanced AI to improve our systems’ ability to proactively identify malware, enabling us to detect and block bad apps more effectively. It also helps us streamline review processes for developers with a proven track record of policy compliance. Today, <strong>over 92% of our human reviews for harmful apps are AI-assisted</strong>, allowing us to take quicker and more accurate action to help prevent harmful apps from becoming available on Google Play.
</p>
<p>
That’s enabled us to stop more bad apps than ever from reaching users through the Play Store, protecting users from harmful or malicious apps before they can cause any damage.
</p>
<p>
<h3>Working with developers to enhance security and privacy on Google Play</h3>
</p>
<p>
To protect user privacy, we’re working with developers to reduce unnecessary access to sensitive data.<strong> In 2024, we prevented 1.3 million apps from getting excessive or unnecessary access to sensitive user data.</strong> We also required apps to be more transparent about how they handle user information by launching <a href="https://support.google.com/googleplay/android-developer/answer/13327111?hl=en">new developer requirements</a> and a new <a href="https://support.google.com/googleplay/thread/279819114/control-your-app-account-data-with-the-updated-data-safety-section">“Data deletion” </a>option for apps that support user accounts and data collection. This helps users manage their app data and understand the app’s deletion practices, making it easier for Play users to delete data collected from third-party apps.
</p>
<p>
We also worked to ensure that apps use the strongest and most up-to-date privacy and security capabilities Android has to offer. Every new version of Android introduces new security and privacy features, and we encourage developers to embrace these advancements as soon as possible. As a result of partnering closely with developers, <strong>over 91% of app installs on the Google Play Store now use the latest protections of Android 13 or newer. <br><br></strong>Safeguarding apps from scams and fraud is an ongoing battle for developers. The <a href="https://android-developers.googleblog.com/2024/12/making-play-integrity-api-faster-resilient-private.html">Play Integrity API </a>allows developers to check if their apps have been tampered with or are running in potentially compromised environments, helping them to prevent abuse like fraud, bots, cheating, and data theft. Play Integrity API and Play’s <a href="https://support.google.com/googleplay/android-developer/answer/10183279">automatic protection</a> helps developers ensure that users are using the official Play version of their app with the latest security updates. <strong>Apps using Play integrity features are seeing 80% lower usage from unverified and untrusted sources on average. </strong>
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz_Iim7vuzd9bgkk_kKayLD_qDbZ0uRcqbXjRwgYVg2cSONqIBeZhfoPUCleJHNkEiRFImfbZrDjnhJMuTiqRa21rNEaZ7O9qCOfvQnOS8D4QSQp4OOwQFvisyxaeL1T5GA-x3G9ztjfU1stixKqT5bJWDUhbuDot4nh9s9FJE1ITnpf57FSVTjosddwik/s1600/bad_app_asset_6%20_1920x1080%20.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz_Iim7vuzd9bgkk_kKayLD_qDbZ0uRcqbXjRwgYVg2cSONqIBeZhfoPUCleJHNkEiRFImfbZrDjnhJMuTiqRa21rNEaZ7O9qCOfvQnOS8D4QSQp4OOwQFvisyxaeL1T5GA-x3G9ztjfU1stixKqT5bJWDUhbuDot4nh9s9FJE1ITnpf57FSVTjosddwik/s1600/bad_app_asset_6%20_1920x1080%20.jpg"/></a></div>
<p>
We’re also constantly working to improve the safety of apps on Play at scale, such as with the<a href="https://play.google.com/sdks"> Google Play SDK Index</a>. This tool offers insights and data to help developers make more informed decisions about the safety of an SDK. Last year, in addition to adding 80 SDKs to the index, we also worked closely with SDK and app developers to address potential SDK security and privacy issues, helping to build safer and more secure apps for Google Play.
</p>
<p>
</p>
<p>
<h3>Google Play’s multi-layered protections against bad apps </h3><br><br>To create a trusted experience for everyone on Google Play, we use our <a href="https://security.googleblog.com/2024/04/how-we-fought-bad-apps-and-bad-actors-in-2023.html">SAFE principles</a> as a guide, incorporating multi-layered protections that are always evolving to help keep Google Play safe. These protections start with the developers themselves, who play a crucial role in building secure apps. We provide developers with <a href="https://developer.android.com/google/play/integrity/overview">best-in-class tools</a>, <a href="https://developer.android.com/security">best practices</a>, and on-demand training <a href="https://playacademy.withgoogle.com/courses/design">resources</a> for building safe, high-quality apps. Every app undergoes rigorous <a href="https://www.youtube.com/watch?v=uxFU9D4EtMc&t=1s">review and testing</a>, with only approved apps allowed to appear in the Play Store. Before a user downloads an app from Play, users can explore its user reviews, ratings, and <a href="https://support.google.com/googleplay/answer/11416267?hl=en&co=GENIE.Platform%3DAndroid">Data safety section</a> on Google Play to help them make an informed decision. And once installed, <a href="https://support.google.com/googleplay/answer/2812853?hl=en">Google Play Protect</a>, Android’s built-in security protection, helps to shield their Android device by continuously scanning for malicious app behavior.
</p>
<p>
<h3>Enhancing Google Play Protect to help keep users safe on Android</h3><br><br>While the Play Store offers best-in-class security, we know it’s not the only place users download Android apps – so it’s important that we also defend Android users from more generalized mobile threats. To do this in an open ecosystem, we’ve invested in sophisticated, real-time defenses that protect against scams, malware, and abusive apps. These intelligent security measures help to keep users, user data, and devices safe, even if apps are installed from various sources with varying levels of security. <br>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6g_YmBZdHI0WvKGex5AIrmRQXPq5OrTt3K1186YSjvbDIV_dZhWU1XO69po667_ZydU35OUX2pLsLZVghMg02v9bLkYdmkvuR_V9AGXNt2tFModmJMxr37qeoIi4XasFJhqHqIyeQT-YbfyxhI41OSqMVoXgxKTBLHN9T0L1vwiF8yJa6t0Mu8ZqXyOr9/s1600/bad_app_asset_9%20_1920x1080%20.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6g_YmBZdHI0WvKGex5AIrmRQXPq5OrTt3K1186YSjvbDIV_dZhWU1XO69po667_ZydU35OUX2pLsLZVghMg02v9bLkYdmkvuR_V9AGXNt2tFModmJMxr37qeoIi4XasFJhqHqIyeQT-YbfyxhI41OSqMVoXgxKTBLHN9T0L1vwiF8yJa6t0Mu8ZqXyOr9/s1600/bad_app_asset_9%20_1920x1080%20.jpg"/></a></div>
<p>
<br><a href="https://support.google.com/googleplay/answer/2812853?hl=en">Google Play Protect</a> automatically scans every app on Android devices with Google Play Services, no matter the download source. This built-in protection, enabled by default, provides crucial security against malware and unwanted software. <strong>Google Play Protect scans more than 200 billion apps daily</strong> and performs <a href="https://security.googleblog.com/2023/10/enhanced-google-play-protect-real-time.html">real-time scanning</a> at the code-level on novel apps to combat emerging and hidden threats, like polymorphic malware. <strong>In 2024, Google Play Protect’s real-time scanning identified more than 13 million new malicious apps from outside Google Play<sup>1</sup>.</strong>
</p>
<p>
Google Play Protect is always evolving to combat new threats and protect users from harmful apps that can lead to scams and fraud. Here are some of the new improvements that are now available globally on Android devices with Google Play Services:
</p>
<ul>
<li><strong>Reminder notifications in Chrome on Android to re-enable Google Play Protect: </strong>According to our research, <a href="https://security.googleblog.com/2024/02/piloting-new-ways-to-protect-Android-users-from%20financial-fraud.html">more than 95 percent of app installations</a> from major malware families that exploit sensitive permissions highly correlated to financial fraud came from Internet-sideloading sources like web browsers, messaging apps, or file managers. To help users stay protected when browsing the web, Chrome will now display a reminder notification to re-enable Google Play Protect if it has been turned off. </li>
<li><strong>Additional protection against social engineering attacks: </strong>Scammers may manipulate users into disabling Play Protect during calls to download malicious Internet-sideloaded apps. To prevent this, the Play Protect app scanning toggle is now temporarily disabled during phone or video calls. This safeguard is enabled by default during traditional phone calls as well as during voice and video calls in popular third-party apps.</li>
<li><strong>Automatically revoking app permissions for potentially dangerous apps: </strong>Since Android 11, we’ve taken a proactive approach to data privacy by automatically<a href="https://developer.android.com/about/versions/11/privacy/permissions#auto-reset"> resetting permissions for apps that users haven't used in a while</a>. This ensures apps can only access the data they truly need, and users can always grant permissions back if necessary. To further enhance security, Play Protect now automatically revokes permissions for potentially harmful apps, limiting their access to sensitive data like storage, photos, and camera. Users can restore app permissions at any time, with a confirmation step for added security.</li>
</ul>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh4-K1i9h_9tZnmGFnqPV03xTe0Dau6DsGKL1OWJ4WIr14kUGeEeHsyireyB8vupCTAp-SPNdkMVDbjghEccBrfEyF_DbZXuHHeafVBqOQ2sWHf6eqcZqEXxAUzWLa-P6Y-ACqbLlX1TCO99FRA6s0xpFYgQcUyaXMfG4NOID7FfmxCYIZAAONBWmN-5Yy/s1600/bad_app_UX%20_shadow_text_1200x630%20.jpg" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="630" data-original-width="1200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh4-K1i9h_9tZnmGFnqPV03xTe0Dau6DsGKL1OWJ4WIr14kUGeEeHsyireyB8vupCTAp-SPNdkMVDbjghEccBrfEyF_DbZXuHHeafVBqOQ2sWHf6eqcZqEXxAUzWLa-P6Y-ACqbLlX1TCO99FRA6s0xpFYgQcUyaXMfG4NOID7FfmxCYIZAAONBWmN-5Yy/s1600/bad_app_UX%20_shadow_text_1200x630%20.jpg"/></a></div>
<p>
Google Play Protect’s <a href="https://security.googleblog.com/2024/02/piloting-new-ways-to-protect-Android-users-from%20financial-fraud.html">enhanced fraud protection pilot</a> analyzes and automatically blocks the installation of apps that may use sensitive permissions frequently abused for financial fraud when the user attempts to install the app from an Internet-sideloading source (web browsers, messaging apps, or file managers)<strong>. </strong><br><br>Building on the success of our initial pilot in partnership with the Cyber Security Agency of Singapore (CSA), additional enhanced fraud protection pilots are now active in nine regions – Brazil, Hong Kong, India, Kenya, Nigeria, Philippines, South Africa, Thailand, and Vietnam.
</p>
<p>
<strong>In 2024, Google Play Protect’s enhanced fraud protection pilots have shielded 10 million devices from over 36 million risky installation attempts, encompassing over 200,000 unique apps. </strong><br><br>By piloting these new protections, we can proactively combat emerging threats and refine our solutions to thwart scammers and their increasingly sophisticated fraud attempts. We look forward to continuing to partner with governments, ecosystem partners, and other stakeholders to improve user protections.
</p>
<p>
<h3>App badging to help users find apps they can trust at a glance on Google Play</h3>
</p>
<p>
In 2024, we introduced a new badge for government developers to help users around the world identify official government apps. Government apps are often targets of impersonation due to the highly sensitive nature of the data users provide, giving bad actors the ability to steal identities and commit financial fraud. Badging verified government apps is an important step in helping connect people with safe, high-quality, useful, and relevant experiences. We partner closely with global governments and are already exploring ways to build on this work.
</p>
<p>
We also recently introduced a <a href="https://android-developers.googleblog.com/2025/01/helping-users-find-trusted-apps-on-google-play.html">new badge</a> to help Google Play users discover VPN apps that take extra steps to demonstrate their strong commitment to security. We allow developers who adhere to Play safety and security guidelines and have passed an additional independent Mobile Application Security Assessment (MASA) to display a dedicated badge in the Play Store to highlight their increased commitment to safety.
</p>
<p>
<h3>Collaborating to advance app security standards </h3>
</p>
<p>
In addition to our partnerships with governments, developers, and other stakeholders, we also worked with our industry peers to protect the entire app ecosystem for everyone. The <a href="https://www.appdefensealliance.org/">App Defense Alliance</a>, in partnership with fellow steering committee members Microsoft and Meta, recently launched the ADA Application Security Assessment (ASA) <a href="https://github.com/appdefensealliance/ASA-WG/tree/v1.0">v1.0</a>, a new standard to help developers build more secure mobile, web, and cloud applications. This standard provides clear guidance on protecting sensitive data, defending against cyberattacks, and ultimately, strengthening user trust. This marks a significant step forward in establishing industry-wide security best practices for application development.
</p>
<p>
All developers are encouraged to review and comply with the new mobile security standard. You’ll see this standard in action for all carrier apps pre-installed on future Pixel phone models.<br>
</p>
<p>
<h3>Looking ahead</h3>
</p>
<p>
<br>This year, we’ll continue to protect the Android and Google Play ecosystem, building on these tools and resources in response to user and developer feedback and the changing landscape. As always, we’ll keep empowering developers to build safer apps more easily, streamline their policy experience, and protect their businesses and users from bad actors.
</p>
<hr>
<p>
<sup>1 </sup>Based on Google Play Protect 2024 internal data.
</p></content>
<link href="http://security.googleblog.com/feeds/8768325532611192027/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/8768325532611192027?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/8768325532611192027" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/8768325532611192027" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/01/how-we-kept-google-play-android-app-ecosystem-safe-2024.html" rel="alternate" title="How we kept the Google Play & Android app ecosystems safe in 2024" type="text/html"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW25Q2BOplDtBkLAULliNUloMIIcD0j6UtJgrmz3bAioa7gEFKdoY71iDoJ9gvbw-UnKJzsicA3AiLIiPLTBXBXg_n_yWPlSQem3jcrJy9CzLRxhkZjntJeT0juhMcfBDJWTs5I19TJwy3gffYYNCG7y9Xch63Otldnt1JmFGjEJdQbPktay3xw-z98T4z/s72-c/bad_app_3b_stat%20_1200x630%20%20%20.jpg" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-1308865168187288764</id>
<published>2025-01-29T05:00:00.003-05:00</published>
<updated>2025-01-29T12:03:41.745-05:00</updated>
<title type="text">How we estimate the risk from prompt injection attacks on AI systems</title>
<content type="html"><span class="byline-author">Posted by the Agentic AI Security Team at Google DeepMind</span><div><br /></div><div><br /></div><div><span id="docs-internal-guid-38a46586-7fff-ecef-7ee0-c49cdbe3defb"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Modern AI systems, like Gemini, are more capable than ever, helping retrieve data and perform actions on behalf of users. However, data from external sources present new security challenges if untrusted sources are available to execute instructions on AI systems. Attackers can take advantage of this by hiding malicious instructions in data that are likely to be retrieved by the AI system, to manipulate its behavior. This type of attack is commonly referred to as an "indirect prompt injection," a term first coined by Kai Greshake and the NVIDIA team.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To mitigate the risk posed by this class of attacks, we are actively deploying defenses within our AI systems along with measurement and monitoring tools. One of these tools is a robust evaluation framework we have developed to automatically red-team an AI system’s vulnerability to indirect prompt injection attacks. We will take you through our threat model, before describing three attack techniques we have implemented in our evaluation framework.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Threat model and evaluation framework</span></p><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><span style="border: none; display: inline-block; height: 251px; overflow: hidden; width: 624px;"><img height="251" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcBC8D3cO1_qIFrYspkL293CoOEa2NAUC2tEcJwNUFV0l6kTXBEG8C2roZixjn2SODEq7Edu3V7ecDurRT6lzQKgaXGb8HV4EnO-y9vKdBSFqGoQiuOfu6cqhdXR-ggdtgCfbZrQwT8u3ncCc4d1uYUTqqEGEb4he2zDIvIFjG_TaM?key=tya4pyIBHhKpvvMXTAVtWlkL" style="margin-left: 0px; margin-top: 0px;" width="624" /></span></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our threat model concentrates on an attacker using indirect prompt injection to exfiltrate sensitive information, as illustrated above. The evaluation framework tests this by creating a hypothetical scenario, in which an AI agent can send and retrieve emails on behalf of the user. The agent is presented with a fictitious conversation history in which the user references private information such as their passport or social security number. Each conversation ends with a request by the user to summarize their last email, and the retrieved email in context.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The contents of this email are controlled by the attacker, who tries to manipulate the agent into sending the sensitive information in the conversation history to an attacker-controlled email address. The attack is successful if the agent executes the malicious prompt contained in the email, resulting in the unauthorized disclosure of sensitive information. The attack fails if the agent only follows user instructions and provides a simple summary of the email.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Automated red-teaming</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Crafting successful indirect prompt injections requires an iterative process of refinement based on observed responses. To automate this process, we have developed a red-team framework consisting of several optimization-based attacks that generate prompt injections (in the example above this would be different versions of the malicious email). These optimization-based attacks are designed to be as strong as possible; weak attacks do little to inform us of the susceptibility of an AI system to indirect prompt injections.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Once these prompt injections have been constructed, we measure the resulting attack success rate on a diverse set of conversation histories. Because the attacker has no prior knowledge of the conversation history, to achieve a high attack success rate the prompt injection must be capable of extracting sensitive user information contained in any potential conversation contained in the prompt, making this a harder task than eliciting generic unaligned responses from the AI system. The attacks in our framework include:</span></p><div><span><br /></span></div><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Actor Critic:</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> This attack uses an attacker-controlled model to generate suggestions for prompt injections. These are passed to the AI system under attack, which returns a probability score of a successful attack. Based on this probability, the attack model refines the prompt injection. This process repeats until the attack model converges to a successful prompt injection.&nbsp;</span></p><div><span><br /></span></div><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Beam Search: </span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This attack starts with a naive prompt injection directly requesting that the AI system send an email to the attacker containing the sensitive user information. If the AI system recognizes the request as suspicious and does not comply, the attack adds random tokens to the end of the prompt injection and measures the new probability of the attack succeeding. If the probability increases, these random tokens are kept, otherwise they are removed, and this process repeats until the combination of the prompt injection and random appended tokens result in a successful attack.</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /><br /><br /></span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Tree of Attacks w/ Pruning (TAP): </span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Mehrotra et al. (2024) </span><a href="https://arxiv.org/abs/2312.02119" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">[3]</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> designed an attack to generate prompts that cause an AI system to violate safety policies (such as generating hate speech). We adapt this attack, making several adjustments to target security violations. Like Actor Critic, this attack searches in the natural language space; however, we assume the attacker cannot access probability scores from the AI system under attack, only the text samples that are generated.</span></p><div><span><br /></span></div><div><span><br /></span></div><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We are actively leveraging insights gleaned from these attacks within our automated red-team framework to protect current and future versions of AI systems we develop against indirect prompt injection, providing a measurable way to track security improvements. A single silver bullet defense is not expected to solve this problem entirely. We believe the most promising path to defend against these attacks involves a combination of robust evaluation frameworks leveraging automated red-teaming methods, alongside monitoring, heuristic defenses, and standard security engineering solutions.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><i><br /></i></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><i><br /></i></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><i><br /></i></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline;"><i><span style="font-size: 11pt; white-space-collapse: preserve;">We would like to thank </span><span style="font-size: 14.6667px; white-space-collapse: preserve;">Vijay Bolina, Sravanti Addepalli, Lihao Liang, and Alex Kaskasoli for their prior contributions to this work</span><span style="font-size: 11pt; white-space-collapse: preserve;">.</span></i></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><b>Posted on behalf of the entire Google DeepMind Agentic AI Security team</b></span><b style="font-size: 11pt; white-space-collapse: preserve;"> (listed in alphabetical order):</b></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><i>Aneesh Pappu, Andreas Terzis, Chongyang Shi, Gena Gibson, Ilia Shumailov, Itay Yona, Jamie Hayes, John "Four" Flynn, Juliette Pluto, Sharon Lin, Shuang Song</i></span></p></span></div></content>
<link href="http://security.googleblog.com/feeds/1308865168187288764/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/1308865168187288764?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1308865168187288764" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1308865168187288764" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/01/how-we-estimate-risk-from-prompt.html" rel="alternate" title="How we estimate the risk from prompt injection attacks on AI systems" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcBC8D3cO1_qIFrYspkL293CoOEa2NAUC2tEcJwNUFV0l6kTXBEG8C2roZixjn2SODEq7Edu3V7ecDurRT6lzQKgaXGb8HV4EnO-y9vKdBSFqGoQiuOfu6cqhdXR-ggdtgCfbZrQwT8u3ncCc4d1uYUTqqEGEb4he2zDIvIFjG_TaM=s72-c?key=tya4pyIBHhKpvvMXTAVtWlkL" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-1177203933168808861</id>
<published>2025-01-23T13:00:00.003-05:00</published>
<updated>2025-01-23T13:01:21.223-05:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="android"/>
<category scheme="http://www.blogger.com/atom/ns#" term="android security"/>
<title type="text">Android enhances theft protection with Identity Check and expanded features</title>
<content type="html"><span class="byline-author">Posted by Jianing Sandra Guo, Product Manager, Android, Nataliya Stanetsky, Staff Program Manager, Android</span>
<p>
Today, people around the world rely on their mobile devices to help them stay connected with friends and family, manage finances, keep track of healthcare information and more – all from their fingertips. But a stolen device in the wrong hands can expose sensitive data, leaving you vulnerable to identity theft, financial fraud and privacy breaches.
</p>
<p>
This is why we <a href="https://security.googleblog.com/2024/10/android-theft-protection.html">recently launched Android theft protection</a>, a comprehensive suite of features designed to protect you and your data at every stage – before, during, and after device theft. As part of our commitment to help you stay safe on Android, we’re expanding and enhancing these features to deliver even more robust protection to more users around the world.
</p>
<p>
<strong>Identity Check rolling out to Pixel and Samsung One UI 7 devices</strong>
</p>
<p>
We’re officially launching<strong> Identity Check, </strong>first on Pixel and Samsung Galaxy devices eligible for <a href="https://www.samsungmobilepress.com/press-releases/samsung-one-ui-7-enhances-security-and-privacy-in-the-age-of-ai-giving-users-greater-transparency-and-choice/">One UI 7</a><sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup>, to provide better protection for your critical account and device settings. When you turn on Identity Check, your device will require explicit biometric authentication to access certain sensitive resources when you’re outside of trusted locations. Identity Check also enables <a href="https://support.google.com/android/answer/15146908?visit_id=638723797364521505-524711212&p=identity_check&rd=1#identity_check">enhanced protection for Google Accounts</a> on all supported devices and additional security for Samsung Accounts on One UI 7 eligible Galaxy devices, making it much more difficult for an unauthorized attacker to take over accounts signed in on the device.
</p>
<p>
As part of enabling Identity Check, you can designate one or more trusted locations. When you’re outside of these trusted places, biometric authentication will be required to access critical account and device settings, like changing your device PIN or biometrics, disabling theft protection, or accessing Passkeys.
</p>
<p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB3WKuccDXIn8R-PEKpn51zTXP1SjLi8IruimmVyykwe4iCgrD-sFMGblSHM-sPGqLmkoeoA8QwtgzhyphenhyphensRkMXaN3ox-DnVlf2ula9N8xvBPMyvD-7AGmmpKNJ8JQwehTiu3HV6WfWKdqt1oOoEHUJg0HnUblF_Gdn5Jged125SiYpUxYrgPE_MK0EstDIM/s1600/Identity%20Check%20-%20Android%20Theft%20Protection.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="1080" data-original-width="1141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB3WKuccDXIn8R-PEKpn51zTXP1SjLi8IruimmVyykwe4iCgrD-sFMGblSHM-sPGqLmkoeoA8QwtgzhyphenhyphensRkMXaN3ox-DnVlf2ula9N8xvBPMyvD-7AGmmpKNJ8JQwehTiu3HV6WfWKdqt1oOoEHUJg0HnUblF_Gdn5Jged125SiYpUxYrgPE_MK0EstDIM/s1600/Identity%20Check%20-%20Android%20Theft%20Protection.png"/></a></div>
Identity Check gives you more peace of mind that your most sensitive device assets are protected against unauthorized access, even if a thief or bad actor manages to learn your device PIN.
</p>
<p>
Identity Check is rolling out now to Pixel devices with Android 15 and will be available on One UI 7 eligible Galaxy devices in the coming weeks. It will roll out to supported Android devices from other manufacturers later this year.
</p>
<p>
<strong>Theft Detection Lock: expanding AI-powered protection to more users </strong>
</p>
<p>
One of the top theft protection features introduced last year was Theft Detection Lock, which uses an on-device AI-powered algorithm to help detect when your phone may be forcibly taken from you. If the machine learning algorithm detects a potential theft attempt on your unlocked device, it locks your screen to keep thieves out.
</p>
<p>
Theft Detection Lock is now fully rolled out to Android 10+ phones<sup id="fnref2"><a href="#fn2" rel="footnote">2</a></sup> around the world.
</p>
<p>
<strong>Protecting your Android device from theft</strong>
</p>
<p>
We're collaborating with the <a href="https://www.gsma.com/">GSMA</a> and industry experts to combat mobile device theft by sharing information, tools and prevention techniques. Stay tuned for an upcoming GSMA white paper, developed in partnership with the mobile industry, with more information on protecting yourself and your organization from device theft.
</p>
<p>
With the addition of Identity Check and the ongoing enhancements to our existing features, Android offers a robust and comprehensive set of tools to protect your devices and your data from theft. We’re dedicated to providing you with peace of mind, knowing your personal information is safe and secure.
</p>
<p>
<em>You can turn on the new Android theft features by clicking <a href="https://www.android.com/settings/theftprotection">here</a> on a supported Android device. Learn more about our theft protection features by visiting our <a href="https://support.google.com/android/answer/15146908">help center</a>. </em>
</p>
<!-- Footnotes themselves at the bottom. -->
<h2>Notes</h2>
<div class="footnotes">
<hr>
<ol><li id="fn1">
<p>
Timing, availability and feature names may vary in One UI 7.&nbsp;<a href="#fnref1" rev="footnote">&#8617;</a><li id="fn2">
<p>
With the exclusion for Android Go smartphones&nbsp;<a href="#fnref2" rev="footnote">&#8617;</a>
</ol></div></content>
<link href="http://security.googleblog.com/feeds/1177203933168808861/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/1177203933168808861?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1177203933168808861" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1177203933168808861" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/01/android-theft-protection-identity-check-expanded-features.html" rel="alternate" title="Android enhances theft protection with Identity Check and expanded features" type="text/html"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB3WKuccDXIn8R-PEKpn51zTXP1SjLi8IruimmVyykwe4iCgrD-sFMGblSHM-sPGqLmkoeoA8QwtgzhyphenhyphensRkMXaN3ox-DnVlf2ula9N8xvBPMyvD-7AGmmpKNJ8JQwehTiu3HV6WfWKdqt1oOoEHUJg0HnUblF_Gdn5Jged125SiYpUxYrgPE_MK0EstDIM/s72-c/Identity%20Check%20-%20Android%20Theft%20Protection.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-8807395669079430849</id>
<published>2025-01-16T14:06:00.010-05:00</published>
<updated>2025-01-16T14:09:19.851-05:00</updated>
<title type="text">OSV-SCALIBR: A library for Software Composition Analysis</title>
<content type="html"><span class="byline-author">Posted by Erik Varga, Vulnerability Management, and Rex Pan, Open Source Security Team</span><div><br /></div><div><span id="docs-internal-guid-2b371a4a-7fff-7f6b-7f3e-16189915cbc1"><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In December 2022, we </span><a href="https://security.googleblog.com/2022/12/announcing-osv-scanner-vulnerability.html" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">announced OSV-Scanner</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, a tool to enable developers to easily scan for vulnerabilities in their open source dependencies. Together with the open source community, we’ve continued to build this tool, adding </span><a href="https://opensource.googleblog.com/2024/04/osv-and-helping-developers-fix-known-vulnerabilities.html" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">remediation features</span></a><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, as well as expanding ecosystem support to 11 programming languages and 20 package manager formats.&nbsp;</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Roboto, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Today, we’re excited to release </span><a href="https://github.com/google/osv-scalibr" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSV-SCALIBR</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (Software Composition Analysis LIBRary), an extensible library for SCA and file system scanning. OSV-SCALIBR combines Google’s internal vulnerability management expertise into one scanning library with significant new capabilities such as:</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">SCA for installed packages, standalone binaries, as well as source code</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">OSes package scanning on Linux (COS, Debian, Ubuntu, RHEL, and much more), Windows, and Mac</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Artifact and lockfile scanning in major language ecosystems (Go, Java, Javascript, Python, Ruby, and much more)</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Vulnerability scanning tools such as weak credential detectors for Linux, Windows, and Mac</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">SBOM generation in SPDX and CycloneDX, the two most popular document formats</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Optimization for on-host scanning of resource constrained environments where performance and low resource consumption is critical</span></p></li></ul><div><span face="Arial, sans-serif"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><div><span face="Arial, sans-serif"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">OSV-SCALIBR is now the primary SCA engine used within Google for live hosts, code repos, and containers. It’s been used and tested extensively across many different products and internal tools to help generate SBOMs, find vulnerabilities, and help protect our users’ data at Google scale.</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We offer OSV-SCALIBR primarily as an open source Go library today, and we're working on adding its new capabilities into OSV-Scanner as the primary CLI interface.</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h2 dir="ltr" style="line-height: 1.2; margin-bottom: 6pt; margin-top: 18pt;"><span face="Arial, sans-serif" style="font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Using OSV-SCALIBR as a library</span></h2><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">All of OSV-SCALIBR's capabilities are modularized into plugins for software extraction and vulnerability detection which are </span><a href="https://github.com/google/osv-scalibr/blob/main/docs/new_extractor.md" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">very simple to expand</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.You can use OSV-SCALIBR as a library to:</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">1.Generate SBOMs from the build artifacts and code repos on your live host:</span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="border-bottom: solid #e0e0e0 1pt; border-color: rgb(224, 224, 224); border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-style: solid; border-top: solid #e0e0e0 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;"><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">import</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"context"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/osv-scalibr"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/osv-scalibr/converter"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/osv-scalibr/extractor/filesystem/list"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/osv-scalibr/fs"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/osv-scalibr/plugin"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">spdx</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/spdx/tools-golang/spdx/v2/v2_3"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">)</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">func</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">GenSBOM</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ctx</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">context</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Context</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">) </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">*</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">spdx</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Document</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> {</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">capab</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> := &amp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">plugin</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Capabilities</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">{</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">OS</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">plugin</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">OSLinux</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">}</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">cfg</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">:=</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&amp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">scalibr</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ScanConfig</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">{</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ScanRoots</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">fs</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">RealFSScanRoots</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"/"</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">),</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">FilesystemExtractors</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">list</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">FromCapabilities(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">capab)</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">,</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Capabilities</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: </span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">capab</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">,</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;}</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">result</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">:=</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">scalibr</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">New</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">().</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Scan</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ctx</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">cfg</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">)</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">return</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">converter</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ToSPDX23</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">result</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">converter</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">SPDXConfig</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">{})</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">}</span></p></td></tr></tbody></table></div><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">2. Scan a git repo for SBOMs:</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Simply replace </span><span face="Consolas, sans-serif" style="color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"/"</span><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> with the path to your git repo. Also take a look at the </span><a href="https://github.com/google/osv-scalibr/blob/d4ea36720d4e700486fef2ba9b5f2ac2fd8ce6c8/extractor/filesystem/list/list.go#L70" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">various language extractors</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> to enable for code scanning.</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">3. Scan a remote container for SBOMs:</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Replace the scan config from the above code snippet with</span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="border-bottom: solid #e0e0e0 1pt; border-color: rgb(224, 224, 224); border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-style: solid; border-top: solid #e0e0e0 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;"><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">import</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;...</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/go-containerregistry/pkg/authn"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/go-containerregistry/pkg/v1/remote"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"github.com/google/osv-scalibr/artifact/image"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;...</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">)</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><br /></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">...</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">filesys</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">_</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">:=</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">image</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">NewFromRemoteName</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">"alpine:latest"</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">,</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">remote</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">WithAuthFromKeychain</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">authn</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">DefaultKeychain</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">),</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">)</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">cfg</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">:=</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&amp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">scalibr</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ScanConfig</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">{</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ScanRoots</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: []</span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">*</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">fs</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ScanRoot</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">{{</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">FS</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">: </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">filesys</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">}},</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">...</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">}</span></p></td></tr></tbody></table></div><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">4. Find vulnerabilities on your filesystem or a remote container:</span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Extract the PURLs from the </span><a href="https://github.com/google/osv-scalibr/blob/08fdef73ebdffae84479e5c900f6e2c0c2865034/scalibr.go#L157" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">SCALIBR inventory results</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> from the previous steps:</span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="border-bottom: solid #e0e0e0 1pt; border-color: rgb(224, 224, 224); border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-style: solid; border-top: solid #e0e0e0 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;"><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">import</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;...</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;"github.com/google/osv-scalibr/converter"</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">...</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">)</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">...</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">result</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">:=</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">scalibr</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">New</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">().</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Scan</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ctx</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">cfg</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">)</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">for</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">_</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">i</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">:=</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">range</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">result</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Inventories</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> {</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">fmt</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Println</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008855; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">converter</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span><span face="Consolas, sans-serif" style="background-color: transparent; color: blue; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">ToPURL</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">(</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #0055aa; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">i</span><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">))</span></p><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #202124; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">}</span></p></td></tr></tbody></table></div><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">And send them to </span><a href="http://osv.dev" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">osv.dev</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, e.g.</span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="border-bottom: solid #e0e0e0 1pt; border-color: rgb(224, 224, 224); border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-style: solid; border-top: solid #e0e0e0 1pt; border-width: 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt; vertical-align: top;"><p dir="ltr" style="background-color: white; line-height: 1.62857; margin-bottom: 0pt; margin-top: 0pt;"><span face="Consolas, sans-serif" style="background-color: transparent; color: #770088; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">$ </span><span face="Consolas, sans-serif" style="background-color: transparent; color: #008800; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">curl -d '{"package": {"purl": "pkg:npm/dojo@1.2.3"}}' "https://api.osv.dev/v1/query"</span></p></td></tr></tbody></table></div><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">See </span><a href="https://github.com/google/osv-scalibr?tab=readme-ov-file#how-to-use" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">the usage docs</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> for more details.</span></p><br /><h2 dir="ltr" style="line-height: 1.2; margin-bottom: 6pt; margin-top: 18pt;"><span face="Arial, sans-serif" style="font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">OSV-Scanner + OSV-SCALIBR</span></h2><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Users looking for an out-of-the-box vulnerability scanning CLI tool should check out </span><a href="https://github.com/google/osv-scanner" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSV-Scanner</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, which already provides comprehensive language package scanning capabilities using much of the same extraction as OSV-SCALIBR.&nbsp;</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Some of OSV-SCALIBR’s capabilities are not yet available in OSV-Scanner, but we’re currently working on integrating OSV-SCALIBR more deeply into OSV-Scanner. This will make more and more of OSV-SCALIBR’s capabilities available in OSV-Scanner in the next few months, including installed package extraction, weak credentials scanning, SBOM generation, and more.</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Look out soon for an announcement of OSV-Scanner V2 with many of these new features available. OSV-Scanner will become the primary frontend to the OSV-SCALIBR library for users who require a CLI interface. Existing users of OSV-Scanner can continue to use the tool the same way, with backwards compatibility maintained for all existing use cases.&nbsp;</span></p><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">For installation and usage instructions, have a look at OSV-Scanner’s documentation </span><a href="https://google.github.io/osv-scanner/" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">here</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><br /><h2 dir="ltr" style="line-height: 1.2; margin-bottom: 6pt; margin-top: 18pt;"><span face="Arial, sans-serif" style="font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></h2><h2 dir="ltr" style="line-height: 1.2; margin-bottom: 6pt; margin-top: 18pt;"><span face="Arial, sans-serif" style="font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">What’s next</span></h2><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In addition to making all of OSV-SCALIBR’s features available in OSV-Scanner, we're also working on additional new capabilities. Here's some of the things you can expect:</span></p><ul style="margin-bottom: 0px; margin-top: 0px; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Support for more OS and language ecosystems, both for regular extraction and for </span><a href="https://osv.dev/blog/posts/announcing-guided-remediation-in-osv-scanner/" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">Guided Remediation</span></a></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Layer attribution and base image identification for container scanning</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Reachability analysis to reduce false positive vulnerability matches</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">More vulnerability and misconfiguration detectors for Windows</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: disc; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">More weak credentials detectors</span></p></li></ul><br /><p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We hope that this library helps developers and organizations to secure their software and encourages the open source community to contribute back by sharing new plugins on top of OSV-SCALIBR.</span></p><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">If you have any questions or if you would like to contribute, don't hesitate to reach out to us at osv-discuss@google.com or by posting an issue in our </span><a href="https://github.com/google/osv-scalibr/issues" style="text-decoration-line: none;"><span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">issue tracker</span></a><span face="Arial, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></span></div></content>
<link href="http://security.googleblog.com/feeds/8807395669079430849/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/8807395669079430849?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/8807395669079430849" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/8807395669079430849" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2025/01/osv-scalibr-library-for-software.html" rel="alternate" title="OSV-SCALIBR: A library for Software Composition Analysis" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-7218019310938071792</id>
<published>2024-12-10T13:11:00.005-05:00</published>
<updated>2024-12-10T13:11:43.106-05:00</updated>
<title type="text">Google Cloud expands vulnerability detection for Artifact Registry using OSV</title>
<content type="html"><span class="byline-author">Posted by Greg Mucci, Product Manager, Artifact Analysis, Oliver Chang, Senior Staff Engineering, OSV, and Charl de Nysschen, Product Manager OSV</span><div><br /></div><div><span id="docs-internal-guid-e83dd7d8-7fff-dd0f-611a-9785ce55d111"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">D</span><span face="&quot;Google Sans&quot;, sans-serif" style="color: #444746; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">evOps teams dedicated to securing their supply chain and predicting potential risks consistently face novel threats. Fortunately, they can now improve their image and container security by harnessing Google-grade vulnerability scanning, which offers expanded open-source coverage. A significant benefit of utilizing Google Cloud Platform is its integrated security tools, including Artifact Analysis. This scanning service leverages the same infrastructure that Google depends on to monitor vulnerabilities within its internal systems and software supply chains.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #444746; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #444746; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Artifact Analysis has recently expanded its scanning coverage to eight additional language packages, four operating systems, and two extensively utilized base images, making it a more robust and versatile tool than ever before. </span><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="background-color: white; color: #444746; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This enhanced coverage was achieved by integrating Artifact Analysis with the Open Source Vulnerabilities (OSV) platform and database. This integration provides industry-leading insights into open source vulnerabilities—a crucial capability as software supply chain attacks continue to grow in frequency and complexity, impacting organizations reliant on open source software.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="background-color: white; color: #444746; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #444746; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">With these recent updates, customers can now successfully scan the vast majority of the images they push to Artifact Registry. These successful scans ensure that any known vulnerabilities are detected, reported, and can be integrated into a broader vulnerability management program, allowing teams to take prompt action</span><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Open source vulnerabilities, with more reach&nbsp;</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Artifact Analysis pulls vulnerability information directly from OSV, which is the only open source, distributed vulnerability database that gets information directly from open source practitioners. OSV’s database provides a consistent, high quality, high fidelity database of vulnerabilities from authoritative sources who have adopted the </span><a href="https://ossf.github.io/osv-schema/" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSV schema</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. This ensures the database has accurate information to reliably match software dependencies to known vulnerabilities—previously a difficult process reliant on inaccurate mechanisms such as CPEs (Common Platform Enumerations).&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Over the past three years, OSV has increased its total coverage to 28 language and OS ecosystems. For example, industry leaders such as GitHub, Chainguard, and Ubuntu, as well as open source ecosystems such as Rust and Python are now exporting their vulnerability discoveries in the OSV Schema. This increased coverage also includes </span><a href="https://www.chainguard.dev/chainguard-images" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Chainguard’s</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> Wolfi images and </span><a href="https://github.com/GoogleContainerTools/distroless/blob/main/README.md" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Google’s Distroless images</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, which are popular choices for minimal container images used by many developers and organizations. Customers who rely on distroless images can count on Artifact Analysis scanning to support their minimal container image initiatives.&nbsp; Each expansion in OSV’s coverage is incorporated into scanning tools that integrate with the OSV database.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Broader vulnerability detection with Artifact Analysis&nbsp;</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">As a result of OSV’s expansion, scanners like Artifact Analysis that draw from OSV now alert users to higher quality vulnerability information across a broader set of ecosystems—meaning GCP project owners will be made aware of a </span><a href="https://cloud.google.com/artifact-analysis/docs/container-scanning-overview#feature-support" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">more complete set</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> of vulnerability findings and potential security risks.&nbsp;</span></p><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Existing </span><a href="https://cloud.google.com/artifact-registry/docs/analysis#automatic_scanning" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Artifact Registry scanning</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> customers don't need to take any action to take advantage of this update. Projects that have scanning enabled will immediately benefit from this expanded coverage and vulnerability findings will continue to be available in the Artifact Registry UI, Container Analysis API, and via </span><a href="https://cloud.google.com/artifact-analysis/docs/pub-sub-notifications?hl=en" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">pub/sub</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (for workflows).</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="background-color: white; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Existing </span><a href="https://cloud.google.com/artifact-registry/docs/analysis#on-demand_scanning" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="background-color: white; color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">On Demand scanning</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="background-color: white; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> cust</span><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">omers will also benefit from this expanded vulnerability coverage. All the same Operating Systems and Language package coverage that Registry Scanning customers enjoy are available in On Demand Scan.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Beyond Artifact Registry&nbsp;</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We know that detection is just one of the first steps necessary to manage risks. We’re continually expanding Artifact Analysis capabilities and in 2025 we’ll be integrating Artifact Registry vulnerability findings with Google Cloud’s </span><a href="https://cloud.google.com/security/products/security-command-center?hl=en" style="text-decoration-line: none;"><span face="&quot;Google Sans&quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Security Command Center</span></a><span face="&quot;Google Sans&quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. Through Security Command Center customers can maintain a more comprehensive vulnerability management program, and prioritize risk across a number of different dimensions.&nbsp;</span></p></span></div></content>
<link href="http://security.googleblog.com/feeds/7218019310938071792/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/7218019310938071792?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7218019310938071792" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/7218019310938071792" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2024/12/google-cloud-expands-vulnerability.html" rel="alternate" title="Google Cloud expands vulnerability detection for Artifact Registry using OSV" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-6486197722090877466</id>
<published>2024-12-05T12:53:00.017-05:00</published>
<updated>2024-12-12T16:20:20.010-05:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="android"/>
<category scheme="http://www.blogger.com/atom/ns#" term="android security"/>
<title type="text">Announcing the launch of Vanir: Open-source Security Patch Validation</title>
<content type="html"><div><span color="rgba(0, 0, 0, 0.54)" face="Roboto, sans-serif" style="font-size: 14px;">Posted by Hyunwook Baek, Duy Truong, Justin Dunlap and Lauren Stan from Android Security and Privacy, and Oliver Chang with the Google Open Source Security Team</span></div><div><span id="docs-internal-guid-27ee44bd-7fff-1fab-ef9f-2fbfa0581f97"><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Today, we are announcing the availability of </span><a href="https://github.com/google/vanir" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Vanir</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, a new open-source security patch validation tool. Introduced at Android Bootcamp in April, Vanir gives Android platform developers the power to quickly and efficiently scan their custom platform code for missing security patches and identify applicable available patches. Vanir significantly accelerates patch validation by automating this process, allowing OEMs to ensure devices are protected with critical security updates much faster than traditional methods. This strengthens the security of the Android ecosystem, helping to keep Android users around the world safe.&nbsp;</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">By open-sourcing Vanir, we aim to empower the broader security community to contribute to and benefit from this tool, enabling wider adoption and ultimately improving security across various ecosystems. While initially designed for Android, Vanir can be easily adapted to other ecosystems with relatively small modifications, making it a versatile tool for enhancing software security across the board. In collaboration with the Google Open Source Security Team, we have incorporated feedback from our early adopters to improve Vanir and make it more useful for security professionals. </span><a href="https://github.com/google/vanir." style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">This tool is now available</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> for you to start developing on top of, and integrating into, your systems.</span></p><p style="line-height: 1.656; margin-bottom: 33pt; margin-top: 39pt; text-align: left;"><span style="font-size: 12pt; font-weight: normal; white-space-collapse: preserve;">The Android ecosystem relies on a multi-stage process for vulnerability mitigation. When a new vulnerability is discovered, upstream AOSP developers create and release upstream patches. The downstream device and chip manufacturers then assess the impact on their specific devices and backport the necessary fixes. This process, while effective, can present scalability challenges, especially for manufacturers managing a diverse range of devices and old models with complex update histories. Managing patch coverage across diverse and customized devices often requires considerable effort due to the manual nature of backporting.</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To streamline the vital security workflow, we developed Vanir. Vanir provides a scalable and sustainable solution for security patch adoption and validation, helping to ensure Android devices receive timely protection against potential threats.</span></p><h1 dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 39pt;"><span face="Roboto, sans-serif" style="font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">The power of Vanir</span></h1><h2 dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Source-code-based static analysis&nbsp;</span></h2><p dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Vanir’s first-of-its-kind approach to Android security patch validation uses source-code-based static analysis to directly compare the target source code against known vulnerable code patterns. Vanir does not rely on traditional metadata-based validation mechanisms, such as version numbers, repository history and build configs, which can be prone to errors. This unique approach enables Vanir to analyze entire codebases with full history, individual files, or even partial code snippets.&nbsp;</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">A main focus of Vanir is to automate the time consuming and costly process of identifying missing security patches in the open source software ecosystem. During the early development of Vanir, it became clear that manually identifying a high-volume of missing patches is not only labor intensive but also can leave user devices inadvertently exposed to known vulnerabilities for a period of time. To address this, Vanir utilizes novel automatic signature refinement techniques and multiple pattern analysis algorithms, inspired by the vulnerable code clone detection algorithms proposed by </span><a href="https://ieeexplore.ieee.org/document/6234404" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Jang et al.</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> [1] and </span><a href="https://ieeexplore.ieee.org/document/7958600" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Kim et al.</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> [2]. These algorithms have low false-alarm rates and can effectively handle broad classes of code changes that might appear in code patch processes. In fact, based on our 2-year operation of Vanir, only 2.72% of signatures triggered&nbsp; false alarms. This allows Vanir to efficiently find missing patches, even with code changes, while minimizing unnecessary alerts and manual review efforts.&nbsp;</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Vanir's source-code-based approach also enables rapid scaling across any ecosystem. It can generate signatures for any source files written in supported languages. Vanir's signature generator automatically generates, tests, and refines these signatures, allowing users to quickly create signatures for new vulnerabilities in any ecosystem simply by providing source files with security patches.&nbsp;</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Android’s successful use of Vanir highlights its efficiency compared to traditional patch verification methods. A single engineer used Vanir to generate signatures for over 150 vulnerabilities and verify missing security patches across its downstream branches – all within just five days.</span></p><h2 dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Vanir for Android</span></h2><p dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Currently Vanir supports C/C++ and Java targets and covers 95% of Android kernel and userspace CVEs with public security patches. Google Android Security team consistently incorporates the latest CVEs into Vanir’s coverage to provide a complete picture of the Android ecosystem’s patch adoption risk profile.&nbsp;</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The Vanir signatures for Android vulnerabilities are published through the </span><a href="https://osv.dev/" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">Open Source Vulnerabilities (OSV)</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> database. This allows Vanir users to seamlessly protect their codebases against latest Android vulnerabilities without any additional updates. Currently, there are over </span><a href="https://osv.dev/list?q=&amp;ecosystem=Android" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">2,000 Android vulnerabilities in OSV</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, and finishing scanning an entire Android source tree can take 10-20 minutes with a modern PC.</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><span style="border: none; display: inline-block; height: 273px; overflow: hidden; width: 682px;"><img height="273" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABkAAAAKACAYAAADEq7QAAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3Qd4VFX6BvB3anpPIKQBIQFCb1LtoKCgK64oCuraK4hrL4gFsCCKvaFgBQEXsWFFFBCU3ktCCSQhCek9k8zM//+dKSSQkAAJmUne+zysMLnlnN+9Qfe++c6nATcKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUo0MwENM1sPpwOBShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFAADED4EFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKNDsBBiDN7pZyQhSgAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABCjAA4TNAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKUIACFKBAsxNgANLsbiknRAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAMQPgMUoAAFKEABClCAAhSgAAUoQAEKuIpAOwADAXQFEAUgAIDVVQbHcVCAAhSgAAUocEoCZgB5APYB2ATgLwAFp3SmkzyIAchJgnF3ClCAAhSgAAUoQAEKUIACFKAABRpMQAKOeACXAbgHQEiDnZknogAFKEABClDAlQX2AJgJYDmAVADFjTFYBiCNocpzUoACFKAABShAAQpQgAIUoAAFKHAiAQk+LgRw3f//FOjFAPxjYmIwePBgdOjQAREREQgKCoKnpyf0ej0lKUABClCAAhRwYwGTyYSSkhJkZWXh0KFD2L17N3744QfHjFIAyB++BLAKQHlDTpUBSENq8lwUoAAFKEABClCAAhSgAAUoQAEK1CUgFR8PARgJIKJXr16444470KdPH0RGRsLb2xteXl7w8PCARsPXFnVh8usUoAAFKEABdxCwWCwoKytTQUhBQYEKQtauXYuHHpL/JFBbMoDPALwLQEKRBtn4XxINwsiTUIACFKAABShAAQpQgAIUoAAFKFAPgYsAzJXgQ/ZduHAhRo4cCYPBwEqPeuBxFwpQgAIUoEBzEqioqEB2djY+/vhjPProozI16fslVSC3A9jZEHNlANIQijwHBShAAQpQgAIUoAAFKEABClCAAicSMAIYA2AOAMM999yDSZMmIS4ujmoUoAAFKEABClAA69evx4wZM/Dll7ISFg4D+DeA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rEFIzNijqYPpb38sB/nSGXXNUQAZdUvKCZEACZAACZAACZAACZAACZAACRwyAcmHfheArwHwAvgsgGWH3BpPJAESIIExQoACyBhZ6OE6TREaOmtaeyNARACZdP4Uk46KZYwToAAyxi8ATp8ESIAESIAESIAESIAESIAESKAPgR8D+BYAMZD9KoBgLnEWEiABEiCB/RKgAMILZEgJiADSUd2KlTcGU2DlXDUHGRdMpQAypKsyTDqnADJMFoLDIAESIAESIAESIAESIAESIAESGGIC3wUgAkg1gGsB/HOIx8PuSYAESGDEEKAAMmKWapQOVAGBNh+aN9bC9tuIyUxEdEY8TcNH6XIf1LQogBwULlYmARIgARIgARIgARIgARIgARIYdQQiQymvfgagfufjBgDPjLpZckIkQAIkcAQJUAA5gnDZ9AAJGPPxkOn6vjw8BtgUq40iAhRARtFiciokQAIkQAIkQAIkQAIkQAIkQAKHQEBMzsX3IzUkhDwEIHAI7fAUEiABEhizBCiAjNml58RJYJgToAAyzBeIwyMBEiABEiABEiABEiABEiABEjiCBI4L+Xwkh7w/7gVAw9QjCJxNkwAJjE4CFEBG57pyViQw8gkodCptnfjOFU+vGvmT4QxIgARIgARIgARIgARIgARIgARIYMAEjgHwOoBYAHeG/D8ofgwYHyuSAAmQwC4CgyaAzHjmUneSVt+F1t/b+cbsJmQSIAESOEwCbbaFk9697NnVh9kOTycBEiABEiABEiABEiABEiABEiCBkUJgIYD/BSAiyH0hAaRxpAye4yQBEiCB4UZg0ASQJW8scfqq025SSv8QQNRwmyjHQwIkMOII1FiwTn37iqc3jriRc8AkQAIkQAIkQAIkQAIkQAIkQAIkcPAEMgH8HsA5AJ4HcM1O74+6g2+GZ5AACZAACYQJDJoAIg2e+OSln4XC/QDiiZgESIAEDouAwnqnM3DOm598ruqw2uHJJEACJEACJEACJEACJEACJEACJDAyCPwTwMcBLANwGYBtI2PYHCUJkAAJDF8CgyyAfPI4KOtxAHnDd8ocGQmQwIggoPUzjQ712aLLnu0ZEePlIEmABEiABEiABEiABEiABEiABEjg0AhEA/glgC8DeCcU+bH50JriWSRAAiRAAn0JDKoAcvwzlyZbNv6igqF6LCRAAiRwqAS6odT3l17+jPwByEICJEACJEACJEACJEACJEACJEACo5WApJH/OoC7AXhCIogYoLOQAAmQAAkMAoFBFUBkPCc8dfkNFuzfDMLY2AQJkMAYJaCAEgvWp9+64ukPxygCTpsESIAESIAESIAESIAESIAESGBsELg8ZHaeDuCinebnLwDQY2PqnCUJkAAJHHkCgy6AyJBPfOrSMgA5R3747IEESGCUErjXmV53y5unvukfpfPjtEiABEiABEiABEiABEiABEiABEhgJoC3dwogSQC+EjJAJxUSIAESIIFBJHBEBJBTHr/s1ICl/wFFM/RBXCs2RQJjg4DGUtvt+sy7n3yifGxMmLMkARIgARIgARIgARIgARIgARIYgwSmAPg7gEIA9+yc/x0A6IE5Bi8ETpkESODIEjgiAsilz1zqqNb6B1qr/wEguQxZSIAESGAgBGq0hUuWXfbs0oFUZh0SIAESIAESIAESIAESIAESIAESGIEEJgOQ9PGS8upJAN/aaXy+dQTOg0MmARIggWFP4IgIIDLrhc9dPM7d4/wZFL7IzIXD/jrgAElgOBDoUBpfe+dTz/55OAyGYyABEiABEiABEiABEiABEiABEiCBI0DACeAuALfsNDyvBnAsxY8jQJlNkgAJkECIwBETQMKEFz952W1Q+psKSCB1EiABEtgLARvAeh2wv7vsyr/9m4RIgARIgARIgARIgARIgARIgARIYBQTuBnALwE0iI0ugE2jeK6cGgmQAAkMOYEjLoDIDE966pIrNNSnNXAyhZAhX3MOgASGE4GtGuo5y3Y89M6nn1w7nAbGsZAACZAACZAACZAACZAACZAACZDAIBM4CcCLALoB3ATg8UFun82RAAmQAAnsRuCoCCDS58lPXjjZdriPhY3zAPMYz9UgARIYswRWAHjZsvFfy4nlb172bNuYJcGJkwAJkAAJkAAJkAAJkAAJkAAJjAUCswE8BkB+SgqsnwDoGAsT5xxJgARIYCgJHDUBJDxJMUjfFtEdrTuj0iwEptnKmqC00kMJgX2TAAkceQLasv1Kq/IepTfGtMc0vXn1n7uh6BB05MmzBxIgARIgARIgARIgARIgARIggSEmIDcB/w7AxQD+CuALAFqHeEzsngRIgATGBIGjLoCMCaqcJAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkALgA/2hnt8W0AZQCOA1BPMCRAAiRAAkeHAAWQo8OZvZAACZAACZAACZAACZAACZAACZAACZAACYw9ApcA+GMo4uNqAK+OPQScMQmQAAkMHQEKIEPHnj2TAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmMXgKZAN7dmf4qDcAtAO4DYI/e6XJmJEACJDD8CFAAGX5rwhGRAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmMbAITATwN4MSQ/4cIIG0je0ocPQmQAAmMPAIUQEbemnHEJEACJEACJEACJEACJEACJEACJEACJEACw5dALIDbQr4f7wO4AkD58B0uR0YCJEACo5cABZDRu7acGQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwNEncAGAhwHEAThj52Pp0R8CeyQBEiABEhACFEB4HZAACZAACZAACZAACZAACZAACZAACZAACZDA4BGo2CmATAZwPYAHBq9ZtkQCJEACJHCwBCiAHCwx1icBEiABEiABEiABEiABEiABEiABEiABEiCBPQlEAXgUwCUA/hfAN3ean3cSFAmQAAmQwNARoAAydOzZMwmQAAmQAAmQAAmQAAmQAAmQAAmQwBgksEKvcDmr4tJ0hD9VWdpt21akciBCQXGfZkReD07U19biu9d98+Tlb79/S25hXv037rjlvlPOXrIigADXdESuKQc9mgloaG0FdJdtObuU8ncon7/uufTndtyp7rRH87zH6tz4JjxWV57zJgESIAESIAESIAESIAESIAESIAESOGoEVm3fMh1O/8cs255rA2nKUola6wStlUspuAHzYBmJBJTC+pVr1fe+8q34Kk9F5C///JueUz52WrPlcNjQeiTOiGMmgVFLQBuhWdsK8AHotjW6LQeaYesWBJRXO/RytyPitVnj8itHLYQxNjEKIGNswTldEiABEiABEiABEiABEiABEiABEiCBI0vgDY8nMs7dnqYdap7Loa6wtToN0GlHtle2PhQELMtCU0MT7r39Hrzw1HO48sufw3d+ehv8Ph80xY+hWBL2SQKHT0B2zJX2ImA9B23/23aoDa0p0+pOVcp/+I2zhaNNgALI0SbO/kiABEiABEiABEiABEiABEiABEiABEYlgVXbNmRplz7Rsq2TbaVPUcCUUTlRTqqXgMPpwN8eeRo/vPl2nHjmybj7f3+OhMQE2DYz6fAyIYFRRGAVoF+xlVpq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VGc/v1LzNdf8LCMBxPzWlCwiAkSACBABIkAEiAARIAJEgAgQASJABIyAwKm0y6FSAUMlEklnragNBMA8Q2yNYGo0BSJABIgAEbg7gTwRSBe0uCEI2CcVpb+EeTaLIVimS4AEENNdO5o5ESACRIAIEAEiQASIABEgAkSACBABImAiBE5nXWsuaDWtBSBQhNZL4GKIzFsQtBaiCGsANgJEiYmYQ9MkAkSACJgsARGCBgJKoUUxIJQC2jQAaYJMSBC12lipRnaptWfzWJM1kCZ+GwESQOiBIAJEgAgQASJABIgAESACRIAIEAEiQASIQB0SiBQjLZR5ShtBY2OrLFdKLKVymVailQmCQOc0dbgONBQRIAINk4AoiqJEK1FL5Cp1uVaqVkvkxaXOSSXdhe7qhknEvK2mL1bzXl+yjggQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiECDJEACSINcdjKaCBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIgHkTIAHEvNeXrCMCRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASLQIAmQANIgl52MJgJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABImDeBEgAMe/1JeuIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAINEgCJIA0yGUno4kAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAiYNwESQMx7fck6IkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAg2SAAkgDXLZyWgiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESAC5k2ABBDzXl+yjggQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiECDJEACSINcdjKaCBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIgHkTIAHEvNeXrCMCRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASLQIAn8H44nNnlKFVYBAAAAAElFTkSuQmCC" style="margin-left: 0px; margin-top: 0px;" width="682" /></span></span></p><h2 dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 37pt;"><span face="Roboto, sans-serif" style="font-size: 16pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Flexible integration, adoption and expansion.</span></h2><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Vanir is developed not only as a standalone application but also as a Python library. Users who want to integrate automated patch verification processes with their continuous build or test chain may easily achieve it by wiring their build integration tool with Vanir scanner libraries. For instance, Vanir is integrated with a continuous testing pipeline in Google, ensuring all security patches are adopted in ever-evolving Android codebase and their first-party downstream branches.</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Vanir is also fully open-sourced, and under BSD-3 license. As Vanir is not fundamentally limited to the Android ecosystem, you may easily adopt Vanir for the ecosystem that you want to protect by making relatively small modifications in Vanir. In addition, since Vanir’s underlying algorithm is not limited to security patch validation, you may modify the source and use it for different purposes such as licensed code detection or code clone detection. The Android Security team welcomes your contributions to Vanir for any direction that may expand its capability and scope. You can also contribute to Vanir by providing vulnerability data with Vanir signatures to OSV.</span></p><h1 dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 39pt;"><span face="Roboto, sans-serif" style="font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Vanir Results</span></h1><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Since early last year, we have partnered with several Android OEMs to test the tool’s effectiveness. Internally we have been able to integrate the tool into our build system continuously testing against over 1,300 vulnerabilities. Currently Vanir covers 95% of all Android, Wear, and Pixel vulnerabilities with public fixes across Android Kernel and Userspace. It has a 97% accuracy rate, which has saved our internal teams over 500 hours to date in patch fix time.</span></p><h1 dir="ltr" style="line-height: 1.656; margin-bottom: 33pt; margin-top: 39pt;"><span face="Roboto, sans-serif" style="font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Next steps</span></h1><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We are happy to announce that Vanir is now available for public use. Vanir is not technically limited to Android, and we are also actively exploring problems that Vanir may help address, such as general C/C++ dependency management via </span><a href="https://github.com/google/osv-scanner/issues/1227" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">integration with OSV-scanner</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. If you are interested in using or contributing to Vanir, please visit </span><a href="http://github.com/google/vanir" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">github.com/google/vanir</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. Please join our </span><a href="https://groups.google.com/g/vanir-help" style="text-decoration-line: none;"><span face="Roboto, sans-serif" style="color: #1155cc; font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">public community</span></a><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> to submit your feedback and questions on the tool.&nbsp;</span></p><p dir="ltr" style="line-height: 1.656; margin-bottom: 27pt; margin-top: 19pt;"><span face="Roboto, sans-serif" style="font-size: 12pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We look forward to working with you on Vanir!</span></p></span></div></content>
<link href="http://security.googleblog.com/feeds/6486197722090877466/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/6486197722090877466?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/6486197722090877466" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/6486197722090877466" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2024/12/announcing-launch-of-vanir-open-source.html" rel="alternate" title="Announcing the launch of Vanir: Open-source Security Patch Validation" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-1653446558535304100</id>
<published>2024-11-20T11:55:00.000-05:00</published>
<updated>2024-11-20T11:55:46.416-05:00</updated>
<title type="text">Leveling Up Fuzzing: Finding more vulnerabilities with AI</title>
<content type="html"><span class="byline-author">Posted by Oliver Chang, Dongge Liu and Jonathan Metzman, Google Open Source Security Team</span><div><br /></div><div style="text-align: left;"><span id="docs-internal-guid-7cc925ed-7fff-6fe3-a606-da130a2f9469"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Recently, OSS-Fuzz reported </span><a href="https://github.com/google/oss-fuzz-gen?tab=readme-ov-file#bugs-discovered" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">26 new vulnerabilities</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> to open source project maintainers, including one vulnerability in the critical OpenSSL library (</span><a href="https://openssl-library.org/news/secadv/20241016.txt" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">CVE-2024-9143</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">) that underpins much of internet infrastructure. The reports themselves aren’t unusual—we’ve reported and helped maintainers fix over 11,000 vulnerabilities in the 8 years of the project.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">But these particular vulnerabilities represent a milestone for automated vulnerability finding: each was found with AI, using AI-generated and enhanced fuzz targets. The OpenSSL CVE is one of the first vulnerabilities in a critical piece of software that was discovered by LLMs, adding another real-world example to a recent Google discovery of </span><a href="https://googleprojectzero.blogspot.com/2024/10/from-naptime-to-big-sleep.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">an exploitable stack buffer underflow in the widely used database engine SQLite</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This blog post discusses the results and lessons over a year and a half of work to bring AI-powered fuzzing to this point, both in introducing AI into fuzz target generation and expanding this to simulate a developer’s workflow.</span><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> These efforts continue our explorations of how AI can transform vulnerability discovery and strengthen the arsenal of defenders everywhere.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial, sans-serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">The story so far</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In August 2023, the OSS-Fuzz team announced </span><a href="https://security.googleblog.com/2023/08/ai-powered-fuzzing-breaking-bug-hunting.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">AI-Powered Fuzzing</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, describing our effort to leverage large language models (LLM) to improve fuzzing coverage to find more vulnerabilities automatically—before malicious attackers could exploit them. Our approach was to use the coding abilities of an LLM to generate more fuzz targets, which are similar to unit tests that exercise relevant functionality to search for vulnerabilities.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The ideal </span><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">solution would be to completely automate the manual process of developing a fuzz target end to end:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><ol style="margin-bottom: 0; margin-top: 0; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Drafting an initial fuzz target.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Fixing any compilation issues that arise.&nbsp;</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Running the fuzz target to see how it performs, and fixing any obvious mistakes causing runtime issues.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Running the corrected fu</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">zz target for a longer period of time, and triaging any crashes to determine the root cause.</span></p></li><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">Fixing vulnerabilities.&nbsp;</span></p></li></ol><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In August 2023, w</span><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">e </span><a href="https://security.googleblog.com/2023/08/ai-powered-fuzzing-breaking-bug-hunting.html" style="text-decoration-line: none;"><span style="background-color: white; color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">covered our efforts</span></a><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> to use an LLM to handle the first two steps. We were able to use an </span><a href="https://google.github.io/oss-fuzz/research/llms/target_generation/" style="text-decoration-line: none;"><span style="background-color: white; color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">iterative process to generate a fuzz target</span></a><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> with a simple prompt including hardcoded examples and compilation errors.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In January 2024, we </span><a href="https://security.googleblog.com/2024/01/scaling-security-with-ai-from-detection.html" style="text-decoration-line: none;"><span style="background-color: white; color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">open sourced</span></a><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> the </span><a href="http://github.com/google/oss-fuzz-gen" style="text-decoration-line: none;"><span style="background-color: white; color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">framework</span></a><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> that we were building to enable an LLM to generate fuzz targets. By that point, LLMs were reliably generating targets that exercised more interesting code coverage across 160 projects. But there was still a long tail of projects where we couldn’t get a single working AI-generated fuzz target.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To address this, we’ve been improving the first two steps, as well as implementing steps 3 and 4.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial, sans-serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">New results: More code coverage and discovered vulnerabilities</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">We’re now able to automatically gain more coverage in </span><a href="https://github.com/google/oss-fuzz-gen?tab=readme-ov-file#current-top-coverage-improvements-by-project" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">272 C/C++ projects on OSS-Fuzz</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> (up from 160), adding 370k+ lines of new code coverage. The top coverage improvement in a single project was an increase from 77 lines to 5434 lines (a 7000% increase).</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">This led to the discovery of </span><a href="https://github.com/google/oss-fuzz-gen?tab=readme-ov-file#bugs-discovered" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">26 new vulnerabilities</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> in projects on OSS-Fuzz that already had hundreds of thousands of hours of fuzzing. The highlight is </span><a href="https://openssl-library.org/news/secadv/20241016.txt" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">CVE-2024-9143</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> in the critical and well-tested OpenSSL library. We reported this vulnerability on September 16 and a fix was published on October 16. As far as we can tell, this vulnerability has likely been present for two decades and wouldn’t have been discoverable with existing fuzz targets written by humans.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Another example was a bug in the project </span><a href="https://github.com/DaveGamble/cJSON/issues/800" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">cJSON</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, where even though an existing human-written harness existed to fuzz a specific function, we still discovered a new vulnerability in that same function with an AI-generated target.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">One reason that such bugs could remain undiscovered for so long is that line coverage is not a guarantee that a function is free of bugs. Code coverage as a metric isn’t able to measure all possible code paths and states—different flags and configurations may trigger different behaviors, unearthing different bugs. These examples underscore the need to continue to generate new varieties of fuzz targets even for code that is already fuzzed, as has also been shown by Project Zero in the past (</span><a href="https://googleprojectzero.blogspot.com/2024/10/effective-fuzzing-dav1d-case-study.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">1</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">, </span><a href="https://googleprojectzero.blogspot.com/2021/12/this-shouldnt-have-happened.html" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">2</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">).</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial, sans-serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">New improvements</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">To achieve these results, we’ve been focusing on two major improvements:</span></p><br /><ol style="margin-bottom: 0; margin-top: 0; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;">Automatically generate more relevant context in our prompts.</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> The more complete and relevant information we can provide the LLM about a project, the less likely it would be to hallucinate the missing details in its response. This meant providing more accurate, project-specific context in prompts, such as function, type definitions, cross references, and existing unit tests for each project. To generate this information automatically, we </span><a href="https://introspector.oss-fuzz.com/api-doc" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; text-wrap-mode: wrap; vertical-align: baseline;">built new infrastructure</span></a><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"> to index projects across OSS-Fuzz.&nbsp;</span></p></li></ol><div><span style="font-family: Arial, sans-serif;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><br /><ol start="2" style="margin-bottom: 0; margin-top: 0; padding-inline-start: 48px;"><li aria-level="1" dir="ltr" style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; list-style-type: decimal; vertical-align: baseline; white-space: pre;"><p dir="ltr" role="presentation" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">LLMs turned out to be highly effective at</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; text-wrap-mode: wrap; vertical-align: baseline;"> emulating a typical developer’s entire workflow of writing, testing, and iterating on the fuzz target, as well as triaging the crashes found</span><span style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;">. Thanks to this, it was possible to further automate more parts of the fuzzing workflow. This additional iterative feedback in turn also resulted in higher quality and greater number of correct fuzz targets.&nbsp;</span></p></li></ol><div><span style="font-family: Arial, sans-serif;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><div><span style="font-family: Arial, sans-serif;"><span style="font-size: 14.6667px; white-space-collapse: preserve;"><br /></span></span></div><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial, sans-serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">The workflow in action</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Our LLM can now execute the first four steps of the developer’s process (with the fifth soon to come).&nbsp;</span></p><br /><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;"><br /></span></span></div><div style="text-align: left;"><span><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;">1. Drafting an initial fuzz target</span><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">A developer might check the source code, existing documentation and unit tests, as well as&nbsp; usages of the target function when to draft an initial fuzz target. An LLM can fulfill this role here, if we provide a prompt with this information and ask it to come up with a fuzz target.&nbsp;</span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="background-color: #fafafa; border-bottom: solid #e0e0e0 1pt; border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-top: solid #e0e0e0 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Prompt:&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Your goal is to write a fuzzing harness for the provided function-under-test signature using &lt;code&gt;LLVMFuzzerTestOneInput&lt;/code&gt;. It is important that the provided solution compiles and actually calls the function-under-test specified by the function signature:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;function signature&gt;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">unsigned char * buffer_append_base64_decode(buffer *, const char *, size_t, base64_charset)</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;/function signature&gt;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Here is the source code of the function being tested:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;code&gt;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">unsigned char* buffer_append_base64_decode(buffer *out, const char* in, size_t in_length, base64_charset charset) {</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;const size_t reserve = 3*(in_length/4) + 3;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;unsigned char * const result = (unsigned char *)</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer_string_prepare_append(out, reserve);</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;const size_t out_pos =</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;li_base64_dec(result, reserve, in, in_length, charset);</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;buffer_commit(out, out_pos);</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;return (out_pos || !in_length) ? result : NULL;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">}</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;/code&gt;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Here is the source code for functions which reference the function being tested:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;code&gt;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">…&nbsp;&nbsp;</span></p></td></tr></tbody></table></div><br /><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;"><br /></span></span></div><div style="text-align: left;"><span><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;">2. Fixing any compilation issues that arise.&nbsp;</span><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Once a developer has a candidate target, they would try to compile it and look at any compilation issues that arise. Again, we can prompt an LLM with details of the compilation errors so it can provide fixes.&nbsp;&nbsp;</span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="background-color: #fafafa; border-bottom: solid #e0e0e0 1pt; border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-top: solid #e0e0e0 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Prompt:&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Below is the error to fix:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The code has the following build issues:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;error&gt;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">server_fuzzer.cc:12:46: error: only virtual member functions can be marked 'override'</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;12 | &nbsp; bool OnData(const char* data, size_t size) override {</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^~~~~~~~</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">server_fuzzer.cc:22:39: error: no type named 'MultiPartFile' in namespace 'httplib'</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;22 |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; const httplib::MultiPartFile&amp; file) override {</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ~~~~~~~~~^</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">server_fuzzer.cc:12:27: warning: unused parameter 'data' [-Wunused-parameter]</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;12 | &nbsp; bool OnData(const char* data, size_t size) override {</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">server_fuzzer.cc:37:5: error: use of undeclared 'operator()'</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;37 | &nbsp; &nbsp; operator()(request_data.data(), receiver);</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp; &nbsp; ^</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">server_fuzzer.cc:27:23: warning: private field 'provider_' is not used [-Wunused-private-field]</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;27 | &nbsp; FuzzedDataProvider&amp; provider_;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ^</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;/error&gt;</span></p></td></tr></tbody></table></div><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Example of compilation errors that an LLM was able to fix</span></p><br /><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;"><br /></span></span></div><div style="text-align: left;"><span><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;">3. Running the fuzz target to see how it performs, and fixing any obvious mistakes causing runtime issues.</span><br /><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Once all compilation errors are fixed, a developer would try running the fuzz target for a short period of time to see if there were any mistakes that led it to instantly crash, suggesting an error with the target rather than a bug discovered in the project.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The following is an example of an LLM fixing a semantic issue with the fuzzing setup:&nbsp;</span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="background-color: #fafafa; border-bottom: solid #e0e0e0 1pt; border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-top: solid #e0e0e0 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">LLM Response:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;explanation&gt;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The issue is that `sqlite3_blob_open` requires the table to exist before you can open a blob on it. The fix ensures that the table exists by executing a `CREATE TABLE IF NOT EXISTS` statement before calling `sqlite3_blob_open`.&nbsp;</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Here's a breakdown of the changes:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">1. **Create Table Query:** A string `createTableQuery` is constructed to hold the SQL statement for creating the table. It uses the fuzzed values for the table and column names.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">2. **Prepare Statement:** `sqlite3_prepare_v2` is used to prepare the SQL statement from `createTableQuery`. This compiles the SQL into a byte-code program that SQLite can execute.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">3. **Execute Statement:** `sqlite3_step` executes the prepared statement. Since it's a `CREATE TABLE` statement, it doesn't return any data, but it creates the table if it doesn't exist.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">4. **Finalize Statement:** `sqlite3_finalize` destroys the prepared statement object when it's no longer needed.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">By adding these steps before calling `sqlite3_blob_open`, we ensure that the table exists, preventing the null pointer access issue.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;/explanation&gt;</span></p><br /></td></tr></tbody></table></div><br /><br /><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;">4. Running the corrected fuzz target for a longer period of time, and triaging any crashes.</span><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">At this point, the fuzz target is ready to run for an extended period of time on a suitable fuzzing infrastructure, such as </span><a href="https://google.github.io/clusterfuzz/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">ClusterFuzz</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Any discovered crashes would then need to be triaged, to determine the root causes and whether they represented legitimate vulnerabilities (or bugs in the fuzz target). An LLM can be prompted with the relevant context (stacktraces, fuzz target source code, relevant project source code) to perform this triage.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="background-color: #fafafa; border-bottom: solid #e0e0e0 1pt; border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-top: solid #e0e0e0 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Prompt: Given the following crash report, fuzz driver code and relevant project function code, analyze the cause of the crash.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">First, only answer “Crash is caused by bug in fuzz driver” or “Crash is caused by bug in project”. Second, offer a succinct and to-the-point analysis.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Below is crash report:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&lt;log&gt;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">AddressSanitizer: heap-use-after-free on address 0x502000000630 at pc 0x560036939242 bp 0x7ffd65dca850 sp 0x7ffd65dca010</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">READ of size 1 at 0x502000000630 thread T0</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">SCARINESS: 40 (1-byte-read-heap-use-after-free)</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;#0 0x560036939241 in __asan_memcpy /src/llvm-project/compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp:63:3</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;#1 0x56003697d30b in EmitLiteral&lt;false&gt; /src/snappy/snappy.cc:661:5</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">&nbsp;&nbsp;&nbsp;&nbsp;#2 0x56003697d30b in snappy::internal::CompressFragment(char const*, unsigned long, char*, unsigned short*, int) /src/snappy/snappy.cc:954:10</span></p><br /></td></tr></tbody></table></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In this example, the LLM correctly determines this is a bug in the fuzz target, rather than a bug in the project being fuzzed.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><div align="left" dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup></colgroup><tbody><tr style="height: 0pt;"><td style="background-color: #fafafa; border-bottom: solid #e0e0e0 1pt; border-left: solid #e0e0e0 1pt; border-right: solid #e0e0e0 1pt; border-top: solid #e0e0e0 1pt; overflow-wrap: break-word; overflow: hidden; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">LLM Response: Crash is caused by bug in fuzz driver.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #666666; font-family: Consolas, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The fuzz driver creates a vector of `iovec` structures, each pointing to a chunk of memory owned by the `FuzzedDataProvider`. However, the `data_chunk` vector, which holds the actual data pointed to by `iov_base`, is deallocated at the end of each fuzzer iteration when it goes out of scope. This leaves the `iov_base` pointers dangling. When `snappy::CompressFromIOVec` tries to access the memory pointed to by these dangling pointers, a heap-use-after-free occurs.&nbsp;</span></p></td></tr></tbody></table></div><br /><br /><span style="font-family: Arial, sans-serif; font-size: 11pt; font-weight: 700; white-space-collapse: preserve;">5. Fixing vulnerabilities.&nbsp;</span><br /><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">The goal is to fully automate this entire workflow by having the LLM generate a suggested patch for the vulnerability. We don’t have anything we can share here today, but we’re collaborating with various researchers to make this a reality and look forward to sharing results soon.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><h1 dir="ltr" style="line-height: 1.3800000000000001; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial, sans-serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Up next</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Improving automated triaging: </span><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">to get to a point where we’re confident about not requiring human review. This will help automatically report new vulnerabilities to project maintainers. There are likely more than the 26 vulnerabilities we’ve already reported upstream hiding in our results.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Agent-based architecture: </span><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">which means letting the LLM autonomously plan out the steps to solve a particular problem by providing it with access to tools that enable it to get more information, as well as to check and validate results. By providing LLM with interactive access to real tools such as debuggers, we’ve found that the LLM is more likely to arrive at a correct result.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 700; vertical-align: baseline; white-space-collapse: preserve;">Integrating our research into OSS-Fuzz as a feature:</span><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> to achieve a more fully automated end-to-end solution for vulnerability discovery and patching. We hope OSS-Fuzz will be useful for other researchers to evaluate AI-powered vulnerability discovery ideas and ultimately become a tool that will enable defenders to find more vulnerabilities before they get exploited.&nbsp;</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"><br /></span></p><br /><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">For more information, check out our open source framework at </span><a href="https://github.com/google/oss-fuzz-gen" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">oss-fuzz-gen</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">. We’re hoping to continue to collaborate on this area with other researchers. Also, be sure to check out the </span><a href="https://blog.oss-fuzz.com/posts/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">OSS-Fuzz blog</span></a><span style="font-family: Arial, sans-serif; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"> for more technical updates. </span></span></div></content>
<link href="http://security.googleblog.com/feeds/1653446558535304100/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/1653446558535304100?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1653446558535304100" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1653446558535304100" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2024/11/leveling-up-fuzzing-finding-more.html" rel="alternate" title="Leveling Up Fuzzing: Finding more vulnerabilities with AI" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-4967258715386872823</id>
<published>2024-11-15T12:42:00.015-05:00</published>
<updated>2024-11-15T18:54:05.053-05:00</updated>
<title type="text">Retrofitting spatial safety to hundreds of millions of lines of C++</title>
<content type="html"><span class="byline-author">Posted by Alex Rebert and Max Shavrick, Security Foundations, and Kinuko Yasuda, Core Developer<br /><br /></span>
<p>
Attackers regularly exploit <a href="https://research.google/pubs/secure-by-design-googles-perspective-on-memory-safety/">spatial memory safety vulnerabilities</a>, which occur when code accesses a memory allocation outside of its intended bounds, to compromise systems and sensitive data. These vulnerabilities represent a major security risk to users.&nbsp;
</p>
<p>
Based on an analysis of <a href="https://googleprojectzero.blogspot.com/p/0day.html">in-the-wild exploits tracked by Google's Project Zero</a>, spatial safety vulnerabilities represent 40% of in-the-wild memory safety exploits over the past decade:
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQt1XoSwUrAiUmN6tbntYLZ-IsBBV-e2aAKIKJJcavncM9t6IwD4LVlse0OSiA5ecs52_wkiaUml_9MoncUNOU8wxajv3dPonrtVlV31TJW6bKBs6mPNec7jb12rX18VRI0VwhETljd2QEp0kQ4oFQZBNq0pwoH-EedxhThqfwD73s0dqZALf_nGPkPMdK/s1600/graph.png" style="display: block; padding: .1em 0; text-align: center; "><img alt="" style="max-width:400px;" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQt1XoSwUrAiUmN6tbntYLZ-IsBBV-e2aAKIKJJcavncM9t6IwD4LVlse0OSiA5ecs52_wkiaUml_9MoncUNOU8wxajv3dPonrtVlV31TJW6bKBs6mPNec7jb12rX18VRI0VwhETljd2QEp0kQ4oFQZBNq0pwoH-EedxhThqfwD73s0dqZALf_nGPkPMdK/s1600/graph.png"/></a></div>
<p style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center; font-style: italic; font-size: 10pt;">Breakdown of memory safety CVEs <a href="https://googleprojectzero.blogspot.com/p/0day.html">exploited in the wild</a> by vulnerability class.<sup id="fnref1"><a href="#fn1" rel="footnote">1</a></sup></p>
<p>Google is taking a <a href="https://security.googleblog.com/2024/10/safer-with-google-advancing-memory.html">comprehensive approach to memory safety</a>. A key element of our strategy focuses on <a href="https://blog.google/technology/safety-security/tackling-cybersecurity-vulnerabilities-through-secure-by-design/">Safe Coding</a> and using memory-safe languages in new code. This leads to an exponential decline in memory safety vulnerabilities and quickly improves the overall security posture of a codebase, as demonstrated by our <a href="https://security.googleblog.com/2024/09/eliminating-memory-safety-vulnerabilities-Android.html" >post about Android's journey to memory safety</a>.
</p>
<p>However, this transition will take multiple years as we adapt our development practices and infrastructure. Ensuring the safety of our billions of users therefore requires us to go further: we're also retrofitting secure-by-design principles to our existing C++ codebase wherever possible.</p>
<p >To that end, we're working towards bringing spatial memory safety into as many of our C++ codebases as possible, including Chrome and the monolithic codebase powering our services.</p>
<p>We’ve begun by enabling hardened libc++, which adds bounds checking to standard C++ data structures, eliminating a significant class of spatial safety bugs. While C++ will not become fully memory-safe, these improvements reduce risk as discussed in more detail in our <a href="https://security.googleblog.com/2024/03/secure-by-design-googles-perspective-on.html">perspective on memory safety</a>, leading to more reliable and secure software.</p>
<p>This post explains how we're retrofitting hardened libc++ across our codebases and&nbsp; showcases the positive impact it's already having, including preventing exploits, reducing crashes, and improving code correctness.</p>
<h1 style="font-size: 1.2em">Bounds-checked data structures: The foundation for spatial safety</h1>
<p>One of our primary strategies for improving spatial safety in C++ is to implement bounds checking for common data structures, starting with hardening the C++ standard library (in our case, LLVM’s libc++). <a href="https://libcxx.llvm.org/Hardening.html">Hardened libc++</a>, recently added by open source contributors, introduces a set of security checks designed to catch vulnerabilities such as out-of-bounds accesses in production.</p>
<p>For example, hardened libc++ ensures that every access to an element of a <span style="color: #188038; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">std::vector</span> stays within its allocated bounds, preventing attempts to read or write beyond the valid memory region. Similarly, hardened libc++ checks that a <span style="color: #188038; font-family: &quot;Roboto Mono&quot;, monospace; font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">std::optional</span> isn't empty before allowing access, preventing access to uninitialized memory.</p>
<p>This approach mirrors what's already standard practice in many modern programming languages like Java, Python, Go, and Rust. They all incorporate bounds checking <span style="font-style: italic;">by default</span>, recognizing its crucial role in preventing memory errors. C++ has been a notable exception, but efforts like hardened libc++ aim to close this gap in our infrastructure. It’s also worth noting that similar hardening is available in other C++ standard libraries, such as <a href="https://best.openssf.org/Compiler-Hardening-Guides/Compiler-Options-Hardening-Guide-for-C-and-C++.html#precondition-checks-for-c-standard-library-calls" style="text-decoration-line: none;">libstdc++</a>.</p>
<h1 style="font-size: 1.2em">Raising the security baseline across the board</h1>
<p>Building on the successful deployment of hardened libc++ <a href="https://crbug.com/40228527">in Chrome</a> in 2022, we've now made it default across our server-side production systems. This improves spatial memory safety across our services, including key performance-critical components of products like Search, Gmail, Drive, YouTube, and Maps. While a very small number of components remain opted out, we're actively working to reduce this and <a href="https://www.philvenables.com/post/raise-the-baseline-by-reducing-the-cost-of-control">raise the bar for security across the board</a>, even in applications with lower exploitation risk.</p>
<p>The performance impact of these changes was surprisingly low, despite Google's modern C++ codebase making heavy use of libc++. <span style="font-weight: 700;">Hardening libc++ resulted in an average 0.30% performance impact across our services (yes, only a third of a percent).
<p>This is due to both the compiler's ability to eliminate redundant checks during optimization, and the efficient design of hardened libc++. While a handful of performance-critical code paths still require targeted use of explicitly unsafe accesses, these instances are carefully reviewed for safety. Techniques like <a href="https://en.wikipedia.org/wiki/Profile-guided_optimization">profile-guided optimizations</a> further improved performance, but even without those advanced techniques, the overhead of bounds checking remains minimal.</p>
<p>We actively monitor the performance impact of these checks and work to minimize any unnecessary overhead. For instance, we identified and fixed an unnecessary check, which led to a 15% reduction in overhead (reduced from 0.35% to 0.3%), and contributed the <a href="https://github.com/llvm/llvm-project/pull/105863">fix back to the LLVM project</a> to share the benefits with the broader C++ community.</p>
<p>While hardened libc++'s overhead is minimal for individual applications in most cases, deploying it at Google's scale required a substantial commitment of computing resources. This investment underscores our dedication to enhancing the safety and security of our products.</p>
<h1 style="font-size: 1.2em">From tests to production</h1>
<p>Enabling libc++ hardening wasn't a simple flip of a switch. Rather, it required a multi-stage rollout to avoid accidentally disrupting users or creating an outage:<p>
<ol>
<li><b>Testing:</b> We first enabled hardened libc++ in our tests over a year ago. This allowed us to identify and fix hundreds of previously undetected bugs in our code and tests.</li>
<li><b>Baking:</b> We let the hardened runtime "bake" in our testing and pre-production environments, giving developers time to adapt and address any new issues that surfaced. We also conducted extensive performance evaluations, ensuring minimal impact to our users' experience.</li>
<li><b>Gradual Production Rollout:</b> We then rolled out hardened libc++ to production over several months, starting with a small set of services and gradually expanding to our entire infrastructure. We closely monitored the rollout, promptly addressing any crashes or performance regressions.</li>
</ol>
<h1 style="font-size: 1.2em">Quantifiable impact</h1>
<p>In just a few months since enabling hardened libc++ by default, we've already seen benefits.</p>
<p><b>Preventing exploits:</b> Hardened libc++ has already disrupted an internal red team exercise and would have prevented another one that happened before we enabled hardening, demonstrating its effectiveness in thwarting exploits. The safety checks have uncovered over 1,000 bugs, and would prevent 1,000 to 2,000 new bugs yearly at our current rate of C++ development.</p>
<p><b>Improved reliability and correctness:</b> The process of identifying and fixing bugs uncovered by hardened libc++ led to a 30% reduction in our baseline segmentation fault rate across production, indicating improved code reliability and quality. Beyond crashes, the checks also caught errors that would have otherwise manifested as unpredictable behavior or data corruption.</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAbFpPb_3_3AG2wAhkOUDqhBPZlprOdUvmOXQ41S7iYOXBIFfSQxHI5CSJ1-An1tINdVCVVNIkGJqXdPvVMadjy8ALd1lJ5INI8lV4udaUIxY3CV9ypjYZpHuWKE6dpAqCAKu0W8XUorr65Lr6ztyg0Pa087ikX8fwyYaPpoJScQEUqjKrO3ePG5q4fcWg/s1600/graph2.png" style="display: block; padding: .1em 0; text-align: center; "><img alt="" border="0" data-original-height="1070" data-original-width="3318" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAbFpPb_3_3AG2wAhkOUDqhBPZlprOdUvmOXQ41S7iYOXBIFfSQxHI5CSJ1-An1tINdVCVVNIkGJqXdPvVMadjy8ALd1lJ5INI8lV4udaUIxY3CV9ypjYZpHuWKE6dpAqCAKu0W8XUorr65Lr6ztyg0Pa087ikX8fwyYaPpoJScQEUqjKrO3ePG5q4fcWg/s1600/graph2.png"/></a></div>
<p style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center; font-style: italic; font-size: 10pt;">Moving average of segfaults across our fleet over time, before and after enablement.</p>
<p><b>Easier debugging:</b> Hardened libc++ enabled us to identify and fix multiple bugs that had been lurking in our code for more than a decade. The checks transform many difficult-to-diagnose memory corruptions into immediate and easily debuggable errors, saving developers valuable time and effort. </p>
<h1 style="font-size: 1.2em">Bridging the gap with memory-safe languages</h1>
<p>While libc++ hardening provides immediate benefits by adding bounds checking to standard data structures, it's only one piece of the puzzle when it comes to spatial safety.</p>
<p>We're expanding bounds checking to other libraries and working to migrate our code to <a href="https://clang.llvm.org/docs/SafeBuffers.html">Safe Buffers</a>, requiring all accesses to be bounds checked. For spatial safety, both hardened data structures, including their iterators, and Safe Buffers are necessary.</p>
<p>Beyond improving the safety of our C++, we're also focused on making it easier to interoperate with memory-safe languages. Migrating our C++ to Safe Buffers shrinks the gap between the languages, which simplifies interoperability and potentially even an eventual <a href="https://www.darpa.mil/news-events/2024-07-31a">automated translation</a>.</p>
<h1 style="font-size: 1.2em">Building a safer C++ ecosystem</h1>
<p>Hardened libc++ is a practical and effective way to enhance the safety, reliability, and debuggability of C++ code with minimal overhead. Given this, we strongly encourage organizations using C++ to enable their standard library's hardened mode universally by default.</p>
<p>At Google, enabling hardened libc++ is only the first step in our journey towards a spatially safe C++ codebase. By expanding bounds checking, <a href="https://bughunters.google.com/blog/6368559657254912/llvm-s-rfc-c-buffer-hardening-at-google">migrating to Safe Buffers</a>, and actively collaborating with the broader C++ community, we aim to create a future where spatial safety is the norm.</p>
<h2>Acknowledgements</h2>
<p>We’d like to thank Emilia Kasper, Chandler Carruth, Duygu Isler, Matthew Riley, and Jeff Vander Stoep for their helpful feedback. We also extend our thanks to the libc++ community for developing the hardening mode that made this work possible.</p>
<!-- Footnotes themselves at the bottom. -->
<div class="footnotes">
<hr>
<ol><li id="fn1">
<p>
Based on manual analysis of CVEs from July 15, 2014 to Dec 14, 2023. Note that we could not classify 11% of CVEs..&nbsp;<a href="#fnref1" rev="footnote">&#8617;</a>
</p>
</li>
</ol>
</div></content>
<link href="http://security.googleblog.com/feeds/4967258715386872823/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/4967258715386872823?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/4967258715386872823" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/4967258715386872823" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2024/11/retrofitting-spatial-safety-to-hundreds.html" rel="alternate" title="Retrofitting spatial safety to hundreds of millions of lines of C++" type="text/html"/>
<author>
<name>Kimberly Samra</name>
<uri>http://www.blogger.com/profile/17209446531010386292</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQt1XoSwUrAiUmN6tbntYLZ-IsBBV-e2aAKIKJJcavncM9t6IwD4LVlse0OSiA5ecs52_wkiaUml_9MoncUNOU8wxajv3dPonrtVlV31TJW6bKBs6mPNec7jb12rX18VRI0VwhETljd2QEp0kQ4oFQZBNq0pwoH-EedxhThqfwD73s0dqZALf_nGPkPMdK/s72-c/graph.png" width="72"/>
<thr:total>0</thr:total>
</entry>
<entry>
<id>tag:blogger.com,1999:blog-1176949257541686127.post-1390661849546808813</id>
<published>2024-11-13T12:59:00.001-05:00</published>
<updated>2024-11-13T12:59:56.670-05:00</updated>
<category scheme="http://www.blogger.com/atom/ns#" term="android"/>
<category scheme="http://www.blogger.com/atom/ns#" term="android security"/>
<category scheme="http://www.blogger.com/atom/ns#" term="pixel"/>
<title type="text">Safer with Google: New intelligent, real-time protections on Android to keep you safe</title>
<content type="html"><span class="byline-author">Posted by Lyubov Farafonova, Product Manager and Steve Kafka, Group Product Manager, Android</span>
<p>
User safety is at the heart of everything we do at Google. Our mission to make technology helpful for everyone means building features that protect you while keeping your privacy top of mind. From <a href="https://blog.google/products/gmail/gmail-security-authentication-spam-protection/">Gmail’s defenses</a> that stop more than 99.9% of spam, phishing and malware, to <a href="https://security.googleblog.com/2024/10/5-new-protections-on-google-messages.html">Google Messages’ advanced security</a> that protects users from 2 billion suspicious messages a month and beyond, we're constantly developing and expanding protection features that help keep you safe.
</p>
<p>
We're introducing two new real-time protection features that enhance your safety, all while safeguarding your privacy: Scam Detection in Phone by Google to protect you from scams and fraud, and Google Play Protect live threat detection with real-time alerts to protect you from malware and dangerous apps.
</p>
<p>
These new security features are available first on Pixel, and are coming soon to more Android devices.
</p>
<p>
<h3><strong>More intelligent AI-powered protection against scams</strong></h3>
</p>
<p>
Scammers steal over <a href="https://www.newswire.com/news/global-losses-to-scammers-exceed-1-trillion-as-1-in-4-lose-money-to-22145725">$1 trillion dollars</a> a year from people, and phone calls are their favorite way to do it. Even more alarming, scam calls are evolving, becoming <a href="https://www.thecut.com/article/amazon-scam-call-ftc-arrest-warrants.html">increasingly more sophisticated</a>, damaging and harder to identify. That’s why we’re using the best of Google AI to identify and stop scams before they can do harm with Scam Detection.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO1uV5Xu6fc-JDzLuqalOaPLR9zCpmdkR8fpXVl120zEFi5kXkXVo6XIx5mxvKb3kFQQvKE3k5xvVcVB-Bu7HwNQ8glkjc9mNHEma5QYKtZc8-Bbh-RR7lK_oR-IjhnBBZZo1pg_qK35miAiMRJc0gXNZbnXDT79NdzQ5go3RvClMmv_Nt5cLyU2-v5t4u/s1600/image1%20%285%29.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="504" data-original-width="840" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO1uV5Xu6fc-JDzLuqalOaPLR9zCpmdkR8fpXVl120zEFi5kXkXVo6XIx5mxvKb3kFQQvKE3k5xvVcVB-Bu7HwNQ8glkjc9mNHEma5QYKtZc8-Bbh-RR7lK_oR-IjhnBBZZo1pg_qK35miAiMRJc0gXNZbnXDT79NdzQ5go3RvClMmv_Nt5cLyU2-v5t4u/s1600/image1%20%285%29.png"/></a></div>
</p>
<p>
<strong>Real-time protection, built with your privacy in mind.</strong><br>
</p>
<ul>
<li><strong>Real-time defense, right on your device:</strong> Scam Detection uses powerful on-device AI to notify you of a potential scam call happening in real-time by detecting conversation patterns commonly associated with scams. For example, if a caller claims to be from your bank and asks you to urgently transfer funds due to an alleged account breach, Scam Detection will process the call to determine whether the call is likely spam and, if so, can provide an audio and haptic alert and visual warning that the call may be a scam. </li>
<li><strong>Private by design, you’re always in control:</strong> We’ve built Scam Detection to protect your privacy and ensure you’re always in control of your data. Scam Detection is off by default, and you can decide whether you want to activate it for future calls. At any time, you can turn it off for all calls in the Phone app Settings, or during a particular call. The AI detection model and processing are fully on-device, which means that no conversation audio or transcription is stored on the device, sent to Google servers or anywhere else, or retrievable after the call.</li>
<li><strong>Cutting-edge AI protection, now on more Pixel phones:</strong> <a href="https://deepmind.google/technologies/gemini/nano/">Gemini Nano</a>, our advanced on-device AI model, powers Scam Detection on Pixel 9 series devices. As part of our commitment to bring powerful AI features to even more devices, this AI-powered protection is available to Pixel 6+ users thanks to other robust Google on-device machine learning models. <br></li>
</ul>
<p>
We’re now rolling out Scam Detection to English-speaking Phone by Google public beta users in the U.S. with a Pixel 6 or newer device. <br>
</p>
<p>
To provide feedback on your experience, please click on Phone by Google App -> Menu -> Help & Feedback -> Send Feedback. We look forward to learning from this beta and your feedback, and we’ll share more about Scam Detection in the months ahead.
</p>
<p>
<h3><strong>More real-time alerts to protect you from bad apps </strong></h3>
<p> Google Play Protect works non-stop to protect you in <a href="https://security.googleblog.com/2023/10/enhanced-google-play-protect-real-time.html">real-time</a> from malware and unsafe apps. Play Protect analyzes behavioral signals related to the use of sensitive permissions and interactions with other apps and services.<br><br>With live threat detection, if a harmful app is found, you'll now receive a real-time alert, allowing you to take immediate action to protect your device. By looking at actual activity patterns of apps, live threat detection can now find malicious apps that try extra hard to hide their behavior or lie dormant for a time before engaging in suspicious activity.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE8-vUuJySoAsx2T3pxiekXCeV3gwGP4sT4tIlVSgzOIaqQzeZRmQ5-c557Pz43l4bAbJ49CVL1lQm7ilp_xNObhMf0x5v1Qn9ivnx7DfU_wnTVX639q0-_Wv0nrX_FFJYY1KKvyKGZAJyZo3U3HfudNKBn-sYTeWpnFWuw1I89FhRPkDnLMA0aY557OX7/s1999/image2%20%281%29.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="600" data-original-height="1999" data-original-width="952" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE8-vUuJySoAsx2T3pxiekXCeV3gwGP4sT4tIlVSgzOIaqQzeZRmQ5-c557Pz43l4bAbJ49CVL1lQm7ilp_xNObhMf0x5v1Qn9ivnx7DfU_wnTVX639q0-_Wv0nrX_FFJYY1KKvyKGZAJyZo3U3HfudNKBn-sYTeWpnFWuw1I89FhRPkDnLMA0aY557OX7/s600/image2%20%281%29.png"/></a></div>
<p>
At launch, live threat detection will focus on stalkerware, code that may collect personal or sensitive data for monitoring purposes without user consent, and we will explore expanding its detection to other types of harmful apps in the future. All of this protection happens on your device in a privacy preserving way through <a href="https://security.googleblog.com/2022/12/trust-in-transparency-private-compute.html">Private Compute Core</a>, which allows us to protect users without collecting data.
</p>
<p>
Live threat detection with real-time alerts in Google Play Protect are now available on Pixel 6+ devices and will be coming to additional phone makers in the coming months.
</p></content>
<link href="http://security.googleblog.com/feeds/1390661849546808813/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/>
<link href="http://www.blogger.com/comment/fullpage/post/1176949257541686127/1390661849546808813?isPopup=true" rel="replies" title="0 Comments" type="text/html"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1390661849546808813" rel="edit" type="application/atom+xml"/>
<link href="http://www.blogger.com/feeds/1176949257541686127/posts/default/1390661849546808813" rel="self" type="application/atom+xml"/>
<link href="http://security.googleblog.com/2024/11/new-real-time-protections-on-Android.html" rel="alternate" title="Safer with Google: New intelligent, real-time protections on Android to keep you safe" type="text/html"/>
<author>
<name>Edward Fernandez</name>
<uri>http://www.blogger.com/profile/03784424747198152685</uri>
<email>noreply@blogger.com</email>
<gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/>
</author>
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO1uV5Xu6fc-JDzLuqalOaPLR9zCpmdkR8fpXVl120zEFi5kXkXVo6XIx5mxvKb3kFQQvKE3k5xvVcVB-Bu7HwNQ8glkjc9mNHEma5QYKtZc8-Bbh-RR7lK_oR-IjhnBBZZo1pg_qK35miAiMRJc0gXNZbnXDT79NdzQ5go3RvClMmv_Nt5cLyU2-v5t4u/s72-c/image1%20%285%29.png" width="72"/>
<thr:total>0</thr:total>
</entry>
</feed>