Ted Leung on the air: Open Source, Java, Python, and ...
[via Links ]:
Earlier this year at CodeCon, Ben Laurie showed me the work that he had done on adding capabilties to Perl. Now he's put up a post with a pointer to the code and a little bit of documentation. He originally got interested in the problem because he was interested in adding capabilities to Python, but that turned out to be harder than he thought. Along the way, he formed some conclusions about Python and security:
Also, it seems the Python devlopers aren’t really interested in capabilities (nor all that interested in security, it seems, since the restricted execution mode is not maintained).
I don't think it's quite as a bad as Ben thinks, since he and I had some conversations with some Python developers and those folks were definitely interested in capability support. Of course, quite a few of them were a bit Twisted.
CaPerl is an alternative approach to adding capabilities which involves compiling a capability enhanced version of the language into the regular language. As to the rationale for doing this in Perl:
So, I did this for Perl, on the basis that if you can secure Perl you can surely secure anything.
I'm curious to see whether making the code available has any impact on the uptake of these ideas. Perhaps there will be some impetus in the Perl or Python communities to pick up on these ideas. When I saw Ben at Mind Camp, I suggested to him that perhaps the most profitable place to seed these ideas is the Ruby community, given the momentum hype of Rails, and the relative openness of the Ruby community to non-mainstream ideas.
I'd love to be proven wrong.
Posted by Trackback from Links at Mon Nov 28 01:39:52 2005
For what is an up-to-date security system for untrusted execution in Python, see:
http://svn.zope.org/Zope3/trunk/src/zope/security/untrustedinterpreter.txt?view=auto
Capabilities are essentially a subset of the above model. (Specifically, the subset where anybody who has a reference to a particular proxy has access to some fixed set of the proxied object's attributes/methods.) So, there's effectively already a nice capability system for running untrusted code in Python, and it doesn't need 'rexec' or anything like that to work.
Frankly, since I pointed Ben to that link eight months ago, I'm rather disappointed to hear that he's still spreading such shameful FUD.
Posted by Phillip J. Eby at Mon Nov 28 10:28:00 2005
Posted by Ian Bicking at Mon Nov 28 13:00:51 2005
Posted by Ian Bicking at Mon Nov 28 13:32:50 2005
One issue bigger than getting capabilities into a language (could be as easy as a lambda), is getting the libraries to follow good designs (i.e. POLA).
Backward compatibility and capability-based design are often at odds.
Posted by Patrick Logan at Mon Nov 28 15:19:08 2005
Posted by Ted Leung at Mon Nov 28 23:18:05 2005
You're right, but it has to start somewhere. It's not even that easy to get people to consider the idea of capability based security.
Posted by Ted Leung at Mon Nov 28 23:20:22 2005
To insert a URI, just type it -- no need to write an anchor tag.
Allowable html tags are:
<a href>
, <em>
, <i>
, <b>
, <blockquote>
, <br/>
, <p>
, <code>
, <pre>
, <cite>
, <sub>
and <sup>
.You can also use some Wiki style:
URI => [uri title]
<em> => _emphasized text_
<b> => *bold text*
Ordered list => consecutive lines starting spaces and an asterisk