On Wed, Sep 29, 2021 at 08:00:42PM +0100, Mark Brown wrote: > On Wed, Sep 29, 2021 at 11:54:55AM -0700, Kees Cook wrote: > > On Mon, Sep 27, 2021 at 01:50:56PM -0700, Josh Poimboeuf wrote: > > > > Even with that patch, it doesn't lock the task's runqueue before reading > > > the stack, so there's still the possibility of the task running on > > > another CPU and the unwinder going off the rails a bit, which might be > > > used by an attacker in creative ways similar to the /proc/<pid>/stack > > > vulnerability Jann mentioned earlier. > > > Since I think we're considering get_wchan() to be slow-path, can we just > > lock the runqueue and use arch_stack_walk_reliable()? > > Unfortunately arch_stack_walk_reliable() is only available for powerpc, > s390 and x86 currently - work is in progress to implement it for arm64 > as well but it's not there yet. Strictly speaking, we're only trying to fix this for x86+ORC. The other architectures (or non-ORC x86) already have their own non-ORC unwinders behind get_wchan(). They may have similar weaknesses (which should certainly be fixed), I think the first step here is to restore wchan under x86+ORC. -- Kees Cook