Heartbleed, Running the Code - Computerphile

Поділитися
Вставка
  • Опубліковано 30 вер 2024
  • We look at and run the code that exploits the Heartbleed bug. Dr. Steven Bagley takes us through the code and shows us how it works.
    Relevant RFC Document: bit.ly/heartble...
    Domino Addition: • Domino Addition - Numb...
    UA-cam's Secret Algorithm: • UA-cam's Secret Algor...
    / computerphile
    / computer_phile
    This video was filmed and edited by Sean Riley.
    Computer Science at the University of Nottingham: bit.ly/nottscom...
    Computerphile is a sister project to Brady Haran's Numberphile. See the full list of Brady's video projects at: bit.ly/bradycha...

КОМЕНТАРІ • 385

  • @LittleVolii
    @LittleVolii 5 років тому +110

    "lets move into the office"
    gotta show this b-roll of ducks first

  • @thesecondislander
    @thesecondislander 10 років тому +210

    I'm not a programmer but i can see how coding something which essentially completely trusts the data sent by the client to fit a format without validating it is a bad idea...

    • @ZweiSpeedruns
      @ZweiSpeedruns 10 років тому +6

      I found that to be the case in most of the web. Because of this, this is why myspace worms break out. With all websites trusting eachother, you can do SQL Injection and XSS.

    • @atheistpariah
      @atheistpariah 10 років тому

      You are, indeed, correct. It is always best practice to check if an email field fits the pattern *@*.* or that a password field is at least 6 characters in length or, if you're accessing a database, that your table variable has greater than 0 rows. Not only does it prevent unforeseen error messages, it prevents an exploit such as this.

    • @googlepask7551
      @googlepask7551 10 років тому +22

      I as a programmer am deeply baffled how one could make such kind of error - the level of absolute incompetence is just staggering (programmer/s + QA). It is not even hidden under layers of other code! No validation of external data in security critical code!?
      Amazing.

    • @Celrador
      @Celrador 10 років тому +25

      You are completely right, but as a programmer I want atleast to explain, how bugs like this can occur:
      If you are writing several thousand lines of code, it is rather likely to forget the checking processes for the data at one point or the other. And it's even more likely for something like this to happen, if you are coding protocols. (As network protocols usually need to be as performance-efficient as can be and therefore you try to accomplish your goal in general with as few lines of code as possible.)

    • @compscijedi
      @compscijedi 10 років тому +25

      This is literally the first lesson we learned in computer science classes beyond the basic "Intro to Programming" course; namely, don't trust the end-user. Assume they are either 1) a complete idiot who won't use the software correctly or 2) a malicious user who will exploit your program if possible. NEVER EVER trust data sent from a user without performing sanity checks and validating it

  • @figloalds
    @figloalds 9 років тому +120

    I hope nowadays C programmers have learned to create understandable names to functions and members :|

    • @jwenting
      @jwenting 9 років тому +47

      ***** you mean lpfstrHW doesn't tell you anything? ;)

    • @murch2
      @murch2 9 років тому +2

      Ip from string ...hardware?

    • @sk8rkid135
      @sk8rkid135 9 років тому +7

      +Felype Rennan Nope.

    • @figloalds
      @figloalds 8 років тому +5

      I agree that Java can't contain C code, but C# allows for unsafe native code, yes, usage of native libraries and there is C++/CLI as well.
      And naming conventions, they could name things well in the C standard libraries, like pascal guys used to do, but, they just chose to not.

    • @samstromsw
      @samstromsw 8 років тому

      +CaptainDuckman Hungarian Notation, the idea is that you include the type of every variable in its name. It makes it more obvious if you are using the wrong type.

  • @jochemvanl
    @jochemvanl 10 років тому +42

    Great video. XKCD has a nice comic briefly explaining what the bug is (great for your non-tech friends), but this video goes just a little further in explaining how it works.

  • @cypher9000
    @cypher9000 3 роки тому +46

    From a programmer's perspective it's astounding that the memcpy part of code was peer reviewed and passed all the checks without anyone thinking "But what if someone sends the length that is greater than the actual payload?". Also whoever wrote that file needs to read up about variable naming. bp, lp, p, etc. Jeez.
    Great video though, thanks for uploading!

    • @patrickconrad396
      @patrickconrad396 2 роки тому +4

      I'm not like a pro yet but from my experience some complex or more secure apps do have variables named like this. Idk id guess it's security over readability maybe? And I'll say it's always easier to understand a vulnerability after they happen rather than before. Seems so simple to us but who knows what they were thinking. Or maybe the complexity with the variables actually caused the issue lol

    • @mutzikatzi1
      @mutzikatzi1 2 роки тому +11

      @@patrickconrad396 Security by obscurity isn't really security.
      It's probably because for people who write this kind of codes, it's kinda obvious.
      p = pointer, bp = buffer pointer, pl = payload length
      But i also don't like those short namings.

    • @joseguillermo1790
      @joseguillermo1790 2 роки тому +1

      @@mutzikatzi1 Totally agree

    • @raglandasir6885
      @raglandasir6885 Рік тому +1

      Yes. We are never supposed to trust the client

  • @goeiecool9999
    @goeiecool9999 10 років тому +19

    Make a video about multi-core CPU's and the benefit of 64-bit architectures. I realized that if 8-bit was enough for instruction sets back in the day. So what do we do with the 56 extra bits? Then I realized maybe it's for sending multiple instructions at once per processor core. So yeah, video's about processor architectures.

  • @ThomasGiles
    @ThomasGiles 10 років тому +7

    Tom did a great job of explaining this, I feel. But I guess some people are looking for more detailed stuff. Crazy how bugs like this are still getting through...

    • @Martial-Mat
      @Martial-Mat 10 років тому +1

      Despicable that bugs like this are getting through in the very part of the system designed to be extra secure.

  • @qwaqwa1960
    @qwaqwa1960 10 років тому +2

    What an indictment of OPEN SOURCE! No one managed to catch such an obvious & simple security hole? Yikes!!! Pathetic.

  • @OmegaCraftable
    @OmegaCraftable 10 років тому +30

    Thanks for the info :)

  • @Doc_Fartens
    @Doc_Fartens 10 років тому +23

    Fantastic work as always. Nice clear explanation of a fairly important subject.

  • @whiterottenrabbit
    @whiterottenrabbit 10 років тому +22

    This reminds me thematically of the RSA bug half a year ago... What I still don't understand with the heartbleed bug, though, is why it is necessary to tell the server how long the message is. Can't it determine the length of the message on the basis of the message itself? I mean, C is used for high-precision scientific computations in applied mathematics for decades, but it can't count how many bytes a message has? ò.Ô

    • @natnew32
      @natnew32 5 років тому +3

      Strings don't have a length parameter.

    • @masonhunter2748
      @masonhunter2748 4 роки тому

      Say the next 6 letters: Badeth haha
      Would be the same as
      Say this: Badeth

    • @karlosdaniel6537
      @karlosdaniel6537 3 роки тому

      @@natnew32 Yes, and string isn't even a data type in C, they're just an array of characters.

    • @williamdrum9899
      @williamdrum9899 2 роки тому +5

      Short answer: No.
      Long answer: The computer has no way of telling where an arbitrary sequence ends, unless it uses some sort of terminator value or a predefined size placed in front of the sequence.

    • @cantinasongband
      @cantinasongband 2 роки тому +2

      clearly there is a way to tell the actual size of the payload since it was needed to apply the patch. the entire issue was caused because the code didn't check if the actual length of the payload matches the integer value provided by the client.

  • @coopergore2884
    @coopergore2884 8 років тому +8

    Dr. Bagley's shirts are fly as shit.

  • @unfa00
    @unfa00 3 роки тому +2

    Learning how Heartbleed makes the server send in random memory contents made me laugh so hard...

  • @AbdelhadiE
    @AbdelhadiE 10 років тому +6

    how did I end up watching this ..... I have no Idea what he was talkin about lol

    • @idm0nkey2pt0
      @idm0nkey2pt0 10 років тому +6

      It helps to pay attention.

  • @LdaHashZero
    @LdaHashZero 8 років тому +4

    Another reason to always memset any temporary buffers in memory containing passwords/keys after you're finished using them. This includes local function variables allocated on the stack before you return.

    • @cjxordi
      @cjxordi 6 років тому

      How many processor cycles would it take? When you would do that to every variable in your code.

  • @sean3533
    @sean3533 10 років тому +21

    Where was the opening filmed? Its beautiful

    • @Computerphile
      @Computerphile  10 років тому +27

      That's the University of Nottingham Jubilee Campus, home to their Computer Science building :) >Sean

    • @sean3533
      @sean3533 10 років тому

      ***** Thanks Brady, I'll have to check out that campus!

    • @peeedurr
      @peeedurr 8 років тому +3

      +Sean Haggard Looks a lot like York's new place. Very similar to Nott's obviously.

  • @EddieSundvall
    @EddieSundvall 10 років тому +2

    Very good reminder of how important it is to be defensive about your programming, especially in unsafe languages like C!

  • @Borednesss
    @Borednesss 10 років тому +14

    I had no idea what this was about until 7 minutes in lol

  • @Artifactorfiction
    @Artifactorfiction 10 років тому +6

    Amazing how this wasn't spotted much earlier

    • @ghostandgoblins
      @ghostandgoblins 10 років тому +7

      CelmorSmith
      I believe it was purposely put in there on the behest of government agency. Its seems like a very obvious mistake. This is first year university level logic mistake. Like a situation where the lecturer makes very elementary flaws in the code and students are given 15 min to correct it. As another poster mentioned that not being someone from a programming background even he could see the inherent logic flaw. That is, trusting data sent WITH OUT VERIFYING IT. This is utterly unheard of in any programming practice.
      So this to have escaped professionals designing security... is highly suspect to say the least. I think you have to include more people then we think in to the "bad guys" group unfortunately.
      Some of those who run forces are the same who burn crosses ~ RATM

    • @rlamacraft
      @rlamacraft 10 років тому +3

      It has been known about for years, as with lots of bugs academics and industry experts are aware of many of these but it simply too costly or not seen as worth fixing unless there is a known or presumed risk. You must remember that the majority of the population are extremely lazy and uneducated in the ways that computers work - and really that is how security is maintained.

  • @yakacm
    @yakacm 8 років тому +3

    We're not going to give you the link for the exploit, no but you did tell us about it and now all we need to do is search for it and we will find it in 0.45 seconds.

  • @shtfgear
    @shtfgear 10 років тому +33

    great explanation of heartbleed.

  • @erikito6092
    @erikito6092 10 років тому +1

    My father was telling me that the company he worked for knew about this bug for several years but they only fixed it now when it was discovered by hackers.

  • @abelboss
    @abelboss 10 років тому +1

    if (strlen(message) != payload)
    return (FAILURE);

  • @mcvoid1
    @mcvoid1 10 років тому +16

    The bracket style is making me twitch. Let the holy war commence.

  • @PvtHaggard
    @PvtHaggard 10 років тому +2

    Great explanation.. Clears it all up for me.. Thanks

  • @diceLibrarian
    @diceLibrarian 6 років тому +2

    Give me the 500 Letters of Tom has a cat: Tom has a cat (other unrelated information)

  • @DFX2KX
    @DFX2KX 10 років тому +2

    Interesting. Nice to see why there was so much noise about this online. Part of me wants to face-palm at this, but it's really quite a simple mistake to make.

  • @habdochkeineahnung
    @habdochkeineahnung 8 років тому +2

    i held a architectural speech about this building here in germany! :) nice to see it again this random.

  • @pij3333
    @pij3333 10 років тому +2

    Should'nt you link to the XKCD explanation? It's ingenious.

  • @LakkThereof
    @LakkThereof 10 років тому +82

    not giving a link to malicious code? PARTY POOPER!

    • @fadetounforgiven
      @fadetounforgiven 10 років тому +29

      Yes, because searching for the filename on the screen may be too hard, huh?

    • @OttoFazzl
      @OttoFazzl 7 років тому +4

      Searching for the filename is only for hackers, not regular users LOL

    • @Bring_MeSunshine
      @Bring_MeSunshine 5 років тому +2

      The uncompiled code is available on Symantec's, Security Focus website. has been for years. Along with a whole lot more. It's what security research is all about

    • @snbeast9545
      @snbeast9545 4 роки тому +1

      Even without searching the filename, it wouldn't be too hard to make considering they showed you how to make a heartbeat packet.

  • @Ral9284
    @Ral9284 10 років тому +3

    #heartbleed

  • @dannylevin3738
    @dannylevin3738 10 років тому +8

    Am i completely computer illiterate ? I have absolutely no idea what i just watched

    • @jjfojfsoihsfhfih4982
      @jjfojfsoihsfhfih4982 8 років тому +3

      basically nerds were requesting data from the server over and over again (and the server had no problem with this!!), looking for something interesting
      its like going to the post office and asking for your mail and they give you your mail with some junk mail; sometimes however they gave you a juicy parcel along with your mail. BINGO!

  • @jaredmulconry
    @jaredmulconry 10 років тому +2

    I'm a programmer. I know that programmers make mistakes, it's pretty much unavoidable. A mistake like this is so incredibly easy to make, and when you're working on a piece of code that a percentage of the world's servers will be relying on to keep data secure, the cost of those mistakes are extreme. I pity the programmer(s) who made this mistake.

    • @eTheBlack
      @eTheBlack 10 років тому

      It is OpenSSL

    • @CelmorSmith
      @CelmorSmith 10 років тому +1

      Honestly, I don't, and i don't trust OpenSSL anymore if only one programmer wrote and checked the codes behavior with the outcome of 2 scenarios that of the right user input and that with the wrong user input.

  • @salat
    @salat 10 років тому +1

    Missing the point that OPENSSL_malloc makes the problem even bigger (almost every time sensitive data, less chance to detect the illegal read from the OS, etc.)

  • @onwul
    @onwul 10 років тому +1

    It is a really careless programming. Avoiding such mistake is very easy if you read the manual.
    Socket function recv, which is used to read data, takes in the number of bytes you want to receive/read, and returns the number of bytes it received. You tell how much data want, you then use returned value to find out how much data you've actually got.

  • @GeekIWG
    @GeekIWG 10 років тому +1

    Wow. I am quite surprised that whoever wrote that piece of code forgot the length checks to begin with. Seems like something pretty obvious to me anyways.

  • @MacShapow
    @MacShapow 10 років тому +1

    Crazy bug! What gets me the most is how chronically underfunded OpenSSL apparently was. At least people are pitching in now. Hopefully other important open source projects won't have to go through that.

  • @cra0kalo
    @cra0kalo 10 років тому +1

    link me python script please someone would like to try this on my server

  • @KilloZapit
    @KilloZapit 10 років тому +1

    I never even heard of this bug before. Funny thing is, I saw he bug before he described it. See, this is why I would be really reluctant to make code that messes around with memory like that in security. It's amazingly easy to mess it up when you don't have type protection. But I guess it's pretty easy to mess up even if you do sometimes.

  • @h3r3t1c
    @h3r3t1c 10 років тому +2

    Great explanation of the heartbleed bug!

  • @andersevenrud
    @andersevenrud 10 років тому +2

    I would really love to see more code reviews here. This is great stuff!

  • @FahadAyaz
    @FahadAyaz 10 років тому +1

    A good explanation of the "heartbeat bug" and why it's so dangerous. I'm surprised that it lasted in the wild so long!

  • @zgintasz
    @zgintasz 9 років тому +3

    why can't server just count the length itself?

    • @hiddenbladezzz
      @hiddenbladezzz 8 років тому +1

      +zgintasz
      because the server needs to know when to cut the connection when all data is sent if packets are fragmented. Or when it is not completely sent, tell the client to reset the connection.
      Also if the server doesn't know how much of the packet is padding if it doesn't know the length of the actual data which means useless padding might be treated as actual data.

    • @zgintasz
      @zgintasz 8 років тому

      isn't this functionality already implemented in udp/tcp? I mean server/client can't get half of a packet from each other.

  • @LeviG
    @LeviG 10 років тому +2

    Nice video. Great explanation.

  • @DeviousMalcontent2
    @DeviousMalcontent2 10 років тому

    I should really update XAMPP I'm still running version 1.7.3, but I don't know if I even have SSL enabled.
    Huehuehue.
    Admittedly a lot of us have been talking about this at my university, but none of us have actually done anything to patch systems that can be affected by it; I have a lot of local systems that can be affected by it, but aren't accessible through the internet.
    Imagine what is gonna happen when the 2038 problem comes about. xD

  • @jorl17
    @jorl17 10 років тому +1

    Brady, could you please keep the camera showing code when it's being discussed? or at not make sudden cuts so often. It breaks focus. Other than that, wonderful video!

  • @ScottLahteine
    @ScottLahteine 10 років тому +1

    An excellent look at Heartbleed and the nature of security bugs in-general.

  • @Root3264
    @Root3264 10 років тому

    The cutter did a great job of making me sick. constantly switching between paper and person... STICK TO ONE o.O

  • @hello235698741
    @hello235698741 10 років тому

    Well if you do a MITM attack and strip the SSL bits out, then you can collect the web cookies and use them for yourself. However this would not work on bank accounts since you would require Security Certificates.
    I tried this on my friend's facebook and pissed them off.

  • @Cyberjocii
    @Cyberjocii 10 років тому

    Have you guys ever considered using calloc() instead of malloc()? If you'd allocated your payload buffer using calloc() all heartbleed would ever get is nulls.

  • @gumenski
    @gumenski 10 років тому

    Can you imagine being the poor sap that wrote this bit of code, sitting here right now watching all this on the news and Computerphile... yikes. Makes me want to slither into a hole in the ground. Even being a novice coder I still saw the problem before it even had to be explained. Scary how many other lazy bugs like this one almost certainly still exist today in popular software worldwide.

  • @tickledropstop
    @tickledropstop 10 років тому

    Thumbs up if you spotted the Atari 520 ST computer.

  • @AntivirusRatings
    @AntivirusRatings 10 років тому +1

    Absolutely loved your explaination.

  • @EnigmaV8
    @EnigmaV8 10 років тому +11

    "Heartbleed" sounds like a great title for an anime series.

  • @PsiMX
    @PsiMX 10 років тому +1

    Why didn't the memcpy cause a segmentation fault when asked for more memory than the variable held? I suppose OpenSSL has to be running their own memory manager that allowed for this segmentation violation.

    • @DDranks
      @DDranks 10 років тому +1

      Segmentation fault happens when a process tries to access memory that doesn't belong to its accessible memory area, or "segment". The operating system catches this kind of errors because it keeps account which area belongs to which process. However, it doesn't or even couldn't in principle "micromanage" whether the accessed memory belongs to a certain _variable_ or not.

    • @PsiMX
      @PsiMX 10 років тому

      Sorry for the ambiguity. I meant to say, "Why didn't the memcpy EVER cause a segmentation fault when asked for more memory than the variable held?" It seems that the bug would have been caught much earlier if segfaults occurred during malicious actions.
      With the default malloc, the variable would eventually be randomly assigned near a border between two segments and the OS would throw the segfault.
      I'm thinking they had a custom malloc implementation that placed the variable in front of a big chunk of data managed by that custom memory allocator.

    • @DDranks
      @DDranks 10 років тому

      But Psi Mayfield has a valid point, now that I think it. After all, segfaults should happen even when reading from an "unallowed" location - and it certainly could try to read from such a location, I think?

    • @julietmikealpha
      @julietmikealpha 10 років тому

      Psi Mayfield memcpy is reading valid memory, it's just uninitialised. A buffer has been allocated based on the length from the client, it's just the client didn't send enough to fill that buffer (client says, "Imma gonna send 64k" - server allocates 64k - client sends 32k - rest of the receive buffer is uninitialised, but valid). That's the bug :)

  • @ErikGaiusCapistrano
    @ErikGaiusCapistrano 10 років тому

    ELI5 version: xkcd.com/1354 (Explained Like I'm 5)

  • @Friek555
    @Friek555 10 років тому

    Why do you need the padding? Aren't that 16 bytes that slow down the protocol and cause cost (processing and network) uselessly every single heartbeat?

  • @TheDoubleBee
    @TheDoubleBee 10 років тому

    I'm surprised httpd (Apache) didn't cause a segmentation fault and get killed by the operating system.

  • @Lakstoties
    @Lakstoties 10 років тому

    If there's anything I've learned. never underestimate the difference the small details can make for the whole. Two lines of code could have prevented Heartbleed.

  • @Harm10412
    @Harm10412 10 років тому

    But if you are trying to read beyond your memory, shouldn't the program sigsegfault occasionally?

  • @okaythen001
    @okaythen001 10 років тому

    if this heartbleed never happened, do you guys change your password every once awhile? like half year or so, most of the people I know they don't change their passowrd, is it necessary to change it once awhile?

  • @bgd73
    @bgd73 10 років тому

    why would a password be ascii? Silly error, it seems ancient..kid stuff.

  • @DFPercush
    @DFPercush 10 років тому

    Does this never cause an access violation in the OpenSSL process? I would think eventually it would run out of bounds and crash the server.

  • @AV1461
    @AV1461 10 років тому +1

    Really good. Thank you.
    I'd love to see the fix - the checks they added 7:15. Or at least what type of things can be done.

    • @CelmorSmith
      @CelmorSmith 10 років тому

      checking if the payload is the length specified by the user would suffice.
      Sth. like "if(payloadLength == payload.Length)" (but i'm not a C programmer) would be enough if the container has that method. But finding out the Length would be with that Method easier anyway.

  • @GhostlyJorg
    @GhostlyJorg 7 років тому

    I'm sorry, but I don't think this is well enough explained. Nice with the demonstration in the end, though

  • @alanzyoutube
    @alanzyoutube 10 років тому

    The programmers were lazy that's the problem, open source will never be trusted again after this.

  • @weemist
    @weemist 10 років тому

    This is disturbingly easy. How could have gone unnoticed for such a long time?

  • @first.engineersecond.scien7663
    @first.engineersecond.scien7663 9 років тому

    not a programmer but, that block of code bout unchecked payload seems easy to understand for a programmer. the exploit was there for long time?

  • @kbo206
    @kbo206 10 років тому

    Great video although I'm still trying to figure out the purpose of the printed code. Just something to give a visual?

  • @_imnic_879
    @_imnic_879 9 років тому

    i was kinda happy to see a beautiful number like 333,333 their for me to change

  • @SinthTeck
    @SinthTeck 10 років тому

    Please, make a video about "strong AI vs weak AI" ! Thumbs up the let them see the comment!

  • @MrZmogZ
    @MrZmogZ 10 років тому

    Thanks so much for some actual journalism. Everyone else in the media are like "ermahgerd enternet ermergherdon".

  • @joerivde
    @joerivde 3 роки тому

    Don't you start fishing up your own request data after a while of running a program continuously fishing for ram data?

  • @amateurstuff
    @amateurstuff 10 років тому

    I'm glad they showed those two ducks. I was worried they would cut out those two ducks. I love ducks. Do you love ducks?

  • @MrNobody_Music
    @MrNobody_Music 10 років тому

    Another great video, Where can I get a link to the code that computerphile won't give us , for educational purposes of course

  • @Anamnesia
    @Anamnesia 10 років тому

    XKCD 1354: explains it REALLY simply...

  • @oscarchampion5842
    @oscarchampion5842 10 років тому

    It's like comments it's full of mud but you can find passwords in it
    Not going to tell you >:)

  • @ChunkyChest
    @ChunkyChest 9 років тому

    lol ironically I just finished building an IDispatch struct..

  • @motorheadbanger90
    @motorheadbanger90 6 років тому

    how did they not validate the data!!! It seems like something so obvious and yet...it was over looked...

  • @yngve1993
    @yngve1993 10 років тому

    Could anybody explain what a payload is, and what people normally would send as a payload? I think that would help a bit. :)

  • @masonhunter2748
    @masonhunter2748 4 роки тому

    My solution would be to parse the number of letters, and then fix the message to the actual length
    If it’s less, leave it as it is, if it’s more, change the length

  • @frankynakamoto2308
    @frankynakamoto2308 7 років тому

    Is visually not friendly for our brain to comprehend the responses, because they are not visually easy to interpret, is words that are disoriented and our minds just harder to adapt to reading and interpreting the data.

  • @oluftheexplorer9476
    @oluftheexplorer9476 10 років тому

    I feel kinda sorry for the people who exploit like this... most be a very lonely and sad existance they have..

  • @peeedurr
    @peeedurr 8 років тому +3

    Made me chuckle - 'and no, we're not going to give you a link to this one ...' BUT we will show you its file name and tell you it's written in Python - just in case you don't know what .py means as a file extension. :-)

    • @raymondlee1024
      @raymondlee1024 8 років тому

      Faked filename, but the spelling mistakes help you zero in on it.

  • @ilaribystrouska2820
    @ilaribystrouska2820 10 років тому

    Is that an Atari computer I see in the background? I didn't think anyone else still used those at all...

  • @stopfidgetting
    @stopfidgetting 10 років тому

    Wait... Did you say the 8th of April? That's my birthday...

  • @slr150
    @slr150 10 років тому

    The problem is that languages like C with pointer arithmetic allows procedures shoot past array boundaries and read into other parts of the heap.

  • @mumiemonstret
    @mumiemonstret 3 роки тому

    I assume that the payload is there to let the requester validate the integrity of the reply, but what is the purpose of the padding?

  • @kirdook
    @kirdook 10 років тому

    "we got this python script from the internet - and no, we're not gonna give you the link to that" Oh darn! I wish there was a website where people to go to search for things on the internet...

  • @johnadams3259
    @johnadams3259 10 років тому

    C's syntax is like Java combined with PHP.

  • @indiansoftwareengineer4899
    @indiansoftwareengineer4899 6 років тому +1

    please provide subtitles.
    best content.

  • @PontusWelin
    @PontusWelin 10 років тому +1

    Very informative! Thanks!

  • @LordXelous
    @LordXelous 10 років тому

    Is.... Is that an Atari Falcon behind him... Oooh I'm all moist at the thought of it.

  • @BaconDrinker
    @BaconDrinker 10 років тому

    Tom Scott's explanation of heart bleed was way better, not to troll :P

  • @garethdean6382
    @garethdean6382 10 років тому

    Nothing beats XKCD's explanation.

  • @michaelgeorgoulopoulos8678
    @michaelgeorgoulopoulos8678 10 років тому

    Kudos for the Atari ST sitting in the background!

  • @spiros1994
    @spiros1994 10 років тому

    The ASLR lack of *BSD and the weak version in Linux are also, I think, make this attack to be more successfull. If not please correct me.

    • @CyDek10
      @CyDek10 10 років тому

      Not really - ASLR doesn't help you in this instance. Even though the OS gives you memory-pages with "random" starting adresses you still get ~4kb per page. That is, however, much more than a (typical) single variable needs, so you end up storing more than one variable per page. And this again is done sequentially, so the probability of reading actual data via this bug is pretty much the same with or without ASLR ;)

    • @Z80Fan
      @Z80Fan 10 років тому +2

      This has nothing to do with it: Address Space Layout Randomization randomizes the loading address of the program and its dynamic libraries, so that it's very difficult (almost impossible) to write shellcode to exploit a vulnerable program.
      Hearthbleed doesn't inject shellcode; it just tricks the vulnerable client/server in sending what it has in its writeable memory.

    • @calrogman
      @calrogman 10 років тому +1

      OpenBSD was actually the first mainstream operating system to integrate ASLR and activate it on by default. libc support for ASLR doesn't help with this bug because of OpenSSL's use of an internal malloc.

  • @anothergol
    @anothergol 10 років тому

    I thought Philip Seymour Hoffman had died?

  • @BaalKlezmerTov
    @BaalKlezmerTov 3 роки тому

    it will be too much to ask if he show the code on screen instead of paper!??!?

  • @Sekei..
    @Sekei.. 10 років тому +1

    That's one beautiful campus