Back

We hacked Gemini's Python sandbox and leaked its source code (at least some)

644 points2 dayslandh.tech
topsycatt2 days ago

That's the system I work on! Please feel free to ask any questions. All opinions are my own and do not represent those of my employer.

ryao2 days ago

I imagine you need to make and destroy sandboxed environments quite often. How fast does your code create a sandboxed environment?

Do you make the environments on demand or do you make them preemptively so that one is ready to go the moment that it is needed?

If you make them on demand, have you tested ZFS snapshots to see if it can be done even faster using zfs clone?

dullcrisp1 day ago

What’s ZFS? That doesn’t sound like a Google internal tool I’ve ever heard of.

x-complexity1 day ago

https://en.wikipedia.org/wiki/ZFS

It's a filesystem, to put it simply.

2OEH8eoCRo01 day ago

Oh boy. Get ready for the zealots

blixt1 day ago

Seconding this. Also curious if this is done with microkernels (I put Unikraft high on the list of tech I'd use for this kind of problem, or possibly the still-in-beta CodeSandbox SDK – and maybe E2B or Fly but didn't have as good experiences with those).

luke-stanley1 day ago

I use ZFS, but isn't the situation the sandbox is in totally different? Why would it be optimal?

ryao1 day ago

If you are making sandboxes, you need to put the files in place each time. With ZFS clones, you can keep referencing the same files repeatedly, so the amount of changes to memory needed to create an environment are minimized. Let’s say the sandbox is 1GB and each clone operation does less than 1MB of memory writes. Then you have a >1000x reduction in writing needed to make the environment.

Furthermore, ZFS ARC should treat each read operation of the same files as reading the same thing, while a sandbox made the traditional way would treat the files as unique, since they would be full copies of each other rather than references. ZFS on the other hand should only need to keep a single copy of the files cached for all environments. This reduces memory requirements dramatically. Unfortunately, the driver has double caching on mmap()’ed reads, but the duplication will only be on the actual files accessed and the copies will be from memory rather than disk. A modified driver (e.g. OSv style) would be able to eliminate the double caching for mmap’ed reads, but that is a future enhancement.

In any case, ZFS clones should have clear advantages over the more obvious way of extracting a tarball every time you need to make a new sandbox for a Python execution environment.

+1
o11c1 day ago
RunningDroid1 day ago

I believe they were referring to the use of ZFS snapshots for a Copy-on-Write type setup

hnuser1234562 days ago

Is the interactive python sandbox incompatible with thinking models? It seems like I can only get the interactive sandbox by using 2.0 flash, not 2.0 flash thinking or 2.5 pro.

topsycatt2 days ago

That's a good question! It's not incompatible, it's just a matter of getting the flow right. I can't comment too much on that process but I'm excited for the possibilities there.

hnuser1234562 days ago

Oh, I see Gemini can run code as part of the thinking process. I suppose the sandbox that happens in was the target of this research, while code editing in Gemini Canvas just has a button to export to Colab for running. The screenshots in the research show a "run" button for generated code in the chat, but I'm not seeing that exact interface.

In any case, I share your excitement.

+2
topsycatt2 days ago
TechDebtDevin2 days ago

Have you by chance read this paper: https://agent-gen.github.io/

wunderwuzzi232 days ago

That's cool. I did something similar in the early days with Google Bard when data visualization was added, which I believe was when the ability to run code got introduced.

One question I always had was what the user "grte" stands for...

Btw. here the tricks I used back then to scrape the file system:

https://embracethered.com/blog/posts/2024/exploring-google-b...

waych2 days ago

The "runtime" is a google internal distribution of libc + binutils that is used for linking binaries within the monolithic repo, "google3".

This decoupling of system libraries from the OS itself is necessary because it otherwise becomes unmanageable to ensure "google3 binaries" remain runnable on both workstations and production servers. Workstations and servers each have their own Linux distributions, and each also needs to change over time.

saagarjha1 day ago

Of course, this meant that some tools got stuck on some old glibc from like 2007.

flawn2 days ago

It says in the article - Google Runtime Environment

jemfinch2 days ago

grte is probably "google runtime environment", I would imagine.

enoughalready2 days ago

Have you contemplated running the python code in a virtual environment in the browser?

seydor2 days ago

you re the hacker or the google?

topsycatt2 days ago

The google

larodi2 days ago

"im the google" is definitely a top 3 chart synthpop song by ladytron .)

sans_souse1 day ago

Can a Mod please change thread title to I'm The Google. AMA.

lugao2 days ago

[flagged]

onemoresoop2 days ago

Question: how does it feel inside google in terms of losing their lunch to OpenAi? Losing here is very loose, I don’t think OpenAI won yet but seems to have made a leap ahead of google in terms of marker share and we know google was sitting on tons of breakthroughs and research. Any panicking or internal discontent at google’s product policies? No need to answer if you’re uncomforable that your employer may hold you responsible for what you write here.

+1
mediaman2 days ago
+2
nikcub2 days ago
+2
MyelinatedT2 days ago
luke-stanley1 day ago

They just released a SOTA model (Gemini 2.5 Pro) that beats all models on most benchmarks, it's a great comeback from the model side but IMO they are less strong on the product side, they pioneered the sticky ecosystem of web app products model, though kinda like the Microsoft Office suite that (originally) had to be downloaded, ironically building on XML HTTP request support the IE5 introduced for Outlook.

fragmede2 days ago

Do you think "hacked Gemini and leaked its source code" is an accurate representation of what happened here?

topsycatt2 days ago

I'm on the Google side of the equation. I think the title is a bit sensationalized, but that's the author's prerogative.

devdudect2 days ago

When are we going to be able to run sandboxed php code?

simonw2 days ago

You can run PHP in ChatGPT Code Interpreter today if you upload the right binary (also Deno and Lua and more): https://til.simonwillison.net/llms/code-interpreter-expansio...

+4
topsycatt2 days ago
koakuma-chan2 days ago

> but that's the author's prerogative

You submitted this.

+2
topsycatt2 days ago
marcellus232 days ago

From the HN guidelines:

> Otherwise please use the original title, unless it is misleading or linkbait; don't editorialize.

Arguably this is misleading or clickbait, but safer to err on the side of using the original title.

wil4212 days ago

Even better, OP shared something OP didn’t write but thought it was interesting.

jwlake2 days ago

Is there any reason it's not documented?

ed_elliott_asc1 day ago

This is why hacker news is so cool

Mindwipe2 days ago

Does anyone at Google care that you're trying to replace Assistant with this in the next few months and it can't set a timer yet?

(I mean it will tell you it's set a timer but it doesn't talk to the native clock app so nothing ever goes off if you navigate away from the window.)

hnuser1234562 days ago

I doubt the guy working on the code sandbox can do anything about the overall resource allocation towards ensuring all legacy assistant features still work as well as they used to. That being said, I was trying to navigate out of an unexpected construction zone and asked google to navigate me home, and it repeatedly tried to open the map on my watch and lock my phone screen. I had to pull over and use my thumbs to start navigation the old fashioned way.

iury-sza2 days ago

I keep reading people complaining about this but I can't understand why. Gemini can 100% set timers and with much more subtle hints than assistant ever could. It just works. I don't get why people say it can't.

It can also play music or turn on my smart lamps, change their colors etc. I can't remember doing any special configuration for it to do that either.

Pixel 9 pro

jdiff2 days ago

I certainly can't get it to reliably play music on my Pixel 8. Mostly it summons YT Music, only occasionally do I get my music player, and sometimes I merely get "I'm an LLM, I can't help you with that."

And you used to be able to say "Find my phone" and it would chime and max screen brightness until found. Tried that with Gemini once, and it went on with very detailed instructions on using Google or Apple's Find My Device website (depending on what type of phone I owned), maybe calling it from another device if it's not silenced, or perhaps accepting that my device was lost or stolen if none of the above worked. Did find it during that lengthy attempt at being helpful though.

Another fun example, weather. When Gemini's in control, "What's the weather like tonight?" gets a short ramble about how weather depends on climate, with some examples of what the weather might be like broadly in Canada, Japan, or the United States at night.

Unlike Assistant where you could learn to adapt to its unique phrasing preferences, you just flat out can never reliably predict what Gemini's going to do. In exchange for higher peak performance, the floor dropped out the bottom.

