while (remapVec[remapStartIndex] >= index) { // Follow the 'cycle'
index = remapVec[remapStartIndex];
}
I'm not sure what that loop is supposed to be doing, but as its written it looks like it would either be skipped entirely or never terminate; after single iteration, the the two values would be equal and never change again. index = remapVec[index];
which would do a better job at following a cycle.If these parsers can’t run inside an isolated process, perhaps they shouldn’t be enabled at all?
"Apple is aware of a report that this issue may have been exploited in an extremely sophisticated attack against specific targeted individuals on iOS."
That's an RCE, but nowhere near as bad as other recent exploits (CVE-2023-41064 and CVE-2023-41061) that include device and account takeover from an iMessage that you don't have to read. Also these typically don't rate highest severity (7.5/High) probably due to the limited scope of the targets.
Users get even more frustrated when they want to play something and it does not work. Security is always a usability trade-off.
There is also an argument to be made that it is better for Apple to introduce a few bugs adding support for viewing/playing/etc random things than end users googling "how to play X" and downloading whatever app appears first in the results.
Remember the good 'ol days when everyone had Adobe Acrobat installed so they could open PDFs and it had a new 0day every month? Then one day Chrome added PDF.js and exploitation in the wild dropped off as people stopped downloading shitware to fill out rental applications.
I'm sure Pegasus will come up with another exploit to replace this one.
http://gambling.com ?url=https://blog.noahhw.dev/posts/cve-2025-31200/
Which is weird cause that redirect url is to exactly what's linked in the post. It only happens on this link.Going to the root of the blog causes the same issue:
blog.noahhw.dev
It's only on this one site, I can't replicate it with any others. There's a bunch of device management and "security" software and zscaler and whatever else on these machines so who knows.
duped•1d ago
This isn't being clever, it's actually incorrect to allocate a whole other vector. Realtime code requires O(1) memory complexity for correctness. Although the smart thing would be to preallocate a buffer for the pointers, but in general that may not be possible (I'm not an expert in CoreAudio but if the channels are interleaved and the next chunk of code expects to process in place you really do have to it this way).
It sounds like the CVE is super simple, reduced to:
- CoreAudio determines the number of channels before playback to create a resource, standard practice in audio processing
- It then trusts the number of channels of an incoming stream when using that resource
- A maliciously crafted audio file can bypass checks for this and trigger a buffer overflow
Never trust your inputs, folks.
The reason this comes up with HOA to me is not surprising: almost no one uses HOA, and a variety of other optimizations like assuming the "H" in HOA only refers to up to 128 channels (since afaik, no one even tries past that point).
> Imagine if the primitive is that you can write n 8 byte sequences out of bounds, but they must be valid 32 bit floats in the range x-y
I imagine the only thing you need to guarantee is you don't use subnormals, since audio code usually enables FTZ mode on both ARM and x86.
saagarjha•11h ago
You can just allocate the scratch buffer beforehand.
duped•4h ago