Google Workspace Updates Weekly Recap – November 15, 2024

New updates 

There are no new updates to share this week. Please see below for a recap of published announcements. 


Previous announcements

The announcements below were published on the Workspace Updates blog earlier this week. Please refer to the original blog posts for complete details.


Upload Google Docs and other file types to Gem instructions
Beginning this week, you can upload reference documents, including Google Docs and Google Sheets via Google Drive, when creating Gems. By adding reference documents to your Gems instructions you can further tailor Gems to meet your specific needs. | Learn more about uploading Docs and other files types to Gem instructions.

Reference your Google Calendar using Gemini in the side panel of Gmail
Users can now ask Gemini in Gmail to perform calendar related actions or answer questions about their calendars. | Learn more about using Gemini in Gmail to reference Calendar.

Respond to conversations without leaving the home view in Google Chat
We’re introducing a split pane in the home view of Chat that allows users to respond directly to a space, group or direct message without ever navigating away from the home view in Chat. | Learn more about replying in Chat home.

Use Gemini in Google Docs to create unique images for your documents
Following our introduction of uploading full-bleed cover images in Google Docs and AI-generated images in Google Slides with help me visualize, we’re launching the ability to create unique inline images and full bleed cover images using Gemini in Docs. | Learn more about using Gemini in Docs to create images.


Completed rollouts

The features below completed their rollouts to Rapid Release domains, Scheduled Release domains, or both. Please refer to the original blog posts for additional details.


Rapid Release Domains: 
Scheduled Release Domains: 
Rapid and Scheduled Release Domains: 

Use Gemini in Google Docs to create unique images for your documents

What’s changing 

Following our introduction of uploading full-bleed cover images in Google Docs and AI-generated images in Google Slides with help me visualize, we’re launching the ability to create unique inline images and full bleed cover images using Gemini in Docs. 

These new image generation capabilities benefit from our latest image generation model, Imagen 3, our highest quality, text-to-image model. Now you can create photorealistic images of people, landscapes, and more with even better detail than before.

To create inline images for numerous use cases (e.g. a restaurant menu, marketing campaign brief, or promotional flier), simply type your prompt into Create an image, and Gemini in Docs will generate the image based on your instruction. Plus, you can decide the aspect ratio you want the image to be and choose a style like photography, water color and more. 

create an image in Docs with Gemini

You can further customize your document by creating a unique cover image using Gemini in Docs, which can add flavor to a résumé, stylize an invitation, or personalize a client pitch. 

create a cover image with gemini

Who’s impacted 

End users 


Why you’d use it 

The ability to generate unique images with Gemini in Docs empowers everyone, regardless of artistic skill, to create differentiated and visually compelling content. Now you can communicate ideas more effectively, without having to tirelessly search for the perfect image. 


Additional details 

Cover images can only be added to documents set to pageless mode, allowing the image to span the entire width of the document. To set up the more immersive experience of pageless mode, go to File > Page setup > Pageless or Format > Switch to Pageless format. 


Getting started 

  • Admins: There is no admin control for this feature. 
  • End users: 
    • To create a cover image, you can either go to Insert > Cover image > Help me create an image, or Type “@” followed by Cover image > Help me create an image. 
    • To add an image, go to Insert > Image > Help me create an image > type in an image description (optionally select a style for your image) > click Create > then, you will see generated options > select the one you like and it will be added to your document. 
    • Visit the Help Center to learn more about creating images with Gemini in Google Docs and adding a cover image to your document. 

Rollout pace  

  • Rapid Release domains: Extended rollout (potentially longer than 15 days for feature visibility) starting on November 15, 2024
  • Scheduled Release domains: Gradual rollout (up to 15 days for feature visibility) starting on December 16, 2024

Availability 

Available for Google Workspace customers with these add-ons: 
  • Gemini Business 
  • Gemini Enterprise 
  • Gemini Education 
  • Gemini Education Premium 
  • Google One AI Premium 

Resources

Retrofitting Spatial Safety to hundreds of millions of lines of C++

