Back to News
Advertisement
Advertisement

⚡ Community Insights

Discussion Sentiment

26% Positive

Analyzed from 2354 words in the discussion.

Trending Topics

#bug#code#ffmpeg#don#zero#bugs#llms#used#user#tmux

Discussion (121 Comments)Read Original on HackerNews

aeyes•about 3 hours ago
A patch for this was submitted in April: https://lists.ffmpeg.org/archives/list/ffmpeg-devel@ffmpeg.o...

Edit: And there was discussion about this back in 2024 as well

semiquaver•about 2 hours ago
Oddly enough I can’t access that site, it just heats up my phone solving hashes. Gave up after about a minute and anubis had only made it less than halfway through.

I doubt the real bots have any trouble bypassing it.

post-it•about 2 hours ago
It also took insanely long on my iPhone 16. "Made with heart in Canada" but configured poorly.
demibabs•about 2 hours ago
Yeah, is it trying to mine bitcoin or something? Anubis usually takes a second but here I waited a minute and got 20% through on a modern phone.
bulder•about 2 hours ago
Presumably they've configured it to use a higher difficulty challenge due to high rates of scraping on their bugtracker
gguingff•42 minutes ago
happy to report my bots have no trouble with anubis or any other pow mechanism, little bit of deno and i'm right through.
hiccuphippo•about 1 hour ago
Took less than a minute in my 5 year old xiaomi phone. It did take way longer than other Anubis sites I've seen.
bartread•about 2 hours ago
Yeah, it's painful.

I get this crap when browsing on desktop a lot as well, principally because I stubbornly use Firefox as my main browser, and I habitually use a VPN when I connect my laptop to unsecured or even secured-but-accessible-to-large-numbers-of-people WiFi networks.

Like, seriously, bot detection "specialists", fuck off: I'm not a bot but your bot detection software IS shit, and I DO resent your shit software draining my battery and getting in my way. Learn to do your jobs properly, will you?

And don't come crying to me about how the problem you're trying to solve is "hard". I don't care: you chose it, you chose to considerably worsen the web browsing experience of millions of people globally, nobody made you. So go and find a different job if you're incapable of doing the one you have.

And if it's so "hard" why does your entire solution seem to be predicated on anyone's a bot if they're not running Chrome, or they are running an adblocker, or they appear to be from an unusual country that doesn't match their system language? Seriously, is this the level of sophistication you hacks operate at? To solve your "hard" problem?

You are extremely lame. Get out of my way.

Georgelemental•about 1 hour ago
> And don't come crying to me about how the problem you're trying to solve is "hard". I don't care: you chose it, you chose to considerably worsen the web browsing experience of millions of people globally, nobody made you.

Unfortunately, if you let all the bots in, they overwhelm your servers, and then nobody can access the website.

a2ff6eeb0•about 1 hour ago
I assume you're offering to pay for the increased server costs?

I had some git hosting up for a while, and was serving hundreds of qps and several terabytes per month. I can only imagine want significant sites are serving.

yorwba•about 2 hours ago
A patch was submitted, but apparently not merged. That was also my experience trying to submit a patch for https://trac.ffmpeg.org/ticket/8738 . Somebody on the bug tracker took note, but was apparently unable to effect a merge in the intervening years.

Maybe now that ffmpeg is using Forgejo, the ball won't be dropped like this as often. Or there'll just be a five-digit number of open pull requests instead.

dabinat•about 6 hours ago
It’s interesting how AI may both raise and lower the quality of software. It’s very easy to send an AI agent on an open-ended bug hunt, and if it wastes a bunch of time and effort and finds nothing, no big deal. Time is much more important for a human developer with a salary.
dmix•about 6 hours ago
Finding the bugs with LLMs is easy. Reviewing the output, cleaning it up, and making sure it doesn't break something else is the hard part.
black_knight•about 4 hours ago
This is where I believe strong typing (like, Haskell-strong or stronger) and functional programming in general will be a win. The confidence I have that my fixes are localised when fixing Haskell code is infinitely stronger than fixing even Java, not speak about C, code.
nonethewiser•about 5 hours ago
No one can keep up with the volume of code AI produces.

We wont stop using AI.

We will use AI to check AI.

Of course this is crazy, but it will also unlock pretty insane scaling and productivity and ultimately we will manage it on either end via requirements and tests.

harambae•about 4 hours ago
It's mostly (not entirely, but mostly) finding security issues in old human-written code. It'll eventually start running out of those.

From that standpoint, it's not a crazy setup security-wise. Maybe still crazy for development.

krona•about 5 hours ago
You're suggesting that LLMs get better at fixing bugs/vulnerabilities, but at the same time stop getting better at finding them? What if this difference is inherent and essential?
hombre_fatal•about 5 hours ago
The missing part of this is that verifying the bug with LLMs is also easy, and so is adversarially reviewing the proposed fix with LLMs.

The only thing left for you to do should be directional decisions. The LLMs should pause and rope you in if the fix involves directional/invariant changes.

evenhash•about 5 hours ago
> It’s very easy to send an AI agent on an open-ended bug hunt, and if it wastes a bunch of time and effort and finds nothing, no big deal.

No big deal? It’s not like it’s free… tokens cost money.

rogerrogerr•about 4 hours ago
Often rounds to free compared to human costs.
Supermancho•about 6 hours ago
I don't care if you call it an over-engineered looping machine or what, there are concrete benefits to using LLMs for this. They work faster than developing your own looping algorithm and more often produce useful results than not.
saghm•about 4 hours ago
It's not even like fuzzers are valuable because of the process they use specifically either; the value is that they produce a concrete input that you can use as a reproducible test case at that point. The value could be produced by gazing into a crystal ball for all I care, as long as I can use what it gives me to reproduce a bug.
shevy-java•about 6 hours ago
I dislike AI, but if AI finds real bugs then this is in my opinion objectively a positive thing. Of course the question is what constitutes a real bug.
hn_submit•about 4 hours ago
A.I. is useful for this. But it would be even more useful if all new code were written in Rust or some other memory-safe language.

A.I. could also be used to port C/C++ codebases to Rust, which isn't economically feasible at the moment.

senderista•about 4 hours ago
AI will have plenty of security bugs left to find in Rust codebases.
Spivak•about 4 hours ago
I mean I get the sentiment but Rust won't save you against division by zero, it'll just panic at runtime like every other language.
pixl97•about 6 hours ago
Unfiltered models will help build exploits for the bugs they find, so there is some means of measuring their efficacy.
klipt•about 4 hours ago
If you're just talking about security bugs.

There are also non security bugs that don't have exploits but just make the user experience worse.

eviks•about 6 hours ago
But what's your expectation of the net?
justonenote•about 3 hours ago
Whatever about the specifics of this bug and whether its a useful vector, this is not surprising even in the slightest?

My current opinion on LLMs is that they are superhuman in that they lack fatigue, they have close to full knowledge across all subjects which are known to humans at least publicly, and the fact that you can vibe code a harness to look for bugs in a famously complicated C codebase is intern level stuff and hardly news.

Smart aspiring blackhats will be targeting tmux next, both with light llm jailbreaks, light supply chain attacks (web search results) and LPEs within certain environments which weren't particularly useful before but with agents running on auto mode for hours become a very valuable springboard. I'm not sure on the quality of tmux code but I know its written in C and is very complex and was not at all designed to defend against this type of threat.

jonhohle•about 2 hours ago
Not that it doesn’t have issues, but I’m not sure why you’d choose tmux of all things. It runs as a user and has no privileges to escalate. It was written for and is part of OpenBSD and follows their security hardening practices.

(There actually was one privilege escalation bug in tmux, but it actually seems like a distro packaging error. The distro setgid the executable so the resulting shell inherited the additional group. This didn’t require any exploit, that’s just how child process inheritance works.)

justonenote•about 2 hours ago
as I mentioned in another sibling, its because it's a very common denominator in high value targets. I didn't know its legacy was from OpenBSD but I really doubt that that helps it much in this scenario, when I say LPE I'm not talking about user to root elevation, I'm talking parsed text/control sequences to arb code execution in the user context. These will slip past llm classifiers as safe and I'm fairly sure that they are extremely common in codebases like tmux, despite them having strong security posture its just a threat that was previously a bit outlandish and not accounted for.

persisted malicious code running in your tmux process that you don't know about is probably not where you want to be, for obvious reasons.

