Thread (47 messages) 47 messages, 7 authors, 2020-10-03

Re: [RFC PATCH 5/6] security/fbfam: Detect a fork brute force attack

From: John Wood <hidden>
Date: 2020-09-15 18:46:55
Also in: linux-fsdevel, linux-security-module, lkml

On Mon, Sep 14, 2020 at 09:42:37PM +0200, Jann Horn wrote:
On Sun, Sep 13, 2020 at 7:55 PM John Wood [off-list ref] wrote:
quoted
On Thu, Sep 10, 2020 at 11:10:38PM +0200, Jann Horn wrote:
quoted
quoted
+       delta_jiffies = get_jiffies_64() - stats->jiffies;
+       delta_time = jiffies64_to_msecs(delta_jiffies);
+       crashing_rate = delta_time / (u64)stats->faults;
Do I see this correctly, is this computing the total runtime of this
process hierarchy divided by the total number of faults seen in this
process hierarchy? If so, you may want to reconsider whether that's
really the behavior you want. For example, if I configure the minimum
period between crashes to be 30s (as is the default in the sysctl
patch), and I try to attack a server that has been running without any
crashes for a month, I'd instantly be able to crash around
30*24*60*60/30 = 86400 times before the detection kicks in. That seems
suboptimal.
You are right. This is not the behaviour we want. So, for the next
version it would be better to compute the crashing period as the time
between two faults, or the time between the execve call and the first
fault (first fault case).

However, I am afraid of a premature detection if a child process fails
twice in a short period.

So, I think it would be a good idea add a new sysctl to setup a
minimum number of faults before the time between faults starts to be
computed. And so, the attack detection only will be triggered if the
application crashes quickly but after a number of crashes.

What do you think?
You could keep a list of the timestamps of the last five crashes or
so, and then take action if the last five crashes happened within
(5-1)*crash_period_limit time.
Ok, your proposed solution seems a more clever one. Anyway I think that a
new sysctl for fine tuning the number of timestamps would be needed.

Thanks,
John Wood
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help