[Python-checkins] r55632 - in python/branches/bcannon-objcap: BRANCH_NOTES secure_python.c tests/fail/builtin_execfile--NameError.py tests/fail/builtin_open--NameError.py tests/fail/execfile__builtin__--AttributeError.py tests/fail/execfile__builtins__--AttributeError.py tests/fail/file_constructor--TypeError.py tests/fail/import_unsafe_builtin--ImportError.py tests/fail/import_unsafe_extension--ImportError.py tests/fail/open__builtin__--AttributeError.py tests/fail/open__builtins__--AttributeError.py tests/succeed/import_py.py tests/succeed/import_safe_builtin.py tests/succeed/import_safe_extension.py

brett.cannon python-checkins at python.org
Tue May 29 03:31:38 CEST 2007


Author: brett.cannon
Date: Tue May 29 03:31:34 2007
New Revision: 55632
Modified:
 python/branches/bcannon-objcap/BRANCH_NOTES
 python/branches/bcannon-objcap/secure_python.c
 python/branches/bcannon-objcap/tests/fail/builtin_execfile--NameError.py
 python/branches/bcannon-objcap/tests/fail/builtin_open--NameError.py
 python/branches/bcannon-objcap/tests/fail/execfile__builtin__--AttributeError.py
 python/branches/bcannon-objcap/tests/fail/execfile__builtins__--AttributeError.py
 python/branches/bcannon-objcap/tests/fail/file_constructor--TypeError.py
 python/branches/bcannon-objcap/tests/fail/import_unsafe_builtin--ImportError.py
 python/branches/bcannon-objcap/tests/fail/import_unsafe_extension--ImportError.py
 python/branches/bcannon-objcap/tests/fail/open__builtin__--AttributeError.py
 python/branches/bcannon-objcap/tests/fail/open__builtins__--AttributeError.py
 python/branches/bcannon-objcap/tests/succeed/import_py.py
 python/branches/bcannon-objcap/tests/succeed/import_safe_builtin.py
 python/branches/bcannon-objcap/tests/succeed/import_safe_extension.py
Log:
Flesh out import tests along with built-in object access.
Modified: python/branches/bcannon-objcap/BRANCH_NOTES
==============================================================================
--- python/branches/bcannon-objcap/BRANCH_NOTES	(original)
+++ python/branches/bcannon-objcap/BRANCH_NOTES	Tue May 29 03:31:34 2007
@@ -3,17 +3,35 @@
 =======
 Attempt to develop some form of security model for Python.
 
-=====
-Usage
-=====
+
+==================
+Build instructions
+==================
 1. Build Python as normal.
 2. Run ``build_secure_py.sh`` to build ``secure_python.exe``.
 
-======
-Status
-======
-* Turn on whitelisting.
- - Verify injecting 'open' into importlib works.
+
+=======
+Testing
+=======
+Execute ``run_security_tests.py`` with ``secure_python.exe`` to run security
+tests. Do not expect normal tests to pass as critical modules might be blocked
+from being imported.
+
+
+=============
+Failing Tests
+=============
+* Lib/tests/test_xmlrpc.py
+ + Fails with insecure Python.
+ + Requires sys.setdefaultencoding() which is deleted by site.py .
+ + reload(sys) normally adds it, but hack to do a fresh import on sys is
+ preventing that from happening somehow.
+
+
+=====
+To Do
+=====
 * Write tests.
 - Import
 + Delegate protects importlib.
@@ -21,14 +39,10 @@
 * Name fall-through to alternate implementation.
 + '.hidden' cannot be imported.
 + Removed modules cannot be imported (unless whitelisted).
- - Built-in namespace properly cleansed.
- + Nothing exposed through __builtin__ or __builtins__.
+ + 'sys' not exposed on any modules needed for interpreter.
 - Types crippled.
- + file
 + code
-* Fix 'sys' module reloading.
- - test_xmlrpc relies on reloading sys to get setdefaultencoding, but hack
- to allow re-import of sys doesn't let this work.
+
 
 ==========
 References
Modified: python/branches/bcannon-objcap/secure_python.c
==============================================================================
--- python/branches/bcannon-objcap/secure_python.c	(original)
+++ python/branches/bcannon-objcap/secure_python.c	Tue May 29 03:31:34 2007
@@ -27,6 +27,7 @@
 PyObject *import_module;
 PyObject *import_callable;
 Py_ssize_t safe_builtins_count = 7;
+ /* All whitelisted modules should be imported in the proper test file. */
 const char *safe_builtins_names[] = {"_ast", "_codecs", "_sre",
 					 "_symtable", "_types", "errno",
 					 "exceptions"};
@@ -34,9 +35,18 @@
 const char *safe_frozen_names[] = {};
 PyObject *safe_builtins_seq;
 PyObject *safe_frozen_seq;