ChadNauseam2 days ago

I have a rooted pixel with a flashed custom android ROM, which should be a nightmare scenario for gemini, and it can set timers just fine (and the timers show up in the native clock app)

dgunay2 days ago

I dislike Google's (mis)management of Assistant as much as the next guy, but this just has not been my experience. I can tell Gemini on my phone to set timers and it works just fine.

arebop2 days ago

The Assistant can't reliably set timers either, though I guess 80% is considerably better than 0. Still, I think it used to be better back before Google caught a glimpse of a different squirrel to chase.

nosrepa2 days ago

I just want the assistant voice. I hate the Gemini ones.

whatevertrevor2 days ago

I'm with you on that. I prefer a human trying to sound like a robot instead of a robot trying to sound human.

7bit2 days ago

It can't do shit, especially in some EU countries, where it can do even less shit.

Setting timers reminders, calendar events. Nothing. If they kill the assistant, I'll go Apple, no matter how much I hate it.

GrayShade7 hours ago

Just tested, you need to enable "Gemini Apps", but they remember your interactions for 3, 18 or 36 months instead of 3 days.

7bit7 hours ago

Yeah, I disabled that when I tested it. No go for me, but thanks for informing me!

KennyBlanken2 days ago

Can you get someone to fix the CSS crap on the website? When I have it open it uses 40-50% of my GPU (normally ~5% in most usage)...and when I try to scroll, the scrolling is jerky mess?

simonw2 days ago

I've been using a similar trick to scrape the visible internal source code of ChatGPT Code Interpreter into a GitHub repository for a while now: https://github.com/simonw/scrape-openai-code-interpreter

It's mostly useful for tracking what Python packages are available (and what versions): https://github.com/simonw/scrape-openai-code-interpreter/blo...

Zopieux2 days ago

Meanwhile they could just decide to publish this list in a document somewhere and keep it automatically up to date with their infra.

But not, secrecy for the sake of secrecy.

aleksiy1232 days ago

Tbh I doubt this is secrecy.

More likely just noone has taken the time and effort to do it.

12345hn67891 day ago

What would the benefit of doing this be?

simonw19 hours ago

It's documentation. Makes it much easier for people to know what kind of problems they can solve using Code Interpreter.

It's a bit absurd that the best available documentation for that feature exists in my hacky scraped GitHub repository.

fudged711 day ago

I just used this package list (and sandbox limitations) to synthesize a taxonomy of capabilities: https://gist.github.com/trbielec/a00a58fa97a232bef8984cc8d01...

lqstuart2 days ago

So by “we hacked Gemini and leaked its source code” you really mean “we played with Gemini with the help of Google’s security team and didn’t leak anything”

parliament322 days ago

> resulting in the unintended inclusion of highly confidential internal protos in the wild

I don't think they're all that confidential if they're all on github: https://github.com/ezequielpereira/GAE-RCE/tree/master/proto...

saagarjha1 day ago

I mean, those were also disclosed via a vulnerability.

Brian_K_White1 day ago

But it still means they aren't guilty of leaking/disclosing them.

It's not a valid point of criticism. The escape did not in fact "result" in the leak of confidential photos. That already happened somewhere else. This only resulted in the republishing of something already public.

Or another way, it's not merely that they were already public elsewhere, the imortant point is that the photos were not given to the ai in confidence, and so re-publishing them did not violate a confidence, any more than say github did.

I'm no ai apologist btw. I say all of these ais are committing mass copyright violation a million times a second all day every day since years ago now.

saagarjha18 hours ago

I’m not criticizing them

+1
Brian_K_White14 hours ago
tgtweak2 days ago

The definition of hacking is getting pretty loose. This looks like the sandbox is doing exactly what it's supposed to do and nothing sensitive was exfiltrated...

bluelightning2k2 days ago

Cool write up. Although it's not exactly a huge vulnerability. I guess it says a lot about how security conscious Google is that they consider this to be significant. (You did mention that you knew the company's specific policy considered this highly confidential so it does count but it feels a little more like "technically considered a vulnerability" rather than clearly one.)

jll292 days ago

Running the built-in "strings" command to extract a few file names from a binary is hardly hacking/cracking.

