Slashdot Mirror


Did Russian Hackers Crash Skype?

An anonymous reader sends us to the www.xakep.ru forum where a poster claims that the worldwide Skype crash was caused by Russian hackers (in Russian). The claim is that they found a local buffer overflow vulnerability caused by sending a long string to the Skype authorization server. You can try Google's beta Russian-to-English translation, but the interesting part is the exploit code, and that's more readable in the original. The Washington Post reports that Skype has denied this rumor.

19 of 108 comments (clear)

  1. Re:In Soviet Russia... by r00b · · Score: 3, Funny

    In America you crash when using the phone.

  2. The code snippet seems to be wrong by ghost4096 · · Score: 4, Informative

    The loop body will never execute....

    1. Re:The code snippet seems to be wrong by tftp · · Score: 5, Funny

      It actually executes, I tried the loop just now.

    2. Re:The code snippet seems to be wrong by eggnoglatte · · Score: 4, Informative

      Hex constants in Perl, like C/C++ have to start with "0", so the correct syntax for what you describe would be 0xCCCCC. Without the leading 0, the expression gets interpreted as a variable name.

    3. Re:The code snippet seems to be wrong by lgftsa · · Score: 3, Informative

      It's the other way around. xCCCC is not a valid number in perl, so the loop will never exit.

    4. Re:The code snippet seems to be wrong by svallarian · · Score: 5, Funny

      It's obviously a typo. Since it was Russian code, it was supposed to be xCCCP

      --
      I patented screwing your mom. But it got revoked for "prior art."
    5. Re:The code snippet seems to be wrong by ThePhilips · · Score: 4, Informative

      Well, this is very very very old Russian hacker tradition: introduce flaw in the crack/exploit to prevent it from being (ab)used by idiots.

      --
      All hope abandon ye who enter here.
    6. Re:The code snippet seems to be wrong by eneville · · Score: 4, Informative

      Hex constants in Perl, like C/C++ have to start with "0", so the correct syntax for what you describe would be 0xCCCCC. Without the leading 0, the expression gets interpreted as a variable name.
      no, octal numbers start with 0. hex numbers start with x. typo: no, octal numbers start with 0. hex numbers start with 0x.
  3. Look by TheRealMindChild · · Score: 3, Interesting

    strncpy

    --

    "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
    1. Re:Look by PhrostyMcByte · · Score: 3, Insightful

      It's very rare for it to be okay to not write a trailing 0 terminator, or need unused buffer space padded with 0's. and that's exactly what the 'n' functions can do - the number of coders who don't know this and choose to blindly assume the functions protect them is astounding.

      Really, though. If you need the buffer space, you need the buffer space. Truncation is usually not an option. This is sloppy coding, but not due to lack of using 'n' functions. Resize as needed or reject the request if it gets too big.

  4. Translation by ACS+Solver · · Score: 5, Informative

    Here's the article's introductory part properly translated.

    "The reason for yesterday's downtime of the Skype network is research of Russian crackers, as reported by one of our readers.

    While searching for a local buffer overflow, a possibility was found to send a long string to the server, overflowing its buffer and causing the server to go down. Its place is taken by another server from the P2P network, the error arises on it in the same way, and so on. As a result, the entire Skype network refused service for several hours and the developer team was forced to turn off authentication.

    Here's the exploit code:"

    1. Re:Translation by mobby_6kl · · Score: 4, Informative
      You've got to be kidding, I was about to submit my own translation! :)

      Anyway, your version is probably a little better, so I'll contribute with something else. The script is very short too, so here it is:

      #!/usr/bin/perl
      # Simle Code by Maranax Porex ;D
      # Ya Skaypeg!!
       
      for ($i=256; $i>xCCCCC; $i=$i+256)
      {
      $eot='AAAA' x $i;
      call_sp();
      }
      exit;
       
      sub call_sp()
      {
      $str="\"C:\\Program Files\\Skype\\Phone\\Skype.exe\" \"/uri:$eot\"";
      system("$str");
      }
      The first page of comments seems to be just the usual bunch of trolls, assholes, and simply useless posts, except for one that claims the code has been shown not to do anything on a dedicated security site. The Skype article on the front page doesn't contain any additional information. The attack looks almost too simple to work, but I wasn't able to find any strong evidence that would suggest that it doesn't, at least not with a few quick searches.
  5. Re:IN SOVIET RUSSIA by Arthur+Grumbine · · Score: 4, Funny

    And the long string was... "In Soviet Russia we are tired of all the mindless obligatory comments about the beloved Motherland."

    --
    Now that I think about it, I'm pretty sure everything I just said is completely wrong.
  6. They hired DoS specialists against their own users by rpp3po · · Score: 4, Interesting

    Skype's login servers usually don't carry much load compared to the mass of traffic routed directly between all nodes via P2P. My guess is they just got overrun because they were not prepared for the worst case: ALL clients trying to connect AT THE SAME TIME to their master. I bet Slashdot wouldn't be prepared for all of its users connecting at the same time, either. But it needs not to. It is never going to happen (why should it? - well how about December 1st, 1AM UTC everybody?). With Skype it's different. They should have been prepared for the case, that whenever their network would be down for whatever reason all clients would try to connect concurrently! Obviously they weren't prepared. If you watched the aftermath closely you could see that they started filtering by IP on day two. Only a certain number of clients were allowed to connect per IP range. They probably hired super expensive DoS emergency contractors to get this back up. A hack is still possible, but I rather guess that it brought the network down, but did not keep it from coming back up. That was Skype's own fault.

  7. coincidence? by TheSHAD0W · · Score: 5, Informative

    I bet people are trying exploits against Skype (and other popular servers and services) all the time. If someone tries something funny, and the system crashes a few seconds afterwards, they may assume they were the cause.

  8. Skype has to change for eavesdropping law by Burz · · Score: 3, Interesting

    It probably has more to do with Skype retooling for eavesdropping requirements under the new wiretap law. Skype handles a lot of international traffic, encrypted and often in a P2P fashion, so a major change is necessary in order to comply.

    From what little I know about Skype, the network can cause both parties in a Skype-Skype call to route through a third party, a supernode (this is done to defeat firewall complications). So perhaps they would be able to start routing all USA-international traffic through in-house supernodes where the stream could be tapped. (Anyone want to correct me? Clarify?)

  9. Re:They hired DoS specialists against their own us by Smauler · · Score: 3, Funny

    I bet Slashdot wouldn't be prepared for all of its users connecting at the same time, either. But it needs not to. It is never going to happen (why should it?)

    I believe you are discounting the possibility of the actuality of Natalie Portman and Hot Grits.

  10. Re:They hired DoS specialists against their own us by FireFury03 · · Score: 3, Insightful

    My guess is they just got overrun because they were not prepared for the worst case: ALL clients trying to connect AT THE SAME TIME to their master.

    This is a pretty good example of why centralised network topologies such as Skype, MSN, etc. are a really Bad Idea. It doesn't take much to take down the entire network.

    SIP, XMPP, SMTP, etc are all examples of distributed topologies - there is centralised service required(*) for these networks - if one service provider's network falls over it only affects a small number of users rather than taking out *all* the users using that protocol.

    (* Yes, they all require the root name servers, but these days the root name server architecture is pretty resillient through the use of technologies such as anycase. Certainly a lot more resillient than any one organisation could hope to achieve for their own propriatory protocols).

    They should have been prepared for the case, that whenever their network would be down for whatever reason all clients would try to connect concurrently!

    This is not really a question of preparation - it's a question of a sensible network design. The Skype network (and most other propriatory services) is a flawed design _because_ they want to have control of every aspect of the network. Open protocols are generally designed to allow interoperation of independent autonomous networks so an outage of this magnetude is pretty much impossible.