- Py_ssize_t safe_extensions_count = 5;
- const char *safe_extensions_names[] = {"binascii", "cmath", "math",
-					 "operator", "time"};
+ Py_ssize_t safe_extensions_count = 18;
+ /* All whitelisted modules should be imported in the proper test file. */
+ const char *safe_extensions_names[] = {"_bisect", "_collections", "_csv",
+					 "_functools", "_hashlib",
+					 "_heapq", "_random",
+					 "_struct", "_weakref",
+					 "array",
+					 "binascii", "cmath",
+					 "itertools",
+					 "math",
+					 "operator",
+					 "time", "unicodedata", "zlib"};
 PyObject *safe_extensions_seq;
 
 /* Initialize interpreter. */
Modified: python/branches/bcannon-objcap/tests/fail/builtin_execfile--NameError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/builtin_execfile--NameError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/builtin_execfile--NameError.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
+"""'execfile' should not be in the built-in namespace."""
 _ = execfile
Modified: python/branches/bcannon-objcap/tests/fail/builtin_open--NameError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/builtin_open--NameError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/builtin_open--NameError.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
+"""'open' should not be in the built-in namespace."""
 _ = open
Modified: python/branches/bcannon-objcap/tests/fail/execfile__builtin__--AttributeError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/execfile__builtin__--AttributeError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/execfile__builtin__--AttributeError.py	Tue May 29 03:31:34 2007
@@ -1,2 +1,3 @@
+"""'execfile' should not be accessible from __builtin__."""
 import __builtin__
 __builtin__.execfile
Modified: python/branches/bcannon-objcap/tests/fail/execfile__builtins__--AttributeError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/execfile__builtins__--AttributeError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/execfile__builtins__--AttributeError.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
+"""'execfile' should not be accessible from __builtins__."""
 __builtins__.execfile
Modified: python/branches/bcannon-objcap/tests/fail/file_constructor--TypeError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/file_constructor--TypeError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/file_constructor--TypeError.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
+"""The constructor for 'file' should not work to open a file."""
 _ = file('README', 'r')
Modified: python/branches/bcannon-objcap/tests/fail/import_unsafe_builtin--ImportError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/import_unsafe_builtin--ImportError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/import_unsafe_builtin--ImportError.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
+"""You should not be able to import non-whitelisted modules, especially sys."""
 import sys
Modified: python/branches/bcannon-objcap/tests/fail/import_unsafe_extension--ImportError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/import_unsafe_extension--ImportError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/import_unsafe_extension--ImportError.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
-import termios
+"""Importing non-whitelisted extension modules should fail."""
+import thread
Modified: python/branches/bcannon-objcap/tests/fail/open__builtin__--AttributeError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/open__builtin__--AttributeError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/open__builtin__--AttributeError.py	Tue May 29 03:31:34 2007
@@ -1,2 +1,3 @@
+"""'open' should not exist in __builtin__."""
 import __builtin__
 __builtin__.open
Modified: python/branches/bcannon-objcap/tests/fail/open__builtins__--AttributeError.py
==============================================================================
--- python/branches/bcannon-objcap/tests/fail/open__builtins__--AttributeError.py	(original)
+++ python/branches/bcannon-objcap/tests/fail/open__builtins__--AttributeError.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
+"""'open' should not be in __builtins__."""
 __builtins__.open
Modified: python/branches/bcannon-objcap/tests/succeed/import_py.py
==============================================================================
--- python/branches/bcannon-objcap/tests/succeed/import_py.py	(original)
+++ python/branches/bcannon-objcap/tests/succeed/import_py.py	Tue May 29 03:31:34 2007
@@ -1 +1,2 @@
+"""Make sure a Python source code file can be imported."""
 import token
Modified: python/branches/bcannon-objcap/tests/succeed/import_safe_builtin.py
==============================================================================
--- python/branches/bcannon-objcap/tests/succeed/import_safe_builtin.py	(original)
+++ python/branches/bcannon-objcap/tests/succeed/import_safe_builtin.py	Tue May 29 03:31:34 2007
@@ -1 +1,7 @@
+"""Make sure that all whitelisted built-in modules can be imported."""
+import _ast
+import _codecs
+import _sre
+import _types
 import errno
+import exceptions
Modified: python/branches/bcannon-objcap/tests/succeed/import_safe_extension.py
==============================================================================
--- python/branches/bcannon-objcap/tests/succeed/import_safe_extension.py	(original)
+++ python/branches/bcannon-objcap/tests/succeed/import_safe_extension.py	Tue May 29 03:31:34 2007
@@ -1 +1,19 @@
+"""All whitelisted extension modules should be able to be imported."""
+import _bisect
+import _collections
+import _csv
+import _functools
+import _hashlib
+import _heapq
+import _random
+import _struct
+import _weakref
+import array
+import binascii
+import cmath
+import itertools
+import math
+import operator
 import time
+import unicodedata
+import zlib


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /