[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 11/15] flask: improve unknown permission handling
On Fri, Jun 17, 2016 at 01:02:58PM -0400, Daniel De Graaf wrote: > On 06/17/2016 11:45 AM, Konrad Rzeszutek Wilk wrote: > >On Thu, Jun 09, 2016 at 10:47:14AM -0400, Daniel De Graaf wrote: > >>When an unknown domctl, sysctl, or other operation is encountered in the > >>FLASK security server, use the allow_unknown bit in the security policy > >>to decide if the permission should be allowed or denied. This bit is > >>off by default, but it can be set by using checkpolicy -U allow when > >>compiling the policy. This allows new operations to be tested without > >>needing to immediately add security checks; however, it is not flexible > >>enough to avoid adding the actual permission checks. An error message > >>is printed to the hypervisor console when this fallback is encountered. > > > >.. and the operation is permitted. > > The error message is printed either way (with a different priority). Were correct. > you suggesting I expand this explanation to include both the error and > warning messages separately? It just that the patch changes the behavior. That is in the past if you had created an policy using checkpolicy -U allow it would print an error and return -EPERM. But now it will print an error and return 0 and pass the XSM check (aka operation ends being permitted). > > >> > >>Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> > >>--- > >> xen/xsm/flask/hooks.c | 44 > >> +++++++++++++++++++++++++--------------- > >> xen/xsm/flask/include/security.h | 2 ++ > >> xen/xsm/flask/ss/policydb.c | 1 + > >> xen/xsm/flask/ss/policydb.h | 6 ++++++ > >> xen/xsm/flask/ss/services.c | 5 +++++ > >> 5 files changed, 42 insertions(+), 16 deletions(-) > >> > >>diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c > >>index a8d45e7..3ab3fbf 100644 > >>--- a/xen/xsm/flask/hooks.c > >>+++ b/xen/xsm/flask/hooks.c > >>@@ -136,6 +136,23 @@ static int get_irq_sid(int irq, u32 *sid, struct > >>avc_audit_data *ad) > >> return 0; > >> } > >> > >>+static int avc_unknown_permission(const char *name, int id) > >>+{ > >>+ int rc; > > > >I would add a new line here. > > OK > > >>+ if ( !flask_enforcing || security_get_allow_unknown() ) > >>+ { > >>+ printk(XENLOG_G_WARNING "FLASK: Allowing unknown %s: %d.\n", name, > >>id); > >>+ rc = 0; > >>+ } > >>+ else > >>+ { > >>+ printk(XENLOG_G_ERR "FLASK: Denying unknown %s: %d.\n", name, id); > >>+ rc = -EPERM; > >>+ } > >>+ > >>+ return rc; > >>+} > >>+ > > > >The rest looks OK, but I have a question: Is this how Linux operates? > > Yes; selinux_nlmsg_perm for an unknown netlink message seems to be an > example there. > > -- > Daniel De Graaf > National Security Agency _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |