* [PATCH 0/2] ima: limit both open-writers and ToMToU violations
@ 2025-02-19 16:21 Mimi Zohar
2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Mimi Zohar @ 2025-02-19 16:21 UTC (permalink / raw)
To: linux-integrity; +Cc: Mimi Zohar, roberto.sassu, Stefan Berger, Petr Vorel
Each time a file in policy, that is already opened for write, is opened
for read an open-writers integrity violation audit message is emitted
and a violation record is added to the IMA measurement list, even if an
open-writers violation has already been recorded.
Similalry each time a file in policy, that is already opened for read,
is opened for write a Time-of-Measure-Time-of-Use (ToMToU) integrity
violation audit message is emitted and a violation record is added to
the IMA measurement list, even if a ToMToU violation has already been
recorded.
Minimize the violations in the audit log and the IMA measurement list.
Mimi Zohar (2):
ima: limit the number of open-writers integrity violations
ima: limit the number of ToMToU integrity violations
security/integrity/ima/ima.h | 1 +
security/integrity/ima/ima_main.c | 16 ++++++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
--
2.48.1
^ permalink raw reply [flat|nested] 14+ messages in thread* [PATCH 1/2] ima: limit the number of open-writers integrity violations 2025-02-19 16:21 [PATCH 0/2] ima: limit both open-writers and ToMToU violations Mimi Zohar @ 2025-02-19 16:21 ` Mimi Zohar 2025-02-20 15:24 ` Stefan Berger ` (3 more replies) 2025-02-19 16:21 ` [PATCH 2/2] ima: limit the number of ToMToU " Mimi Zohar 2025-02-21 16:49 ` [PATCH 0/2] ima: limit both open-writers and ToMToU violations Roberto Sassu 2 siblings, 4 replies; 14+ messages in thread From: Mimi Zohar @ 2025-02-19 16:21 UTC (permalink / raw) To: linux-integrity; +Cc: Mimi Zohar, roberto.sassu, Stefan Berger, Petr Vorel Each time a file in policy, that is already opened for write, is opened for read an open-writers integrity violation audit message is emitted and a violation record is added to the IMA measurement list, even if an open-writers violation has already been recorded. Limit the number of open-writers integrity violations for an existing file open for write to one. After the existing file open for write closes (__fput), subsequent open-writers integrity violations may occur. Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> --- Change log v1: - Basesd on Stefan's RFC comments, updated the patch description and code. security/integrity/ima/ima.h | 1 + security/integrity/ima/ima_main.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h index a4f284bd846c..7f21568544dd 100644 --- a/security/integrity/ima/ima.h +++ b/security/integrity/ima/ima.h @@ -182,6 +182,7 @@ struct ima_kexec_hdr { #define IMA_CHANGE_ATTR 2 #define IMA_DIGSIG 3 #define IMA_MUST_MEASURE 4 +#define IMA_LIMIT_VIOLATIONS 5 /* IMA integrity metadata associated with an inode */ struct ima_iint_cache { diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c index 28b8b0db6f9b..cde3ae55d654 100644 --- a/security/integrity/ima/ima_main.c +++ b/security/integrity/ima/ima_main.c @@ -137,8 +137,13 @@ static void ima_rdwr_violation_check(struct file *file, } else { if (must_measure) set_bit(IMA_MUST_MEASURE, &iint->atomic_flags); - if (inode_is_open_for_write(inode) && must_measure) - send_writers = true; + + /* Limit number of open_writers violations */ + if (inode_is_open_for_write(inode) && must_measure) { + if (!test_and_set_bit(IMA_LIMIT_VIOLATIONS, + &iint->atomic_flags)) + send_writers = true; + } } if (!send_tomtou && !send_writers) @@ -167,6 +172,8 @@ static void ima_check_last_writer(struct ima_iint_cache *iint, if (atomic_read(&inode->i_writecount) == 1) { struct kstat stat; + clear_bit(IMA_LIMIT_VIOLATIONS, &iint->atomic_flags); + update = test_and_clear_bit(IMA_UPDATE_XATTR, &iint->atomic_flags); if ((iint->flags & IMA_NEW_FILE) || -- 2.48.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] ima: limit the number of open-writers integrity violations 2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar @ 2025-02-20 15:24 ` Stefan Berger 2025-02-20 18:26 ` Petr Vorel ` (2 subsequent siblings) 3 siblings, 0 replies; 14+ messages in thread From: Stefan Berger @ 2025-02-20 15:24 UTC (permalink / raw) To: Mimi Zohar, linux-integrity; +Cc: roberto.sassu, Petr Vorel On 2/19/25 11:21 AM, Mimi Zohar wrote: > Each time a file in policy, that is already opened for write, is opened > for read an open-writers integrity violation audit message is emitted > and a violation record is added to the IMA measurement list, even if an > open-writers violation has already been recorded. > > Limit the number of open-writers integrity violations for an existing > file open for write to one. After the existing file open for write > closes (__fput), subsequent open-writers integrity violations may occur. > > Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> Tested-by: Stefan Berger <stefanb@linux.ibm.com> > --- > Change log v1: > - Basesd on Stefan's RFC comments, updated the patch description and code. > > security/integrity/ima/ima.h | 1 + > security/integrity/ima/ima_main.c | 11 +++++++++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h > index a4f284bd846c..7f21568544dd 100644 > --- a/security/integrity/ima/ima.h > +++ b/security/integrity/ima/ima.h > @@ -182,6 +182,7 @@ struct ima_kexec_hdr { > #define IMA_CHANGE_ATTR 2 > #define IMA_DIGSIG 3 > #define IMA_MUST_MEASURE 4 > +#define IMA_LIMIT_VIOLATIONS 5 > > /* IMA integrity metadata associated with an inode */ > struct ima_iint_cache { > diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c > index 28b8b0db6f9b..cde3ae55d654 100644 > --- a/security/integrity/ima/ima_main.c > +++ b/security/integrity/ima/ima_main.c > @@ -137,8 +137,13 @@ static void ima_rdwr_violation_check(struct file *file, > } else { > if (must_measure) > set_bit(IMA_MUST_MEASURE, &iint->atomic_flags); > - if (inode_is_open_for_write(inode) && must_measure) > - send_writers = true; > + > + /* Limit number of open_writers violations */ > + if (inode_is_open_for_write(inode) && must_measure) { > + if (!test_and_set_bit(IMA_LIMIT_VIOLATIONS, > + &iint->atomic_flags)) > + send_writers = true; > + } > } > > if (!send_tomtou && !send_writers) > @@ -167,6 +172,8 @@ static void ima_check_last_writer(struct ima_iint_cache *iint, > if (atomic_read(&inode->i_writecount) == 1) { > struct kstat stat; > > + clear_bit(IMA_LIMIT_VIOLATIONS, &iint->atomic_flags); > + > update = test_and_clear_bit(IMA_UPDATE_XATTR, > &iint->atomic_flags); > if ((iint->flags & IMA_NEW_FILE) || > -- > 2.48.1 > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] ima: limit the number of open-writers integrity violations 2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar 2025-02-20 15:24 ` Stefan Berger @ 2025-02-20 18:26 ` Petr Vorel 2025-02-21 8:18 ` Petr Vorel 2025-02-21 16:56 ` Roberto Sassu 3 siblings, 0 replies; 14+ messages in thread From: Petr Vorel @ 2025-02-20 18:26 UTC (permalink / raw) To: Mimi Zohar; +Cc: linux-integrity, roberto.sassu, Stefan Berger Hi Mimi, > Each time a file in policy, that is already opened for write, is opened > for read an open-writers integrity violation audit message is emitted > and a violation record is added to the IMA measurement list, even if an > open-writers violation has already been recorded. > Limit the number of open-writers integrity violations for an existing > file open for write to one. After the existing file open for write > closes (__fput), subsequent open-writers integrity violations may occur. LGTM. Reviewed-by: Petr Vorel <pvorel@suse.cz> I also did a regression testing on LTP IMA tests on x86_64, aarch64, ppc64le. (not testing the feature itself, just really a very basic regression testing, therefore I do not dare to add my TBT). Kind regards, Petr ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] ima: limit the number of open-writers integrity violations 2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar 2025-02-20 15:24 ` Stefan Berger 2025-02-20 18:26 ` Petr Vorel @ 2025-02-21 8:18 ` Petr Vorel 2025-02-21 16:56 ` Roberto Sassu 3 siblings, 0 replies; 14+ messages in thread From: Petr Vorel @ 2025-02-21 8:18 UTC (permalink / raw) To: Mimi Zohar; +Cc: linux-integrity, roberto.sassu, Stefan Berger Hi Mimi, Tested-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/2] ima: limit the number of open-writers integrity violations 2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar ` (2 preceding siblings ...) 2025-02-21 8:18 ` Petr Vorel @ 2025-02-21 16:56 ` Roberto Sassu 3 siblings, 0 replies; 14+ messages in thread From: Roberto Sassu @ 2025-02-21 16:56 UTC (permalink / raw) To: Mimi Zohar, linux-integrity; +Cc: roberto.sassu, Stefan Berger, Petr Vorel On Wed, 2025-02-19 at 11:21 -0500, Mimi Zohar wrote: > Each time a file in policy, that is already opened for write, is opened > for read an open-writers integrity violation audit message is emitted > and a violation record is added to the IMA measurement list, even if an > open-writers violation has already been recorded. > > Limit the number of open-writers integrity violations for an existing > file open for write to one. After the existing file open for write > closes (__fput), subsequent open-writers integrity violations may occur. More precisely, may be emitted again. > Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> > --- > Change log v1: > - Basesd on Stefan's RFC comments, updated the patch description and code. Based. Could be also useful to have here what is changed. > security/integrity/ima/ima.h | 1 + > security/integrity/ima/ima_main.c | 11 +++++++++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/security/integrity/ima/ima.h b/security/integrity/ima/ima.h > index a4f284bd846c..7f21568544dd 100644 > --- a/security/integrity/ima/ima.h > +++ b/security/integrity/ima/ima.h > @@ -182,6 +182,7 @@ struct ima_kexec_hdr { > #define IMA_CHANGE_ATTR 2 > #define IMA_DIGSIG 3 > #define IMA_MUST_MEASURE 4 > +#define IMA_LIMIT_VIOLATIONS 5 I like to name variables in a way that it is clear what the intent is. Thinking about it, maybe: IMA_OPEN_WRITERS_EMITTED Thanks Roberto > /* IMA integrity metadata associated with an inode */ > struct ima_iint_cache { > diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c > index 28b8b0db6f9b..cde3ae55d654 100644 > --- a/security/integrity/ima/ima_main.c > +++ b/security/integrity/ima/ima_main.c > @@ -137,8 +137,13 @@ static void ima_rdwr_violation_check(struct file *file, > } else { > if (must_measure) > set_bit(IMA_MUST_MEASURE, &iint->atomic_flags); > - if (inode_is_open_for_write(inode) && must_measure) > - send_writers = true; > + > + /* Limit number of open_writers violations */ > + if (inode_is_open_for_write(inode) && must_measure) { > + if (!test_and_set_bit(IMA_LIMIT_VIOLATIONS, > + &iint->atomic_flags)) > + send_writers = true; > + } > } > > if (!send_tomtou && !send_writers) > @@ -167,6 +172,8 @@ static void ima_check_last_writer(struct ima_iint_cache *iint, > if (atomic_read(&inode->i_writecount) == 1) { > struct kstat stat; > > + clear_bit(IMA_LIMIT_VIOLATIONS, &iint->atomic_flags); > + > update = test_and_clear_bit(IMA_UPDATE_XATTR, > &iint->atomic_flags); > if ((iint->flags & IMA_NEW_FILE) || > -- > 2.48.1 > ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 2/2] ima: limit the number of ToMToU integrity violations 2025-02-19 16:21 [PATCH 0/2] ima: limit both open-writers and ToMToU violations Mimi Zohar 2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar @ 2025-02-19 16:21 ` Mimi Zohar 2025-02-20 15:24 ` Stefan Berger ` (3 more replies) 2025-02-21 16:49 ` [PATCH 0/2] ima: limit both open-writers and ToMToU violations Roberto Sassu 2 siblings, 4 replies; 14+ messages in thread From: Mimi Zohar @ 2025-02-19 16:21 UTC (permalink / raw) To: linux-integrity; +Cc: Mimi Zohar, roberto.sassu, Stefan Berger, Petr Vorel Each time a file in policy, that is already opened for read, is opened for write a Time-of-Measure-Time-of-Use (ToMToU) integrity violation audit message is emitted and a violation record is added to the IMA measurement list, even if a ToMToU violation has already been recorded. Limit the number of ToMToU integrity violations for an existing file open for read. Note: The IMA_MUST_MEASURE atomic flag must be set from the reader side based on policy. This may result in a per open reader additional ToMToU violation. Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> --- security/integrity/ima/ima_main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c index cde3ae55d654..f1671799a11b 100644 --- a/security/integrity/ima/ima_main.c +++ b/security/integrity/ima/ima_main.c @@ -129,9 +129,10 @@ static void ima_rdwr_violation_check(struct file *file, if (atomic_read(&inode->i_readcount) && IS_IMA(inode)) { if (!iint) iint = ima_iint_find(inode); + /* IMA_MEASURE is set from reader side */ - if (iint && test_bit(IMA_MUST_MEASURE, - &iint->atomic_flags)) + if (iint && test_and_clear_bit(IMA_MUST_MEASURE, + &iint->atomic_flags)) send_tomtou = true; } } else { -- 2.48.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ima: limit the number of ToMToU integrity violations 2025-02-19 16:21 ` [PATCH 2/2] ima: limit the number of ToMToU " Mimi Zohar @ 2025-02-20 15:24 ` Stefan Berger 2025-02-20 18:27 ` Petr Vorel ` (2 subsequent siblings) 3 siblings, 0 replies; 14+ messages in thread From: Stefan Berger @ 2025-02-20 15:24 UTC (permalink / raw) To: Mimi Zohar, linux-integrity; +Cc: roberto.sassu, Petr Vorel On 2/19/25 11:21 AM, Mimi Zohar wrote: > Each time a file in policy, that is already opened for read, is opened > for write a Time-of-Measure-Time-of-Use (ToMToU) integrity violation > audit message is emitted and a violation record is added to the IMA > measurement list, even if a ToMToU violation has already been recorded. > > Limit the number of ToMToU integrity violations for an existing file > open for read. > > Note: The IMA_MUST_MEASURE atomic flag must be set from the reader side > based on policy. This may result in a per open reader additional ToMToU > violation. > > Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> Tested-by: Stefan Berger <stefanb@linux.ibm.com> > --- > security/integrity/ima/ima_main.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c > index cde3ae55d654..f1671799a11b 100644 > --- a/security/integrity/ima/ima_main.c > +++ b/security/integrity/ima/ima_main.c > @@ -129,9 +129,10 @@ static void ima_rdwr_violation_check(struct file *file, > if (atomic_read(&inode->i_readcount) && IS_IMA(inode)) { > if (!iint) > iint = ima_iint_find(inode); > + > /* IMA_MEASURE is set from reader side */ > - if (iint && test_bit(IMA_MUST_MEASURE, > - &iint->atomic_flags)) > + if (iint && test_and_clear_bit(IMA_MUST_MEASURE, > + &iint->atomic_flags)) > send_tomtou = true; > } > } else { ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ima: limit the number of ToMToU integrity violations 2025-02-19 16:21 ` [PATCH 2/2] ima: limit the number of ToMToU " Mimi Zohar 2025-02-20 15:24 ` Stefan Berger @ 2025-02-20 18:27 ` Petr Vorel 2025-02-21 8:18 ` Petr Vorel 2025-02-21 17:36 ` Roberto Sassu 3 siblings, 0 replies; 14+ messages in thread From: Petr Vorel @ 2025-02-20 18:27 UTC (permalink / raw) To: Mimi Zohar; +Cc: linux-integrity, roberto.sassu, Stefan Berger Hi Mimi, LGTM. Reviewed-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ima: limit the number of ToMToU integrity violations 2025-02-19 16:21 ` [PATCH 2/2] ima: limit the number of ToMToU " Mimi Zohar 2025-02-20 15:24 ` Stefan Berger 2025-02-20 18:27 ` Petr Vorel @ 2025-02-21 8:18 ` Petr Vorel 2025-02-21 17:36 ` Roberto Sassu 3 siblings, 0 replies; 14+ messages in thread From: Petr Vorel @ 2025-02-21 8:18 UTC (permalink / raw) To: Mimi Zohar; +Cc: linux-integrity, roberto.sassu, Stefan Berger Hi Mimi, Tested-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ima: limit the number of ToMToU integrity violations 2025-02-19 16:21 ` [PATCH 2/2] ima: limit the number of ToMToU " Mimi Zohar ` (2 preceding siblings ...) 2025-02-21 8:18 ` Petr Vorel @ 2025-02-21 17:36 ` Roberto Sassu 2025-02-26 19:19 ` Mimi Zohar 3 siblings, 1 reply; 14+ messages in thread From: Roberto Sassu @ 2025-02-21 17:36 UTC (permalink / raw) To: Mimi Zohar, linux-integrity; +Cc: roberto.sassu, Stefan Berger, Petr Vorel On Wed, 2025-02-19 at 11:21 -0500, Mimi Zohar wrote: > Each time a file in policy, that is already opened for read, is opened > for write a Time-of-Measure-Time-of-Use (ToMToU) integrity violation > audit message is emitted and a violation record is added to the IMA > measurement list, even if a ToMToU violation has already been recorded. > > Limit the number of ToMToU integrity violations for an existing file > open for read. > > Note: The IMA_MUST_MEASURE atomic flag must be set from the reader side > based on policy. This may result in a per open reader additional ToMToU > violation. Probably the goal can be summarized as to limit emitting consecutive ToMToU violations. In the previous patch, we are not emitting a new open_writers violation until all writers close the file. Here, it is a bit different, we are not emitting an additional ToMToU violation until there is another reader matching the policy. Maybe we should highlight this difference. > Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> > --- > security/integrity/ima/ima_main.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c > index cde3ae55d654..f1671799a11b 100644 > --- a/security/integrity/ima/ima_main.c > +++ b/security/integrity/ima/ima_main.c > @@ -129,9 +129,10 @@ static void ima_rdwr_violation_check(struct file *file, > if (atomic_read(&inode->i_readcount) && IS_IMA(inode)) { > if (!iint) > iint = ima_iint_find(inode); > + > /* IMA_MEASURE is set from reader side */ > - if (iint && test_bit(IMA_MUST_MEASURE, > - &iint->atomic_flags)) > + if (iint && test_and_clear_bit(IMA_MUST_MEASURE, Since IMA_MUST_MEASURE is only used for violations, what if we rename it to: IMA_TOMTOU_MAY_EMIT Thanks Roberto > + &iint->atomic_flags)) > send_tomtou = true; > } > } else { ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ima: limit the number of ToMToU integrity violations 2025-02-21 17:36 ` Roberto Sassu @ 2025-02-26 19:19 ` Mimi Zohar 2025-02-27 8:34 ` Roberto Sassu 0 siblings, 1 reply; 14+ messages in thread From: Mimi Zohar @ 2025-02-26 19:19 UTC (permalink / raw) To: Roberto Sassu, linux-integrity; +Cc: roberto.sassu, Stefan Berger, Petr Vorel Hi Roberto, On Fri, 2025-02-21 at 18:36 +0100, Roberto Sassu wrote: > On Wed, 2025-02-19 at 11:21 -0500, Mimi Zohar wrote: > > Each time a file in policy, that is already opened for read, is opened > > for write a Time-of-Measure-Time-of-Use (ToMToU) integrity violation > > audit message is emitted and a violation record is added to the IMA > > measurement list, even if a ToMToU violation has already been recorded. > > > > Limit the number of ToMToU integrity violations for an existing file > > open for read. > > > > Note: The IMA_MUST_MEASURE atomic flag must be set from the reader side > > based on policy. This may result in a per open reader additional ToMToU > > violation. > > Probably the goal can be summarized as to limit emitting consecutive > ToMToU violations. Other audit messages and measurements could have been emitted, so they may not be consecutive. > > In the previous patch, we are not emitting a new open_writers violation > until all writers close the file. Here, it is a bit different, we are > not emitting an additional ToMToU violation until there is another > reader matching the policy. Maybe we should highlight this difference. > > > Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> > > --- > > security/integrity/ima/ima_main.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c > > index cde3ae55d654..f1671799a11b 100644 > > --- a/security/integrity/ima/ima_main.c > > +++ b/security/integrity/ima/ima_main.c > > @@ -129,9 +129,10 @@ static void ima_rdwr_violation_check(struct file *file, > > if (atomic_read(&inode->i_readcount) && IS_IMA(inode)) { > > if (!iint) > > iint = ima_iint_find(inode); > > + > > /* IMA_MEASURE is set from reader side */ > > - if (iint && test_bit(IMA_MUST_MEASURE, > > - &iint->atomic_flags)) > > + if (iint && test_and_clear_bit(IMA_MUST_MEASURE, > > Since IMA_MUST_MEASURE is only used for violations, what if we rename > it to: > > IMA_TOMTOU_MAY_EMIT How about naming the atomic flags as IMA_MAY_EMIT_TOMTOU and IMA_EMIT_OPENWRITERS? Mimi ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/2] ima: limit the number of ToMToU integrity violations 2025-02-26 19:19 ` Mimi Zohar @ 2025-02-27 8:34 ` Roberto Sassu 0 siblings, 0 replies; 14+ messages in thread From: Roberto Sassu @ 2025-02-27 8:34 UTC (permalink / raw) To: Mimi Zohar, linux-integrity; +Cc: roberto.sassu, Stefan Berger, Petr Vorel On Wed, 2025-02-26 at 14:19 -0500, Mimi Zohar wrote: > Hi Roberto, > > On Fri, 2025-02-21 at 18:36 +0100, Roberto Sassu wrote: > > On Wed, 2025-02-19 at 11:21 -0500, Mimi Zohar wrote: > > > Each time a file in policy, that is already opened for read, is opened > > > for write a Time-of-Measure-Time-of-Use (ToMToU) integrity violation > > > audit message is emitted and a violation record is added to the IMA > > > measurement list, even if a ToMToU violation has already been recorded. > > > > > > Limit the number of ToMToU integrity violations for an existing file > > > open for read. > > > > > > Note: The IMA_MUST_MEASURE atomic flag must be set from the reader side > > > based on policy. This may result in a per open reader additional ToMToU > > > violation. > > > > Probably the goal can be summarized as to limit emitting consecutive > > ToMToU violations. > > Other audit messages and measurements could have been emitted, so they may not > be consecutive. Ah, sorry, not well expressed. I meant if there is a second ToMToU violation after the first (read -> write -> write). Not consecutive means when there is a new measurement (more correct would be when there is a new policy match) on the same file to be invalidated. > > > > In the previous patch, we are not emitting a new open_writers violation > > until all writers close the file. Here, it is a bit different, we are > > not emitting an additional ToMToU violation until there is another > > reader matching the policy. Maybe we should highlight this difference. > > > > > Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> > > > --- > > > security/integrity/ima/ima_main.c | 5 +++-- > > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > > > diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c > > > index cde3ae55d654..f1671799a11b 100644 > > > --- a/security/integrity/ima/ima_main.c > > > +++ b/security/integrity/ima/ima_main.c > > > @@ -129,9 +129,10 @@ static void ima_rdwr_violation_check(struct file *file, > > > if (atomic_read(&inode->i_readcount) && IS_IMA(inode)) { > > > if (!iint) > > > iint = ima_iint_find(inode); > > > + > > > /* IMA_MEASURE is set from reader side */ > > > - if (iint && test_bit(IMA_MUST_MEASURE, > > > - &iint->atomic_flags)) > > > + if (iint && test_and_clear_bit(IMA_MUST_MEASURE, > > > > Since IMA_MUST_MEASURE is only used for violations, what if we rename > > it to: > > > > IMA_TOMTOU_MAY_EMIT > > How about naming the atomic flags as IMA_MAY_EMIT_TOMTOU and > IMA_EMIT_OPENWRITERS? Yes, I like them. Thanks Roberto ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/2] ima: limit both open-writers and ToMToU violations 2025-02-19 16:21 [PATCH 0/2] ima: limit both open-writers and ToMToU violations Mimi Zohar 2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar 2025-02-19 16:21 ` [PATCH 2/2] ima: limit the number of ToMToU " Mimi Zohar @ 2025-02-21 16:49 ` Roberto Sassu 2 siblings, 0 replies; 14+ messages in thread From: Roberto Sassu @ 2025-02-21 16:49 UTC (permalink / raw) To: Mimi Zohar, linux-integrity; +Cc: roberto.sassu, Stefan Berger, Petr Vorel On Wed, 2025-02-19 at 11:21 -0500, Mimi Zohar wrote: Hi Mimi > Each time a file in policy, that is already opened for write, is opened > for read an open-writers integrity violation audit message is emitted I would put a comma after 'for read' and remove the previous ones. > and a violation record is added to the IMA measurement list, even if an I would stop the sentence before 'even' and start a new sentence. IMA does not track previous violations, and emits a new one of the same kind, even if there was one before, resulting in redundant information being produced. The information might not be redundant though, if process-based credentials are added to the measurement list. In that case, more information about the process causing the violation would be shown. > open-writers violation has already been recorded. > > Similalry each time a file in policy, that is already opened for read, Typo. > is opened for write a Time-of-Measure-Time-of-Use (ToMToU) integrity > violation audit message is emitted and a violation record is added to > the IMA measurement list, even if a ToMToU violation has already been > recorded. > > Minimize the violations in the audit log and the IMA measurement list. I would describe more precisely how you are trying to minimize them. Thanks Roberto > Mimi Zohar (2): > ima: limit the number of open-writers integrity violations > ima: limit the number of ToMToU integrity violations > > security/integrity/ima/ima.h | 1 + > security/integrity/ima/ima_main.c | 16 ++++++++++++---- > 2 files changed, 13 insertions(+), 4 deletions(-) > > -- > 2.48.1 > ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-02-27 8:36 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-02-19 16:21 [PATCH 0/2] ima: limit both open-writers and ToMToU violations Mimi Zohar 2025-02-19 16:21 ` [PATCH 1/2] ima: limit the number of open-writers integrity violations Mimi Zohar 2025-02-20 15:24 ` Stefan Berger 2025-02-20 18:26 ` Petr Vorel 2025-02-21 8:18 ` Petr Vorel 2025-02-21 16:56 ` Roberto Sassu 2025-02-19 16:21 ` [PATCH 2/2] ima: limit the number of ToMToU " Mimi Zohar 2025-02-20 15:24 ` Stefan Berger 2025-02-20 18:27 ` Petr Vorel 2025-02-21 8:18 ` Petr Vorel 2025-02-21 17:36 ` Roberto Sassu 2025-02-26 19:19 ` Mimi Zohar 2025-02-27 8:34 ` Roberto Sassu 2025-02-21 16:49 ` [PATCH 0/2] ima: limit both open-writers and ToMToU violations Roberto Sassu
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.