Florian Westphal e34b9ed96c netfilter: nf_tables: avoid skb access on nf_stolen
When verdict is NF_STOLEN, the skb might have been freed.

When tracing is enabled, this can result in a use-after-free:
1. access to skb->nf_trace
2. access to skb->mark
3. computation of trace id
4. dump of packet payload

To avoid 1, keep a cached copy of skb->nf_trace in the
trace state struct.
Refresh this copy whenever verdict is != STOLEN.

Avoid 2 by skipping skb->mark access if verdict is STOLEN.

3 is avoided by precomputing the trace id.

Only dump the packet when verdict is not "STOLEN".

Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2022-06-27 19:22:54 +02:00
..
2022-05-27 21:24:19 -07:00
2022-06-01 10:49:11 -07:00
2022-06-14 11:15:19 +02:00
2022-05-16 13:23:00 -06:00
2022-05-24 11:24:58 -03:00
2022-05-25 19:09:48 -07:00
2022-05-26 10:32:47 -07:00
2022-06-02 15:23:54 -07:00
2022-05-25 19:09:48 -07:00