Attackers regularly exploit spatial memory safety vulnerabilities, 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. 

Based on an analysis of in-the-wild exploits tracked by Google's Project Zero, spatial safety vulnerabilities represent 40% of in-the-wild memory safety exploits over the past decade:

Breakdown of memory safety CVEs exploited in the wild by vulnerability class.1

Google is taking a comprehensive approach to memory safety. A key element of our strategy focuses on Safe Coding 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 post about Android's journey to memory safety.

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.

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.

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 perspective on memory safety, leading to more reliable and secure software.

This post explains how we're retrofitting hardened libc++ across our codebases and  showcases the positive impact it's already having, including preventing exploits, reducing crashes, and improving code correctness.

Bounds-checked data structures: The foundation for spatial safety

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++). Hardened libc++, recently added by open source contributors, introduces a set of security checks designed to catch vulnerabilities such as out-of-bounds accesses in production.

For example, hardened libc++ ensures that every access to an element of a std::vector stays within its allocated bounds, preventing attempts to read or write beyond the valid memory region. Similarly, hardened libc++ checks that a std::optional isn't empty before allowing access, preventing access to uninitialized memory.

This approach mirrors what's already standard practice in many modern programming languages like Java, Python, Go, and Rust. They all incorporate bounds checking by default, 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 libstdc++.

Raising the security baseline across the board

Building on the successful deployment of hardened libc++ in Chrome 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 raise the bar for security across the board, even in applications with lower exploitation risk.

The performance impact of these changes was surprisingly low, despite Google's modern C++ codebase making heavy use of libc++. Hardening libc++ resulted in an average 0.30% performance impact across our services (yes, only a third of a percent).

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 profile-guided optimizations further improved performance, but even without those advanced techniques, the overhead of bounds checking remains minimal.

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 fix back to the LLVM project to share the benefits with the broader C++ community.

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.

From tests to production

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:

  1. Testing: 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.
  2. Baking: 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.
  3. Gradual Production Rollout: 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.

Quantifiable impact

In just a few months since enabling hardened libc++ by default, we've already seen benefits.

Preventing exploits: 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.

Improved reliability and correctness: 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.

Moving average of segfaults across our fleet over time, before and after enablement.

Easier debugging: 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.

Bridging the gap with memory-safe languages

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.

We're expanding bounds checking to other libraries and working to migrate our code to Safe Buffers, requiring all accesses to be bounds checked. For spatial safety, both hardened data structures, including their iterators, and Safe Buffers are necessary.

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 automated translation.

Building a safer C++ ecosystem

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.

At Google, enabling hardened libc++ is only the first step in our journey towards a spatially safe C++ codebase. By expanding bounds checking, migrating to Safe Buffers, and actively collaborating with the broader C++ community, we aim to create a future where spatial safety is the norm.

Acknowledgements

We’d like to thank Emilia Kasper, Chandler Carruth, Duygu Isler, Matthew Riley, and Jeff Vander Stoep for their helpful feedback.


  1. Based on manual analysis of CVEs from July 15, 2014 to Dec 14, 2023. Note that we could not classify 11% of CVEs.. 

Beta Channel Update for ChromeOS / ChromeOS Flex

Hello All,

The Beta channel has been updated to 131.0.6778.75 (Platform version: 16063.32.0) for most ChromeOS devices.

If you find new issues, please let us know one of the following ways:

Interested in switching channels? Find out how.


Google ChromeOS.

Chrome Dev for Desktop Update

The Dev channel has been updated to 133.0.6835.3 for Windows, Mac and Linux.

A partial list of changes is available in the Git log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.

Daniel Yip
Google Chrome

Chrome Beta for Android Update

Hi everyone! We've just released Chrome Beta 132 (132.0.6834.5) for Android. It's now available on Google Play.

You can see a partial list of the changes in the Git log. For details on new features, check out the Chromium blog, and for details on web platform updates, check here.

If you find a new issue, please let us know by filing a bug.

Krishna Govind
Google Chrome