<br><br><div><span class="gmail_quote">On 9/4/06, <b class="gmail_sendername">Ian Bicking</b> &lt;<a href="mailto:ianb@colorstudy.com">ianb@colorstudy.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Ivan Krstić wrote:<br>&gt;&gt; peer-to-peer code sharing that isn't entirely trusted (and I'm not sure<br>&gt;&gt; how feasible that is) then we'll need to really consider the security of<br>&gt;&gt; those communications.
<br>&gt;<br>&gt; It seems like the Sugar guys want to do this, but they're not providing<br>&gt; a security model, nor an explanation of how they're addressing it.<br>&gt; They're implementing mobile agents, and well, the security industry
<br>&gt; learned in the '90s that mobile agents don't work well at all. So, I'd<br>&gt; like to see some careful thought about security from them really soon,<br>&gt; or I'll be screaming murder.<br><br>Brett Cannon has been doing some work on a Python interpreter that has
<br>limited capabilities; i.e., the entire interpreter is hobbled so it<br>can't open files or do anything to effect the system, unless (I think) C<br>modules are specifically loaded to give it abilities.&nbsp;&nbsp;Kind of how<br>
Javascript works.&nbsp;&nbsp;At least, I think Brett has been working on something<br>like that.&nbsp;&nbsp;I don't know the status.&nbsp;&nbsp;I'll copy him to find out.</blockquote><div><br>So my work is being done in the bcannon-objcap branch of Python's svn repository.&nbsp; In that branch there is a text file named securing_python.txt that explains the approach to the security model as well as the current status.
<br><br>Basically I am making sure that Python, at the interpreter level (of which there can be several in a single process), can be sandboxed so that they don't harm the OS or other interpreters.&nbsp; Pure Python code will be safe based on the security settings that are turned on, but importing C modules will need to be whitelisted for importing since C code can obviously get around any security measure I implement.
<br><br>This is being actively worked on as it is part of my PhD dissertation to add Python to the web browser for client-side web scripting.&nbsp; The question is not if JavaScript-level protection will come into place, but how extensible and configurable it will be beyond that (it's all dependent on my supervisor wanting to fund the work if it drags on to make it more configurable instead of exactly what we need for my PhD).
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">With RPC and some security around RPC, this could be a useful strategy.<br>&nbsp;&nbsp;I'm not sure if PyGTK would be safe enough to expose to untrusted code
<br>-- it seems like it's exposing a lot, and I don't know if GTK is robust<br>enough or written with that kind of use in mind.&nbsp;&nbsp;Providing higher-level<br>known-safe interfaces would be possible, but using a restricted<br>
interpreter you couldn't write those higher level interfaces in Python.<br>&nbsp;&nbsp;They'd either have to be out-of-process (back to RPC, and I don't know<br>if writing a GUI app over RPC is reasonable), or the higher level<br>interfaces would have to be written in something like C or Pyrex.&nbsp;&nbsp;Which
<br>may be feasible.</blockquote><div><br>Yeah.&nbsp; Taking the the PyGTK API, writing a C module that wraps it in a safe manner, and then allow importation of that wrapper and not PyGTK would be the way to secure it.&nbsp; And with that you then choose whether the app can open aribtrary windows, or if there is a cap, or a request to open windows, etc.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Running untrusted code is very interesting, but also scary.&nbsp;&nbsp;OTOH,<br>anything we can do to make untrusted Python code possible also could be
<br>helpful as an introductory environment where children can safely<br>experiment with little danger of causing problems with their system.</blockquote><div><br>My hope is to come up with an interpreter that could run code uploaded by a random user to a web page without any worries of the system being harmed.&nbsp; Hopefully that is enough to let kids experiment without destroying their machines.
<br><br>-Brett<br></div></div>