if you view this image, YOU GET HACKED.

Поделиться
HTML-код
  • Опубликовано: 19 дек 2024

Комментарии •

  • @LowLevelTV
    @LowLevelTV  7 месяцев назад +39

    wanna get good at programming? check out lowlevel.academy and use code THREADS20 for 20% off lifetime access. or dont. im not a cop

    • @cerealpeer
      @cerealpeer 7 месяцев назад

      when?

    • @docbrown1157
      @docbrown1157 7 месяцев назад +1

      This is an Ad!!! Why are people "Thumbs UPing" an AD???? Huh, I guess the channel owner is getting a kick back from them...

    • @Serpsss
      @Serpsss 7 месяцев назад

      ​​@@docbrown1157
      If you're not interested you don't have to click but an upvote on an ad for the Creator's livelihood is a small sign of appreciation of the time & effort that goes into educational videos like this that have been made freely available.
      At least it's relevant and not some annoying sh*te like nordvpn or some sweepstakes scam.

    • @musicneverd_es
      @musicneverd_es 7 месяцев назад

      I could offer a cheap tutorial on how to sync your audio and video already the during recording process :)

    • @GEMSofGOD_com
      @GEMSofGOD_com 2 месяца назад

      Was always sus of webp to the level of canceling it completely in my projects.

  • @KazyEXE
    @KazyEXE 7 месяцев назад +1838

    I miss the days of jailbreaking my iPhone by just going to a website, but in hindsight, maybe that wasn't a good idea.

    • @ryangrogan6839
      @ryangrogan6839 7 месяцев назад +168

      Exploiting webkit has been a pretty popular way to jailbreak things. You can even do it on the PS3. I used to have to use an E3 flasher back in the day. I totally prefer webkit exploits any day over popping open something and attaching random shit to the onboard chips

    • @syrus3k
      @syrus3k 7 месяцев назад +62

      There's been loads of very scary bugs in software that nobody ever seems to have cared about the potential risks. For example, you have no idea whether you've been hacked or not. Really.

    • @Relkond
      @Relkond 7 месяцев назад +32

      It was an ok idea. Buuut it revealed that the phones security was garbage.

    • @theairacobra
      @theairacobra 7 месяцев назад

      @@ryangrogan6839 Yeah, i modded my PS3 with HEN all thanks to the browser

    • @potential900
      @potential900 7 месяцев назад +47

      @@syrus3k Ah yes, if only there was a popup on the screen every time the PC got hacked, lol

  • @MrWoodward42
    @MrWoodward42 7 месяцев назад +599

    Seem to recall a similar bug in Internet Explorer (IE 5.0.x) from nearly 20 years ago that allowed a carefully crafted JPEG file to exploit a Windows system.

    • @jsrodman
      @jsrodman 7 месяцев назад +57

      Yeah, similar problems have existed in libjpeg and libpng, both exploitable in practice.
      Shows the value of both memory safe programming environments and simple data formats.

    • @Aplysia
      @Aplysia 7 месяцев назад +14

      I seem to recall a similar bug in IE 5 once or twice a week, back in the day. 😂

    • @uranoxyd
      @uranoxyd 7 месяцев назад +5

      Jeah, i think the bug was in the GDI or GDI+ library, but maybe this was another bug.

    • @sanicswaghog5278
      @sanicswaghog5278 7 месяцев назад +6

      There was a similar exploit in IE and Firefox involving animated mouse cursors.

    • @Juksemakeren
      @Juksemakeren 7 месяцев назад +7

      the first iphone jailbreak was through a image parsing exploit

  • @mrsvcd
    @mrsvcd 7 месяцев назад +692

    The TIFF image format was used to hack the PSP early on.

    • @ST-actual
      @ST-actual 7 месяцев назад +38

      Came here to say this!! Haha. The tiff overflow!

    • @mgancarzjr
      @mgancarzjr 7 месяцев назад +35

      I still remember even somebody got a PSP back from being serviced with a magic battery in it that was immediately sent to the cracking scene.

    • @danielditlev
      @danielditlev 7 месяцев назад +3

      It definitely was 😊

    • @memes_gbc674
      @memes_gbc674 7 месяцев назад +1

      @@mgancarzjr yeah that was crazy

    • @ColdRacoons
      @ColdRacoons 7 месяцев назад +2

      Also the iPhone/iPod Touch. 1.0 - 1.1.1. Was patched in 1.1.2.

  • @KFLawless1412
    @KFLawless1412 7 месяцев назад +125

    Exploits that target software used for handling media are so interesting to me because they're such an unintuitive way to hack something. The Car Hacking Village had a case study where a similar vulnerability was exploited against a tesla

    • @eanredur9920
      @eanredur9920 7 месяцев назад +3

      In this case, it was a bug. But especially with Machine Learning, there can be 100% correct code, but the AI is still vulnerable to image/video/data stream manipulation. Fascinating stuff!
      I don't know about the case with tesla, but it is (or was) possible to confuse many AIs used for street sign recognition in a way that made them completely useless (Stop signs to 50 signs and similar things).
      Luckily, as far as I know, it is near impossible outside of laboratory circumstances, as it relies on the specific learned topology of the target AI. It is very weakly transferrable and near impossible to generate without access to the AI.
      Do you maybe remember the paper? It sounds very interesting, but I could not pin it down with a quick google search. "Hacking Tesla with image" seems too generic.

    • @omegahaxors9-11
      @omegahaxors9-11 6 месяцев назад +1

      The problem with hacking a tesla is that you can never tell if it was you causing it to fail, or if it just failed on its own.

    • @omegahaxors9-11
      @omegahaxors9-11 6 месяцев назад

      @@eanredur9920 Machine Learning turned out to be the biggest crock of shit once it started being rolled out, it can't even hold a conversation without its mind wandering into fucking Narnia, and you expect it to write perfect code??

  • @TheEVEInspiration
    @TheEVEInspiration 7 месяцев назад +280

    So....where is the payload then?
    A double free by itself will not hand over control to desired code, I like to see this explained.

    • @Omena0
      @Omena0 7 месяцев назад +13

      Fr

    • @MSheepdog
      @MSheepdog 7 месяцев назад +19

      I would assume either in the image data, or the table itself, but I also would have liked the video to cover it.

    • @jnharton
      @jnharton 7 месяцев назад +3

      That's an interesting question, yes.
      You have to somehow get the compiled form of the code you want to run into a region of memory that will be executed from.

    • @craigslist6988
      @craigslist6988 7 месяцев назад +7

      He made a previous video explaining exactly how the webp exploit works.

    • @bernard3992
      @bernard3992 7 месяцев назад +3

      He explained the hardest part.

  • @samiraperi467
    @samiraperi467 7 месяцев назад +109

    3:34 He's trying say "matryoshka dolls".

    • @illiadenysenko7776
      @illiadenysenko7776 7 месяцев назад +18

      maryastroyka dolls :D

    • @fcantil
      @fcantil 7 месяцев назад +8

      Mary Striker Dolls! 🤘

    • @Mackerdaymia
      @Mackerdaymia 7 месяцев назад +20

      ngl, Perestroika Dolls hit me hard. The idea of the dolls redesigning themselves so they no longer stack.

  • @peel90
    @peel90 7 месяцев назад +59

    thanks for making this awesome content LLL. I used to think cybersecurity and low level programming were really dry but the way you narrate how these major events unfolded makes it so engaging.

    • @LowLevelTV
      @LowLevelTV  7 месяцев назад +17

      its all so magical

    • @BirdsPawsandClaws
      @BirdsPawsandClaws 7 месяцев назад +3

      I was thinking the same thing. I like the narration as well! Now I have to research more.

  • @darkpixel2k
    @darkpixel2k 7 месяцев назад +151

    Decades ago I was told "we use Windows at this company because it's secure and stable. You cannot run Linux". So I sent out an email to the entire company with an urgent sounding headline. It contained an HTML IMG tag with the source set to C:\CON\CON
    There was absolute chaos as nobody could open Outlook after their computers blue-screened and restarted... Because it was the last message in their inbox, and it would display it before it got around to polling the exchange server for new messages. It would even crash if you went in through the web interface.

    • @em7dim9
      @em7dim9 7 месяцев назад +38

      Ironically this particular exploit also affects Linux. It couldn't run as root of course but it could sure erase your home folder!

    • @squoosh8285
      @squoosh8285 7 месяцев назад +1

      🗣️😭☠️🙏🛐‼️ deserved

    • @ggsap
      @ggsap 7 месяцев назад +3

      @@em7dim9 ???

    • @em7dim9
      @em7dim9 7 месяцев назад +16

      @@ggsap Running Linux wouldn't have protected you from the exploit in the video. The comment was about Linux offering more protection.

    • @ggsap
      @ggsap 7 месяцев назад +12

      @@em7dim9 You made "this particular exploit" sound like the exploit OP was referring to

  • @MeriaDuck
    @MeriaDuck 7 месяцев назад +50

    I'm so old that I think I remember something like this has also happened to JPEG images; maybe in the exif data. May be all the way back to the very early days of the interwebs. Edit: discovered in 2004 apparently.

  • @OsamaDh-h5k
    @OsamaDh-h5k 7 месяцев назад +22

    0:35 Bro's parents named this guy LowLevelLearning

  • @JessicaFEREM
    @JessicaFEREM 7 месяцев назад +82

    Reminds me of the discord videos that crash discord. also turns out WebM has an infinitely adjustable dynamic resolution that can change on the fly, the speed bottleneck is the player. you can change the resolution of a WebM videos 60 times a second even.
    discord didn't put a box limit so users were making videos that would seemingly disappear (turn into 1x1) the second you clicked on it, also videos that look like a game character dancing and it's bouncing the discord chat up and down with it.
    personally I think they should keep it but they removed it.

    • @jsrodman
      @jsrodman 7 месяцев назад +8

      Meanwhile i would prefer a compile of discord that cannot render user content.

    • @jmvr
      @jmvr 7 месяцев назад +9

      I downloaded two videos using that. It was the Rick Roll that slowly shrunk, and a cat meowing where the video would change size when the cat meowed. It's pretty cool, and is even viewable in certain desktop media players.

    • @Fasteroid
      @Fasteroid 7 месяцев назад +6

      Remember that clip of the annoying orange coming through the TV that crashed your discord? I think it also used this tech.

    • @Mr_Yeah
      @Mr_Yeah 7 месяцев назад +7

      AFAIK, that behavior was not removed in Discord directly, but through a patch in Chromium

    • @henryfleischer404
      @henryfleischer404 7 месяцев назад +1

      @@jsrodman What's the point of that? Wouldn't that just be the UI?

  • @voidkid420
    @voidkid420 7 месяцев назад +109

    Quite a lot of evil has happened with a 1x1 image, over the years.

    • @2Fast4Mellow
      @2Fast4Mellow 7 месяцев назад +8

      True, but you don't know it is a 1x1 pixel image unless you parse the image. Size is also misleading, because many image formats have many meta-data fields that allow me balloon the image to a point you no longer consider it suspicious. Browsers might be updates by now, but there is a lot of software that are embedding webbrowser components that might not be updated, like mail and chat applications. Linux users get most of their applications from the distro repository which will automatically update the applications. Under Windows this is much more messy and we all know that people don't like to upgrade their software because it is often asked when you want to use the application. VLC for example tells me when I'm want to watch a video that there is a newer version and I only have a yes or no option, why not a install on exit of application?

    • @voidkid420
      @voidkid420 7 месяцев назад

      @@2Fast4Mellow Aye, the webview world is due a massive wake up ... I mentioned the webP thing a while ago, barely got a response ... till I started listing all the things that use it.

    • @JxH
      @JxH 7 месяцев назад

      A company that I know... ...sends out emails that contain 1x1 tracking pixels. The reason I know this is that the same company has MS-Outlook policies that prevent the automatic downloading of images, instead marking the email's missing images with little squares on each corner. At the bottom of each email is a 1x1 pixel collection of four squares, that contains a link to an online (served) image that contains a lengthy and obviously unique identifier in the filename. In summary: 1) Company uses tracking pixels on all Corporate Communication emails, and 2) Company's MS-Outlook reveals this to anyone that knows about the general topic of 1x1 pixel images. SMH...

    • @rnts08
      @rnts08 7 месяцев назад

      You can still do a ton of damage with a 1x1, depending on if you host it or not.

    • @omegahaxors9-11
      @omegahaxors9-11 6 месяцев назад +1

      If you think that's bad you should see how Pokemon handles 0x0 images.

  • @Adreadon
    @Adreadon 7 месяцев назад +78

    It’s kinda neat that after taking a data structures and algorithms class I now understand so much more in a lot of these types of videos.

    • @gangstaberry2496
      @gangstaberry2496 7 месяцев назад

      I've been feeling the same!! Enjoy, happy learning ♥️

    • @eanredur9920
      @eanredur9920 7 месяцев назад +1

      Did you do Huffman Trees or is it more about understanding trees, compression, and recursion?
      Just asking because I found our Algorithms and Data Structures lecture useless. We did basic stuff, but nothing one could not have learned to a reasonable degree by reading 2-3 hours a day for a week.

    • @Adreadon
      @Adreadon 7 месяцев назад +1

      @@eanredur9920 we learned both. Had to do Huffman encoding for an exam question actually.

    • @eanredur9920
      @eanredur9920 7 месяцев назад

      @@Adreadon Cools stuff. I wish we did go a bit deeper.

    • @iyeetsecurity922
      @iyeetsecurity922 6 месяцев назад

      Picture go boom. Computer be sad now.

  • @tanopasqua1246
    @tanopasqua1246 6 месяцев назад +1

    Thanks!

  • @CH32mix
    @CH32mix 7 месяцев назад +29

    Nice, just in case WebP doesn’t get more hate

  • @cesaraugustomarcelinodossa5138
    @cesaraugustomarcelinodossa5138 7 месяцев назад +4

    How is it possible that you can do so nice videos, in a very simple arrangement and good explanations, causing time to fly so fast!!! Never looks like it's an almost 10min video 😊
    Thanks for the good quality material you have been donating to the internet

  • @LeeLikesFrenchFries
    @LeeLikesFrenchFries 7 месяцев назад +2

    at my work, we called these types of attacks compression bombs. that kind of terminology helped put my mind in the right frame of reference when i evaluate useful compression code.

  • @jpsousa4
    @jpsousa4 7 месяцев назад +5

    At "maristroika dolls" I lost it. I think you made a portmanteau of matryoshka (the doll), and perestroika (the 1980s transparency policy used by gorbechev in the USSR)

  • @blacklistnr1
    @blacklistnr1 7 месяцев назад +8

    The sad part is that it doesn't even surprise me, CVE after CVE I see that complexity + interaction => exploit.
    Given the complexity stack of anything today, the only way to avoid exploits is to avoid interactions with untrusted data. i.e. no internet, no file sharing.
    Next best thing is to separate everything, but that is really hard without carrying 3 phones in your pocket.
    I'm going with option 3 which is eat popcorn while reading the news.

    • @erikkonstas
      @erikkonstas 7 месяцев назад

      Guess what, you're not safe even without Internet... and I don't mean your computer, I mean your physical body... the chance a sniper kills you is never zero.

  • @m4rt_
    @m4rt_ 7 месяцев назад +133

    Technically not the picture will render the picture, the picture will be used to render a picture.

    • @jnharton
      @jnharton 7 месяцев назад +4

      The "picture" is a file which contains binary data representing the red, green, and blue (RGB) components of the color to be used for each distinct subunit of a digital image.
      With a large enough set of colored pencils (or an image composed from a limited color palette) and some graph paper you could open up the "picture" in a hex editor and render it on your graph paper in colored pencil.

    • @paulstelian97
      @paulstelian97 7 месяцев назад +3

      @@jnharton That's only true of uncompressed formats.

    • @jnharton
      @jnharton 7 месяцев назад

      @@paulstelian97 The first and modt important part is technically still true, because unless the compression is lossy decompression restores the original.
      A different encoding of data doesn't mean you don't have the data.

    • @paulstelian97
      @paulstelian97 7 месяцев назад

      @@jnharton PNG is the only often encountered lossless encoding soooooooo… there’s others like jpg or webp

    • @lyrimetacurl0
      @lyrimetacurl0 5 месяцев назад

      "I used the picture to render the picture"

  • @janm4442
    @janm4442 6 месяцев назад

    Great explanation and nice video (no annoying music, no effects and no loud voice). Thanks for it.

  • @owlstock679
    @owlstock679 7 месяцев назад +75

    New LLL vid == good day => true

    • @swiss_eng
      @swiss_eng 7 месяцев назад +8

      #ifdef newlllvid
      bool goodday = true;
      #endif

    • @electrolyteorb
      @electrolyteorb 7 месяцев назад +12

      ​@@swiss_engplease don't use macro for runtime checks...

    • @owlstock679
      @owlstock679 7 месяцев назад +3

      @@swiss_eng
      I'll do you one better.
      #ifndef newLLLvid
      *(char*)0 = 0;
      #endif // newLLLvid

    • @Kane0123
      @Kane0123 7 месяцев назад

      This is some real strange dotnet syntax guys…

    • @Hellbending
      @Hellbending 7 месяцев назад +1

      fn lllvid(new: Vid) {
      match new.is_ok() {
      true => true,
      false => Err(Error::Nonsensical)
      }
      }

  • @TesserId
    @TesserId 7 месяцев назад +1

    The storing of the Huffman table in the file does not occur in all Huffman use cases. I had to think about it for a moment, but unlike text compression, you can't assume a default starting point for images, so taking up space to store the table makes sense.

  • @Ilix42
    @Ilix42 7 месяцев назад +17

    I think the researcher name was “Misty Mountain Cop”.
    Thanks for the informative video.

    • @Collif
      @Collif 7 месяцев назад +1

      Yep, definitely a play on Misty Mountain Hop by Led Zeppelin

  • @sittingstill3578
    @sittingstill3578 7 месяцев назад +1

    This bug sounds well worth a deep dive into. I wonder if it is something that also bypasses other typical security protocols by rendering the image as unrenderable. It reminds me of something that could be easily exploited in captive WiFi login portals where the user has no ability to block the execution image files being loaded and rendered. A bad actor could setup a spoofed WiFi related to their target’s activity and just embed the exploited file when they login out of habit.

  • @trag1czny
    @trag1czny 7 месяцев назад +3

    "marystroika dolls" killed me 💀

  • @rootdevelopment
    @rootdevelopment 7 месяцев назад +15

    Nice video! 🎉

  • @javabeanz8549
    @javabeanz8549 7 месяцев назад +3

    When I started to play the video, I was wondering if it was on the UEFI spash image hack. Alas, it was not, but another interesting bug. I remember writing code and then setting up automated testing back on a Pr1me Mini back in the 1980's. Most of the programs were reasonable simple, and testing for invalid input didn't take long, until we got to the final project for the semester. And of course, final project time meant every class was in the lab trying to get their final project done. So, automating my testing was a big speed boost for my team. Rather than twenty minutes of entering something and waiting for our time slice to come around again, the mini took my scripts and gave us back a results file we could browse in about a minute.

  • @potential900
    @potential900 7 месяцев назад +2

    I don't understand what can be done with an RCE bug, how it helps an attacker. What does it do to the attack surface? There must be a lot between "do overflow" and "hijack computer". Another vuln called Cable Haunt was also an RCE vuln but in Docsis modems.
    Anyone willing to help shed some light?
    Thanks.

    • @potential900
      @potential900 7 месяцев назад +1

      Asking because I've seen rce vulns mentioned several times over the years but as a dev not working that low-level, my understanding is lacking.

    • @sapo-san8054
      @sapo-san8054 7 месяцев назад

      @@potential900 remote code execution is dangerous because it allows an external agent to run software on your computer. any software.
      from a simple "hello world" program to something that could leak all of your private files to third parties and steal all of your passwords and basically anything stored in your machine.
      An attacker exploiting an RCE bug means it's literally using the bug to run unwanted software on your machine.

    • @stitchfinger7678
      @stitchfinger7678 7 месяцев назад +1

      As no kind of expert, my understanding at the most basic level is, feeding a program/system/etc the right kind of garbage can make it enter unexpected states (ungraceful crashes, half-executed functions, etc). These unexpected states may leave the system in a place where it is not safeguarded in ways it would normally always be.
      For example, your car's battery died before you got a chance to lock the doors. Sure you can flip the manual locks if your car even has them, but then your alarm still doesn't work, so if someone DOES get in there's nothing left the car can do.
      So the subject of the video is more the vector of harm than the tool of harm; its the way in. Once you have access to the right things, you can make the infected system do whatever you want.

    • @williamdrum9899
      @williamdrum9899 7 месяцев назад +1

      Often it involves overwriting a function's intended return address with the location of a hacker's payload code

  • @S3Kglitches
    @S3Kglitches 7 месяцев назад +6

    Too bad you didn't explain Huffman encoding in a simpler way. It can be described as giving the least amount of bits to most occurring repeating sequences of characters/data which gives the maximum possible compression while preserving some special properties in the bit sequences which allow constructing the tree.

  • @Mehdital89
    @Mehdital89 7 месяцев назад +3

    Tbh you keep hearing about those buffer overflows and how dangerous they are but tbh other than crashing your browser, I haven't heard of any concrete exploit in recent times that managed to do a big intrusion thanks to such a bug

    • @teknixstuff
      @teknixstuff 5 месяцев назад

      Almost anything that can crash the browser, could be used to run arbitrary code before crashing the browser.

  • @ArturStefanczyk-bf5qh
    @ArturStefanczyk-bf5qh 7 месяцев назад +3

    "I wont talk about this very complex algortihm." Procced to talk about this very complex algorithm

  • @MuradBeybalaev
    @MuradBeybalaev 7 месяцев назад +3

    0:50 "A picture is a format that renders." Very logic indeed. Much useful not misleading definition.
    3:32 "Merestroyka dolls." Nailed it. Just one letter away… from an irrelevant word.

  • @Amipotsophspond
    @Amipotsophspond 7 месяцев назад +1

    the people that make and catch these things are geniuses.

  • @MP3-b5w
    @MP3-b5w 7 месяцев назад +2

    Interesting timing for the hair overflow condition to occur at 6:30

  • @thatoneguy229OG
    @thatoneguy229OG 7 месяцев назад

    The Darknet Diaries podcast actually talked to one of the folks at Citizen Labs in a episode that is centered around NSO. Highly recommend it, as they go into more of the high-level overview of what NSO (and their clients) were doing.

  • @CastToVoid
    @CastToVoid 7 месяцев назад +1

    Loved the explanation of this, short, sweet. Really interesting

  • @mauriciolee7349
    @mauriciolee7349 5 месяцев назад

    Thank Low Level Learning for such an EYE-OPENING video.

  • @LaMirah
    @LaMirah 7 месяцев назад +2

    I remember a remote code execution available in the WMP and EMP image formats that affected Windows from version 3.0 to server 2003; that's twenty years' worth of Windows versions...

    • @aylen7062
      @aylen7062 7 месяцев назад

      *ten years

    • @LaMirah
      @LaMirah 7 месяцев назад

      @@aylen7062 True.

    • @AnneJan
      @AnneJan 5 месяцев назад

      yes !! I created an EPS that exploited it to run regedit to disable the EPS rendering and show an alert stating "you are now safe" ..
      years later this got my website blocked by McAffee corporate firewalls for hosting malicious files 🙂
      It was the easiest way for us to patch a lot of workstations :-)

  • @mp_rho
    @mp_rho 7 месяцев назад

    literally just learned about huffman coding in my algorithms class when we went over greedy algorithms a week or so ago. pair that with the operating systems class im taking and im understanding a lot more in these videos.

    • @vylbird8014
      @vylbird8014 7 месяцев назад

      In your next lesson you learn that Huffman coding has been largely replaced by arithmetic coding, which is more complicated but can achieve better compression.

  • @lerneninverschiedenenforme7513
    @lerneninverschiedenenforme7513 6 месяцев назад +1

    Reminds me of the the time when I wrote to Thunderbird developers "showing image files in mails might be a security issue" and a developer responded: "There's no security issue here. Image libraries are so mature now, that they do not contain any severe bugs anymore".

    • @KopperNeoman
      @KopperNeoman 6 месяцев назад

      Never assume that because something's modern, it's secure.

  • @tiagotiagot
    @tiagotiagot 7 месяцев назад

    Fuzzing shouldn't be applied just to the final program; individual functions should be tested in order to catch things like this more easily. You shouldn't need ti find the external input that would trigger the bug if you tested directly the last step that fails when receiving too big of an input.

  • @skilletpan5674
    @skilletpan5674 7 месяцев назад +1

    This reminds me of the old PKZip bug from the 90s that caused PKZip to keep decompressing the same data over and over again. A ZIPBomb. It'd cause pkzip to "bomb" the harddrive and fill it up.
    Mind you the first version of that (that I remember) used pointers to make the pkzip file loop. It wasn't out of bounds as it stayed within bounds.

    • @stitchfinger7678
      @stitchfinger7678 7 месяцев назад +1

      People still make zipbombs today, if mostly for tinkering and not as much harm
      There's one that has a theoretical decompression size of like more than Google's entire infrastructure lol

  • @abstractrussian5562
    @abstractrussian5562 7 месяцев назад +11

    This is insane, and what is more insane that to this day there's no containerization of user apps by default on desktop OS's. Think of docker and careful management of permissions between apps and system stuff like FS. Or like on mobile OS's. This would prevent many security issues. MacOS doesn't even support MacOS inside docker.

    • @mvwouden
      @mvwouden 7 месяцев назад +4

      Flatpak sort of does this on Linux

    • @jnharton
      @jnharton 7 месяцев назад +2

      You don't need containerization to achieve a reasonable degree of security.
      Buffer overflows can only compromise memory that the executing program with the "bug" actually has access to write. If that isn't the case, your program would a segmentation fault and crash.
      So if you just don't give a program more permissions than it needs to do it's job that reduces the risk considerably.
      This is precisely why you almost never login as root (super user) on a Unix/Linux system and you don't run background processes as root unless absolutely necessary.

    • @capability-snob
      @capability-snob 7 месяцев назад

      MacOS is a bit of a fun case. It does support isolation, but it's not obvious to the user which apps are running with the capability sandbox and which aren't. Add to that, they added some vulnerabilities to the sandbox configuration of some apps (notably, ms office) that can be exploited to achieve complete and persistent system takeover.
      There are operating systems that can provably isolate applications and safely delegate permissions to them; these are known as object-capability systems. SculptOS and Fuchsia are some attempts to explore this area, although there are a lot of mainframe operating systems that already meet this standard.

  • @Rexvideowow
    @Rexvideowow 12 дней назад

    Fun fact: LLL also stands for the algorithm you need to wrap you head around for a proper implementation of lattice based encryption like NTRUEncrypt.

  • @sylvainforget2174
    @sylvainforget2174 Месяц назад

    Right off the bat, I will say that I don't understand your videos because I only have a first year college computer education as I quit learning there after heart surgery. The thing that I had never considered is that when I download a useful program off the internet I have no idea if it is dangerous because the code has vulnerabilities or is malicious. When I need to do a task (image manipulation for example), I rely on the Google to show me what is available.

  • @pyropoops139
    @pyropoops139 7 месяцев назад +4

    NSA just lost another one of their favourite toys

  • @tofu_golem
    @tofu_golem 7 месяцев назад +1

    Shouldn't operating systems have elements to prevent buffer overflow in general?

    • @FalcoGer
      @FalcoGer 7 месяцев назад +1

      the operating system is responsible for allocating the memory and giving it to the program. what the program does with the memory is up to it. the operating system only intervenes when the program tries to access memory that doesn't belong to it or that the program itself asked the operating system to be protected.

  • @devindehar8911
    @devindehar8911 7 месяцев назад +1

    amazing
    exploit, subject, and video
    nice dude

  • @__hannibaalbarca__
    @__hannibaalbarca__ 7 месяцев назад

    I was very interested in Virus program when i was 20 (1996 - 1999), and i have used to use this technic to store some executable or calling executable by using html and two image bmp.

  • @em7dim9
    @em7dim9 7 месяцев назад +1

    Interestingly this exploit supposedly affects Linux. Of course it couldn't elevate, but an exploit like this could sure erase your home directory. I guess everyone saying that Linux is malware-proof aren't really thinking of their browser.

  • @cmoon178D8H-K9
    @cmoon178D8H-K9 7 месяцев назад +26

    that's just another reason why you never trust a webp user...

    • @csharpcoffee
      @csharpcoffee 7 месяцев назад +19

      JPG has had worse exploits years ago.
      Webp is a good format, it's biggest flaw is being too young for widespread support yet. Give it 10 years and people might look at JPG like they look at AVI and FLV

    • @vylbird8014
      @vylbird8014 7 месяцев назад

      @@csharpcoffee Not any more. Every web browser supports it now, except the legacy IE that is only left in Windows for compatibility reasons. Given that there are only two rendering engines and they both support WebP, you can safely use WebP on websites. Same for AVIF.
      Application support other than browsers is a bit inconsistent, and strangely so at times. Telegram, for example, won't recognise WebP as an image file - even though it uses WebP internally as the format for sticker images.

    • @ChrisD__
      @ChrisD__ 7 месяцев назад

      *Laughs in AVIF*

    • @kuroilight1676
      @kuroilight1676 6 месяцев назад

      It’s already been around a long time, nobody wants it or it would already be widespread, nothing wrong with png/gif and the other dozen other media formats that work just fine

    • @vylbird8014
      @vylbird8014 6 месяцев назад

      @@kuroilight1676 They work just fine, but it's a matter of resource use. PNG's compression is more capable than GIF, and WebP's lossless mode is in turn more capable then PNG. Substantially so - convert a PNG to WebP and it can be reduced to half the size. That means lower hosting cost and faster loading, especially important for people on lower-bandwidth mobile connections. There's no downside any more, now that all web browsers support PNG and AVIF, so there's no longer a reason not to adopt the new formats.

  • @mjmeans7983
    @mjmeans7983 7 месяцев назад +1

    So, maybe find an initial table that unpacks to include one or more copies of the original table within it so that it results in a fractal unpack that can always be further unpacked into ever larger and larger tables.

  • @rursus8354
    @rursus8354 7 месяцев назад

    Such a bug could easily have been stopped from occurring if the library had a simple bounds check. I can see why some people like the idea of Rust automatically enforcing such a bounds check, languages like Ada provided that in a long-long time ago, but people aren't coding rationally. Personally I think bounds checks should be a hardware part of the CPU.

    • @williamdrum9899
      @williamdrum9899 7 месяцев назад

      I agree but that would be one slow CPU.

  • @nicwilson89
    @nicwilson89 5 месяцев назад

    Ask some of my friends...I used to use images to non-maliciously prank them years ago and they quickly learned haha. Then they learned it certainly wasn't just images that might contain some sort of payload...y'know, gotta pass time somehow. This is a rather interesting method, even fascinating.

  • @ManInTheAttic57
    @ManInTheAttic57 7 месяцев назад

    Great video - excellent explanation! Thank you!

  • @xXBlueSheepXx
    @xXBlueSheepXx 7 месяцев назад +57

    Thanks for validating my hatred for WEBP format.

    • @LightTheMars
      @LightTheMars 7 месяцев назад +11

      It's a good format. Very efficient encoding (small file size) and high image quality. A programming error in one implementation has nothing to do with that.

    • @pierrotA
      @pierrotA 7 месяцев назад +12

      ​@@LightTheMars​ I think the main reason people hate it is because it's annoying to work with.
      By default it will open in a browser, generaly speaking you cannot copy/paste it from a webpage, and a lot of softwares do not even know the format.
      It's efficient and the gain is obvious for big web companies that want to reduce servers cost, but for the simple mortals like us it's just an additionnal step to download/upload/modify an image.

    • @thesenamesaretaken
      @thesenamesaretaken 7 месяцев назад +3

      ​@@pierrotA it's annoying because big tech makes some software that doesn't support their own file format conspiracy? At least back in the day it felt like they didn't support .ogg files out of malice

    • @KordaMachala
      @KordaMachala 7 месяцев назад +1

      It's a PNG with a size of JPEG. I think it's annoying to work with, but useful.

    • @konayasai
      @konayasai 7 месяцев назад +1

      ​@@pierrotAIt's not .webp's fault if the user has failed to install software that can handle a file format that's been around since before I suspect that kind of user must have been born.

  • @darnelwashinton1295
    @darnelwashinton1295 7 месяцев назад

    It's hard to find these issues but not hard to make them. The feds invest teams to find possibilities like this that are hard to detect, then pays them to put their bugs into open source libraries. Easiest way to get backdoors anywhere you want.

  • @azertyQ
    @azertyQ 7 месяцев назад +20

    lmao, huffman encoding is one of the easiest compression algos, an undergrad came up with it

    • @johnc3403
      @johnc3403 7 месяцев назад +13

      ..and that makes you "laugh my ass off"? OK then. And what have you come up with?

    • @oncetwice6366
      @oncetwice6366 7 месяцев назад +18

      ​@@johnc3403it's funny because he constantly refers to it as this incredibly complex algorithm. I don't think he's trying to diminish the achievement in any way.

    • @dagomara8380
      @dagomara8380 7 месяцев назад +12

      @@johnc3403 In azertyq's defense, I did also chuckle when he called Huffman Encoding super complex, because it's taught in undergraduate CS programs. After laughing, though, I did realize that most of LLL's audience likely lacks a degree in the field.

    • @81milliontotallylegitimate10
      @81milliontotallylegitimate10 7 месяцев назад

      @@dagomara8380 just like anything else, its complicated unless you understand it

    • @vylbird8014
      @vylbird8014 7 месяцев назад +1

      Huffman? WebP uses Huffman? Ugh... I thought we'd move on from that. Huffman was fine in its day, but we can do better now.

  • @Kevin-jb2pv
    @Kevin-jb2pv 6 месяцев назад

    Reminds me of when there was that picture going around that if you set it as your phone's background (on Samsungs only, I think) it would brick your phone because it would get stuck in an endless crash - reboot loop.

  • @AlpineTheHusky
    @AlpineTheHusky 7 месяцев назад +4

    Iphones dont get viruses.
    Iphones cant get hacked.
    Iphones are secure.
    Iphones are safe.
    This is sarcasm.

  • @DonVintaggio
    @DonVintaggio 7 месяцев назад

    2:07 thus picture quality loss, like jpeg format (as opposed to GIF lossless compression)

  • @foufou33g
    @foufou33g 7 месяцев назад

    I don't know about mobile platforms, but, IIRC firefox didn't need to be updated as it's linked against whatever libwebp exists in the system.
    The webapps (the slacks and discords of this world) that emebed libweb is an other story.
    one of the perks of dynamic linking I guess?
    edit:
    Oh well, may be a gentoo only thing?firefox has a system-webp useflag, so * in my case *, I didn;t need to update firefox.

    • @erikkonstas
      @erikkonstas 7 месяцев назад

      Except that most of us use Windows and guess what Windows doesn't have 😂

    • @foufou33g
      @foufou33g 7 месяцев назад

      @@erikkonstas ah man, I totally fofgot about that 🤣

  • @StayCHilL24
    @StayCHilL24 7 месяцев назад +6

    If I understand correctly Huffman encoding wasn't causing the overflow but an implementation that converted the tree data structure into a table to get some speed benefits. An interesting reminder that speed comes at a risk. Did this error checking add any extra time cost to the algo?

    • @erikkonstas
      @erikkonstas 7 месяцев назад

      Imagine that you want to load a huge image... most likely you can already see how it loads slowly, row by row or column by column. Now imagine they had bounds checking in there as well, and there's a recipe to make you switch back to dial-up...

    • @TheRadiastral
      @TheRadiastral 7 месяцев назад

      Checking the size of a variable and continuing or not, is literally a few CPU clock cycles, so the speed penalty for this would be expressed in nanoseconds. You could confidently say there would be no extra time added by this check, although if you had to check and re-check multiple times, this could become microseconds, but still an absolutely tiny amount of time. I think the developers simply thought it's not necessary and skipped it.

    • @erikkonstas
      @erikkonstas 7 месяцев назад

      @@TheRadiastral Do you know why Tim Berners-Lee regrets including the "//" part of the URI in the HTTP protocol? It's just 2 keypresses, not that hard right...?

  • @freebyte
    @freebyte 7 месяцев назад +3

    man some people are so smart

  • @wesleybilly8097
    @wesleybilly8097 7 месяцев назад

    You are interesting. I am here to hang out. I understand a fraction of what you are saying but its very interesting the way you tell the story of how stuff happened and how crazy it was that even happened. This is good youtube content.

  • @HaydonRyan
    @HaydonRyan 7 месяцев назад

    These image conversion libraries feel like a great smallish project to begin re-writing (and optimizing) code that is very commonly used into a safe language.

  • @januzi2
    @januzi2 7 месяцев назад

    As for the images that could be used to hack somebody's pc, jpg lib in Windows had a bug like that. If I remember correctly, the lib was created for Windows 3.11 and got patched in Vista (or maybe 7?).

  • @maximusdarja
    @maximusdarja 7 месяцев назад

    Back in the AOL days, we would boot people from chat rooms by sending them an empty jpeg file. You could boot everyone by making your user icon an empty jpeg file. It would cause the renderer to crash the chat program.

  • @Randomynous01
    @Randomynous01 6 месяцев назад +1

    There was a stupid movie where they hacked a terrorist on a plane by sending him an image

  • @memes_gbc674
    @memes_gbc674 7 месяцев назад +1

    it's crazy how google has been pushing webp so hard yet doesn't support the format in their apps (docs, slides, etc)

  • @DeathSugar
    @DeathSugar 7 месяцев назад

    I love the how NSO exploited legacy scan compression to create virtual processor and then evaluate whatever code you do and eventually escape it's prison and eventually take over device. AND it's zero interaction from the user at all.

  • @frognik79
    @frognik79 7 месяцев назад

    Yes I did know about this.
    I mean it's whole reason you could jailbreak the PSP using a TIFF buffer overflow and downgrade or put custom firmware on it back in 2005 or so.

  • @BirdsPawsandClaws
    @BirdsPawsandClaws 7 месяцев назад

    Very informative! Thanks for the video details!

  • @愛
    @愛 7 месяцев назад +2

    i would like to know if rust would have prevented this bug

  • @duck-in-space-engineers
    @duck-in-space-engineers 7 месяцев назад +6

    Pronounced Matryoshka dolls (/ˌmætriˈɒʃkə/ MAT-ree-OSH-kə; Russian: матрёшка, IPA: [mɐˈtrʲɵʂkə]

  • @piyh3962
    @piyh3962 7 месяцев назад +5

    I'm going through your pico videos now to learn C for the first time, thnx 4 the content bby.

  • @nomore6167
    @nomore6167 7 месяцев назад

    More proof that open source does not automatically mean secure, despite the nearly countless people who propagate that myth (and no, I'm not saying that closed source is any better). It's insane to me that there are no bounds checking /validation on a function which is working with user-supplied data.

  • @KvapuJanjalia
    @KvapuJanjalia 7 месяцев назад +12

    "Maristroka" dolls? Bruh.

    • @DaveBucklin
      @DaveBucklin 7 месяцев назад

      Matroshka was how I learned it.

    • @williamdrum9899
      @williamdrum9899 7 месяцев назад +2

      At least he didn't call it "Perestroika" 😂😂😂

    • @mikedegeofroy
      @mikedegeofroy 6 месяцев назад

      was looking for this comment

  • @Slarti
    @Slarti 7 месяцев назад

    07:54 how can a 1 pixel by 1 pixel image have more than one pixel in it?

    • @RawbLV
      @RawbLV 6 месяцев назад

      It didn't

  • @TheGameIsOverCy
    @TheGameIsOverCy 7 месяцев назад

    Amazing video ! I learned so many things... Thanks!

  • @drtechno-v3e
    @drtechno-v3e 2 месяца назад

    I don't know if they ever got rid of those 0 day injection bugs with pictures. Gif and Jpegs with browsers for a long time, if not patched, is still needed address, is code injection through pictures.

  • @Bunny99s
    @Bunny99s 7 месяцев назад

    The moral of the story: Write your own image library :D
    I actually wrote some code to parse png files without actually extracting the image data but just the chunks. I also wrote my own gif and bmp loaders. You learn alot about the formats and can be sure that any bug that may be in their belongs to yourself.

    • @erikkonstas
      @erikkonstas 7 месяцев назад

      That's how you take years off your life... oh and you're not likely to make the code as bug-free OR efficient as the major libraries out there, instead you'd most likely end up with MORE bugs, MORE space and LESS speed!

  • @saumyacow4435
    @saumyacow4435 7 месяцев назад

    Why is run time bounds checking not mandated everywhere? We've had Java for how long?

    • @RawbLV
      @RawbLV 6 месяцев назад

      Performance

  • @nightfox6738
    @nightfox6738 7 месяцев назад

    I'm not sure how I feel about calling the XZ issue a bug. Bugs are generally unintended/unexpected functionality in the code. A buffer overflow exploit found in code that was not intentionally put there can be considered both a bug and (once found and used by potentially malicious parties) an exploit. The XZ backdoor (while not intended by the community) was intentionally injected into the project with full knowledge and intent of it's purpose by the contributor. The functionality was fully intended by the one who created it. I may be getting caught up on semantics here but I personally feel like calling that a bug is like someone intentionally and willfully harming someone else and calling it an "accident" even though it was entirely on purpose.

  • @herpederpe4320
    @herpederpe4320 7 месяцев назад

    Huffman coding is one of the simplest (and also provable optimal) universal compression encoding though

  • @rm_steele
    @rm_steele 7 месяцев назад

    i was hearing about the 2017 LNK shortcut rendering RCE exploit recently, how similarly does that one work to this?

  • @mistikalcanavarlarparlamen3265
    @mistikalcanavarlarparlamen3265 7 месяцев назад +1

    Hello, do you know anything about Tlauncher being spyware? I heard so many rumours but there never was concrete evidence. It has been reportedly and allegedly found out that Tlauncher incorporates an altered version of Java and that's why it was able to remain undetected throughout years on end, an explanation whcih I find palpable yet dubious. I would love to hear an expert's , like you, opinion on this matter!!!

    • @pootispiker2866
      @pootispiker2866 5 месяцев назад

      TLauncher is probably spyware, yes. Do not use it, there are better version managers.

  • @Sonny_McMacsson
    @Sonny_McMacsson 7 месяцев назад

    Why wouldn't you start with final data larger than the buffer then encode that until it fits (you know, the other way around)?

  • @markustieger
    @markustieger 7 месяцев назад

    How about just adding the stackprotector-strong to the compile options for gcc? Would it then be still vulnerable?

  • @wal-3732
    @wal-3732 7 месяцев назад

    This video reminds me of Richard describing about middle out to the judges in silicon valley. Pure classic.

  • @nomore6167
    @nomore6167 7 месяцев назад

    Regarding the question, "how did we get here?", the answer is easy -- people don't like to validate data. They assume they will always be handed valid data which will conform to their implementation.

  • @Portablesounds
    @Portablesounds 7 месяцев назад

    Honestly, I think relying on fuzzing for detecting this is overkill. Wouldn't most static analysis tools catch something as simple as unbounded array access? Is it not standard for most open source projects to run some semblance of static analysis checks regularly? I run them at work and it catches all sorts of bugs all the time.

  • @Nasa-cosmonaut
    @Nasa-cosmonaut 7 месяцев назад

    Most of the terms you use are Greek to me, but I watched every second like "yup, that tracks". You've intrigued me into this and learning. Any good places to start? Brilliant?

  • @mikegofton1
    @mikegofton1 7 месяцев назад

    Thanks, its amazing how ingenious some exploits are.
    I'd be interested to know if you think IoT devices are a significant risk to home networks - many of those devices don't get any attention after initial installation and have control servers located in foreign countries. Even if the vulnerability is unintended it may last for years before the device is updated or replaced

  • @signbear999
    @signbear999 7 месяцев назад

    3:32 Matryoshka dolls + Perestroika = Marastroika dolls

  • @BritishBeachcomber
    @BritishBeachcomber 7 месяцев назад

    Huffman coding was invented in 1952. I implemented a version of it in 1980 in a commercial product.

  • @mojojojo6525
    @mojojojo6525 7 месяцев назад +1

    Well, I can't stop thinking of you

  • @ariseyhun2085
    @ariseyhun2085 7 месяцев назад +1

    You mentioned a few times that a double free leads to remote code execution, but how? You really don't explain it, it's so vague how a simple buffer overflow leads to RCE

    • @juleslondon3088
      @juleslondon3088 7 месяцев назад

      Yeah, this wasn’t at all clear to me either, though I’m no expert in such exploits. It would be interesting to know how the rather unlikely buffer overflow can actually lead to a meaningful exploit.