Stories
Slash Boxes
Comments

SoylentNews is people

SoylentNews is powered by your submissions, so send in your scoop. Only 16 submissions in the queue.
posted by janrinok on Wednesday August 10 2016, @02:14PM   Printer-friendly
from the not-good-news dept.

Submitted via IRC for Beige

Researchers at the University of California, Riverside (UCR) have identified a weakness in the Transmission Control Protocol (TCP) of all Linux operating systems since late 2012 that enables attackers to hijack users' internet communications completely remotely.

Such a weakness could be used to launch targeted attacks that track users' online activity, forcibly terminate a communication, hijack a conversation between hosts or degrade the privacy guarantee by anonymity networks such as Tor.

Led by Yue Cao, a computer science graduate student in UCR's Bourns College of Engineering, the research will be presented on Wednesday (Aug. 10) at the USENIX Security Symposium in Austin, Texas. The project advisor is Zhiyun Qian, an assistant professor of computer science at UCR whose research focuses on identifying security vulnerabilities to help software companies improve their systems.

While most users don't interact directly with the Linux operating system, the software runs behind-the -scenes on internet servers, android phones and a range of other devices. To transfer information from one source to another, Linux and other operating systems use the Transmission Control Protocol (TCP) to package and send data, and the Internet Protocol (IP) to ensure the information gets to the correct destination.

For example, when two people communicate by email, TCP assembles their message into a series of data packets—identified by unique sequence numbers—that are transmitted, received, and reassembled into the original message. Those TCP sequence numbers are useful to attackers, but with almost 4 billion possible sequences, it's essentially impossible to identify the sequence number associated with any particular communication by chance. The UCR researchers didn't rely on chance, though. Instead, they identified a subtle flaw (in the form of 'side channels') in the Linux software that enables attackers to infer the TCP sequence numbers associated with a particular connection with no more information than the IP address of the communicating parties.

[...] Encrypted connections (e.g., HTTPS) are immune to data injection, but they are still subject to being forcefully terminated by the attacker. The weakness would allow attackers to degrade the privacy of anonymity networks, such as Tor, by forcing the connections to route through certain relays. The attack is fast and reliable, often taking less than a minute and showing a success rate of about 90 percent. The researchers created a short video showing how the attacks works.

