FlowR: aspect oriented programming for information flow control in ruby
|
||||||||||||||||||||||||||
ABSTRACTThis paper reports on our experience with providing Information Flow Control (IFC) as a library. Our aim was to support the use of an unmodified Platform as a Service (PaaS) cloud infrastructure by IFC-aware web applications. We discuss how Aspect Oriented Programming (AOP) overcomes the limitations of RubyTrack, our first approach. Although use of AOP has been mentioned as a possibility in past IFC literature we believe this paper to be the first illustration of how such an implementation can be attempted.
We discuss how we built FlowR (Information Flow Control for Ruby), a library extending Ruby to provide IFC primitives using AOP via the Aquarium open source library. Previous attempts at providing IFC as a language extension required either modification of an interpreter or significant code rewriting. FlowR provides a strong separation between functional implementation and security constraints which supports easier development and maintenance; we illustrate with practical examples. In addition, we provide new primitives to describe IFC constraints on objects, classes and methods that, to our knowledge, are not present in related work and take full advantage of an object oriented language (OO language).
The experience reported here makes us confident that the techniques we use for Ruby can be applied to provide IFC for any Object Oriented Program (OOP) whose implementation language has an AOP library.
AUTHORS
|
|
|||||||||||||||||||||||||||||||||||||||
| View colleagues of Thomas F. J.-M. Pasquier | ||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Jean Bacon | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| View colleagues of Brian Shand | |||||||||||||||||||||||||||||||||||||||||
REFERENCESNote: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
|
|
3
|
J. Bacon, D. Eyers, T. F. Pasquier, J. Singh, I. Papagiannis, and P. Pietzuch. Information Flow Control for secure cloud computing. submitted to: IEEE Transactions on Network and Service Management, Special Issue on Management of Cloud Services, 2014.
|
|
|
4
|
D. Bell. The Bell-LaPadula model. Journal of computer security, 4 (2): 3, 1996.
|
|
|
5
|
K. Benitez and B. Malin. Evaluating re-identification risks with respect to the HIPAA privacy rule. Journal of the American Medical Informatics Association, 17 (2): 169--177, 2010.
|
|
|
6
|
K. J. Biba. Integrity considerations for secure computer systems. Technical report, DTIC Document, 1977.
|
|
|
7
|
||
|
8
|
||
| |
9
|
|
| |
10
|
|
|
11
|
||
| |
12
|
|
| |
13
|
Petros Efstathopoulos , Maxwell Krohn , Steve VanDeBogart , Cliff Frey , David Ziegler , Eddie Kohler , David Mazières , Frans Kaashoek , Robert Morris, Labels and event processes in the asbestos operating system, Proceedings of the twentieth ACM symposium on Operating systems principles, October 23-26, 2005, Brighton, United Kingdom [doi>10.1145/1095810.1095813]
|
| |
14
|
Eduardo Figueiredo , Nelio Cacho , Claudio Sant'Anna , Mario Monteiro , Uira Kulesza , Alessandro Garcia , Sérgio Soares , Fabiano Ferrari , Safoora Khan , Fernando Castor Filho , Francisco Dantas, Evolving software product lines with aspects: an empirical study on design stability, Proceedings of the 30th international conference on Software engineering, May 10-18, 2008, Leipzig, Germany [doi>10.1145/1368088.1368124]
|
|
15
|
M. Gyung, S. McCamant, P. Poosankam, and D. Song. DTA++: Dynamic Taint Analysis with Targeted Control-Flow Propagation. In Network and Distributed System Security Symposium (NDSS), San Diego, CA, 2011. Internet Society.
|
|
| |
16
|
|
|
17
|
Petr Hosek , Matteo Migliavacca , Ioannis Papagiannis , David M. Eyers , David Evans , Brian Shand , Jean Bacon , Peter Pietzuch, SafeWeb: a middleware for securing ruby-based web applications, Proceedings of the 12th ACM/IFIP/USENIX international conference on Middleware, December 12-16, 2011, Lisbon, Portugal [doi>10.1007/978-3-642-25821-3_25]
|
|
|
18
|
S. Jajodia and B. Kogan. Integrating an object-oriented data model with multilevel security. In Proceedings, IEEE Symposium on Security and Privacy, pages 76--85, 1990.
|
|
|
19
|
S. Jajodia, B. Kogan, and R. Sandhu. A multilevel-secure object-oriented data model. Abrams et al.{AJP95}, 1995.
|
|
|
20
|
||
|
21
|
||
|
22
|
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-Oriented Programming. Springer, 1997.
|
|
|
23
|
||
| |
24
|
|
|
25
|
||
| |
26
|
|
| |
27
|
|
| |
28
|
|
| |
29
|
|
|
30
|
H. Masuhara and K. Kawauchi. Dataflow pointcut in Aspect-Oriented Programming. In Proceedings, First Asian Symposium on Programming Languages and Systems, APLAS, pages 105--121. Springer, 2003.
|
|
|
31
|
||
|
32
|
A. Mourad, M.-A. Laverdière, and M. Debbabi. An aspect-oriented approach for the systematic security hardening of code. Computers & Security, 27 (3): 101--114, 2008.
|
|
| |
33
|
|
|
34
|
K. Padayachee, J. Eloff, and J. Bishop. Aspect-oriented information flow control, unpublished.
|
|
|
35
|
T. Pasquier, B. Shand, and J. Bacon. Information Flow Control for a Medical Web Portal. In e-Society 2013. IADIS, March 2013.
|
|
|
36
|
||
|
37
|
R. Ramachandran, D. J. Pearce, and I. Welch. AspectJ for multilevel security. ACP4IS '06, 20: 13--17, March 2006.
|
|
|
38
|
||
| |
39
|
|
|
40
|
||
|
41
|
Andrei Sabelfeld , Alejandro Russo, From dynamic to static and back: riding the roller coaster of information-flow control research, Proceedings of the 7th international Andrei Ershov Memorial conference on Perspectives of Systems Informatics, June 15-19, 2009, Novosibirsk, Russia [doi>10.1007/978-3-642-11486-1_30]
|
|
|
42
|
J. Saltzer and M. D. Schroeder. The protection of information in computer systems. Proc. IEEE, 63 (9): 1278--1308, 1975.
|
|
|
43
|
V. Shah and F. Hill. An aspect-oriented security framework. In DARPA Information Survivability Conference and Exposition, 2003. Proceedings, volume 2, pages 143--145 vol.2, 2003.
|
|
|
44
|
||
| |
45
|
|
| |
46
|
G. Edward Suh , Jae W. Lee , David Zhang , Srinivas Devadas, Secure program execution via dynamic information flow tracking, Proceedings of the 11th international conference on Architectural support for programming languages and operating systems, October 07-13, 2004, Boston, MA, USA [doi>10.1145/1024393.1024404]
|
| |
47
|
|
|
48
|
T. Tourwé, J. Brichau, and K. Gybels. On the existence of the AOSD-evolution paradox. SPLAT: Software engineering Properties of Languages for Aspect Technologies, 2003.
|
|
|
49
|
Neil Vachharajani , Matthew J. Bridges , Jonathan Chang , Ram Rangan , Guilherme Ottoni , Jason A. Blome , George A. Reis , Manish Vachharajani , David I. August, RIFLE: An Architectural Framework for User-Centric Information-Flow Security, Proceedings of the 37th annual IEEE/ACM International Symposium on Microarchitecture, p.243-254, December 04-08, 2004, Portland, Oregon [doi>10.1109/MICRO.2004.31]
|
|
|
50
|
||
|
51
|
J. Viega, J. Bloch, and P. Chandra. Applying Aspect-Oriented Programming to security. Cutter IT Journal, 14 (2): 31--39, 2001.
|
|
|
52
|
P. Vogt, F. Nentwich, N. Jovanovic, E. Kirda, C. Kruegel, and G. Vigna. Cross site scripting prevention with dynamic data tainting and static analysis. In Network and Distributed System Security Symposium (NDSS), San Diego, CA, 2007. Internet Society.
|
|
|
53
|
||
|
54
|
D. Wampler. Aquarium: AOP in Ruby. In Proceedings, Aspect Oriented Software Development (AOSD), volume 4, 2008.
|
|
| |
55
|
Hironori Washizaki , Atsuto Kubo , Tomohiko Mizumachi , Kazuki Eguchi , Yoshiaki Fukazawa , Nobukazu Yoshioka , Hideyuki Kanuka , Toshihiro Kodaka , Nobuhide Sugimoto , Yoichi Nagai , Rieko Yamamoto, AOJS: aspect-oriented javascript programming framework for web development, Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software, March 02-02, 2009, Charlottesville, Virginia, USA [doi>10.1145/1509276.1509285]
|
| |
56
|
|
|
57
|
A. Zambrano, A. Alvarez, J. Fabry, and S. Gordillo. Aspect Coordination for Web Applications in Java/AspectJ and Ruby/Aquarium. Proceedings, 28th International Conference of Chilean Computer Society, Nov. 2009.
|
|
|
58
|
S. Zdancewic. Challenges for information-flow security. In Proceedings of the 1st International Workshop on Programming Language Interference and Dependence (PLID'04), 2004.
|
|
|
59
|
CITED BY2 Citations
|
|
|
INDEX TERMSThe ACM Computing Classification System (CCS rev.2012)
PUBLICATION| Title | MODULARITY '14 Proceedings of the 13th international conference on Modularity table of contents | ||||||||||||||||||||||||||||||||||||||||||||||
| Conference Chairs | Achille Peternier University of Lugano, Switzerland | ||||||||||||||||||||||||||||||||||||||||||||||
| General Chairs | Walter Binder University of Lugano, Switzerland | ||||||||||||||||||||||||||||||||||||||||||||||
| Program Chairs | Erik Ernst Aarhus University, Denmark | ||||||||||||||||||||||||||||||||||||||||||||||
| Robert Hirschfeld Hasso-Plattner-Institut Potsdam, Germany | |||||||||||||||||||||||||||||||||||||||||||||||
| Pages | 37-48 | ||||||||||||||||||||||||||||||||||||||||||||||
| Publication Date | 2014-04-22 (yyyy-mm-dd) | ||||||||||||||||||||||||||||||||||||||||||||||
| Funding Source |
Engineering and Physical Sciences Research Council |
||||||||||||||||||||||||||||||||||||||||||||||
| Sponsors | AOSA Aspect-Oriented Software Association | ||||||||||||||||||||||||||||||||||||||||||||||
| In-Cooperations | SIGPLAN ACM Special Interest Group on Programming Languages | ||||||||||||||||||||||||||||||||||||||||||||||
| SIGSOFT ACM Special Interest Group on Software Engineering | |||||||||||||||||||||||||||||||||||||||||||||||
| Publisher | ACM New York, NY, USA ©2014 | ||||||||||||||||||||||||||||||||||||||||||||||
| ISBN: 978-1-4503-2772-5 doi>10.1145/2577080.2577090 | |||||||||||||||||||||||||||||||||||||||||||||||
| Conference |
MODULARITYModularity (formerly known as Aspect-oriented Software Development - AOSD)
|
||||||||||||||||||||||||||||||||||||||||||||||
| Paper Acceptance Rate 21 of 60 submissions, 35% | |||||||||||||||||||||||||||||||||||||||||||||||
| Overall Acceptance Rate 178 of 718 submissions, 25% | |||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
REVIEWS
COMMENTSBe the first to comment To Post a comment please sign in or create a free Web account
Table of Contents| SESSION: Language mechanisms I | ||
| Session details: Language mechanisms I | ||
| Julia Lawall | ||
| doi>10.1145/3251082 | ||
| Delegation proxies: the power of propagation | ||
| Erwann Wernli, Oscar Nierstrasz, Camille Teruel, Stéphane Ducasse | ||
| Pages: 1-12 | ||
| doi>10.1145/2577080.2577081 | ||
Full text: PDF
|
||
|
Scoping behavioral variations to dynamic extents is useful to support non-functional requirements that otherwise result in cross-cutting code. Unfortunately, such variations are difficult to achieve with traditional reflection or aspects. We show that ...
expand
|
||
| Composable user-defined operators that can express user-defined literals | ||
| Kazuhiro Ichikawa, Shigeru Chiba | ||
| Pages: 13-24 | ||
| doi>10.1145/2577080.2577092 | ||
Full text: PDF
|
||
|
This paper proposes new composable user-defined operators, named protean operators. They can express various language extensions including user-defined literals such as regular expression literals as well as user-defined expressions. Their expressiveness ...
expand
|
||
| REScala: bridging between object-oriented and functional style in reactive applications | ||
| Guido Salvaneschi, Gerold Hintz, Mira Mezini | ||
| Pages: 25-36 | ||
| doi>10.1145/2577080.2577083 | ||
Full text: PDF
|
||
|
Traditionally, object-oriented software adopts the Observer pattern to implement reactive behavior. Its drawbacks are well-documented and two families of alternative approaches have been proposed, extending object-oriented languages with concepts from ...
expand
|
||
| FlowR: aspect oriented programming for information flow control in ruby | ||
| Thomas F. J.-M. Pasquier, Jean Bacon, Brian Shand | ||
| Pages: 37-48 | ||
| doi>10.1145/2577080.2577090 | ||
Full text: PDF
|
||
|
This paper reports on our experience with providing Information Flow Control (IFC) as a library. Our aim was to support the use of an unmodified Platform as a Service (PaaS) cloud infrastructure by IFC-aware web applications. We discuss how Aspect ...
expand
|
||
| SESSION: Software evolution | ||
| Session details: Software evolution | ||
| Christoph Bockisch | ||
| doi>10.1145/3251083 | ||
| Assessing modularity using co-change clusters | ||
| Luciana Lourdes Silva, Marco Tulio Valente, Marcelo de A. Maia | ||
| Pages: 49-60 | ||
| doi>10.1145/2577080.2577086 | ||
Full text: PDF
|
||
|
The traditional modular structure defined by the package hierarchy suffers from the dominant decomposition problem and it is widely accepted that alternative forms of modularization are necessary to increase developer's productivity. In this paper, we ...
expand
|
||
| Blending and reusing rules for architectural degradation prevention | ||
| Alessandro Gurgel, Isela Macia, Alessandro Garcia, Arndt von Staa, Mira Mezini, Michael Eichberg, Ralf Mitschke | ||
| Pages: 61-72 | ||
| doi>10.1145/2577080.2577087 | ||
Full text: PDF
|
||
|
As software systems are maintained, their architecture often de-grades through the processes of architectural drift and erosion. These processes are often intertwined and the same modules in the code become the locus of both drift and erosion symptoms. ...
expand
|
||
| Automated software remodularization based on move refactoring: a complex systems approach | ||
| Marcelo Serrano Zanetti, Claudio Juan Tessone, Ingo Scholtes, Frank Schweitzer | ||
| Pages: 73-84 | ||
| doi>10.1145/2577080.2577097 | ||
Full text: PDF
|
||
|
Modular design is a desirable characteristic of complex software systems that can significantly improve their comprehensibility, maintainability and thus quality. While many software systems are initially created in a modular way, over time modularity ...
expand
|
||
| SESSION: Modularity visions | ||
| Session details: Modularity visions | ||
| Christoph Bockisch | ||
| doi>10.1145/3251084 | ||
| Context-oriented software engineering: a modularity vision | ||
| Tetsuo Kamina, Tomoyuki Aotani, Hidehiko Masuhara, Tetsuo Tamai | ||
| Pages: 85-98 | ||
| doi>10.1145/2577080.2579816 | ||
Full text: PDF
|
||
|
There are a number of constructs to implement context-dependent behavior, such as conditional branches using if statements, method dispatching in object-oriented programming (such as the state design pattern), dynamic deployment of aspects in aspect-oriented ...
expand
|
||
| SESSION: Understanding programmers | ||
| Session details: Understanding programmers | ||
| Guido Salvaneschi | ||
| doi>10.1145/3251085 | ||
| Type names without static type checking already improve the usability of APIs (as long as the type names are correct): an empirical study | ||
| Samuel Spiza, Stefan Hanenberg | ||
| Pages: 99-108 | ||
| doi>10.1145/2577080.2577098 | ||
Full text: PDF
|
||
|
In the discussion about the usefulness of static or dynamic type systems there is often the statement that static type systems improve the documentation of software. In the meantime there exists even some empirical evidence for this statement. One of ...
expand
|
||
| How do programmers use optional typing?: an empirical study | ||
| Carlos Souza, Eduardo Figueiredo | ||
| Pages: 109-120 | ||
| doi>10.1145/2577080.2582208 | ||
Full text: PDF
|
||
|
The recent popularization of dynamically typed languages, such as Ruby and JavaScript, has brought more attention to the discussion about the impact of typing strategies on development. Types allow the compiler to find type errors earlier and potentially ...
expand
|
||
| An empirical study on how developers reason about module cohesion | ||
| Bruno C. da Silva, Claudio N. Sant'Anna, Christina von F.G. Chavez | ||
| Pages: 121-132 | ||
| doi>10.1145/2577080.2577096 | ||
Full text: PDF
|
||
|
Several cohesion metrics have been proposed to support development and maintenance activities. The most traditional ones are the structural cohesion metrics, which rely on structural information in the source code. For instance, many of these metrics ...
expand
|
||
| SESSION: The meaning of programs | ||
| Session details: The meaning of programs | ||
| Eric Bodden | ||
| doi>10.1145/3251086 | ||
| Compositional reasoning about aspect interference | ||
| Ismael Figueroa, Tom Schrijvers, Nicolas Tabareau, Éric Tanter | ||
| Pages: 133-144 | ||
| doi>10.1145/2577080.2577093 | ||
Full text: PDF
|
||
|
Oliveira and colleagues recently developed a powerful model to reason about mixin-based composition of effectful components and their interference, exploiting a wide variety of techniques such as equational reasoning, parametricity, and algebraic laws ...
expand
|
||
| Reusable components of semantic specifications | ||
| Martin Churchill, Peter D. Mosses, Paolo Torrini | ||
| Pages: 145-156 | ||
| doi>10.1145/2577080.2577099 | ||
Full text: PDF
|
||
|
Semantic specifications of programming languages typically have poor modularity. This hinders reuse of parts of the semantics of one language when specifying a different language -- even when the two languages have many constructs in common -- and evolution ...
expand
|
||
| AspectJML: modular specification and runtime checking for crosscutting contracts | ||
| Henrique Rebêlo, Gary T. Leavens, Mehdi Bagherzadeh, Hridesh Rajan, Ricardo Lima, Daniel M. Zimmerman, Márcio Cornélio, Thomas Thüm | ||
| Pages: 157-168 | ||
| doi>10.1145/2577080.2577084 | ||
Full text: PDF
|
||
|
Aspect-oriented programming (AOP) is a popular technique for modularizing crosscutting concerns. In this context, researchers have found that the realization of design by contract (DbC) is crosscutting and fares better when modularized by AOP. However, ...
expand
|
||
| SESSION: Software product lines | ||
| Session details: Software product lines | ||
| Stefan Hanenberg | ||
| doi>10.1145/3251087 | ||
| Probabilistic model checking for energy analysis in software product lines | ||
| Clemens Dubslaff, Sascha Klüppelholz, Christel Baier | ||
| Pages: 169-180 | ||
| doi>10.1145/2577080.2577095 | ||
Full text: PDF
|
||
|
In a software product line (SPL), a collection of software products is defined by their commonalities in terms of features rather than explicitly specifying all products one-by-one. Several verification techniques were adapted to establish temporal ...
expand
|
||
| Systematic derivation of static analyses for software product lines | ||
| Jan Midtgaard, Claus Brabrand, Andrzej Wasowski | ||
| Pages: 181-192 | ||
| doi>10.1145/2577080.2577091 | ||
Full text: PDF
|
||
|
A recent line of work lifts particular verification and analysis methods to Software Product Lines (SPL). In an effort to generalize such case-by-case approaches, we develop a systematic methodology for lifting program analyses to SPLs using abstract ...
expand
|
||
| SESSION: Concurrency | ||
| Session details: Concurrency | ||
| Gary T. Leavens | ||
| doi>10.1145/3251088 | ||
| Aspectual session types | ||
| Nicolas Tabareau, Mario Südholt, Éric Tanter | ||
| Pages: 193-204 | ||
| doi>10.1145/2577080.2577085 | ||
Full text: PDF
|
||
|
Multiparty session types allow the definition of distributed processes with strong communication safety properties. A global type is a choreographic specification of the interactions between peers, which is then projected locally in each peer. Well-typed ...
expand
|
||
| JEScala: modular coordination with declarative events and joins | ||
| Jurgen M. Van Ham, Guido Salvaneschi, Mira Mezini, Jacques Noyé | ||
| Pages: 205-216 | ||
| doi>10.1145/2577080.2577082 | ||
Full text: PDF
|
||
|
Advanced concurrency abstractions overcome the drawbacks of low-level techniques such as locks and monitors, freeing programmers that implement concurrent applications from the burden of concentrating on low-level details. However, with current approaches ...
expand
|
||
| SESSION: Language mechanisms II | ||
| Session details: Language mechanisms II | ||
| Walter Cazzola | ||
| doi>10.1145/3251089 | ||
| Designing information hiding modularity for model transformation languages | ||
| Andreas Rentschler, Dominik Werle, Qais Noorshams, Lucia Happe, Ralf Reussner | ||
| Pages: 217-228 | ||
| doi>10.1145/2577080.2577094 | ||
Full text: PDF
|
||
|
Development and maintenance of model transformations make up a substantial share of the lifecycle costs of software products that rely on model-driven techniques. In particular large and heterogeneous models lead to poorly understandable transformation ...
expand
|
||
| JavaScript module system: exploring the design space | ||
| Junhee Cho, Sukyoung Ryu | ||
| Pages: 229-240 | ||
| doi>10.1145/2577080.2577088 | ||
Full text: PDF
|
||
|
While JavaScript is one of the most widely used programming languages not only for web applications but also for large projects, it does not provide a language-level module system. JavaScript developers have used the module pattern to avoid name ...
expand
|
||
| Modular specification and dynamic enforcement of syntactic language constraints when generating code | ||
| Sebastian Erdweg, Vlad Vergu, Mira Mezini, Eelco Visser | ||
| Pages: 241-252 | ||
| doi>10.1145/2577080.2577089 | ||
Full text: PDF
|
||
|
A key problem in metaprogramming and specifically in generative programming is to guarantee that generated code is well-formed with respect to the context-free and context-sensitive constraints of the target language. We propose typesmart constructors ...
expand
|
||