Hacker Newsnew | past | comments | ask | show | jobs | submit | SethMLarson's commentslogin

Author here, that's a good idea. A straightforward way to exploit an implementation differential like this is if you have a software system that contains two different implementations of IDNA 2003 processing user input. One part of the process processes the domain correctly, the other incorrectly, and in this case you can have one part of a system (such as a policy/filter) "see" the data one way and the other part of the system (such as, taking an action as a result of the data) see the data in another way.

Server-side Request Forgery (SSRF) is an example of such an exploit targeting a differential in implementations of URL parsers, which is similar to this implementation difference.


I wouldn't call this a "vulnerability", I'd call it "a thing that can potentially turn into a vulnerability, more often it can turn into an obscure bug, and most often it is just a quirk".

In particular, if my corporate security team started just mass-flagging all instances of "str.lower" as "security bugs" I would be having a talk with their manager about their threshold for what constitutes a "security bug". Their job is arguably to be more sensitive to that than most engineers, but not that sensitive. It would be like flagging all instances of string concatenation as a vulnerability... and I say that as the guy who would like to eliminate simple string concatenation from programming languages, already a very extreme position on that operation, because of it being at the root cause of so many vulnerabilities... but simply flagging every use as a "vulnerability" is way too sensitive. A demonstration of the ability to use it to bypass some sort of security barrier is necessary to call any specific instance a "vulnerability".

And string concatenation has caused orders of magnitude more actual, verified vulnerabilities than incorrect case folding has.


What’s a way to flag to an engineering team that they should do a thorough review of their usage of a particular API because it has footguns in it?

This is a rhetorical question because there isn’t a generally accepted way of doing so. Automatically patch everything is a silly way to do vulnerability management but software is cheap to change, so it’s often easier at scale to just force engineering teams to patch even if it doesn’t make sense in context.

I’m not a fan of this approach, but I can understand why it’s so popular.


You could have a CO which emits overridable warnings or requires additional / specific reviewers.

Of course that can then lead to warnings fatigue so it’s not necessarily a big improvement, or an improvement at all, in the long run, depends a lot on the org philosophy and habits.


Warning fatigue is a very good callout. I find it’s really easy to get to a state where you are inundated by notifications that aren’t actionable.


I guess that's why you shouldn't be _validating_ things, and then praying them on as-is. "Parsing is validation" is (also) the idea that after validation, your data is in a format that reflects and enforces what's known about it.

"Safe strings" is an example of that idea. Not always possible or practical, but always worth considering if you're doing "validation" as a function.


That would be a vulnerability in the IDNA filter that they’re responsible for fixing.


> A straightforward way to exploit an implementation differential like this is if you have a software system that contains two different implementations of IDNA 2003 processing user input.

Apparently, if this behavior depends on Unicode version, you have a bug over time even if it's a single implementation, *if you process the same input twice*.

The correct fix is to process it once and store the result.


"if you have a software system that contains two different implementations of IDNA 2003 processing user input"

Is that a real thing though? Is someone doing that?


With web applications it's not particularly unusual, because the whole system stack can be quite heterogeneous. If one part of the system is doing authentication and the other part is actually doing the action then it can be a real problem when they interpret the input differently. Differences between proxy and web server interpretations of HTTP headers have been a source of multiple vulnerabilities, for example.


It's not particularly unusual in Python, because it's normal that important functionality is implemented in other languages by a diverse set of third parties.

That said, this isn't a security vulnerability, it's just a bug. To meet a reasonable threshold for being a security issue, you need to show a real system that has an issue caused by this, and then the vulnerability is in that system, rather than in Python.

I'll grudgingly allow that a buffer overflow or an SQL injection possibility - in a library advertised as safe against that kind of bug - is a security issue, because there's so much history of turning those into real exploits. But a choice of library or language that makes those bugs easier to write - the idna library, or C or PHP say, is not itself a security issue.


It's not unusual for this sort of string confusion to turn into an SSRF CVE [0].

[0] https://nvd.nist.gov/vuln/detail/CVE-2026-16221


It could be an implementation written in the buggy Python and another written in a different language.

For example you might use a ready-made WAF written in a non-Python language in front of a Python app.


Consider the case where your system has components in python and another language without the bug, both of which process that input.


It isn't until it is, until during a crunch someone adds a package with that condition and eventually that gets exploited or halts the system. It's never a nitpick to shed your system from undesired state because of how complex systems behave.


pip also supports relative dependency cooldowns starting in v26.1:

~/.config/pip/pip.conf

[install] uploaded-prior-to = P3D


Woah, that's awesome!! Enjoy :)


You'll have to play to find out ;) haha!


Great suggestion, I'll add an example!


Still needs screenshots and video!


Great eye to detail! Thank you: ill fix this when I get home :)


Maybe I'll do a follow up on this!


Please do, that would be great!


Oooh! I need to look into this... thanks for the tip.


Players that don't know the technical term "billboarding" might use this as a way to say that the images of the food are "flat" unlike the rest of the 3D modeled environment. Just a suspicion!


I can also be used for derogatory connotations; Another example is for Smash Brothers specifically, the Byleth character's ultra move has a flat image of a character in their game and people call it "png sothis" (character name) to suggest that it's low-effort or not well made


Also that they use a more realistic style compared to much of the in-game art assets.


I would love to see a list of inspirations for keeping the food 2D even in a 3D environment! Pacman or Bubble Bobble seem like good places to start.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: