Files
linux/kernel
Ronny Chevalier 20d6cff3fc audit: fix use-after-free in audit_add_watch
[ Upstream commit baa2a4fdd5 ]

audit_add_watch stores locally krule->watch without taking a reference
on watch. Then, it calls audit_add_to_parent, and uses the watch stored
locally.

Unfortunately, it is possible that audit_add_to_parent updates
krule->watch.
When it happens, it also drops a reference of watch which
could free the watch.

How to reproduce (with KASAN enabled):

    auditctl -w /etc/passwd -F success=0 -k test_passwd
    auditctl -w /etc/passwd -F success=1 -k test_passwd2

The second call to auditctl triggers the use-after-free, because
audit_to_parent updates krule->watch to use a previous existing watch
and drops the reference to the newly created watch.

To fix the issue, we grab a reference of watch and we release it at the
end of the function.

Signed-off-by: Ronny Chevalier <ronny.chevalier@hp.com>
Reviewed-by: Richard Guy Briggs <rgb@redhat.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-09-26 08:35:08 +02:00
..
2018-05-30 07:49:17 +02:00
2018-01-23 19:50:10 +01:00
2015-11-04 08:23:51 -05:00
2014-08-08 15:57:18 -07:00
2015-04-12 21:03:31 +02:00
2015-11-23 09:44:58 +01:00
2014-12-04 14:34:54 -05:00
2017-05-20 14:27:02 +02:00
2017-07-05 14:37:19 +02:00
2015-01-17 10:02:23 +13:00
2015-11-05 19:34:48 -08:00
2018-05-16 10:06:47 +02:00