[summerofcode] Resurrecting rexec?

Ian Bicking ianb at colorstudy.com
Tue Jun 7 17:48:33 CEST 2005


Adam Gundry wrote:
> Hi everyone,
> 
> I notice with interest that one of the project ideas on the Wiki 
> involves developing some form of restricted execution system[1] 
> (presumably updating rexec would be the best plan, but I'm not certain 
> how deeply broken it is in the new-style object model, so it might 
> involve a major rewrite).
> 
> I'm quite interested in applying for this project, but it's certainly 
> not an easy task. AFAIK nothing has been done since Guido decided to 
> sabotage both rexec and Bastion because of security concerns.
> 
> Do you think there would be much interest in this, both from prospective 
> mentors and the Python community as a whole? 

There's clearly a lot of people who are interested in this, so I think 
so.  Not me so much, because I know nothing about the details, but I'd 
be awfully suprised if no one was interested in mentoring.  And I think 
if everyone agrees it's important, but no one specifically had it in 
mind when the volunteered to mentor, that someone will step up.  And as 
a mentor you wouldn't even really need to know the details of this 
specific problem, since there's many other aspects to mentoring.  Maybe 
it's even better if, as a mentor, you aren't currently directly involved 
in the project you are mentoring -- otherwise it may be hard to step back.

> Reading the discussions on 
> python-dev[2] it looks as if an all-or-nothing solution is desired, but 
> I don't think that's ever likely to happen. Is it worth working on a 
> project that asymptotically approaches that security? Perhaps more 
> significantly, do I have any chance at getting a mentor if I propose to 
> do so?

Well, there does exist a reasonably (?) effective restricted execution 
environment inside of Zope.  Extracting that, even if the result isn't 
really what people want, would be useful -- as it is, I don't think 
people outside of the Zope world (or maybe even inside it) really 
understand the good or bad of that system.

But anyway, it clearly is a hard problem, and you shouldn't give a goal 
of "making rexec work", because there's a good chance you won't get 
there.  Instead, I would make experimentation and documentation a big 
part of the goal.  Start with summarizing the problems with rexec and 
Bastian -- you can get all that from mailing lists, but I don't know if 
it is fully summarized in any one place.  Write tests -- this is all 
very conducive to testing, and the summary you wrote should give you 
lots of failing tests to work on.  Try to fix one or two.  Analyze what 
you changed, repeat, refactor, rewrite, etc.  Document all your dead 
ends, not just your successes.

The benefit to the community will be largely in the artifacts you leave 
behind (assuming you don't actually resolve the problem), so being 
transparent and explicit about what you are doing is important.

-- 
Ian Bicking  /  ianb at colorstudy.com  /  http://blog.ianbicking.org


More information about the summerofcode mailing list