{ "info": { "author": "F\u00e1bio Mac\u00eado Mendes", "author_email": "fabiomacedomendes@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries" ], "description": "Boxed is a simple sandboxing solution for Python. It works by running arbitrary\nPython functions in a separate python interpreter as an unprivileged user.\n\nThe API is very simple::\n\n from boxed import run\n\n result = run(target_func, args=args, kwargs=kwargs)\n\nThis will spawn a Python interpreted that drops its privileges and runs\n``target_func(*args, **kwds)`` as the **nobody** user. Communication\nbetween the master and slave processes is done using serialized streams\nwhich can use pickle, cloudpickle, dill or JSON.\n\nThere is a possible vulnerability if the target function outputs a\npicklable object that produces malicious side-effects when unpickled. We don't\nknow how to exploit this vulnerability, but it is theoretically possible, so be\nwarned. Dill and cloudpickle are likely to be more vulnerable since both can\npickle function bytecodes, opening many doors for attack.\n\nThe possibility of damage is greatly reduced by using the JSON serializer.\nThe downside is that both inputs and outputs must be JSON-compatible (i.e., they\nmust be composed of basic types such as numbers, strings, lists and dicts.\nBesides that, the target function itself must be a Python callable living in a\npublic namespace. The JSON serializer just sends the function full qualified\nname to the sandbox and import this function there.\n\n::\n\n >>> from boxed import run\n >>> from math import sqrt\n >>> run(sqrt, args=(4,), serializer='json')\n 2.0\n\n\n\nHow does it work?\n=================\n\nThe sandbox is spawned as a different Python interpreter using the python_boxed\nexecutable which is created during installation. This is just a copy of the regular\ninterpreter with Linux's SETUID capability enabled. This simple technique allows a\nprocess to change its UID during execution, which enable it to drop its privileges\nearly during execution.\n\nThis might remember the infamous SUID bit. SUID executables allows an user to spawn\nprogram that starts its life with super user permissions and (hopefully) drop\nthem as soon as possible while keeping only the permissions necessary for it\nto run. The classical example is a web server. Only the super user can\nlisten to port 80 (or any other lower ports), thus the web server must start its\nlife as root and quickly drop all privileges but those necessary to communicate in\nthe desired ports.\n\nLinux capabilities is a fine-grained version of the SUID bit. It grants\nvery specific privileges to a program. The ``boxed`` library uses a Python\ninterpreter with the SETUID capability which grant us only the\npermission of changing the UID of a process. Even if the process escalates its\nprivileges to run with UID=0 (the super user), none of the other permissions are\ngranted so it will not gain super powers. In particular, it will not be\nable to read, write or execute any file that user who executed the sandbox did\nnot have access to.\n\nBy default, ``boxed`` runs the sandbox as the `nobody` user. We create a copy of\nthe interpreter called /usr/bin/python_boxed during installation and then apply\nthe command::\n\n $ setcap cap_setuid+ep /usr/bin/python_boxed\n\n\nDoes it work on Windows, OSX, BSD, etc?\n=======================================\n\nNo. This technique is linux-specific. Also, it is very difficult to provide a good,\nlightweight, and cross-platform sandboxing solution. We have no plans to implement\nsandboxing in other platforms.", "description_content_type": null, "docs_url": "https://pythonhosted.org/boxed/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/fabiommendes/boxed/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "boxed", "package_url": "https://pypi.org/project/boxed/", "platform": "linux", "project_url": "https://pypi.org/project/boxed/", "project_urls": { "Homepage": "http://github.com/fabiommendes/boxed/" }, "release_url": "https://pypi.org/project/boxed/0.3.11/", "requires_dist": null, "requires_python": "", "summary": "Simple and lightweight sandbox solution for Python an Linux.", "version": "0.3.11" }, "last_serial": 2394081, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "7d3a83c40be07602ef38a2566b0f4c35", "sha256": "3f69f47f61be3243aad18df4c5437387d5e5568b7d237e461c598a7f8c58bd6f" }, "downloads": -1, "filename": "boxed-0.1.2.tar.gz", "has_sig": false, "md5_digest": "7d3a83c40be07602ef38a2566b0f4c35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4343, "upload_time": "2016-03-27T00:53:31", "url": "https://files.pythonhosted.org/packages/bf/c8/30a38ad3efa1fab5e7f82d5a7c3c415444bcd47ad9f38fc4cbbc698660d7/boxed-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1b59d9ad3c37e6746e060446b042de53", "sha256": "eac77f96d5ee7bea7cc3aa74fed7d3cd69632f3d44b035fe73782d676025524d" }, "downloads": -1, "filename": "boxed-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1b59d9ad3c37e6746e060446b042de53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5342, "upload_time": "2016-03-27T01:04:00", "url": "https://files.pythonhosted.org/packages/64/45/3fc456dfc37f94ca2f5af9e60e718ba3211ed7e25bfedf5b8e866d728251/boxed-0.1.3.tar.gz" } ], "0.1.3.1": [ { "comment_text": "", "digests": { "md5": "5220e1ccdf384724aea2823d5007875c", "sha256": "9debb5b663e38070899abe8a86bcb03e177f6abc17720571060f3ff4b7532e6b" }, "downloads": -1, "filename": "boxed-0.1.3.1.tar.gz", "has_sig": false, "md5_digest": "5220e1ccdf384724aea2823d5007875c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5346, "upload_time": "2016-03-27T01:07:21", "url": "https://files.pythonhosted.org/packages/8b/5f/9e4055f13a06274971e809295ed75111b43ca5e1001e8217342a43c448ed/boxed-0.1.3.1.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "32f2625b86c3b818b8f3bf82bdbf00f2", "sha256": "e295ca134828b40b3489fa9453af9acfbd5b726287fa54a1884da8a0cd843098" }, "downloads": -1, "filename": "boxed-0.1.4.tar.gz", "has_sig": false, "md5_digest": "32f2625b86c3b818b8f3bf82bdbf00f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5490, "upload_time": "2016-03-28T03:52:47", "url": "https://files.pythonhosted.org/packages/89/c6/cd741dad4b5db52f03dcc9ceb380ea1788aa164de73db872714d2c0e7fac/boxed-0.1.4.tar.gz" } ], "0.1a2": [ { "comment_text": "", "digests": { "md5": "c483b7aed660a3dc6122b1f40554e1ac", "sha256": "bb160ad44815e01e41ba01458159012adea489d417112f15bef8614363b1ac5e" }, "downloads": -1, "filename": "boxed-0.1a2.tar.gz", "has_sig": false, "md5_digest": "c483b7aed660a3dc6122b1f40554e1ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4388, "upload_time": "2016-03-26T12:39:40", "url": "https://files.pythonhosted.org/packages/80/c1/3ff257fc381a2821ab69f5ff97f325efb5894d3671c3df2c3f4799d81b5d/boxed-0.1a2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3dc3f53ea93cc55a01ef4bac51877cd7", "sha256": "5fcb4767d8cec5842f18b275ec2e4939edf500584ac031c30b1abf1385c1bf11" }, "downloads": -1, "filename": "boxed-0.2.0.tar.gz", "has_sig": false, "md5_digest": "3dc3f53ea93cc55a01ef4bac51877cd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10538, "upload_time": "2016-03-29T21:47:12", "url": "https://files.pythonhosted.org/packages/5d/9f/34408dc0cd1ff78c336f6cb41845dcb5e35ce6274d8140d1615d6f146f9d/boxed-0.2.0.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "fd4da1f5cb320ff096de1937c61c7063", "sha256": "c1851e2a1b03390d206dfd431ba4e6ef057d259fbab5587020ee5d35b6740c4c" }, "downloads": -1, "filename": "boxed-0.2.2.tar.gz", "has_sig": false, "md5_digest": "fd4da1f5cb320ff096de1937c61c7063", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10692, "upload_time": "2016-03-30T01:14:22", "url": "https://files.pythonhosted.org/packages/aa/ba/723fe6ca8bfb925c61f65518cda485a38f06f2df57a2a279e4973bd54ef5/boxed-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "43ac280c93b81efae4fa4c84de2c668f", "sha256": "0571dca2e41ecd358cf8de5819ee2d5930589299d5cc3159d9ca443bf3fb2aa5" }, "downloads": -1, "filename": "boxed-0.2.3.tar.gz", "has_sig": false, "md5_digest": "43ac280c93b81efae4fa4c84de2c668f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10599, "upload_time": "2016-03-30T01:16:25", "url": "https://files.pythonhosted.org/packages/c1/23/4c5c773e6b20979d1b733d6b33b141b75532a152c8f328b6a9965f4944db/boxed-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "17488bf2cf87f016387b9227819ce38c", "sha256": "5811dbe69fe01c6cdd151d3db167a2ed4dee20f6453a67e47e50a2cc43d42f28" }, "downloads": -1, "filename": "boxed-0.2.4.tar.gz", "has_sig": false, "md5_digest": "17488bf2cf87f016387b9227819ce38c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10561, "upload_time": "2016-03-30T01:20:55", "url": "https://files.pythonhosted.org/packages/fa/23/00d3bc97b427d1bfcef5241a28180ebb4a3a8b4143f550283e74559f77ab/boxed-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "b412bb044be498e31b8273fa92b79395", "sha256": "d764b7cb6aec9c12d4ee1ff456c45ece9ca6aa88d6b33cefc8646ebb6c23789c" }, "downloads": -1, "filename": "boxed-0.2.5.tar.gz", "has_sig": false, "md5_digest": "b412bb044be498e31b8273fa92b79395", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10599, "upload_time": "2016-03-30T15:07:33", "url": "https://files.pythonhosted.org/packages/80/3d/a7218761a90b733afb032d0b303b04884a57d6afe51845d90f919be83924/boxed-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "c86f8271e14ca888d1cb79de6d00e905", "sha256": "796c6996c3ea345f0908bdc58929f5366767458cb1aea72587e8550619aab4a4" }, "downloads": -1, "filename": "boxed-0.2.6.tar.gz", "has_sig": false, "md5_digest": "c86f8271e14ca888d1cb79de6d00e905", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10648, "upload_time": "2016-04-13T04:31:17", "url": "https://files.pythonhosted.org/packages/04/8e/92f80be59ddf9e99800961c8822aefde9490dca556062a11e9f85d9a072f/boxed-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "a94ee64e1f90759f09a54eace58699f8", "sha256": "b1a3d46ff48116d66ebf525de6e7450d6929b7505ad115f1aa41ba4c16ca2d73" }, "downloads": -1, "filename": "boxed-0.2.7.tar.gz", "has_sig": false, "md5_digest": "a94ee64e1f90759f09a54eace58699f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11157, "upload_time": "2016-04-19T18:04:08", "url": "https://files.pythonhosted.org/packages/3e/fb/539976785777b99167deff88561af5b32ea74bf8c8babbc7504fe9f143a2/boxed-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "9576e334b401a56ecaf5fef7bc0c6e30", "sha256": "7db9eeeb00772dfbdc51b1e3d866f002bbb89373d46853b39ba541840cbbedee" }, "downloads": -1, "filename": "boxed-0.2.8.tar.gz", "has_sig": false, "md5_digest": "9576e334b401a56ecaf5fef7bc0c6e30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11173, "upload_time": "2016-05-02T03:23:24", "url": "https://files.pythonhosted.org/packages/92/27/68ecd67cc337c7e2bbac13a1348c8293ce5bb72b989de3baf9b54a3c7741/boxed-0.2.8.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "2c58d571f21fd7972d1d51cf4f234c50", "sha256": "1ad5a301b0bd3f707998c52d578009b50dfef083744fd9aba3ed93dbe726153a" }, "downloads": -1, "filename": "boxed-0.3.0.tar.gz", "has_sig": false, "md5_digest": "2c58d571f21fd7972d1d51cf4f234c50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13812, "upload_time": "2016-05-03T23:46:48", "url": "https://files.pythonhosted.org/packages/a6/5e/5c6fb352736366c553f2755058f3d0e5d677cc30f034ef0f096be1f625f5/boxed-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "19b112d154f1b9c6d9f0811aac992e01", "sha256": "c2084fc6a769dfab617623d0f16bec7146d63b3f68b22cda474f0f5966f8b0e2" }, "downloads": -1, "filename": "boxed-0.3.1.tar.gz", "has_sig": false, "md5_digest": "19b112d154f1b9c6d9f0811aac992e01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13730, "upload_time": "2016-08-07T17:38:09", "url": "https://files.pythonhosted.org/packages/80/08/824e21dec54f6a8ccee5ec4edd78727dbb1c146dc9e88b896922bae27d35/boxed-0.3.1.tar.gz" } ], "0.3.10": [ { "comment_text": "", "digests": { "md5": "f5d6b80fdbac4a1daaa11c820f874407", "sha256": "c42b0ae6303477a059bf2916831348aef390dd9a7ea226a435507b1336ea6eb4" }, "downloads": -1, "filename": "boxed-0.3.10.tar.gz", "has_sig": false, "md5_digest": "f5d6b80fdbac4a1daaa11c820f874407", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17038, "upload_time": "2016-10-11T03:08:14", "url": "https://files.pythonhosted.org/packages/24/c3/950c9071a1f093f5a0ec001f1df96bc61cc0f734ada876eba04c4a2da0b0/boxed-0.3.10.tar.gz" } ], "0.3.11": [ { "comment_text": "", "digests": { "md5": "67b4b81d553004a3ff4d6c0de9e63f0a", "sha256": "ca24011826fa182bf5f995ba98175ce0d30e56cd7b96533102a27ea5a7424165" }, "downloads": -1, "filename": "boxed-0.3.11.tar.gz", "has_sig": false, "md5_digest": "67b4b81d553004a3ff4d6c0de9e63f0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17174, "upload_time": "2016-10-11T21:35:34", "url": "https://files.pythonhosted.org/packages/3e/cb/3037e88a35ae11b97ca88632f37a7ba7e66349eadf42554b1e3007b33e6e/boxed-0.3.11.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "f37e4946149b231bde4796da3fbaec85", "sha256": "cd1bf4bf7efb2bdb44d2508db286e9df909a392770364e3e4f015c5781b632c3" }, "downloads": -1, "filename": "boxed-0.3.2.tar.gz", "has_sig": false, "md5_digest": "f37e4946149b231bde4796da3fbaec85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13981, "upload_time": "2016-08-26T00:29:13", "url": "https://files.pythonhosted.org/packages/ec/44/8e439ea282d97ffd82a88d5043ec0fffbd91d3b91e0632c9b2eb05f6c016/boxed-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "4678c143a9ebebf697aabe7836c001a4", "sha256": "0bdd7f7a0f370807a1b13dec093588b773884f87dba44e3cb1f7338544385f10" }, "downloads": -1, "filename": "boxed-0.3.3.tar.gz", "has_sig": false, "md5_digest": "4678c143a9ebebf697aabe7836c001a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15047, "upload_time": "2016-09-21T14:15:23", "url": "https://files.pythonhosted.org/packages/73/ef/c34b9010da40ce8f09707453eef1d1c541ed6a5fb7497f757962e31aac5d/boxed-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "43a5494545d8f150c10595185b5732ea", "sha256": "fb3b8cbaa85503fdf3689e00e6fdf628870115a1e6bdc38d94e8f5bcf7e0784c" }, "downloads": -1, "filename": "boxed-0.3.4.tar.gz", "has_sig": false, "md5_digest": "43a5494545d8f150c10595185b5732ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15522, "upload_time": "2016-10-03T15:42:03", "url": "https://files.pythonhosted.org/packages/8e/60/58834eacbedf1834e310f78050c01d78c3659bc3db8486e06ebe04ce81e7/boxed-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "eae7c47be7a14e3b1455bd95e2c0c617", "sha256": "c7e96998557096de37d0a1b438e66a684a641d0866af07b80b5bdf7529a6d30d" }, "downloads": -1, "filename": "boxed-0.3.5.tar.gz", "has_sig": false, "md5_digest": "eae7c47be7a14e3b1455bd95e2c0c617", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16048, "upload_time": "2016-10-08T21:47:44", "url": "https://files.pythonhosted.org/packages/f8/5f/959313172ce2d4b1218ba81769eff27f75894c450fa9f7ae78ff942edde9/boxed-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "a8a5c95b0a44c42e0c2bf55edc56b6c3", "sha256": "1acd5441b65f4f263f72d30c48ad371c5d7df10c13dae9f5b2f94b44b72f880e" }, "downloads": -1, "filename": "boxed-0.3.6.tar.gz", "has_sig": false, "md5_digest": "a8a5c95b0a44c42e0c2bf55edc56b6c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16073, "upload_time": "2016-10-09T16:58:30", "url": "https://files.pythonhosted.org/packages/4b/b6/fe11b74139b8a66690847da9cb815c2fc51006f6e26911a5f0e60730ca30/boxed-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "267dd528c95b016977492dc65d2a66a1", "sha256": "37d3e2354ec23871c43b4377f3d51485febf64072d9890c3aec4c234193710f1" }, "downloads": -1, "filename": "boxed-0.3.7.tar.gz", "has_sig": false, "md5_digest": "267dd528c95b016977492dc65d2a66a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16152, "upload_time": "2016-10-10T04:10:42", "url": "https://files.pythonhosted.org/packages/2c/c2/e5a781772c0c11d6a30c140b5acf6eee2523ded73f6703674f86e55111e3/boxed-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "22d90ef3bd0cf98f94bb87c0b0abbb3d", "sha256": "60ed5bbc3e36abdf76e0913e9dd4f8651256e8389dace42a0b436b509e0d13a6" }, "downloads": -1, "filename": "boxed-0.3.8.tar.gz", "has_sig": false, "md5_digest": "22d90ef3bd0cf98f94bb87c0b0abbb3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16162, "upload_time": "2016-10-10T05:00:38", "url": "https://files.pythonhosted.org/packages/dc/48/4c627977a57bdcdb150f2752e0a5deda98b46cd57e26a363d172d67bf5be/boxed-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "2e54d6e78c76b4f0b7fcd21efafdfc1b", "sha256": "f2b0eb6733dad4f90e4e25dfa96f12d27853240fd19a9f6693f6032fe9e3c81f" }, "downloads": -1, "filename": "boxed-0.3.9.tar.gz", "has_sig": false, "md5_digest": "2e54d6e78c76b4f0b7fcd21efafdfc1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16949, "upload_time": "2016-10-11T01:43:33", "url": "https://files.pythonhosted.org/packages/c2/2f/ad350769ef0b86f4de54542ec796edec497ee5f1ddadb2ec8440122cd560/boxed-0.3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "67b4b81d553004a3ff4d6c0de9e63f0a", "sha256": "ca24011826fa182bf5f995ba98175ce0d30e56cd7b96533102a27ea5a7424165" }, "downloads": -1, "filename": "boxed-0.3.11.tar.gz", "has_sig": false, "md5_digest": "67b4b81d553004a3ff4d6c0de9e63f0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17174, "upload_time": "2016-10-11T21:35:34", "url": "https://files.pythonhosted.org/packages/3e/cb/3037e88a35ae11b97ca88632f37a7ba7e66349eadf42554b1e3007b33e6e/boxed-0.3.11.tar.gz" } ] }