hnlmorg•about 3 hours ago
I don’t think tmux is the most worthwhile target because you’d need the user to either execute code locally (thus negating any point in targeting tmux) or rely on the user curl or cat some compromised document (in which case you’re better off targeting curl or cat).
justonenote•about 2 hours ago
the point is tmux is being used by many developers working in high value targets to automate long running unsupervised agent tasks. you don't need the user to execute code, you need _their agent_ to stumble on the wrong search result or github repo and it wont be noticed for hours that they loaded a persistent threat into your environment.
senordevnyc•about 3 hours ago
the fact that you can vibe code a harness to look for bugs in a famously complicated C codebase is intern level stuff and hardly news

It seems like this would have been pure fantasy not that long ago though. So why isn’t it noteworthy again? I don’t really follow what you’re complaining about.

cptroot•about 3 hours ago
This is not a real bug in FFmpeg. This is a demonstration that if you control a custom AVIO module it is possible to crash FFmpeg by giving it bad data.
inigyou•about 2 hours ago
Not custom. It's an existing module for a format called VPK. It's a quite trivial bug though, not exploitable apart from DOS and won't ever happen in a real file.
ks2048•about 5 hours ago
No doubt fuzzers (vibecoded or otherwise) can be powerful, but can't you just mark all "/" as potential divide by zero errors?

I guess sometimes developers think they "know" some variable won't be zero, but unless it checked explicitly or by the compiler, that shouldn't be trusted.

Someone•about 5 hours ago
> but can't you just mark all "/" as potential divide by zero errors?

If you’re accepting large false positives rates: yes.

If you want users to take your warnings serious: no.

(Nitpick: you certainly don’t want to flag _all_ of them. Divisions by non-zero constants definitely should be excluded, for example (integer division by -1 can lead to overflow, but that would be a different warning))

saghm•about 5 hours ago
Fuzzers find inputs, not just "potential" errors that aren't triggerable.
dooglius•about 5 hours ago
What are you suggesting and how would it be different than how SIGFPE already works?
wvbdmp•about 5 hours ago
I mean there could be a guard clause? But yeah, seems like this could be statically evaluated like how some IDEs see a null check and don’t complain about nullability within the same scope.
BikiniPrince•about 2 hours ago
Funny thing, I know I'm brushing up against something in gStreamer developer, but Fable flips out. I have only a loose idea where the issue might be lurking.

Next week, I'll apply for the cyber and I suspect I'll find something similar.

Right now, it's just annoying and thanks the OpenAI cyber was much easier to get access to.

1saadcodes•about 1 hour ago
I find it pretty cool that a fuzzer thrown together this way actually found a bug in ffmpeg
skupig•about 3 hours ago
Am I missing something? Who cares? This isn't a security issue, it's just an unexploitable crash on bad data.
inigyou•about 2 hours ago
No, you're not. It's a minor bug, probably with an easy fix, that deserves to be fixed. It's not worthy of front page HN...
souvlakee•about 4 hours ago
It is interesting that FFmpeg has its own Git server. Maybe we should move there too?
snailmailman•about 4 hours ago
Lots of projects run their own git or forgejo or similar. I run my own private forge, and it has a higher uptime than GitHub. (A shockingly low bar, tbh)

It’s surprisingly simple to setup, and the hardware requirements are pretty small for a private or small forge, as it’s usually a relatively small number of users/repos/etc.

TacticalCoder•about 4 hours ago
> It is interesting that FFmpeg has its own Git server. Maybe we should move there too?

Git is a DVCS. I know many people only ever used Git through Github and forgot what the 'D' in DVCS means but whether or not they remember what the 'D' stands for, running your own Git server is trivial. Especially in this day and age of LLMs were you can just ask: "Clone this repo and convert it to base Git repo and serve it on the LAN PLZ KTHX".

The result is going to be more stable than Github and, arguably, more secure too.

driverdan•33 minutes ago
The README for the fuzzer is an AI slop mess. https://github.com/daedalus/fuzzer/
robertlagrant•about 5 hours ago
What we need is a numeric type that cannot be zero.
roadbuster•about 4 hours ago
The only way to achieve this is to either put a runtime software check on a variable whenever it's assigned/used, or to literally add hardware support in processors themselves which literally throws an interrupt when a "neverShallBeZero" variable is assigned to zero.

There's no viable way to statically prove at compile-time that these variables will never become zero at runtime, ultimately forcing a system of endless runtime checks (be it software or hardware)... which is why processors already throw exception interrupts when division by zero is attempted.

