Vigil@nce: Linux kernel, NULL dereference via put_tty_queue_nolock
December 2009 by Vigil@nce
A local attacker can use a terminal in order to stop the kernel or
to execute privileged code.
Severity: 2/4
Consequences: administrator access/rights, denial of service of
computer
Provenance: user shell
Means of attack: no proof of concept, no attack
Ability of attacker: expert (4/4)
Confidence: confirmed by the editor (5/5)
Diffusion of the vulnerable configuration: high (3/3)
Creation date: 03/12/2009
IMPACTED PRODUCTS
– Linux kernel
DESCRIPTION OF THE VULNERABILITY
The tty structure contains information of the terminal. The
tty->read_buf buffer holds the characters typed on the terminal.
The n_tty_close() method of the file drivers/char/n_tty.c frees
resources associated to the terminal (including tty->read_buf).
The put_tty_queue_nolock() method of the file drivers/char/n_tty.c
is called when a character is typed. It stocks it in
tty->read_buf. However, if a character is received while the
terminal is closing, tty->read_buf can be NULL. The
put_tty_queue_nolock() method therefore dereference a NULL pointer.
A local attacker can thus use a terminal in order to stop the
kernel.
An attacker can also use this vulnerability with
VIGILANCE-VUL-8953 (https://vigilance.fr/tree/1/8953)/VIGILANCE-VUL-8861
(https://vigilance.fr/tree/1/8861) in order to elevate his
privileges.
CHARACTERISTICS
Identifiers: 14605, BID-37147, VIGILANCE-VUL-9239
http://vigilance.fr/vulnerability/Linux-kernel-NULL-dereference-via-put-tty-queue-nolock-9239