[Python-Dev] Re: Whither rexec?

Kevin Jacobs jacobs@penguin.theopalgroup.com
Wed, 8 Jan 2003 10:50:50 -0500 (EST)


On Wed, 8 Jan 2003, "Martin v. L=F6wis" wrote:
> Kevin Jacobs wrote:
> >   It has been said that the previous rexec functionality was ad hoc a=
nd
> >   brittle, and many better solutions are possible.  What better alter=
natives
> >   exist in terms of features offered, overall runtime performance, ea=
se of
> >   maintenance, and validation?
>=20
> I disagree with that statement. The approach taken by rexec is very=20
> straight forward, and, in principle, allows to impose arbitrary=20
> functional restrictions on untrusted code.

Good.  I only partly agree with it myself.  However, rexec _is_ brittle, =
as
demonstrated by the many incremental problems that keep popping up, even
pre-Python 2.2.

> So anybody working on this should see how rexec could be enhanced. IMO,=
=20
> of course.

I agree, though seeing how it can be fixed is not the same as deciding th=
at
it is the optimal solution.  I'm starting out with a very open mind and a=
m
purposely solicting for as much input as possible.

> >   Proxy objects              -- making unsafe objects safe(r)
[...]
> >   Restricted introspection   -- limiting the amount of information
> >                                 obtainable from exposed objects and
> >                                 environment
>=20
> Can somebody please explain how this is different from restricted=20
> environments? I.e. why would one restrict introspection in general, as=20
> long as you can't obtain information about the system?

The closure of all objects reachable (via introspection) from
a given starting set can be _very_ large and non-trivial to compute.=20
Limiting introspection is a simple way to close many of possible holes
through which references to untrusted objects can be obtained.

> >   Tainting                   -- tracking trusted status of objects
>=20
> This is clearly out of scope of rexec, and, IMO, not relevant for=20
> untrusted code. Tainting is about processing untrusted data by trusted =
code.

I don't think it is so clearly out of the scope of the space of all possi=
ble
restricted execution enviornments.  Tainting (used in a fairly liberal
sense) is one way to propogate the security status of objects without hav=
ing
to proxy them.

> >   Security policy management -- Configuration of how security mechani=
sms are
> >                                 applied
>=20
> I think rexec is quite flexible here, giving or denying access on a=20
> per-function basis (and allowing to provide wrappers for functions whic=
h=20
> must be restricted depending on the set of arguments).

I agree.

Thanks for your input,
-Kevin

--
Kevin Jacobs
The OPAL Group - Enterprise Systems Architect
Voice: (216) 986-0710 x 19         E-mail: jacobs@theopalgroup.com
Fax:   (216) 986-0714              WWW:    http://www.theopalgroup.com