Flattered that someone did a writeup for the 2nd hole exploitation technique I used for my CVE-2023-2033 exploit (Korean). Shoutout to the author "Rotiple_"
Exploit for CVE-2022-4262. Fukin finally! Shoutout to
@_clem1
for finding the ITW exploit. And shoutout to
@5aelo
,
@bjrjk
,
@alisaesage
for their RCA's and prior analysis of the vuln :).
My recreation of the ITW exploit for CVE-2023-3079. Has a bit of a explanation of the vuln in the comments. Uses the same hole technique as CVE-2023-2033.
#V8
My DM with the North Korean threat actor "Paul". He had figured out CVE-2023-2033 (which was closed at the time) based on the report for similar issue 1433211. He was interested in a new technique for exploiting the hole.
Everyone please checkout Ben's new blog about CVE-2023-4863/CVE-2023-41064 which I collaborated with him on. It's a very difficult vuln to figure out how to trigger. Super interesting vuln.
"The WebP 0day" -- a full technical analysis the recently patched vulnerability in the WebP image library that was exploited in the wild (CVE-2023-4863).
Correction to my last post. The author of the hole exploitation writeup was
@h0meb0dysj
. You can find another version of the writeup on his personal blog (Korean). Good stuff!
Full chain analysis for CVE-2022-4262 to commemorate my time spent on this non-trivial type confusion! Shoutout to
@mistymntncop
for his crafted artful exploit and discussion with me! And shoutout to
@_clem1
,
@5aelo
,
@alisaesage
for their prior work :).
Shoutout to Bupbst for his brilliant discovery - an exploit technique for CVE-2024-4947. As a bonus it turns out this technique is also applicable to CVE-2024-4761 :-).
Blog CVE-2024-4947: v8 incorrect AccessInfo for module namespace object causes Maglev type confusion, we have a oob read/write inside of sandbox.
By
@mistymntncop
and me
Shoutout to "caoweiquan322", who managed to modify Mark Adler's "enough" tool to calculate a 538 sized table for the 40 symbol table for the webp vuln (CVE-2023-4863/CVE-2023-41064).
Some crappy POC code I wrote to demonstrate how it is possible to use NtWaitForDebugEvent + WaitForMultipleObjects together to wait for debug events from multiple debugees at once (and other waitable too). Hopefully helpful to someone.
Sometimes I regret not getting in browser exp sooner. Back then it was easier, the obstacles to exploitation were less. But then I appreciate the true creativity it takes to craft an exploit these days. There's a beauty to it.
I would like to give a shoutout to
@ret2eax
. This guy did a super in-depth writeup on CVE-2020-16040 but I think perhaps many didn't see it. Please give it a read and perhaps give him a follow!!
CVE-2020-16040
#GoogleChromeBug
analysis.
#Google
#Chrome
's V8 JIT compiler's SL VisitSpeculativeIntegerAdditiveOp was setting Signed32 as restriction type, even when relying on a Word32 truncation, skipping an overflow check.
🔗
#infosec
#exploitdev
I didn't realize
@mmolgtm
's POC 2022 presentation had been made public. Cool! "Controlled chaos: Predicting object addresses in Chrome (without breaking a sweat)"
Wow!! So great to finally learn the secrets of BLASTPASS. I'd been wondering about how they worked around the error path of the webp parsing. Hope to learn the rest of their secrets. Thanks
@i41nbeer
:) !
Here's something fun. Forget 0days! How about a 15 year old CSRF/XSS exploit for myspace lol (no longer works obvs). I didn't really know what I was doing back then. But it's fun to look back and see how far I've come since then.
If you are interested in learning how the PDB/DWARF debug file formats work I highly recommend reading the SymsLib library from UnrealEngine. Annoyingly u have 2 join the EpicGames organization on github to view it (free).
Made an attempt at renaming the variables from the leaked 2012 Kidicarus Firefox exploit. Vuln is a type confusion in E4X - which I suspect might be the same as EGOTISTICALGOAT.
#exploithistory
The oldskool mid 2000s "heap spray" browser exploits were kinda boring compared to the wealth of creativity we have today. With evolutionary pressure comes adaptability and creativity to overcome the obstacles.
Cheat Engine's pointer scan is pretty cool. DS is a trie keyed by a given ptr value - bottom layer contains list of addresses with that value. Each level of the trie is indexed by a nibble of the ptr value starting from msb.
Really curious how CVE-2023-2033 can be exploited. Error.captureStackTrace can place a "stack" getter and private property on the JSGlobalObject. But then what ?
Looked at security patch for CVE-2023-3079, the latest zero day exploit for Chrome/v8 (JavaScript), patched in v114.0.5735.106-110. My quick reverse engineering notes in thread (root cause analysis)
A charming self contained (dwarf symbol parsing, ptrace program control) mini linux debugger that doesn't just piggyback on gdb (lol). Great for educational purposes.
Fascinating.
CVE-2022-4262 - Variston
CVE-2023-2033 - Intellexa
CVE-2023-3079 - Intellexa
But who was behind CVE-2023-4762 (CVE-2023-3079 variant) I wonder?
The recent(ish) ITW exploits for CVE-2023-2033, CVE-2023-3079 - both hole leakers, really makes you wonder how "the hole" is now being exploited since the old technique was patched. It eludes me and others...
Mark Dowd's classic flash exploit. Tldr: an ostensibly "unexploitable" null ptr deref turns out to be a (constrained) relative write. Corruption is used to create a parser diff between bytecode verifier and interpreter.
If you are interested in practical software research for low level native programming then please consider supporting Allen Webster. More details here:
I've recommended this tool to a few ppl. Shoutout to Remedybg. It's is a small lightweight source debugger - an alternative to Visual Studio. I use it all the time. It's very affordable, only $30 USD.
"we obtained the malicious .watchface attachment that was sent by the attackers – that was the beginning of the exploit chain used to compromise the devices."
But how does this result in JS execution :S? And what CVE is it ?
Browser fingerprinting via comparing differing api behavior between browsers and parser differentials seem related. Namely, spotting differences between 2 differing implementations of the same specification. Just a loose thought...
tbh I kinda feel as if Turbolizer's graph layout of nodes is kinda visually unhelpful (especially for large graphs). I would be interested if anyone has any ideas for alternate graph layouts that would be helpful?
CVE-2023-4762 seems to be another hole leaker. A variant of CVE-2023-3079 infact. But the question is how do you actually add the right feedback to the function given the patch for CVE-2023-3079 ??
Based on the patch comment, this appears to be yet another TheHole value leak vulnerability which is trending now and will keep coming despite recent hardening around TheHole value leak:
Does anyone know of any oracle's that tell whether a Maglev compilation (v8) has completed or not ? I.e. different behaviour between compiled and interpreter ?
Theori researcher, Junghoon Lee (
@lokihardt
), reported ASLR bypass for Chrome and Safari that utilize conservative GC. The runtime is greatly improved compared to similar techniques, making it more feasible. Blog post coming soon!
Rust is not C. Programming styles are not necessarily interchangeable/fungible across languages ... Contorting yer style to the constraints imposed by a language can destroy the qualities that made that style appealing in the first place...
@BonusPlay3
It's in alpha at the moment. See the readme:
"In the future we'll expand to also support native Linux debugging and DWARF debug info."
They already have Linux process control and dwarf figured out.
Re: CVE-2024-4947 & CVE-2024-4761. The exploit technique
@buptsb
discovered is elegant and beautiful. But how did the original exploit author's exploit them I wonder =/ ?...
Re: CVE-2023-3079 - I'm a little confused as u can see in all the uses of StoreInArrayLiteral uses CreateEmptyArrayLiteral/CreateArrayLiteral as the array but u need to change the reciever to JSArgumentsObject ?
Oh, so u set the stack "configurable" attribute to false, JIT code makes assumptions based on this, then the attribute gets set back to true because we are doing this in the JS callback (prepareStackTrace). Clever!
Fact check: The packetstorm page for CVE-2023-2724 (1433211) was only created on 27/6/23 whereas the his message was on 8/6/23. So perhaps I was deceived...
Curious what objects NK used for exploitation of CVE-2022-0609 (iterator invalidation)? Seems like an awkward primitive (virtual method call) given the constraints (dedicated heap space).
@udunadan
I agree. When you are just starting out consuming lots of research can be very inspiring however as you become more experienced it quickly becomes overwhelming. More in-depth research is super specialized to the point it is only accessible to practitioners.