<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://50.77.162.165/mediawiki/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://50.77.162.165/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Virtualized_privileged_environment</id>
		<title>Virtualized privileged environment - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://50.77.162.165/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Virtualized_privileged_environment"/>
		<link rel="alternate" type="text/html" href="http://50.77.162.165/mediawiki/index.php?title=Virtualized_privileged_environment&amp;action=history"/>
		<updated>2026-04-20T00:44:24Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.15.5-7</generator>

	<entry>
		<id>http://50.77.162.165/mediawiki/index.php?title=Virtualized_privileged_environment&amp;diff=2126&amp;oldid=prev</id>
		<title>Kevin Reid at 01:38, 9 February 2011</title>
		<link rel="alternate" type="text/html" href="http://50.77.162.165/mediawiki/index.php?title=Virtualized_privileged_environment&amp;diff=2126&amp;oldid=prev"/>
				<updated>2011-02-09T01:38:30Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Problem==&lt;br /&gt;
&lt;br /&gt;
* The [[Category:E specification|E specification]] shall include [[Updoc]] tests.&lt;br /&gt;
* The chosen location for our E platform specification [[Category:E specification|is this wiki]].&lt;br /&gt;
* Wikis are editable by many people.&lt;br /&gt;
Therefore,&lt;br /&gt;
* There is a risk of malicious code inserted into our specification tests.&lt;br /&gt;
&lt;br /&gt;
We wish to be able to run Updoc tests, testing every aspect of an [[E implementation]], such that they can do no harm (beyond stopping the test suite from finishing, or making its output invalid).&lt;br /&gt;
&lt;br /&gt;
The [[E-on-Java]] [[cmdLoop]] has a confinement option, but it takes away all [[privilegedEnv]] elements, so the tests could not test streams, files and so on. [[E-on-CL]] provides a slightly larger set, but still does not provide file access.&lt;br /&gt;
&lt;br /&gt;
In general, we want to provide an environment that looks as close to the standard privileged environment as practical, but is actually completely confined — ''and yet still allows the tests to exercise as much of the implementation as practical.''&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
Given these constraints, the obvious solution is to make every [[privilegedEnv]] authority virtualizable. Here is a review of the privileged environment as implemented in [[E-on-Java]] (as of r802, 2011-02-08).&lt;br /&gt;
&lt;br /&gt;
===Completely obvious virtualization strategies===&lt;br /&gt;
&lt;br /&gt;
* [[stdout]], [[stderr]], [[print]], [[println]], [[interp]] — these are already virtualized/implemented by [[updoc]]/[[cmdLoop]]&lt;br /&gt;
* [[currentVat]] — might want to review Vat's authority grants&lt;br /&gt;
* [[privilegedScope]] — refers to itself&lt;br /&gt;
&lt;br /&gt;
These are defined in terms of other privileges in ScopeSetup, so they will be automatically virtual:&lt;br /&gt;
* [[makeSturdyRef]]&lt;br /&gt;
* [[timeMachine]]&lt;br /&gt;
* [[rune]] — Defined in terms of {{uriGetter|unsafe}}&lt;br /&gt;
* [[swtWatch]]&lt;br /&gt;
&lt;br /&gt;
===Reasonable virtualization strategies===&lt;br /&gt;
&lt;br /&gt;
* {{uriGetter|file}}, {{uriGetter|fileURL}} — [[Opaque file objects]]&lt;br /&gt;
&lt;br /&gt;
===Messier virtualization strategies===&lt;br /&gt;
* {{uriGetter|jar}} — {{XXX}}&lt;br /&gt;
* {{uriGetter|http}}, {{uriGetter|ftp}}, {{uriGetter|gopher}}, {{uriGetter|news}}, {{uriGetter|captp}}/[[introducer]]/[[identityMgr]]&lt;br /&gt;
** Option 1: Allow access to network, but restricted hosts.&lt;br /&gt;
** Option 2: Allow full access — we're not trying to bit-confine the tests, after all. Maybe prohibit LAN access — this would be generally useful as a security policy. &amp;quot;The Internet in general, but nothing local&amp;quot;&lt;br /&gt;
** Option 3: Allow test code to talk among itself only.&lt;br /&gt;
* stdin — This will be determined by how the test suite goes about testing stdin.&lt;br /&gt;
&lt;br /&gt;
===Impossible by definition===&lt;br /&gt;
However, these cannot be tested by untrusted test files anyway:&lt;br /&gt;
&lt;br /&gt;
* {{uriGetter|unsafe}}&lt;br /&gt;
&lt;br /&gt;
=== Tricky cases===&lt;br /&gt;
&lt;br /&gt;
* [[makeCommand]] (shell command/subprocess invocation)&lt;br /&gt;
&lt;br /&gt;
===GUI authorities===&lt;br /&gt;
* {{uriGetter|awt}}&lt;br /&gt;
* {{uriGetter|swing}}&lt;br /&gt;
* {{uriGetter|JPanel}}&lt;br /&gt;
* {{uriGetter|swt}}&lt;br /&gt;
* [[currentDisplay]]&lt;br /&gt;
* [[swtGrid__quasiParser]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Unresolved design issues]]&lt;/div&gt;</summary>
		<author><name>Kevin Reid</name></author>	</entry>

	</feed>