OpenAFS Master Repository branch, openafs-stable-1_8_x, updated. openafs-stable-1_8_2

Gerrit Code Review gerrit@openafs.org
Tue, 11 Sep 2018 15:00:53 -0400


The following commit has been merged in the openafs-stable-1_8_x branch:
commit fac3749f0d180e0ca229326c0e8568a60e17d3e9
Author: Mark Vitale <mvitale@sinenomine.net>
Date:   Fri Jul 6 01:09:53 2018 -0400

    OPENAFS-SA-2018-003 volser: prevent unbounded input to AFSVolForwardMultiple
    
    AFSVolForwardMultiple is defined with an input parameter that is defined
    to XDR as an unbounded array of replica structs:
      typedef replica manyDests<>;
    
    RPCs with unbounded arrays as inputs are susceptible to remote
    denial-of-service (DOS) attacks.  A malicious client may submit an
    AFSVolForwardMultiple request with an arbitrarily large array, forcing
    the volserver to expend large amounts of network bandwidth, cpu cycles,
    and heap memory to unmarshal the input.
    
    Even though AFSVolForwardMultiple requires superuser authorization, this
    attack is exploitable by non-authorized actors because XDR unmarshalling
    happens long before any authorization checks can occur.
    
    Add a bounding constant (NMAXNSERVERS 13) to the manyDests input array.
    This constant is derived from the current OpenAFS vldb implementation, which
    is limited to 13 replica sites for a given volume by the layout (size) of the
    serverNumber, serverPartition, and serverFlags fields.
    
    [kaduk@mit.edu: explain why this constant is used]
    
    (cherry picked from commit 97b0ee4d9c9d069e78af2e046c7987aa4d3f9844)
    
    Change-Id: I49945ce1fd5979eadf6d5b310dc6d8c68f6f8dc7

 src/volser/volint.xg |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

-- 
OpenAFS Master Repository