Source: https://ucrtoday.ucr.edu/39030


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 1, Informative) by Anonymous Coward on Wednesday August 10 2016, @02:20PM

    by Anonymous Coward on Wednesday August 10 2016, @02:20PM (#386264)

    "There's this technique here to infer TCP sequence numbers, so if I know A is talking to B, I can use that technique to start talking to B after hijacking the right sequence number and use that in my first packet."

    Also, if anything is encrypted properly (including proper key management and no key compromising), then the decryption will fail because the data will not be decryptable/unsigned. So I get that Tor is vulnerable to the extent that connections can be terminated (because of failed decryption) and thus anonymity is compromised but I don't see which other effect this will have on the user of Tor. Anyone care to illuminate me?

    • (Score: 1, Interesting) by Anonymous Coward on Wednesday August 10 2016, @02:52PM

      by Anonymous Coward on Wednesday August 10 2016, @02:52PM (#386274)

      If I had to take a wild stab, I'd guess that the MotU/hackers/Bad Guys could ensure that you connect to a compromised entrance node by means of exhaustion. Simply repeatedly terminate connections that aren't to compromised entrance nodes until Tor connects to a compromised one. If we assume the MotU have effectively compromised your ISP, this wouldn't be necessary to cause that to happen. It could still be useful to other parties that may want to deanonymize traffic such as Google, M$, Amazon, etc.

      I'm not intimately familiar with how Tor works, but I assume that after connecting to a compromised node, the presence of the other two nodes that are supposed to be involved in obfuscating a communication's source could be forged or if not an attacker could use wash-rinse-repeat to ensure the communication also finds its way to a compromised exit node. With traffic going through both a compromised entrance node and compromised exit node, it's possible to deanonymize it.

      • (Score: 0) by Anonymous Coward on Wednesday August 10 2016, @02:57PM

        by Anonymous Coward on Wednesday August 10 2016, @02:57PM (#386275)

        Should have added that this seems to completely defeat the purpose of Tor. But I'm more a fan of Freenet.

      • (Score: 0) by Anonymous Coward on Wednesday August 10 2016, @10:27PM

        by Anonymous Coward on Wednesday August 10 2016, @10:27PM (#386408)

        All of my entrance nodes, according to TBB are routing through 5 eyes, or affiliated countries entry nodes, which a disturbing propensity for single nation hops all the way through (IE UKUKUK, or FRFRFR, or USUSUS.) I have all 5 eye nations and a few others blacklisted for both regular and exit nodes, so they shouldn't *EVER* be showing up, according to Tor docs, unless connectivity is so bad that only 'suspect' entry nodes are available.

        I hope the scrutiny wastes a lot of their surveillance dollars for little return, but given how commiditized their spying is now, I imagine it is cheaper to just collect/compromise everything, than to make exceptions other than for people it is politcally or financially beneficial to not observe.

    • (Score: 0) by Anonymous Coward on Wednesday August 10 2016, @03:00PM

      by Anonymous Coward on Wednesday August 10 2016, @03:00PM (#386276)

      thus anonymity is compromised but I don't see which other effect this will have on the user of Tor. Anyone care to illuminate me?

      Isn't anonymity kind of the whole point of using Tor? If that is compromised, any other potential effects are not really all that important.

    • (Score: 2) by frojack on Wednesday August 10 2016, @06:11PM

      by frojack (1554) on Wednesday August 10 2016, @06:11PM (#386338) Journal

      It seems to me the chance of this going unnoticed by the user is pretty slim. Even in an unencrypted data stream you would have to know exactly what was expected next in order to sneak this by the software or the user .

      --
      No, you are mistaken. I've always had this sig.
    • (Score: 2) by DannyB on Wednesday August 10 2016, @08:11PM

      by DannyB (5839) Subscriber Badge on Wednesday August 10 2016, @08:11PM (#386366) Journal

      Is anonymity is compromised really?

      I can see that traffic flow between two TOR nodes is interrupted. Thus a denial of service. But nobody's identity is exposed.

      --
      The Centauri traded Earth jump gate technology in exchange for our superior hair mousse formulas.
  • (Score: 0) by Anonymous Coward on Wednesday August 10 2016, @02:46PM

    by Anonymous Coward on Wednesday August 10 2016, @02:46PM (#386272)

    Doctor: Well, don't do that!

  • (Score: 4, Informative) by NotSanguine on Wednesday August 10 2016, @02:47PM

    by NotSanguine (285) <NotSanguineNO@SPAMSoylentNews.Org> on Wednesday August 10 2016, @02:47PM (#386273) Homepage Journal

    From TFA:

    Qian said the researchers have alerted Linux about the vulnerability, which has resulted in patches applied to the latest Linux version. Until then, Qian recommends the following temporary patch that can be applied to both client and server hosts. It simply raises the `challenge ACK limit’ to an extremely large value to make it practically impossible to exploit the side channel. This can be done on Ubuntu, for instance, as follows:

            Open /etc/sysctl.conf, append a command “/net.ipv4/tcp_challenge_ack_limit = 999999999”.
            Use “sysctl -p” to update the configuration.

    Here's the paper presented [ucr.edu].

    --
    No, no, you're not thinking; you're just being logical. --Niels Bohr
    • (Score: 3, Informative) by Anonymous Coward on Wednesday August 10 2016, @03:26PM

      by Anonymous Coward on Wednesday August 10 2016, @03:26PM (#386282)

      Open /etc/sysctl.conf, append a command “/net.ipv4/tcp_challenge_ack_limit = 999999999”.
      Use “sysctl -p” to update the configuration.

      That should read:

                      Open /etc/sysctl.conf, append a command “net.ipv4.tcp_challenge_ack_limit = 999999999”.
                      Use “sysctl -p” to update the configuration.

      • (Score: 2) by NotSanguine on Wednesday August 10 2016, @03:55PM

        by NotSanguine (285) <NotSanguineNO@SPAMSoylentNews.Org> on Wednesday August 10 2016, @03:55PM (#386291) Homepage Journal

        Good catch. Thanks!

        That's what I get for just doing the copypasta and not proofreading other people's writing.

        --
        No, no, you're not thinking; you're just being logical. --Niels Bohr
        • (Score: 3, Insightful) by canopic jug on Wednesday August 10 2016, @04:04PM

          by canopic jug (3949) Subscriber Badge on Wednesday August 10 2016, @04:04PM (#386296) Journal

          Just skimming the paper, it looks like the problem is not Linux per se but the RFC itself, which is RFC 5961. The paper says this:

          The feature is outlined in RFC 5961, which is implemented faithfully in Linux kernel version 3.6 from late 2012

          So Linux is implementing the RFC as intended and there is where the bug is. The solution will be bigger than "just" patching the kernel.

          --
          Money is not free speech. Elections should not be auctions.
          • (Score: 0) by Anonymous Coward on Wednesday August 10 2016, @04:32PM

            by Anonymous Coward on Wednesday August 10 2016, @04:32PM (#386313)

            "So Linux is implementing the RFC as intended and there is where the bug is. The solution will be bigger than "just" patching the kernel."

            So... patching the RFC?

            (Can RFCs even be patched, or do they need to be revoked/reissued/rerequested?)

            • (Score: 0) by Anonymous Coward on Wednesday August 10 2016, @10:31PM

              by Anonymous Coward on Wednesday August 10 2016, @10:31PM (#386411)

              I think they update a header or footnote on them to state that, but otherwise keep them intact.

              And yeah RFCs can amend, revoke, or replace other RFCs, but the original RFC will not be changed.

          • (Score: 3, Interesting) by Nerdfest on Wednesday August 10 2016, @04:53PM

            by Nerdfest (80) on Wednesday August 10 2016, @04:53PM (#386321)

            Wonder why just Linux is mentioned. Does Windows implement the spec improperly? What about OSX?

            • (Score: 4, Informative) by NotSanguine on Wednesday August 10 2016, @05:07PM

              by NotSanguine (285) <NotSanguineNO@SPAMSoylentNews.Org> on Wednesday August 10 2016, @05:07PM (#386324) Homepage Journal

              Wonder why just Linux is mentioned. Does Windows implement the spec improperly? What about OSX?

              From the paper [ucr.edu]:

              The Linux kernel first implemented all the features sug-
              gested in RFC 5961, in version 3.6 in September 2012.
              The changes were backported to certain prior distribu-
              tions as well.

              Vulnerabilities in other OSes:
              We examine if the
              studied vulnerability exist in the latest Windows and
              FreeBSD OSes (The latter TCP stack is also used by
              Mac OS X). In brief, these OSes are not vulnerable to
              the attack. First of all, neither Windows nor FreeBSD
              has implemented all three conditions that trigger chal-
              lenge ACKs according to RFC 5961. More importantly,
              the ACK throttling is not found for Windows or MAC OS
              X.

              --
              No, no, you're not thinking; you're just being logical. --Niels Bohr
              • (Score: 2) by Nerdfest on Wednesday August 10 2016, @06:18PM

                by Nerdfest (80) on Wednesday August 10 2016, @06:18PM (#386341)

                Strange that neither OS has implemented a networking specification that's many years old ... but then again, it's Apple and Microsoft.

          • (Score: 5, Informative) by NotSanguine on Wednesday August 10 2016, @05:01PM

            by NotSanguine (285) <NotSanguineNO@SPAMSoylentNews.Org> on Wednesday August 10 2016, @05:01PM (#386322) Homepage Journal

            Just skimming the paper, it looks like the problem is not Linux per se but the RFC itself, which is RFC 5961. The paper says this:

            The feature is outlined in RFC 5961, which is implemented faithfully in Linux kernel version 3.6 from late 2012

            So Linux is implementing the RFC as intended and there is where the bug is. The solution will be bigger than "just" patching the kernel.

            I disagree. The issue is the implementation of this feature in the Linux kernel, not the specification in the RFC. The challenge_ack functionality is exploitable due to the linux implementation of ack throttling. To wit, the default (100) number of challenge acks is small and is a static value.

            There are ways to mitigate the vulnerability without modifying the challenge_ack functionality defined in RFC 5961. The paper's authors suggest several methods for this [ucr.edu]. One bypasses the mechanism completely (potentially causing other issues addressed in RFC 5961) and one that tweaks the implementation of ack throttling:

            The best defense strategy is to eliminate the side chan-
            nel (the global challenge ACK count) altogether. One
            can still enable the per-connection rate limit as long as
            each connection has a completely separate counter that
            does not interfere with those of other connections. The
            downside of this strategy is that if the number of connec-
            tions in a system increases, the aggregate challenge ACK
            count can go up without any bound.

            However, if one is really concerned about
            wasting resources on sending challenge ACKs, we sug-
            gest a second solution which is adding noise to the chan-
            nel. This is a common defense strategy in mitigating side
            channel attacks. Specifically, instead of having
            a fixed global challenge ACK count of 100 in all inter-
            vals, we can add random values (either positive or negative) for each interval. This will essentially confuse the
            attacker during the search process. In fact, even if the
            attacker repeats the probe many times, the result will al-
            ways differ over time. To ensure that the added random-
            ness is theoretically sound, one can even apply differ-
            ential privacy to systematically introduce noise, as was
            done recently in [28]. We leave the design of the exact
            scheme to add randomness to future work. We also plan
            to propose the defenses to the Linux community.

            What's more, the RFC's authors note the issues mentioned in TFA and paper and make the following statements about potential issues:

            From RFC 5961 [ietf.org]:

            7. ACK Throttling

                  In order to alleviate multiple RSTs/SYNs from triggering multiple
                  challenge ACKs, an ACK throttling mechanism is suggested as follows:

                  1) The system administrator can configure the number of challenge
                        ACKs that can be sent out in a given interval. For example, in
                        any 5 second window, no more than 10 challenge ACKs should be
                        sent.

                  2) The values for both the time and number of ACKs SHOULD be tunable
                        by the system administrator to accommodate different perceived
                        levels of threat and/or system resources.

                  It should be noted that these numbers are empirical in nature and
                  have been obtained from the RST throttling mechanisms existing in
                  some implementations. Also, note that no timer is needed to
                  implement the above mechanism, instead a timestamp and a counter can
                  be used.

                  An implementation SHOULD include an ACK throttling mechanism to be
                  conservative. While we have not encountered a case where the lack of
                  ACK throttling can be exploited, as a fail-safe mechanism we
                  recommend its use. An implementation may take an excessive number of
                  invocations of the throttling mechanism as an indication that network
                  conditions are unusual or hostile.

                  An administrator who is more concerned about protecting his bandwidth
                  and CPU utilization may set smaller ACK throttling values whereas an
                  administrator who is more interested in faster cleanup of stale
                  connections (i.e., concerned about excess TCP state) may decide to
                  set a higher value thus allowing more RST's to be processed in any
                  given time period.

                  The time limit SHOULD be tunable to help timeout brute force attacks
                  faster than a potential legitimate flood of RSTs.

            10. Security Considerations

                  These changes to the TCP state machine do NOT protect an
                  implementation from on-path attacks. It also needs to be emphasized
                  that while mitigations within this document make it harder for off-
                  path attackers to inject segments, it does NOT make it impossible.
                  The only way to fully protect a TCP connection from both on- and off-
                  path attacks is by using either IPsec Authentication Header (AH)
                  [RFC4302] or IPsec Encapsulating Security Payload (ESP) [RFC4303].

                  Implementers also should be aware that the attacks detailed in this
                  specification are not the only attacks available to an off-path
                  attacker and that the counter measures described herein are not a
                  comprehensive defense against such attacks.
            Emphasis added.

    • (Score: 2) by NotSanguine on Wednesday August 10 2016, @04:03PM

      by NotSanguine (285) <NotSanguineNO@SPAMSoylentNews.Org> on Wednesday August 10 2016, @04:03PM (#386295) Homepage Journal

      As an aside, the default value for net.ipv4.tcp_challenge_ack_limit appears to be '100'.

      --
      No, no, you're not thinking; you're just being logical. --Niels Bohr
  • (Score: 3, Funny) by Anonymous Coward on Wednesday August 10 2016, @03:04PM

    by Anonymous Coward on Wednesday August 10 2016, @03:04PM (#386278)

    Huh. The fortune reads:

    "Linux is obsolete -- Andrew Tanenbaum"

    ... +5, Touche, SoylentNews resident self-aware AI. +5, Touche.

  • (Score: 0) by Anonymous Coward on Wednesday August 10 2016, @03:27PM

    by Anonymous Coward on Wednesday August 10 2016, @03:27PM (#386283)

    pshaw! i always connect thru windows localhost 127.0.0.1 first ... it's rainbow-farts out of unicorns all the way down.

  • (Score: 4, Insightful) by Anonymous Coward on Wednesday August 10 2016, @03:33PM

    by Anonymous Coward on Wednesday August 10 2016, @03:33PM (#386284)
    Cough, cough, Android, cough, cough...
  • (Score: 4, Touché) by Thexalon on Wednesday August 10 2016, @03:44PM

    by Thexalon (636) on Wednesday August 10 2016, @03:44PM (#386286)

    In NSA HQ: "Gosh darn it, one of those stupid researchers caught us again! Time to work on Heartbleed 2.0 instead!"

    --
    "Think of how stupid the average person is. Then realize half of 'em are stupider than that." - George Carlin
  • (Score: 3, Informative) by Anonymous Coward on Wednesday August 10 2016, @05:35PM

    by Anonymous Coward on Wednesday August 10 2016, @05:35PM (#386330)

    As a network engineer, this doesn't read overly novel to me. Gain knowledge of the TCP sequence numbers, and you can muck about with TCP streams. We've been doing this for a long time, for example with firewall products that can forcibly close TCP sessions passing through them. Need to terminate a live TCP session? Send appropriate RST packets with correct sequence numbers in both directions. The firewall is in the routing path in the middle of the TCP stream, so it knows the sequence numbers, so it can do this. Some products such as Cisco ASA even randomise sequence numbers as TCP traffic passes through it, which I would presume mitigates this particular attack - whatever algorithm is used to predict the sequence numbers by the attacker no longer works.

    Even with gaining knowledge of the TCP sequence numbers, without being in the network path or without being able to manipulate the underlying /routing/ of your target's traffic over the networks it traverses, the number of attacks you can do are limited. It would be hard to actually take over a live TCP stream since traffic isn't routed to you. You could spoof traffic which the both ends might consider valid in terms of the TCP stream so causing disruption, but you couldn't MITM traffic directly just with sequence number knowledge alone. And as mentioned, encrypted traffic, whilst could be disrupted, is still immune to injection if the attacker were able to MITM the actual path traffic took.

    Having just read through RFC 5961 (yes I actually read something before responding!), I'm not sure how the suggested workaround of setting “net.ipv4.tcp_challenge_ack_limit = 999999999” mitigates the ability of the attacker guessing the sequence number. To me it reads as "allow the machine to send more Challenge ACKs per second than default". Kernel source docs say the default of this value is 100. A normal end user device isn't going to be creating/destroying 100 TCP sessions per second. A server might be doing so, perhaps. Setting this on most client machines sounds like opening the potential for a mini-non-amplifying-DOS attack in the making to me. What happens when the kernel needs to send more challenges than the configured limit, does it just accept the spoofed RSTs which are above limit instead of challenging them as per RFC 5961, hence the suggestion to increase the value? Maybe there's something about how Linux implements TCP which I'm not familiar with, it would be nice if someone could comment.

    If anything though, I can give credit that they found a way to /predict/ TCP sequence numbers from just source and destination IP. That on its own I will admit is a good find. I suspect without looking at the code submitted, the patches simply make Linux's sequence number generation more random and rely less on the source and destination IP. But the attacks on disrupting the TCP streams don't seem that new to me.

    • (Score: 4, Informative) by NotSanguine on Wednesday August 10 2016, @06:17PM

      by NotSanguine (285) <NotSanguineNO@SPAMSoylentNews.Org> on Wednesday August 10 2016, @06:17PM (#386340) Homepage Journal

      Having just read through RFC 5961 (yes I actually read something before responding!), I'm not sure how the suggested workaround of setting “net.ipv4.tcp_challenge_ack_limit = 999999999” mitigates the ability of the attacker guessing the sequence number. To me it reads as "allow the machine to send more Challenge ACKs per second than default".

      IIUC, the advantage in increasing the value of net.ipv4.tcp_challenge_ack_limit isn't to hinder the guessing of sequence numbers, rather it's to make it more difficult to identify existing TCP connections, termed "connection inference" in the paper [ucr.edu].

      Since such an attack (whether the goal is DoS or data corruption) is only viable if the attacker can identify an existing TCP virtual circuit, that's a critical piece of the exploit. Setting the value to be very high increases the cost (and the likelihood of exposing the attack) of such a mechanism.

      if you need to send roughly a billion RSTs within a one second window, and do so multiple times to enable identification of an existing connection, effecting such an attack becomes quite problematic.

      As is suggested in the paper, a better solution would be to randomly vary the challenge_ack_limit and the time frame under which it is applied.

      You're absolutely correct that there's nothing new WRT TCP sequence number guessing. However, to do so without being on the network path by using this mechanism is new, or at least newly publicized.

      --
      No, no, you're not thinking; you're just being logical. --Niels Bohr