NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Noroboto: Lying Fonts and Mitigation in Rust (tritium.legal)
PufPufPuf 57 minutes ago [-]
Wouldn't ligatures be a more effective attack vector for the "Maryland -> Delaware" case? That's all that ligatures do -- render a specific sequence of characters as something else.
piker 11 minutes ago [-]
We're definitely not TrueType experts and took the relatively "straightforward" approach of generating a small custom font for each mapping. If it's possible to render "Maryland" with ligatures while mapping the same string to "Delaware" in Unicode, then that's just another example of the vector. Really interesting stuff, and we'll be checking it out!
Conscat 5 minutes ago [-]
These are some very extreme examples of this that push the feature's limits:

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

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

stavros 47 minutes ago [-]
Came here to say this, I saw the initial video and thought they used ligatures, and then I was surprised the actual post was much more complicated.
echoangle 1 hours ago [-]
At that point you can just paste a screenshot of your doc into word and celebrate.

Also, the mitigation can probably be fooled with ligatures since they are only verifying the letters alone as far as I skimmed.

I don’t even understand the threat model. Is my opponent in a court case going to use this on the PDF they give the court? Surely the judge will be pretty annoyed since you can’t even ctrl+f in the files then.

piker 1 hours ago [-]
That's true for the full obfuscation, but not for the replacement. For replacement there's really nothing like it. We just shared the full obfuscation as just a PoC.

[Edit: The point here is not to prove some massive "gotcha", but rather demonstrate that there are a whole class of vulnerabilities that these pipelines are subject to. There will be follow-up posts that pack much more punch.]

echoangle 1 hours ago [-]
Assuming you’re the author since you also posted it: I just stealth-edited my comment, could you maybe talk about the threat model a bit more? I am not a lawyer so I don’t really see when I would want to do this.

Also, I hope the „lame exploit“ I just edited out was not too offensive, it’s always great when people try to find attacks to make systems more safe.

piker 1 hours ago [-]
Absolutely, and we definitely agree this particular attack is "lame" in the sense of not allowing CVE, etc.

But, we're working on a lot of these (as we encounter them in developing Tritium), and the point really is just to demonstrate that LLMs can be blind to ineffective implementations of the specs and other tricks.

As mentioned in the accompanying LegalQuants post, we see a lot of these available in the pipelines of applications like Claude for Legal, Harvey, Legora and others.

The most nefarious case here requires crafting a number of custom fonts to do character-swapping. It's less discoverable but may be sanctionable to your point.

But bear in mind this particular "attack" was vibe coded in a day or two and most of the frontier models fail to pick up on it. As "AI native" firms come on line, and aim to be increasingly end-to-end automated, these will become real legal issues.

And there will be a lot of them available.

minimaltom 38 minutes ago [-]
It seems like the main attack scenario for this + legal AI would be during discovery: if opposing counsel gave you a poisoned PDF, and you threw it into one of these products to help you sift through it and got bad answers.

However, wouldnt this be a rather risky move? Courts authorized the discovery, so I imagine the judge might loose their marbles and throw the hammer at them if this came to light.

piker 9 minutes ago [-]
Yes, this particular vector is probably better in contracting than discovery. There is a duty of candor to the court and court rules that might come into play. In the case of contracting the attacker would be exposed to the jurisdiction's law of contracts. That might call it a "misrepresentation" or fraudulent thus making the contract void or voidable, but it's not clear "your honor I never read the contract but my LLM told me it was okay to sign" is a great argument either.
mproud 1 hours ago [-]
Someone could also just make a font file that swaps all of the characters around. So like an A looks like a Z, and a Z looks like an A.
piker 1 hours ago [-]
Covered in the post! It's the more aggressive approach for sure.
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 19:41:28 GMT+0000 (Coordinated Universal Time) with Vercel.