2nd May 2001   [SBWID-4359]
	
COMMAND
	    kernel
	
	
SYSTEMS AFFECTED
	    unices
	
	
PROBLEM
	    Michal Zalewski  has released  a papers  named "Strange Attractors
	    and TCP/IP Sequence Number Analysis".  It can be found at
	
	        http://razor.bindview.com/publish/papers/tcpseq.html
	 
	 Update (11 September 2002), Michal Zalewski posted an updated paper :
	 ======
	        http://lcamtuf.coredump.cx/newtcp/
	
	    In the paper Michal describes the use of dynamical system  methods
	    to analyze and predict TCP initial sequence numbers.
	
	    Guardent has finally  seen fit to  release Tim Newsham's  paper on
	    the weaknesses of TCP initial sequence number algorithms that  use
	    random increments.  You can download it from
	
	        http://www.guardent.com/cgi-bin/pdfdownload.pl
	
	    Following is based on a CERT's advisory CA-2001-09.
	
	    Attacks against TCP initial sequence number (ISN) generation  have
	    been discussed  for some  time now.   The reality  of such attacks
	    led  to  the  widespread  use  of  pseudo-random number generators
	    (PRNGs) to introduce some  randomness when producing ISNs  used in
	    TCP connections.  Previous implementation defects in PRNGs led  to
	    predictable  ISNs  despite  some  efforts  to  obscure  them.  The
	    defects  were  fixed  and  thought  sufficient  to  limit a remote
	    attacker's ability  to attempt  ISN guessing.   It has  long  been
	    recognized that the  ability to know  or predict ISNs  can lead to
	    manipulation  or  spoofing  of  TCP  connections.   What  was  not
	    previously illustrated was just how predictable one commonly  used
	    method of  partially randomizing  new connection  ISNs is  in some
	    modern TCP/IP implementations.
	
	    A  new  vulnerability  has  been  identified  (CERT VU#498440, CVE
	    CAN-2001-0328) which  is present  when using  random increments to
	    constantly increase  TCP ISN  values over  time.   Because of  the
	    implications  of  the  Central  Limit  Theorem, adding a series of
	    numbers together  provides insufficient  variance in  the range of
	    likely  ISN  values  allowing  an  attacker  to  disrupt or hijack
	    existing  TCP  connections  or  spoof  future  connections against
	    vulnerable  TCP/IP  stack  implementations.   Systems  relying  on
	    random increments to  make ISN numbers  harder to guess  are still
	    vulnerable to statistical attack.
	
	    In 1985, Bob Morris  first identified potential security  concerns
	    with the TCP protocol.  One of his observations was that if a  TCP
	    sequence number could be  predicted, an attacker could  "complete"
	    a TCP handshake  with a victim  server without ever  receiving any
	    responses from the server.  One  result of the creation of such  a
	    "phantom" connection would be to  spoof a trusted host on  a local
	    network.
	
	    In 1989, Steve  Bellovin observed that  the "Morris" attack  could
	    be adapted to attack client connections by simulating  unavailable
	    servers  and   proposed  solutions   for  strengthening   TCP  ISN
	    generators.   In  1995,   the  CERT  Coordination  Center   issued
	    CA-1995-01,  which  first  reported  the  widespread  use  of such
	    attacks on the Internet at large.
	
	    Later in 1995, as part of RFC1948, Bellovin noted:
	
	        The initial sequence numbers are  intended to be more or  less
	        random.   More precisely,  RFC 793  specifies that  the 32-bit
	        counter be incremented  by 1 in  the low-order position  about
	        every  4  microseconds.   Instead,  Berkeley-derived   kernels
	        increment  it  by  a  constant  every  second,  and by another
	        constant  for  each  new  connection.   Thus,  if  you  open a
	        connection to  a machine,  you know  to a  very high degree of
	        confidence  what  sequence  number  it  will  use for its next
	        connection.  And therein lies the attack.
	
	    Also in 1995, work by  Laurent Joncheray further describes how  an
	    attacker could actively hijack a  TCP connection.  If the  current
	    sequence  number  is  known  exactly  and an attacker's TCP packet
	    sniffer and generator is located  on the network path followed  by
	    the connection, victim TCP connections could be redirected.
	
	    In his  recently published  paper on  this issue,  Tim Newsham  of
	    Guardent, Inc. summarizes the more generalized attack as follows:
	
	        As a result, if a sequence number within the receive window is
	        known, an attacker can inject data into the session stream  or
	        terminate the connection.  If  the ISN value is known  and the
	        number of bytes  sent already sent  is known, an  attacker can
	        send a simple packet to inject  data or kill the session.   If
	        these values are not known exactly, but an attacker can  guess
	        a  suitable  range  of  values,  he  can  send out a number of
	        packets with different sequence numbers in the range until one
	        is accepted.   The attacker need  not send a  packet for every
	        sequence number, but can send packets with sequence numbers  a
	        window-size  apart.  If  the  appropriate  range  of  sequence
	        numbers is  covered, one  of these  packets will  be accepted.
	        The total  number of  packets that  needs to  be sent  is then
	        given by the  range to be  covered divided by  the fraction of
	        the window size that is used as an increment.
	
	    Many TCP/IP implementers turned to incrementing the global tcp_iss
	    Initial  Send  Sequence  number,  a.k.a.,  an  ISN] variable using
	    pseudo-random variables instead of constants.  Unfortunately,  the
	    randomness of the pseudo-random-number generators (PRNGs) used  to
	    generate the "random" increments was sometimes lacking.  As  noted
	    in RFC1750:
	
	        It is important  to keep in  mind that the  requirement is for
	        data that an adversary has a very low probability of  guessing
	        or determining.  This will fail if pseudo-random data is  used
	        which only meets traditional statistical tests for  randomness
	        or which is  based on limited  range sources, such  as clocks.
	        Frequently  such  random  quantities  are  determinable  by an
	        adversary searching through  an embarrassingly small  space of
	        possibilities.
	
	    Eastlake,  Crocker,  and  Schiller  were  focused on randomness in
	    cryptographic  systems,   but  their   observation  was    equally
	    applicable in any system which relies on random number  generation
	    for security.  It has been noted in the past that using such  poor
	    PRNGs  can  lead  to  smaller  search  spaces  and  make  TCP  ISN
	    generators susceptible to practical brute-force attacks.
	
	    However, new research demonstrates that the algorithm  implemented
	    to generate ISN values in many TCP/IP stacks is statistically weak
	    and  susceptible  to  attack  even  when  the  PRNG  is adequately
	    randomizing  its  increments.   The  problem  lies  in  the use of
	    increments  themselves,  random  or  otherwise,  to advance an ISN
	    counter, making statistical guessing practical.
	
	    Tim Newsham  of Guardent,  Inc. has  written a  paper titled  "The
	    Problem with Random Increments" concerning an observed statistical
	    weakness   in   initial   sequence   number   generation  for  TCP
	    connections.   Newsham  explains  how  incrementing  the  ISN by a
	    series of  pseudo-random amounts  is insufficient  to protect some
	    TCP implementations from a  practical ISN guessing attack  in some
	    real-world  situations.   Such  attacks  would  not  rely  on data
	    sniffed from  a victim  site but  only on  one or  two ISN samples
	    collected  by  previous  connections   made  to  a  victim   site.
	    Newsham's statistical analyses provide a theoretical backdrop  for
	    practical attacks,  drawing attention  once again  to the protocol
	    analysis documented by Steve Bellovin (building on work  pioneered
	    by Robert Morris) in RFC1948.
	
	    Newsham  points  out  that  the  current  popular  use  of  random
	    increments  to  obscure  an  ISN  series  still  contains   enough
	    statistical information to  be useful to  an attacker, making  ISN
	    guessing practical enough to lead to TCP connection disruption  or
	    manipulation.   This attack  is possible  because an  attacker can
	    still predict within  "a suitable range  of values" what  the next
	    (or a  previous) ISN  for a  given TCP  connection may  be.   This
	    range can be derived when looking at the normal distribution  that
	    naturally arises  when adding  a large  number of  values together
	    (random  or  otherwise)  due  to  expected  values governed by the
	    Central Limit Theorem:
	
	        Roughly,   the   central   limit   theorem   states  that  the
	        distribution  of  the  sum  of  a large number of independent,
	        identically  distributed  variables   will  be   approximately
	        normal, regardless of the underlying distribution.
	
	    In addition  to statistical  analysis of  this weakness, Newsham's
	    paper demonstrates  the weakness  inherent in  one specific TCP/IP
	    implementation.   In  other  recently-published  research,  Michal
	    Zalewski  of  BindView  surveys  over  20 different ISN generators
	    included in many  of the most  widely available operating  systems
	    on the  Internet today.   Their work  shows in  graphic detail how
	    observable this statistical weakness is.
	
	    Analysts  at  BindView  have  produced  interesting  research that
	    analyzes  the  patterns  many  of  the  most popular TCP/IP stacks
	    produce  when  producing  ISNs.    In  a  paper  titled   "Strange
	    Attractors  and  TCP/IP  Sequence  Number Analysis," author Michal
	    Zalewski  uses  phase  analysis  to  show  patterns of correlation
	    within sets of 32-bit numbers generated by many popular  operating
	    systems' TCP ISN generators.  As Zalewski explains:
	
	        Our approach  is built  upon this  widely accepted observation
	        about attractors:
	
	        If a sequence exhibits strong attractor behavior, then  future
	        values in  the sequence  will be  close to  the values used to
	        construct previous points in the attractor.
	
	        Our  goal  is  to  construct  a  spoofing  set, and, later, to
	        calculate its relative quality by empirically calculating  the
	        probability of making the  correct ISN prediction against  our
	        test data.  For the purpose of ISN generators comparison ,  we
	        established a limit  of guess set  size at the  level of 5,000
	        elements, which is considered a limit for trivial attacks that
	        does  not  require  excessive  network bandwidth or processing
	        power and can be conducted within few seconds.
	
	    (A "spoofing set" is defined as "a set of guessed values for  ISNs
	    that are  used to  construct a  packet flood  that is  intended to
	    corrupt some established TCP  connections."  Please see  the paper
	    for  more  information  about  phase  space analysis and attractor
	    reconstruction).
	
	    In effect, using this  technique for data visualization,  they are
	    able  to  highlight  emergent   patterns  of  correlation.    Such
	    correlation, when present in TCP ISN generators, can  dramatically
	    shrink the  set of  numbers that  need to  be guessed  in order to
	    attack a TCP session.
	
	    Since the  sequence number  for TCP  sessions is  stored in packet
	    headers using 32-bits  of data, it  was generally assumed  that an
	    attacker would have  a very small  chance of correctly  guessing a
	    sequence  number  to  attack  established  (or  to-be established)
	    connections.   BindView's research  shows attackers  actually have
	    much smaller  bit-spaces to  guess within  due to  dependencies on
	    system clocks and other implementation defects.
	
	    Zalewski further notes in his paper:
	
	        What comes to our attention is that most every  implementation
	        described above, except maybe  current OpenBSD and Linux,  has
	        more or less serious  flaws that make short-time  TCP sequence
	        number  prediction  attacks  possible.   Solaris  7 and 8 with
	        tcp_strong_iss set to 2 results  are a clear sign there  are a
	        lot of things to do for system vendors.  We applied relatively
	        loose measures, classifying attacks as "feasible" if they  can
	        be  accomplished   using  relatively   low  bandwidth   and  a
	        reasonable  amount  of  time.   But,  as  network  speeds  are
	        constantly growing, it would be not a problem for an  attacker
	        having access to powerful  enough uplink to search  the entire
	        32-bit  ISN  space  in  several  hours,  assuming  a local LAN
	        connection to the victim host and assuming the network doesn't
	        crash, although an attack could be throttled to compensate.
	
	    The work done  by Guardent and  BindView illustrates that  not all
	    current  TCP/IP  ISN  generators  have implemented the suggestions
	    made by Steve Bellovin in RFC1948 to address prediction-based  ISN
	    attacks, or provided  a equivalent fixes.   In particular,  TCP/IP
	    stacks based on operating system software which has not previously
	    incorporated RFC1948  or equivalent  fixes will  be susceptible to
	    classic TCP  hijacking in  the absence  of other cryptographically
	    secure  hardening  (i.e.,  when  not  using IPSec or an equivalent
	    secure networking technology).   Much work remains  to be done  to
	    ensure  the  systems  deployed  using  TCP today and tomorrow have
	    strengthened their  ISN generators  using RFC1948  recommendations
	    or equivalent fixes.
	
	    If  the  ISN  of  an  existing  or  future  TCP  connection can be
	    determined within some practical  range, a malicious agent  may be
	    able to  close or  hijack the  TCP connections.   If the  ISNs  of
	    future connections of a system  are guessed exactly, an agent  may
	    be  able  to  "complete"  a  TCP  three-way handshake, establish a
	    phantom connection, and spoof TCP packets delivered to a victim.
	
	
SOLUTION
	    The design of TCP specified  by Jon Postel in RFC793  specifically
	    addressed the possibility of old packets from prior instantiations
	    of a connection being accepted as valid during new  instantiations
	    of  the  same   connection,  i.e.,  with   the  same  4-tuple   of
	    <local host, local port, remote host, remote port>:
	
	        To  avoid  confusion  we   must  prevent  segments  from   one
	        incarnation of  a connection  from being  used while  the same
	        sequence numbers may still be  present in the network from  an
	        earlier incarnation.   We want to  assure this, even  if a TCP
	        crashes and loses all knowledge of the sequence numbers it has
	        been  using.   When  new  connections  are created, an initial
	        sequence number  (ISN) generator  is employed  which selects a
	        new  32-bit  ISN.   The  generator  is  bound  to  a (possibly
	        fictitious) 32-bit  clock whose  low order  bit is incremented
	        roughly  every   4  microseconds.    Thus,   the  ISN   cycles
	        approximately every 4.55 hours.  Since we assume that segments
	        will stay  in the  network no  more than  the Maximum  Segment
	        Lifetime (MSL) and that the MSL is less than 4.55 hours we can
	        reasonably assume that ISN's will be unique.
	
	    In  the  discussions   following  the  initial   report  of   this
	    statistical  weakness,  several  approaches  to solving this issue
	    were  identified.   All  have  various  strengths  and  weaknesses
	    themselves.  Many have  been implemented independently by  various
	    vendors in response to  other reported weaknesses in  specific ISN
	    generators.
	
	    TCP initial sequence  numbers were not  designed to provide  proof
	    against    TCP    connection    attacks.        The    lack     of
	    cryptographically-strong  security  options  for  the  TCP  header
	    itself  is  a  deficiency  that  technologies  like  IPSec  try to
	    address.   It must  be noted  that in  the final  analysis, if  an
	    attacker has the ability to see unencrypted TCP traffic  generated
	    from a site, that site is vulnerable to various TCP attacks -  not
	    just those mentioned here.  The only definitive proof against  all
	    forms of  TCP attack  is end-to-end  cryptographic solutions  like
	    those outlined in various IPSec documents.
	
	    The key  idea with  an end-to-end  cryptographic solution  is that
	    there is some secure verification  that a given packet belongs  in
	    a particular stream.   However, the communications layer  at which
	    this cryptography is implemented will determine its  effectiveness
	    in repelling ISN based attacks.  Solutions that operate above  the
	    Transport Layer (OSI Layer 4), such as SSL/TLS and SSH1/SSH2, only
	    prevent  arbitrary  packets  from  being  inserted into a session.
	    They are unable to prevent a connection reset (denial of  service)
	    since  the  connection  handling  will  be  done  by a lower level
	    protocol  (i.e.,  TCP).   On  the  other  hand, Network Layer (OSI
	    Layer  3)  cryptographic  solutions  such  as  IPSec  prevent both
	    arbitrary packets entering a transport-layer stream and connection
	    resets because connection  management is directly  integrated into
	    the secure Network Layer security model.
	
	    The solutions presented above have the desirable attribute of  not
	    requiring any changes to the TCP protocol or implementations to be
	    made.   Some  sites  may  want  to  investigate  hardening the TCP
	    transport  layer  itself  though.   RFC2385  ("Protection  of  BGP
	    Sessions via the TCP MD5 Signature Option") and other technologies
	    provide options for adding cryptographic protection within the TCP
	    header  at  the  cost  of   some  potential  denial  of   service,
	    interoperability, and performance issues.
	
	    The  use  of  cryptographically   secure  protocols  has   several
	    advantages  over  other  possible   solutions  to  this   problem.
	    Protection against  hijacking and  disruption are  provided by the
	    cryptography, while the  TCP layer is  free to return  to a simple
	    increasing  sequence  number  mechanism,  providing  the  greatest
	    level   of   reliability.    The   performance,   durability,  and
	    practicality  of  implementation  will   vary  according  to   the
	    protocol  selected,  but  IPSec  in  particular  appears to have a
	    number of positive attributes in this regard.
	
	    In RFC1948, Bellovin observed that  if the 32-bit ISN space  could
	    be  segmented  across  all  the  ports  available  to  a   system,
	    collecting sample ISNs from  one connection could yield  little or
	    no  information   about  the   ISNs  being   generated  in   other
	    connections.  Breaking the reliance on a global ISN pool by  using
	    cryptographically  hashed   secrets  and   [IP,  port]    4-tuples
	    effectivly eliminates TCP ISN attacks by remote users (unless,  of
	    course,  attackers  able  to  sniff  traffic  on  a  local network
	    segment).
	
	    Newsham notes in his paper:
	
	        RFC 1948 proposes a method  of TCP ISN generation that  is not
	        vulnerable to  ISN guessing  attacks.   The solution  proposed
	        partitions the sequence space by connection identifiers.  Each
	        connection identifier, which is composed of the local  address
	        and port and the remote  address and port of a  connection, is
	        assigned its own unique  sequence space starting at  an offset
	        that is a function of the connection identifier.  The function
	        is chosen  in such  a way  that it  cannot be  computed by  an
	        attacker.  The  ISN is then  [...] generated by  increments to
	        this  offset.   ISN  values  generated  in  this  way  are not
	        vulnerable to  ISN range  prediction methods  outlined in this
	        paper since an attacker cannot gain knowledge of the ISN space
	        for any connection identifiers he cannot directly observe.
	
	    Once the  global ISN  space becomes  segmented among  all the  TCP
	    ports available on a  system, attacking TCP ISNs  remotely becomes
	    impractical.   However, it  should be  noted that  even when using
	    RFC1948 implementations,  some forms  of ISN  attack remain viable
	    under very  specific conditions,  as discussed  in further  detail
	    below.
	
	    In addition,  using a  cryptographically strong  hash function  to
	    perform  this  segmentation  may  lead  to  longer  TCP connection
	    establishment time.   Some implementors (like  those of the  Linux
	    kernel) have chosen  to use a  reduced-round MD4 hash  function to
	    provide a  "good enough"  solution from  a security  standpoint to
	    keep performance degradation to a minimum.  One cost of  weakening
	    the hash algorithm is the  need to re-key the generator  every few
	    minutes.  Each time a re-keying occurs, security is  strengthened,
	    but  other  reliability  issues  identified  in  RFC793  become  a
	    concern.
	
	    It had been understood (but not widely noted) that ISNs  generated
	    by a "strictly-compliant" RFC1948 generator would still allow  ISN
	    guessing attacks to be made against previously-owned IP addresses.
	    If  an  attacker  could  "own"  an  IP address used by a potential
	    victim at some point afterward, given enough sample ISNs collected
	    within the shared [IP, port] 4-tuple ISN space, an attacker  could
	    make reasonable guesses about the ISNs of subsequent connections.
	
	    This is because strict RFC1948 suggests the following algorithm:
	
	        ISN = M + F(sip, sport, dip, dport, <some secret>)
	
	    where
	
	        ISN   = 32-bit initial sequence number
	        M     = monotonically increasing clock/counter
	        F     = crypto hash (typically MD4 or MD5)
	        sip   = source IP
	        sport = source port
	        dip   = destination IP
	        dport = destination port
	
	<some secret> = an optional fifth input into the hash function
	                to make remote IP attacks unfeasible.
	
	    For the  ISN itself  to monotonically  (constantly) increase,  F()
	    needs to remain  fairly static.   So the <some  secret> envisioned
	    by Bellovin  was a  system-specific value  (such as  boot time,  a
	    passphrase, initial  random value,  etc) which  would infrequently
	    change.  Each time it changes,  the value of F() (a hash)  changes
	    and  there  is   no  guarantee  that   subsequent  ISNs  will   be
	    sufficiently distanced from  the previous value  assigned, raising
	    the potential RFC793 reliability concern again.
	
	    When  viewed  from  the  perspective  of  a  particular [IP, port]
	    4-tuple, the ISN sequence is predictable and therefore subject  to
	    practical attacks.   When looking  at the  Solaris  tcp_strong_iss
	    generator (RFC1948) from the perspective of a remote IP  attacker,
	    for  example,  the  ISNs  generated  appear  random.  However, the
	    Zalewski paper analyzes  data which looks  at both the  remote and
	    same-IP address attack vectors.   Their data confirms the  same-IP
	    attack  vector  against  Solaris  tcp_strong_iss=2  (RFC1948) is a
	    practical attack.
	
	    The Linux TCP  implementors avoided this  issue by rekeying  <some
	    secret>  every  five  minutes.   Unfortunately,  this  breaks  the
	    monotonicity of the algorithm, weakening the iron-clad reliability
	    guarantee that Bellovin was  hoping to preserve by  segmenting the
	    ISN space among ports in the first place.
	
	    Some have proposed  that the following  algorithm may be  a better
	    answer to this issue:
	
	        M   = M + R(t)
	        ISN = M + F(sip, sport, dip, dport, <some secret> )
	
	    where
	
	        R(t)   = some random value changing over time
	
	    This  is  essentially  adding  a  random  increment to the RFC1948
	    result.    This  makes   most  attacks   impractical,  but   still
	    theoretically possible.  (It would still be "RFC1948-compliant" as
	    well  ...  RFC1948  makes  as   few  assumptions  about  the   F()
	    incrementing  function  as  possible,  requiring  only  that   the
	    connection [IP, port] 4-tuple be  inputs to the function and  that
	    it be practically irreversible.)  However, the "problem" of random
	    increments was what brought this issue back into the spotlight  to
	    begin with.
	
	    A  more  direct  solution  chosen  by  some TCP implementors is to
	    simply feed random numbers directly into the ISN generator itself.
	    That is, given a 32-bit space to choose from, assign:
	
	        ISN = R(t)
	
	    Solutions which  essentially randomize  the ISN  seem to  mitigate
	    against the practical guessing  attack once and for  all (assuming
	    strong pseudo-random number generation).  However, a purely-random
	    approach   allows   for   overlapping   sequence   numbers   among
	    subsequently-generated  TCP   connnections  sharing   [IP,   port]
	    4-tuples.  For  example, a random  generator can produce  the same
	    ISN value three times  in a row.   This runs contrary to  multiple
	    RFC assumptions about monotonically increasing ISNs (RFC 793,  RFC
	    1185, RFC 1323, RFC1948, possibly others as well).  It is  unclear
	    what practical effect this will have on the long-term  reliability
	    guarantees the TCP protocol makes or is assumed to make.
	
	    Another novel approach introduced  by Niels Provos of  the OpenBSD
	    group  tries  to  strike  a  balance  between the fully-random and
	    segmented (RFC1948) approaches:
	
	        ISN = ((PRNG(t)) << 16) + R(t)
	
	    where
	
	        PRNG(t) = a pseudo-randomly ordered list of sequentially-generated 16-bit numbers
	        R(t)    = a 16-bit random number generator with its msb always set to zero
	
	    This  formula  is  an  approximation  of  the  results the OpenBSD
	    implementation actually generates.   Please see their actual  code
	    at:
	
	        http://www.openbsd.org/cgi-bin/cvsweb/src/sys/netinet/tcp_subr.c
	
	    What  the  Provos  implementation  effectively  does is generate a
	    psuedo-random sequence that will not generate duplicate ISN values
	    within  a  given  time  period.   Additionally,  each  ISN   value
	    generated is  guaranteed to  be at  least 32K  away from other ISN
	    values.  This avoids  the purely-random ISN collision  problem, as
	    well as makes  a stronger attempt  to keep sequence  number spaces
	    of subsequent [IP, port] 4-tuple connections from overlapping.  It
	    also avoids the  use of a  cryptographic hash which  could degrade
	    performance.  However,  monotonicity is lost,  potentially causing
	    reliability problems, and the generator may leak information about
	    the system's global ISN state.
	
	    Further  discussion  and  analysis  on  the  importance  of   such
	    attributes   needs   to   occur   in   order   to   ascertain  the
	    characteristics  present  in   each  ISN  generator   implemented.
	    Empirical evidence provided by  BindView may indicate that  from a
	    predictability standpoint,  the solutions  are roughly  equivalent
	    when viewed from  a remote attackers  perspective.  It  is unclear
	    at the time  of this writing  what the security,  performance, and
	    reliability tradeoffs truly are.
	
	    Cisco Systems
	    =============
	    Cisco systems now use a  completely random ISN generator.   Please
	    see the following for more details:
	
	        http://www.cisco.com/warp/public/707/ios-tcp-isn-random-pub.shtml
	
	    Compaq Computer Corporation
	    ===========================
	    At the time this document was written, Compaq is investigating the
	    potential  impact  to  Compaq's  Tru64  UNIX and OPENVMS operating
	    systems.   Compaq views  the problem  to be  a concern of moderate
	    severity.  Compaq implementations of TCP/IP sequence randomization
	    for Tru64  UNIX for  Alpha and  OpenVMS for  Alpha follow  current
	    practices for implementation of TCP/IP initial sequence numbers.
	
	    FreeBSD
	    =======
	    FreeBSD  has  adopted  the  code  and  algorithm  used  by OpenBSD
	    2.8-current in FreeBSD 4.3-RELEASE and later, and this release  is
	    therefore believed not to be vulnerable to the problems  described
	    in this advisory  (for patches and  information relating to  older
	    releases see  FreeBSD Security  Advisory 01:39).   They intend  to
	    develop code in the near  future implementing RFC 1948 to  provide
	    a more complete solution.
	
	    Fujitsu
	    =======
	    Fujitsu is currently  working on the  patches for the  UXP/V OS to
	    address the  vulnerabilities reported  in VU#498440.   The patches
	    will be made available with the following ID numbers:
	
	        OS Version,PTF level    patch ID
	        --------------------    --------
	        UXP/V V20L10 X01021    UX28164
	        UXP/V V20L10 X00091    UX28163
	        UXP/V V10L20 X01041    UX15529
	
	    Hewlett-Packard Company
	    =======================
	    HP has been tracking tcp randomization issues over the years, and
	    has to date implemented the following.
	      For 11.00 and 11.11 (11i):
	      --------------------------
	      For 11.00, if you want HP's solution for randomized ISN  numbers
	      then  apply  TRANSPORT   patch  PHNE_22397.    Once  you   apply
	      PHNE_22397, there's nothing more to do --- default is randomized
	      ISNs.  (Note: PHNE_22397 has patch dependencies unrelated to ISN
	      randomized  ISN  number  modification  listed  in the dependency
	      section, but they should still be  also applied.  One is a  PHKL
	      kernel patch dependency and  the other STREAMS/UX minimum  level
	      patch dependency.)  The LR  release of 11.11 (11i) has  the same
	      random ISN implementation as the patched 11.00.
	
	      For releases up to, but not including 10.30:
	      --------------------------------------------
	      HP  has  key  parameters  that  were  made tunable to be able to
	      select  two  levels  of  levels  of  randomization  with   patch
	      PHNE_5361, a TRANSPORT Megapatch,  which applies to releases  up
	      to (but not including) 10.30.  Check patch text for details.  It
	      is done with nettune, and requires a reboot:
	
	        tcp_random_seq set to 0  (Standard TCP sequencing)
	        tcp_random_seq set to 1  (Random TCP sequencing)
	        tcp_random_seq set to 2  (Increased Random TCP sequencing)
	
	    IBM
	    ===
	    IBM's AIX operating system should  not be vulnerable as they  have
	    implemented RFC 1948 in our source coding.  According to Guardent,
	    IBM do not expect an  exploit described in the document  to affect
	    their AIX OS because we employ RFC 1948.
	
	    Linux
	    =====
	    The Linux kernel  has used a  variant of RFC1948  by default since
	    1996.  Please see:
	
	        http://lxr.linux.no/source/drivers/char/ChangeLog#L258
	        http://lxr.linux.no/source/drivers/char/random.c#L1855
	
	    OpenBSD
	    =======
	    post-2.8  we  no  longer  use  random  increments, but a much more
	    sophisticated way.
	
	    SGI
	    ===
	    SGI implemented RFC  1948 with MD5  on IRIX 6.5.3  and above using
	    the  tcpiss_md5  tunable  kernel  parameter,  but  the  default is
	    disabled.   To  enablee  tcpiss_md5  kernel  parameter,  use   the
	    following command as root:
	
	        # /usr/sbin/systune -b tcpiss_md5 1
	
	    To verify  RFC 1948  has been  enabled in  IRIX, use the following
	    command as root:
	
	        # /usr/sbin/systune tcpiss_md5
	
	    This should return:
	
	        tcpiss_md5 = 1 (0x1)
	
	    Sun Microsystems
	    ================
	    Sun implemented RFC 1948 beginning with Solaris 2.6, but it  isn't
	    turned  on  by   default.   On   Solaris  2.6,  7   and  8,   edit
	    /etc/default/inetinit to set TCP_STRONG_ISS to 2.
	
	    On a running system, use:
	
	        ndd -set /dev/tcp tcp_strong_iss 2
	
	
TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2025 AOH