I feel like this article does a depth first search on what swiss tables are, jumping head first into the tiniest implementation details, but I'm missing the breadth first search. What is the top level `struct` of a swiss table? An array of groups? Why not simplify all of it into linear open addressing, with a stride of 8 for simd? Why the triangular jumps? What problems does this design solve?
At the table level, yes, it is an array of groups. The important part is that SIMD compares those small control bytes, not 8 complete keys.
Linear probing with a stride of 8 would work too. But when nearby groups are full, new keys keep moving to the same next empty group. As that group fills up too, the search gets longer. Triangular probing uses larger jumps to reduce this clustering, though it is not faster for every lookup. I added the explanation in the article.
The directory and multiple tables solve a separate problem, growth. A single large array would need all its entries redistributed when it grows. Go splits the storage into smaller tables so growth only rebuilds the affected table, reducing the delay that one insertion can cause. The Go blog explains this motivation.
I've added an overview near the beginning for the big picture, plus explanations of what the different parts help with at the end.
Still, this is a vuln in what I imagine is their most frequently used path:
Attacker provides link to website, their software crawls the website, and during the crawl there should not happen security issues as fundamental as this.
It's baffling that the Website crawler can make 50 changes to the URL in a query that tries to compare several public entities and on top of this manages to leak user secrets.
To me this shows a striking lack of defense-in-depth thinking:
- why is single URL crawl with 20+ redirects not flagged as problematic and/or aborted?
- why is a query about a coffee place based on its public URL even seeded with the users' context and confidential information?
- why dont they just look up the coffee place on a trusted source like google maps and continue from there?
- why is the basic "social" engineering style attack working?
- why is the cloudflare impersonation not challenged if the website is clearly not from cloudflare and there are zero references from cloudflare to this website in the training corpus?
In terms of web crawling, cloudflare is like the government. You shouldn't be able to walk up to someone and say "Hey I'm the tax man, please pay your income tax in cash to me right now!" without being challenged.
I know there are fundamental reasons in the LLM technology why this kind of attack is possible, but there should be so many more checks around web crawling in Claude.
How can security engineers at Anthropic say they know about this kind of vulnerability but have not implemented any of these defense in depth mitigations for it? Is everybody out shopping for a new yacht?
addressing any of the points would require locking the AI down and making it less general and less "agentic". Your concerns make sense if you look at the AI as an information retrieval engine.
- why is single URL crawl with 20+ redirects not flagged as problematic and/or aborted?
There could be legitimate use cases for interacting with a website like this that could serve the user.
- why is a query about a coffee place based on its public URL even seeded with the users' context and confidential information?
Because it provides context in how the agent interacts with the site (in this case to detrimental effect)
- why dont they just look up the coffee place on a trusted source like google maps and continue from there?
The ai was explicitly instructed to check the given url
- why is the basic "social" engineering style attack working?
because ai can not separate prompt from information, they share the same input channel. state of the art ai has some amount of "common sense" as to when it is being prompt injected or engineered, but this isn't exhaustive
- why is the cloudflare impersonation not challenged if the website is clearly not from cloudflare and there are zero references from cloudflare to this website in the training corpus?
because the ai didn't think to check if the website is truly behind some sort of cloudflare product or not
the optimal crime rate is non zero and the same goes for traffic death rate, because to bring them to zero would imply a dystopia where personal freedom is seriously limited
|(...) is the same as (fn ...) making an anonymous function. $ is an argument (in a 1 arity anonymous function.) $ is getting the whole row which is a hashmap and e.g. ({:key "value"} :key) is a way of retrieving from a hashmap. So it's "where value in column job is "Developer".
Is there a nautical map equivalent of osm or organic maps? One that emphasizes waterways by drawing them thicker when zoomed out like regular maps draw roads thicker? Plan routes over the water? Even google maps lacks a nautical layer.
it depends what type of waterways you’re after.
for the sea, https://map.openseamap.org/ is very good (but no route planning sadly - for that you’d need opencpn and some charts obtained.
For inland waterways i can only speak for the English canals, for which i recommend https://opencanalmap.uk/ which uses data from both OSM and the Canal and River Trust. Again, sadly no route planning but for that I use https://canalplan.org.uk/
OM and CoMaps should also work, though you might need to wait awhile for a GPS fix and be near a window. Google's main hiccup will be an internet connection for the maps.
reply