Parrot Team,
Good afternoon members of Parrot. I have attached a second rough draft
of my proposal if anyone would like to view and I welcome any
suggestions and ideas you may have to help improve my proposal. Thank
you and have a nice day.
--
Justin L. Harper
Electrical Engineering
Peer Partner Mentor
IEEE
Society of Automotive Engineers
Temple Taekwondo
Email: [email protected]
Cell: 215-866-6003
Project Summary
Security is quickly becoming a number one priority among web designers
and programmers in the digital age. Protecting vital bits of code from being
tampered with has become a key to continued success in all fields of study and
is no different for the Parrot Foundation. You want Parrot to run executions
from the outside without users being able to come in and alter files, which is
where The Security Sandboxing project comes into play. The sandbox will be
modular in design to allow for future development as Parrot grows and becomes
more versatile. In the design it will set permission flags and have an
interface that will ask “Do I have permission” making this a high priority as
Parrot becomes more modern in design.
Project Description
Design will be based off of a Security Context Structure where a
component can ask “Do I have permission”. I will create an interface where a
“parent” can set permissions on the child, but the child cannot alter its own
permissions. This security feature will be modular by design which will allow
future implementations to be added on. This will give Parrot security in
dealing with its growing versatility of communication with HLL’s. The Security
Sandbox has two main restrictions/permissions that I want to implement. First
is the ability to limit IO access such as limiting sockets and paths where file
handles can access resources and secondly to limit certain capabilities such as
loading dynamic libraries. The Security Context Structure will be able to
attach to the Parrot_interp_new and allow you to set the context without
allowing that interp to modify the context. Creating a set of rules for Parrot
to follow and attaching limitations to those rules so Parrot will have a simple
structure on which it runs.
Relation to Parrot
Development of the security sandbox for Parrot will reverse its largely
implicit contract nature by permitting a small set of allowed activities and
making anything outside that set impossible. As Parrot progresses in its
development added security is needed. Rather than building a completely new
security sandbox each time a new version of Parrot is released, new modules can
be created and implemented into the design of the core security sandbox. For
this project I will be working on the core of the sandbox which will mostly be
dependent on itself. Any interaction with Parrot will be the
permissions/restrictions.
Tools and Technologies Used
The tools for this project will include the normal parrot build system
and test suite. For this project I will not need to be create any specific
tools.
Delivered Results
The overall result we wish to achieve is a working security core
module. Deliverance includes core module and test for correct implementation
into parrot. Separate modules being implemented into core module for increased
security along with debugging test and documented design process.
Project Timeline
Before actual work on the project shall begin, I will find sources
resources related to ptrace, security context structures and example codes of
security sandboxing systems as a basis for my design.
May (Constructing the core)
Week 1 (5/21 – 5/27)
* Begin work on core design (interface)
o A structure to hold permission flags (maybe similar to
ptrace)
Week 2 (5/28 – 6/3)
* Work on interface. Communicating with Parrot.
o Continued construction of core. Begin implementation of
conditions and permissions flags.
June
Week 3 (6/4 – 6/10)
* Conditions and more permission flags that the structure will hold.
Week 4 (6/11 – 6/17) (Adding permissions/restrictions)
* Whitelist/blacklist file system restrictions for I/O operations
Week 5 (6/18 – 6/24)
* whitelist/blacklist paths for loading bytecode
o Sets framework for placing restrictions on other operations
Week 6 (6/25 – 7/1)
* Restrictions on bytecode libraries, language libraries
July
Week 7 (7/2 – 7/8)
* limiting access to parent interp data
Week 8 (7/9 – 7/15)
* Revisions and preparation of submission for mid-term evaluations of
project.
o (Have at least shell done with limitations started for
mid-term evaluations)
Week 9 (7/16 – 7/22)
* limited ability to modify environmental variable
Week 10 (7/23 – 7/29)
* limited ability to turn on debug and trace modes
Week 11 (7/30 – 8/5) (Implementation)
* limiting certain OS interactions
August
Week 12 (8/6 – 8/12)
* Begin work on sandbox call to feature from future privilege system.
Week 13 (8/13 – 8/19)
* Revision of project and related materials for preparation of
submission.
Week 14(8/20 – 8/24)
* Final submission of project and all related documents and test.
If at any time I am ahead of schedule I will begin work on the next phase
of the project at once. That way if there is time left over then we can begin
work on additional ideas.
Your Personal Schedule
This summer I will be working as a student worker for Temple
University. Most work days have a lot of down time which will be perfect for
reading and working on code. I do not work a lot of hours so work will not get
in the way of the project. I am taking a summer course during summer session I
which last up until the beginning of July, afterwards I will just be working
with the occasional trips to the beach for a day or so. No big vacation trips
have been planned for my summer, but if something comes up I will check and
modify my timeline accordingly to compensate for possible overnight vacation
time.
Allowances
Above all else the security sandbox shell will be created so future
features can be added. Making sure it correctly communicates with Parrot is
also part of the shell design. Highest priority is the construction of the
whitelist/blacklist for I/O operations and paths for bytecode (restrictions on
bytecode libraries and language libraries, etc…). The objective is to let
Parrot know what it can and cannot do to prevent errors. Limitations placed on
certain OS operations, debug and traces modes and modified environmental
variables can be omitted because the system ideally would only produce warnings
about those instantiations. Having parrot slowly transition from allowing all
operations to a strict set of rules followed by creation of limits on those
rules is the best course of action for such a short project.
Additional Ideas
Once the main objectives are complete we want to implement more
security modules into the core. Additional security features that can be
implemented are security modules design for the PL/Parrot project and
subclassing NameSpace. Limiting classes that can be instantiated is a big
aspect I want to add if possible. This will limit the effect of changes an
object would have on the rest of the system and allow the program to be less
responsible for other parts of the system. Limiting memory consumed if time
allows would work help parrot run more smoothly and would provide a challenge.
Student Information
My name is Justin Harper and I am a junior in the Electrical
Engineering Department at Temple University. Aside from programming classes
taken towards my degree, my coding experience is minimal. However, everyone has
to start somewhere and Google’s Summer of Code 2012 program is a great way to
start. The opportunity to learn techniques programmers use to solve challenging
problems and develop useful skills will allow me to further develop as both a
student and a future employee at a company. Being able to identify the
problem, developing a method to solve a particular problem and refining that
same method is the process I follow to achieve a particular goal. I preform
research on the topic at hand and often change my approach to gain a better
understanding of what needs to be done. Often I seek advice and the opinions of
those around me in case there is something I miss. Most of all I communicate
what needs to be done and what I plan on doing to those involved with whatever
I am working on.
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev