[X/B/D/E][PATCH 0/2] aufs: fixes for CVE-2020-11935

Mauricio Faria de Oliveira mfo at canonical.com
Mon Jun 29 18:31:08 UTC 2020


[Impact]

 * This patchset contains fixes for aufs's CVE-2020-11935.
 
 * The aufs filesystem might hit a kernel BUG() message
   under high load.
 
 * This may trigger a kernel panic/crash if panic_on_oops
   is enabled.  Otherwise, no harmful behavior is noticed.
   
 * One workaround is to clean the inode cache periodically:
   $ echo 2 | sudo tee /proc/sys/vm/drop-caches
   
[Fix]

 * The issue is fixed with 2 patches in aufs4-linux.git:
   - 515a586eeef3 aufs: do not call i_readcount_inc()
   - f10aea57d39d aufs: bugfix, IMA i_readcount

 * The first addresses the issue, and the second addresses a
   regression in the aufs feature to change RW branches to RO.

 * The aufs patches for v5.3+ have an equivalent fix to the
   second patch; it is present in Focal and later (not Eoan)
   (and on ubuntu-unstable/master & /master-5.8 as of Jun 29)
   - 1d26f910c53f aufs: for v5.3-rc1, maintain i_readcount
     (in aufs5-linux.git)

 * So, X/B/D/E need patches 1 and 2.
 * And F/G/Unstable need patch 1 only.
   
[Test Case]

 * Test cases are available internally, if needed.
   
[Regression Potential]

 * This changes the core path that aufs opens files, so there
   is a risk of regression; however, the fix changes aufs for
   how other filesystems work, so this generally is OK to do.
   In any case, regressions would likely happen in open() or
   close().
 
 * The aufs maintainer has access to an internal test-suite
   used to validate aufs changes, used to identify the first
   regression (in the branch RW/RO mode change), and then to
   validate/publish the patches upstream; should be good now.
   
 * This has also been tested with 'stress-ng --class filesystem'
   and with 'xfstests -overlay' (patch to use aufs vs overlayfs)
   on Xenial/Bionic/Focal (-proposed vs. -proposed + patches).
   No regressions observed in stress-ng/xfstests log or dmesg.
   (Also build-tested on Disco/Eoan.)

[Other Info]

 * Applied on Unstable (branches master and master-5.8)
 * Not required on Groovy (still 5.4; should sync from Unstable)
 * Required on LTS releases: Bionic and Focal and Xenial.
 * Required on other releases: Disco and Eoan (for custom kernels)

 * Sorry for the submission after scheduled last day for patches.
   Really wanted to have this upstream first specially given the
   maintainer's internal test-suite (that catched one regression
   not hit in my tests, because it's on corner case/feature path.)

J. R. Okajima (1):
  aufs: bugfix, IMA i_readcount

Mauricio Faria de Oliveira (1):
  aufs: do not call i_readcount_inc()

 fs/aufs/branch.c | 6 +++++-
 fs/aufs/vfsub.c  | 9 +--------
 2 files changed, 6 insertions(+), 9 deletions(-)

-- 
2.25.1




More information about the kernel-team mailing list