Ironically, though, getting the source code of Gemini perhaps wouln't be valuable at all; but if you had found/obtained access to the corpus that the model was pre-trained with, that would have been kind of interesting (many folks have many questions about that...).

dvt2 days ago

> but if you had found/obtained access to the corpus that the model was pre-trained with, that would have been kind of interesting

Definitionally, that input gets compressed into the weights. Pretty sure there's a proof somewhere that shows LLM training is basically a one-way (lossy) compression, so there's no way to go back afaik?

jdiff2 days ago

Not the original, but a lossy facsimile that's Good Enough for almost anything. And as the short history of LLMs and other nets has shown us, they're often not even all that lossy.

commandersaki2 days ago

Their "LLM bugSWAT" events, held in vibrant locales like Las Vegas, are a testament to their commitment to proactive security red teaming.

I don't understand why security conferences are attracted to Vegas. In my opinion its a pretty gross place to conduct any conference.

lmm1 day ago

Excluding uptight scolds is a feature not a bug. There's a lot of overlap between people who find Vegas objectionable and people who find red teaming objectionable (because why would any decent person know attacking/exploiting techniques).

commandersaki1 day ago

The irony is that Vegas takes a dim view of those that take advantage of their gaming venues. The institutions that run it are quite aggressive when it comes to being attacked.

Anyways, security conferences such as BSides run all over the world in various cities where red teaming type activities is embraced. IMO it'd be nice to diversify from Vegas, preferably places with more scenery/greenery like Boulder or something.

zem2 days ago

relatively cheap event space and hotels. it's hard to find a city to host a large conference.

desmosxxx2 days ago

What don't you understand. Vegas is literally built for conferences.

hashstring2 days ago

Real, I feel the exact same way.

numbsafari2 days ago

You answered your own question.

scudsworth2 days ago

reinvent is in vegas

theLiminator2 days ago

It's actually pretty interesting that this shows that Google is quite secure, I feel like most companies would not fare nearly as well.

kccqzy2 days ago

Yes and especially the article mentions "With the help of the Google Security Team" so it's quite collaborative and not exactly black box hacking.

fpgaminer2 days ago

Awww, I was looking forward to seeing some of the leak ;) Oh well. Nice find and breakdown!

Somewhat relatedly, it occurred to me recently just how important issues like prompt injection, etc are for LLMs. I've always brushed them off as unimportant to _me_ since I'm most interested in local LLMs. Who cares if a local LLM is weak to prompt injection or other shenanigans? It's my AI to do with as I please. If anything I want them to be, since it makes it easier to jailbreak them.

Then Operator and Deep Research came out and it finally made sense to me. When we finally have our own AI Agents running locally doing jobs for us, they're going to encounter random internet content. And the AI Agent obviously needs to read that content, or view the images. And if it's doing that, then it's vulnerable to prompt injection by third party.

Which, yeah, duh, stupid me. But ... is also a really fascinating idea to consider. A future where people have personal AIs, and those AIs can get hacked by reading the wrong thing from the wrong backalley of the internet, and suddenly they are taken over by a mind virus of sorts. What a wild future.

20after42 days ago

> reading the wrong thing from the wrong backalley of the internet, and suddenly they are taken over by a mind virus of sorts. What a wild future.

This already happens to people on the internet.

tcoff912 days ago

Yeah, the way some people lose it from the internet reminds me of Snow Crash.

Cymatickot1 day ago

Probably best text I've seen in AI train ride recently:

""""" As companies rush to deploy AI assistants, classifiers, and a myriad of other LLM-powered tools, a critical question remains: are we building securely ? As we highlighted last year, the rapid adoption sometimes feels like we forgot the fundamental security principles, opening the door to novel and familiar vulnerabilities alike. """"

There this case and there many other cases. I worry for copy & paste dev.

jeffbee2 days ago

I guess these guys didn't notice that all of these proto descriptors, and many others, were leaked on github 7 years ago.

https://github.com/ezequielpereira/GAE-RCE/tree/master/proto...

ein0p2 days ago

They hacked the sandbox, and leaked nothing. The article is entertaining though.

kccqzy2 days ago