inigyou•about 2 hours ago
It's possible, just extremely difficult.
colechristensen•about 3 hours ago
You're kind of saying the only way to do it is in software or hardware :)

An alternative https://en.wikipedia.org/wiki/Projectively_extended_real_lin...

The projectively extended real line defines division by zero, no reason you couldn't have a floating point type that implemented it.

>There's no viable way to statically prove at compile-time that these variables will never become zero at runtime

strongly typed programming languages like Ada allow for types which have ranges such as disallowing zero -- but also any arbitrary thing like you can create a floating point "degrees" type which is [0.0, 360.0] or any other ranged type

winwang•about 4 hours ago
Every day, we stray closer to Haskell. Dare I say it: good!
drdaeman•about 5 hours ago
What we need are refinement types, where there’s a base type and a predicate. F* has this:

     val (/) : int -> (divisor:int { divisor <> 0 }) -> int
duped•about 4 hours ago
For stuff like niche value optimization sure. For practical arithmetic code, nah. Like with this bug, all that changed is that garbage data in gives the user an error that they tried to process garbage data. Adding a new type doesn't make the code better, it just moves the error around. And you really don't want an infix division operator to fail to type check if the right hand side isn't a nonzero type, do you?
yeputons•about 4 hours ago
And also cannot be INT_MIN, otherwise -1 / INT_MIN is undefined behaviour(!) in C and C++.
rhdunn•about 4 hours ago
It would be more flexible for a compiler to reuse the range analysis logic used in optimizations for statically verifiable divide by zeros. That way you could extend it to other things like statically verifiable overflows.
Advertisement
tensegrist•about 3 hours ago
note that this seems to be a bug in what i expect (feel free to correct me) is a code path for a little-used codec

maybe we'll just see them remove support for these long-tail formats the way linux has been removing drivers for similar reasons https://www.phoronix.com/news/Linux-Retiring-Moxa-Driver

parl_match•about 3 hours ago
it's widely used but in "industry" applications. so ffmpeg is probably being used in a lot of offices (studios) and maybe even being included in end user software.
inigyou•about 2 hours ago
Understatement of the year. Almost everything that processes video uses ffmpeg.
jeffbee•about 4 hours ago
I imagine the discussion will center around this application of AI, but to me this is just the Nth proof of the proven fact that you must build ffmpeg, if you insist on using it, with only an allow-list of file formats that you expect to encounter, and not with the kitchen sink of stuff you are never going to need.
Surac•about 6 hours ago
send patches
rs_rs_rs_rs_rs•about 5 hours ago
...they did.
ligarota•about 5 hours ago
Where?

They only suggested a basic guard, chich can be useless if this case never happens

12j3afAv•about 6 hours ago
Generating an incorrect input file seems to be the easiest task of all for any fuzzer.

Generating correct input to get deep into the call stack and then finding something is the hard part.

whatsThisBtn4•about 4 hours ago
But guys... AI is bad. It might have done good stuff today, but we should be anti data. The Chinese propagandists on United States social media told me to.
cpriest•about 4 hours ago
Nice find. The interesting part isn't "AI wrote the fuzzer." It's that a cheap random harness still hits classical bugs in ancient parsers. Keep the corpus; throw away the hype.
VCFundedGenYer•about 6 hours ago
The fruits of using LLMs to code. You'll waste far more time finding what it quietly and subtly wrecked than you would have if you just coded it yourself.
jaggederest•about 6 hours ago
Those sneaky LLMs going 7 years into the past and committing as a human:

https://code.ffmpeg.org/FFmpeg/FFmpeg/commit/8eda3c7f91e1a5b...

wiseowise•about 5 hours ago
It’s obviously Claude 69 with time travel functionality, that’s too dangerous to release to public. They’re working on space-time limiting sandbox to prevent these issues.
six_seven•about 5 hours ago
Its all fun and games until the Claude-who-remains hunts you down
jaggederest•about 4 hours ago
Just remember kids, never immanentize the eschaton.
vegnus•about 6 hours ago
You're not reading it right. The bug was found using a vibecoded fuzzer.
12j3afAv•about 6 hours ago
I wonder from where Claude stole this fuzzer.
criddell•about 4 hours ago
The very first line of the bug report:

> This is a bug found with our fuzzer: https://github.com/daedalus/fuzzer/

pjankiewicz•about 5 hours ago
Or it used something called an "analogy" which is a valid way to solve new problems.