This morning a message was posted on bugtraq by Blazde/Roland about the
recent Argus hacking contest at CeBit in Germany and an exploit he
discovered on one of the systems being protected by one of the products
in the Argus PitBull product line.  I wanted to give an unofficial
response to a few of the issues mentioned by Roland.  I'm an employee of
Argus (very technical, not marketing or sales, even though my title may
not give you that impression) and am very familiar with the PitBull LX
product that Roland was referring to.

As Roland mentioned, he located a misconfiguration in our integration of
the PitBull LX technology into the 'sysctl' system call.  This system call
makes a permission to see if a user can access its functionality.  'sysctl'
allows a 'root' user to modify the modprobe kernel parameters.  Therefore, a
user must first become root in order to exploit this.  In order to fix this
problem, a simple security flag access check needs to be added to this system
call.  Once in place, this ability will no longer be available to attackers
who are being restricted by the PitBull LX technology.

Unfortunately for Roland, he never actually managed break the system in the
way required for the contest.  The systems in the contest stayed up almost
half a day past the end of the contest, and much of Roland's work was done
during that time.  Roland did a great job of analyzing the system and
showed a lot of persistence in tracking down potential exploits.  I can
understand his frustration for coming so close but missing the deadline.

Apparently Roland's frustration was showing when he commented about the
web sites "disappearing" and Argus not wanting to release an official
press release.  After each hacking contest, Argus disconnects the systems
associated with hacking contest  -- the CeBit contest was no different.
The systems weren't even shut down immediately, they were left running
for many hours.  There was nothing diabolical about the fact that the
systems were eventually shut down.  This was definitely not an attempt
to squeek by without noticing that something had happened.

In fact, it was when the administrators of this contest logged in via
sshd in order to shut down the systems that they tripped the "trojan"
that Roland had put into place. Unfortunately, the code that was run
by Roland did not modify the system in the proscribed way by the rules,
and in fact was run after the contest had ended.

There also seems to be a misunderstanding here about Argus not wanting
the fact that this occurred to be made public.  While we of course wish
that we would have put the check into the 'sysctl' system call for
security flags so that Roland would not have found a way to use it to
his advantage, the fact is that Roland did in fact find a way to do it.

The fact is that we received specific information on the exploit
Wednesday in the late afternoon (Central Standard Time).  The post to
BugTraq was made available Friday morning. I believe that it is extremely
unfortunate that we were not given much more than 24 hours to produce
a patch for the problem, run it through our quality assurance group,
and notify our customers and members of this forum of the problem.  Let
alone to release a press release that discusses the events.

I am also sorry that Roland feels that we were unresponsive in regards
to this problem. This is particularly troubling, as we are a company
that prides itself on our responsiveness and support of our products.
I believe this is very significant in an industry where the standard
is to either blame any problems a companies software has on another
vendor (it must be the OS's fault, or 'oh! your using X's product,
well you should call them'), or to simply not return queries in
anything close to a timely manner.

With that said, a source code patch for the kernel is being attached to
this message, and will be made available on the main Argus corporate web
site as well as the Argus Revolution server. We are also notifying our
customers of the problem.

For Argus, PitBull LX is an extremely new product (our other mainstay
product PitBull Foundation has been around for years). PitBull LX is
the next generation of Trusted Operating System technology, and was
designed from the ground up to provide the most important pieces of
functionality that are found in traditional Trusted Operating Systems,
but in a way that more closely matches the standard Unix environment
and the security models that are being used in the real world to protect
these systems.  We are understandably very proud of the product, and had
the confidence in the technology to make it a part of these contests in
order to expose the technology to the world, and to put it in the ring
(so to speak). It is gratifying to know that after spending a lot of
time involving himself with the technology, and finding a problem in our
security flag checks, that Roland still thinks highly of the technology.

While we are hard at work making sure that our PitBull LX technology and
product is properly integrated into the Linux environment, it is my hope
that if additional problems are found in the product as it grows, we will
be given the opportunity to demonstrate our responsiveness and dedication
to providing a real security solution, rather than just snake oil.

Sincerely,

Jeff Thompson (aka Mythrandir)
Software Evangelist and Visionary
Argus Systems Group, Inc.
http://www.argus-systems.com/
http://www.argusrevolution.com/
Patch ID: ASGLX20010301


Vulnerability:

A root process may use sysctl(2) to modify kernel variables regardless of
PitBull LX attributes.

Fix:

A process using sysctl(2) to modify a kernel variable will be subject to
a PitBull attribute check.  If the process has the ASG_RES_SYS flag set, the
process will be unable to write new values to variables.  If the process
does not have the ASG_RES_SYS flag set, the process is only subject to the
standard linux attribute checks.

Caveat:

This PitBull LX attribute check will also apply to process attempting to
modify the variable by writing to its corresponding "/proc/sys" entry.

Prerequisites:

This is a source patch to the linux-2.2.16-argus source tree.  This patch
requires the installation of argus_kernel-source-1.0-2.2.16.i386.rpm.  This
package can be found in the product directory of the installation CD.

Installation:

1) Change your working directory to "/usr/src/linux-2.2.16-argus".

2) Copy the patch "ASGLX20010330" to this directory.

3) Run the command "patch -p1 < ./ASGLX20010301.patch".

4) The source tree is now patched.  You will now need to rebuild your kernel
   using following the guidelines presented in chapter 11 (Building a
   Customized Kernel) of the PitBull LX Administration Guide.
diff -Nur linux-2.2.16/kernel/sysctl.c linux-2.2.16-argus/kernel/sysctl.c
--- linux-2.2.16/kernel/sysctl.c        Fri Mar 30 15:22:03 2001
+++ linux-2.2.16-argus/kernel/sysctl.c  Fri Mar 30 18:45:58 2001
@@ -1,4 +1,14 @@
 /*
+ * Portions of this code Copyright (c) 2000-2001 by Argus Systems Group, Inc.
+ *
+ * http://www.argus-systems.com
+ *
+ *
+ *
+ *
+ */
+
+/*
  * sysctl.c: General linux system control interface
  *
  * Begun 24 March 1995, Stephen Tweedie
@@ -29,6 +39,10 @@
 #include <linux/nfs_fs.h>
 #endif
 
+#ifdef CONFIG_ARGUS
+#include <linux/secmod.h>
+#endif /* CONFIG_ARGUS */
+
 #if defined(CONFIG_SYSCTL)
 
 /* External variables not in a header file. */
@@ -353,6 +367,14 @@
 
 static int test_perm(int mode, int op)
 {
+
+#ifdef CONFIG_ARGUS
+        if((op == S_IWOTH) && (SECFUNC(SECMOD_RESTRICT_SYS)))
+        {
+                return(-EACCES);
+        }
+#endif /* CONFIG_ARGUS */
+
        if (!current->euid)
                mode >>= 6;
        else if (in_egroup_p(0))

Reply via email to