They leaked one file in the sandbox that contained lots of internal proto files. The security team reviewed everything in the sandbox and thought nothing in it is sensitive and gave the green light; apparently the review didn't catch this in the sandbox.

I guess this is a failing of the security review process, and possibly also how the blaze build system worked so well that people forgot a step existed because it was too automated.

charcircuit2 days ago

>that contained lots of internal proto files

So does Google Chrome.

kccqzy2 days ago

No it's not the same level of internal. There are internal proto files specific to Chromium and its API endpoints, and then there are internal proto files for google3. The latter can divulge secrets about Google's general server side architecture. The former only divulges secrets about server side components relevant to Chromium.

qwertox2 days ago

Super interesting article.

> but those files are internal categories Google uses to classify user data.

I really want to know what kind of classification this is. Could you at least give one example? Like "Has autism" or more like "Is user's phone number"?

StephenAmar2 days ago

The latter. Like is it a public ID, an IP, user input, ssn, phone number, lat/long…

Very useful for any scenario where you output the proto, like logs, etc…

mr_00ff001 day ago

Slightly irrelevant, but love the color theme on the python code snippets. Wish I knew what it was.

b0ner_t0ner2 days ago

Very distracting background/design on desktop; had to toggle reader view.

paxys2 days ago

Funny enough while "We hacked Google's AI" is going to get the clicks, in reality they hacked the one part of Gemini that was NOT the LLM (a sandbox environment meant to run untrusted user-provided code).

And "leaked its source code" is straight up click bait.

dang2 days ago

Ok, we put the sandbox in the title above. Thanks!

(Submitted title was "We hacked Google's A.I Gemini and leaked its source code (at least some part)")

topsycatt2 days ago

Thanks!

infinghxsg2 days ago

Instead of sandbox can you just make sure people know it was not a meaningful hack?

I mean I “hacked” this site too by those standards.

dang2 days ago

What would be a more accurate and neutral wording?

xnx2 days ago

We uncovered some internal details of the Gemini Python sandbox

IshKebab24 hours ago

They didn't even hack it.

HenryBemis2 days ago

Click and cash (for the great trio).

sneak2 days ago

> However, the build pipeline for compiling the sandbox binary included an automated step that adds security proto files to a binary whenever it detects that the binary might need them to enforce internal rules. In this particular case, that step wasn’t necessary, resulting in the unintended inclusion of highly confidential internal protos in the wild !

Protobufs aren't really these super secret hyper-proprietary things they seem to make them out to be in this breathless article.

film422 days ago

No, but having the names to the fields, directly from Google, is very helpful for further understanding what's available from within the sandbox.

kingforaday2 days ago

Reminds me of this HN article from a month ago with lots of commentary on whether a database scheme is proprietary.

https://news.ycombinator.com/item?id=43175628

film422 days ago

Yeah there are some interesting similarities. However, the biggest difference is Google has the right to keep source proprietary, and companies like Unity are allowed to provide source code with a reference only license (still proprietary), but the US has FOIA to help push information into the open. Does a DB schema fall under FOIA scope? I think a better question is, can (or is) a db schema being used to conceal information? Is the law attempting to reinforce this barrier?

In other words, it should not be about the intent of the requester, but the intent of its owner; and in the case of that article, either by bias in narrative, or the fact that it rhymes with events of the past, there is some tomfoolery about.

ratorx2 days ago

Yup, there’s no reason to believe that the proto files (which are definitions rather than data) are any more confidential than the Gemini source code itself.

whatevertrevor1 day ago

The protos in question are related to internal authn/z so it's conceivable that having access to that structure would be valuable information to an attacker.

rurban1 day ago

The protos were already available. See above.

A valuable information would be able to run those RPC calls as Principal (their root user)

daeken2 days ago

Yeah, this is honestly super interesting as a journey, but not as a destination. The framing takes away from how cool the work really is.

ipsum22 days ago

Yes, there's a lot of internal protos from Google that are leaked on the internet. If I recall correctly, it was a hacker News comment that linked to it.

Edit: I don't know why the parent comment was flagged. It is entirely accurate.

kccqzy2 days ago

You are probably thinking of the Google search ranking leak. That leak was the leak of the generated documentation from proto files.

curiousZeedX2 days ago

[dead]