A Service-oriented Approach to Mobile Code Security
|
|
|
- Byron Patrick
- 10 years ago
- Views:
Transcription
1 Procedia Computer Science 00 (2011) Procedia Computer Science The 8 th International Conference on Mobile Web Information Systems (MobiWIS) A Service-oriented Approach to Mobile Code Security Micah Jones, Kevin W. Hamlen Computer Science Department, The University of Texas at Dallas, Richardson, TX Abstract Client software for modern service-oriented web architectures is often implemented as mobile code applets made available by service-providers. Protecting clients from malicious mobile code is therefore an important concern in these architectures; however, the burden of security enforcement is typically placed entirely on the client. This approach violates the service-oriented paradigm. A method of realizing mobile code security as a separate service in a service-oriented web architecture is proposed. The security service performs in-lined reference monitoring of untrusted Java binaries on-demand for client-specified security policies. An XML format for specifying these policies is outlined, and preliminary experiments demonstrate the feasibility of the approach. c 2011 Published by Elsevier Ltd. Keywords: in-lined reference monitors, runtime monitors, mobile code 1. Introduction Mobile code is an important implementation component of many modern web services. For example, geospatial web servers provide clients mobile bytecode applets that filter, analyze, and graphically render geospatial data obtained from the service within a local web browser. The use of mobile code in these contexts is motivated by the need for high efficiency and quality of service in service-oriented architectures (SOAs). That is, mobile code can reduce communication and processing overhead for the service-provider by shifting some of that overhead to the client. Mobile code security, however, is typically not provided as a distinct service; clients must protect themselves from malicious or misbehaved mobile code by implementing their own local protection systems. These are typically realized as a fixed part of the client s mobile code execution environment. For example, Java bytecode applets undergo both static validation and dynamic monitoring by the Java Virtual Machine (JVM) to protect the client from potentially malicious code provided by untrusted service-providers. This arrangement results in a relatively inflexible collection of security policies available to typical code-consumers. For example, the JVM enforces basic memory-safety and object-encapsulation properties, but it does not enforce user- or application-specific policies, such as a policy that prohibits untrusted applets from opening more than 3 pop-up windows per run, or prohibits them from sending data to the network after they have received private data as input from the user. While enforcing such custom policies is This material is based upon work supported by the U.S. AFOSR under Young Investigator Award FA addresses: [email protected] (Micah Jones), [email protected] (Kevin W. Hamlen)
2 possible, it typically requires developing and installing new client-side VM or OS extensions for each new policy to be enforced an impractical undertaking for many organizations and users. As a more flexible alternative, we consider a service-oriented approach to securing mobile binary code. Our approach is based on in-lined reference monitors (IRMs) [1], which implement security monitors by automatically inlining runtime security checks into the untrusted application s binary text before it is executed. Code-consumers in our framework submit untrusted Java bytecode and a desired security policy to a trusted in-lining service that instruments the bytecode with an IRM that enforces the policy. The resulting self-monitoring code is then digitally signed and returned to the code-consumer, who can verify the signature and safely execute it. Numerous IRM systems have been developed for traditional mobile code architectures (e.g., [2 4]), though not for SOAs to our knowledge. Extending the technology to SOAs allows mobile code security to become a separate service in such an architecture, rather than an obligation that each client must satisfy for itself individually. The significant complexity of policy enforcement implementation is shifted to a trusted third party, affording code-consumers the flexibility of enforcing a wide array of potentially organization- and application-specific policies without implementing that functionality themselves. Lightweight devices that lack the computational resources necessary to analyze and instrument arbitrary bytecode binaries can therefore enforce these rich policies by leveraging the power of the SOA. The service-oriented approach has numerous potential security advantages, including improved deployment speed and wider client coverage than traditional patching approaches. For example, a web client that is configured by default to always pass untrusted bytecode through an in-lining service before execution receives the benefits of security updates implemented by that service instantly, without needing to download and install security updates or patches for its OS or VM. Moreover, as new vulnerabilities are discovered and new enforcement strategies are invented, third-party in-lining services can often be updated and adapted more rapidly than typical OS/VM patches can be developed. This is because software patches can usually only be developed by a relatively small collection of experts who have access to the OS/VM source code, whereas IRM implementations depend only bytecode language standards available to the public (e.g., [5]). The service-oriented approach therefore provides defenders a means to quickly and comprehensively react to zero-day attacks for which no patch yet exists, and to protect users of legacy software who may be slow to apply patches. The remainder of the paper proceeds as follows. Section 2 provides a brief overview of our bytecode rewriting system architecture. Security policies for our system are expressed as SPoX (Security Policy XML) documents [6], whose syntax is described in 3. Finally, 4 describes a prototype deployment of our system as a Java web service and some preliminary performance statistics. Section 5 concludes. 2. System Overview Our in-lining service accepts as input an untrusted Java bytecode binary and a client-specified security policy. The service returns a modified binary that has been instrumented with code that enforces the policy when the modified binary is executed. The in-lining service never executes the untrusted code directly (which would be both prohibitively inefficient and unsafe), and the transformation process consists of a purely linear traversal of the untrusted bytecode rather than a more sophisticated static code analysis (many of which are worst-case exponential). This keeps runtimes for the service tractable. Security policies are specified by the client as SPoX (Security Policy XML) [6] documents, which express mobile code policies as temporal properties that define the set of all permissible event sequences that may be exhibited by the untrusted applet. Security-relevant events are typically Java system API calls and their arguments, which are the means by which Java programs read or affect the external computing environment. Other program operations can be identified as security-relevant as well, as discussed in 3. The alphabet of all program events deemed security-relevant is specified in SPoX using pointcuts, a concept derived from aspect-oriented programming (AOP). A pointcut is a declarative expression that describes a set of matching program operations, similar to how a regular expression describes a set of string values. The SPoX pointcut language is a binary adaptation of the one implemented by AspectJ [7] for Java source code, allowing policy-writers to develop policies that statically and/or dynamically regard binary-level method calls and their arguments, object pointers, and lexical contexts, among other properties. The language of permissible event sequences is expressed by encoding it as a security automaton [8] a finiteor infinite-state machine that accepts all and only those sequences that satisfy the security policy. Security automata
3 1 <state name="s" /> 2 <edge name="fileaccess"> 3 <nodes var="s">0,1</nodes> 4 <and><call>java.io.file*.*</call> 5 <argval num="1"> 6 <streq>.*windows\\.*</streq> 7 </argval></and> 8 </edge> 9 <edge name="illegalsocketoutputstream"> 10 <nodes var="s">1,#</nodes> 11 <call>java.net.socket.getoutputstream</call> 12 </edge> Figure 1. Policy that prohibits network sends after sensitive file reads express safety policies, which essentially say that some bad thing must not happen. 1 The bad thing can be a collection of individual prohibited events or it can include particular orderings of events, in which case the policy is said to be history-based. For example, a policy that permits at most 10 simultaneously open files is history-based because each file-open is permitted contingent on the history of events that preceded it. SPoX policies can be enforced as binary-level IRMs [9, 10]. Security checks are inserted at appropriate points around security-relevant instructions in an untrusted target program, causing impending policy violations to be dynamically detected and prevented. This instrumentation process is similar to aspect-weaving in AOP, except that in AOP both aspects and target programs are typically specified as source code, whereas our rewriter synthesizes binary code from a purely declarative policy specification and injects it into an untrusted binary program. This allows SPoX policies to be enforced by code-consumers on binaries without source code. SPoX does not specify how to enforce a given policy; instead, it declaratively describes how security-relevant events affect an abstract security automaton state. There are therefore many ways to implement any given SPoX policy, affording enforcement mechanisms a great deal of flexibility. State-transitions can be specified in terms of information gleaned from the current program state, such as method argument values, the call stack, and the current lexical scope. For example, the SPoX policy in Figure 1 encodes a policy that prevents network send operations after a program has read a private file. There is one state variable s, declared on Line 1. The first of two automaton edges is described by the fileaccess definition on Lines 2 8, which matches calls to java.io.file methods whose first arguments are strings containing the substring windows\. Such operations change security automaton state s from 0 to 1. The illegalsocketoutputstream edge beginning at Line 9 matches network send operations. When the current state satisfies s = 1, such operations violate the security policy, as indicated by postcondition #. In order to instrument this policy in an untrusted target program as an IRM, our rewriter locates all code points that match pointcuts in the policy and injects guard code around them to simulate the two-state security automaton. There are many correct guard code implementations of any given policy, affording rewriters a broad array of enforcement strategies. Our rewriter takes the approach of reifying the security state s into the program itself as a global variable. Immediately before calls to member methods of any class beginning with java.io.file, it injects guard code that tests whether s = 0 and compares the first argument s tostring form to regular expression.*windows\\.*. If these dynamic tests succeed then s is assigned 1. Likewise, it injects guard code immediately before each call to java.net.socket.getoutputstream that checks whether s = 1. If not, the operation is permitted; otherwise the program self-aborts to prevent the impending violation. The surrounding untrusted binary code must also be prevented from maliciously circumventing the new guards or corrupting reified state variable s. To achieve this, the rewriter redirects any jumps that previously targeted securityrelevant instructions to the injected guard code that surrounds them. 2 In addition, reified security states are imple- 1 This is in contrast to liveness policies, which say that some good thing must eventually happen (cf. [3]). 2 The only form of computed jump in Java bytecode is dynamic method dispatch. Thus, unrestricted computed jumps need not be supported, greatly simplifying the control-flow analysis.
4 n N natural numbers c C class names sv SV state variables iv IV iteration variables id ID object identifiers ed ED edge names pcn PCN pointcut names pol ::= spc sd edg spc ::= <pointcut name="pcn">pcd<pointcut> sd ::= <state name="sv">[c]</state> edg ::= <edge name="ed">pcd ep </edge> policies stored pointcuts state declarations edges edgesets <forall var="iv" from="a 1 " iteration to="a 2 ">edg </forall> ep ::= <nodes [obj="id"] var="sv"> a 1,a 2 </nodes> edge endpoints a ::= n iv a 1 +a 2 a 1 -a 2 a 1 *a 2 a 1 /a 2 (a) arithmetic Figure 2. SPoX core language syntax mented as private class fields so that malicious code cannot corrupt the reified security state and thereby defeat the in-lined monitor. The correctness (i.e., soundness) of the approach follows from an inductive argument that injected variable s correctly tracks the security automaton state throughout the execution of the rewritten code [11]. Since s is never assigned #, executing the rewritten code never violates the policy. The proof can be informally summarized as follows: Reified state s is initially equal to the security automaton s start state label. This value is only subsequently modified by in-lined IRM guard code (because s is implemented as a private field that is inaccessible by other code). Each such modification is immediately preceded or succeeded by a security-relevant operation that changes the security automaton state likewise. Thus, the two remain synchronized with respect to one another. 3. Security Policies The general syntax of a SPoX specification is provided in Figures 2 and 3. Each specification consists of a list of security automaton edge declarations. Each edge declaration consists of three parts: Pointcut expressions (Figure 3) identify sets of security-relevant events that programs might exhibit at runtime. Security-state variable declarations (sd in Figure 2) are used to construct the overall security automaton state. The security state is defined by the set of mappings of all state variables to their integer 3 values. Security-state transitions (ep in Figure 2) describe how events cause the security automaton s state to change at runtime. Edges are specified by <edge> structures, each of which defines a (possibly infinite) set of edges in the security automaton. Each <edge> structure consists of a pointcut expression and at least one <nodes> declaration. The pointcut expression defines a common label for the edges, while each <nodes> declaration imposes a transition precondition and postcondition for a particular state variable. The precondition constrains the set of source states to which the edge applies, and the postcondition describes how the state changes when an event matching the pointcut expression occurs. In general, state variables come in two varieties: 3 Binary operator / in Figure 2 denotes integer division.
5 n N natural numbers c C class names re RE regular expressions md MD method names fd FD field names id ID object identifiers pcn PCN pointcut names mo MO modifiers pcd ::= pointcuts <mtag>mo c.md</mtag> method accesses <get>mo c.fd</get> <set>mo c.fd</set> field accesses <argval num="n" [obj="id"]>vp</argval> stack args (values) <argtyp num="n">c</argtyp> stack args (types) <handler>c</handler> exception handler executions <this [obj="id"]>[c]</this> this pointer references <target [obj="id"]>[c]</target> target object references <cflow>pcd</cflow> control flows <pointcutid name="pcn" /> predefined pointcuts <and>pcd </and> <or>pcd </or> <not>pcd</not> logical operators <true /> <false /> constants mtag ::= call execution withincode vp ::= <isnull /> <streq>re</streq> value predicates <inteq>n</inteq> <intle>n</intle> Figure 3. SPoX pointcut syntax Instance security-state variables describe the security state of an individual runtime object. They can be thought of as hidden field members of security-relevant classes. Global security-state variables describe the state of the overall system. They can be thought of as hidden, global, static program variables. Instance state variables allow SPoX specifications to express per-object security properties. For example, a policy can require that each File object may be read at most ten times by defining an instance security-state variable associated with File objects and defining state transitions that increment each object s security-state variable each time that individual File object is read (up to ten times). In contrast, global security-state variables are used to express instanceindependent security properties. For example, a policy can require that at most ten File objects may be created during the lifetime of the program by defining a global security-state variable that gets incremented each time any File object is created (up to ten times). Counters and other repetitive automaton structures can be succinctly expressed in SPoX as <forall> structures that introduce a set of edges for each integer state in a range. For example, a resource bound policy might be expressed a security state s with edges from s = i to s = i + 1 for each integer i in some interval [0, n], where n is the resource bound. In SPoX, such a policy could be succinctly expressed as follows: <forall var="i" from="0" to="9"> <edge name="count"> <nodes var="s">i,i+1</nodes> p </edge> </forall>
6 This specifies a policy that permits operations matching pointcut p to occur at most 10 times. More complex configurations can be achieved by nesting <forall> structures and by using more complex arithmetic expressions as preand post-conditions of the <nodes> elements within them Pointcuts A syntax for SPoX s pointcut language is given in Figure 3. We support all regular expression operators available in AspectJ for specifying class and member names. Since SPoX policies are applied to Java bytecode binaries rather than to source code, the meaning of each pointcut expression is reflected down to the bytecode level. We here describe the language informally; a formal denotational semantics is provided in [6]. Atomic pointcuts (i.e., those that do not recursively contain other pointcuts) can be categorized into those whose criteria are statically decidable and those that can only be decided dynamically (in general). Statically decidable pointcuts, such as <call>, can be matched against code points through a direct, static inspection of the bytecode. For example, the set of all bytecode instructions that match a <call> pointcut are exactly the call instructions that specify a method name that matches the pointcut s regular expression content. The binary format of Java call instructions specify the method name statically. In contrast, dynamically decidable pointcuts, such as <argval>, cannot be matched through purely static analysis because they depend on information that can only be determined at runtime, such as the values of items on the stack. Practical policies invariably demand an in-lining service that supports both types, and that therefore implement a combination of static and dynamic code analysis. Static pointcuts include method accesses (<mtag>), field accesses (<get> and <set>), argument type constraints (<argtyp>), and exception handlers (<handler>). Method accesses are usually of greatest practical significance in real policies, so we support several different kinds of pointcuts for matching them. Instructions that call methods are matched by <call> pointcuts, whereas the entry points of the methods they call are matched by <execution> pointcuts. This distinction is important because when a security-relevant method m is part of the untrusted binary itself, using <execution> leads to a more efficient IRM implementation because the guard code is injected at the entry point of m instead of at every instruction that calls m. However, when m is external to the binary (e.g., it is a system API method), <call> is required since m itself cannot be rewritten. The <withincode> pointcut matches all code points within a given method, and is typically used within a conjunction to identify all instances of a particular operation within a given lexical scope. Dynamic pointcuts include argument value tests (<argval>), and dynamic typing tests (<this> and <target>). The first of these tends to be the most important, and allows dynamic checking of method call arguments and field assignments. Value predicates vp compare these values to integers, string regular expressions, or simply null. Types and subtypes of the target object of a method call or field access can be dynamically matched by <this> and <target> pointcuts, respectively. We anticipate that realistic policies that exhaustively itemize all possible binary-level, security-relevant operations will become quite large documents over time. It is therefore important to be able to modularize such documents by assigning names to commonly used pointcut expressions and allowing those names to be used as references in larger pointcuts. The <pointcutid> pointcut allows such references, and can be thought of as a macro that expands to the referent s definition. 4. Web Service Implementation We have implemented a version of our rewriter which acts as a Java web service application. Using an HTTP request with the POST method, a client uploads two files: a SPoX policy and an untrusted JAR (Java ARchive) file. The server then provides these two files as input to the rewriter, which creates a new, rewritten JAR that enforces the security policy. Finally, the rewritten JAR file is returned as an HTTP response to the client. The server-side code consists of about 7400 lines of Java code, 7200 lines of which are devoted to Java binary parsing, rewriting, and code generation, and 200 lines of which implement the servlet that makes the rewriter accessible as a web service. We use the Apache BCEL library for low-level Java binary reading and writing. In order to manage the file uploads, we use the Apache Commons fileupload library, which obtains Java FileInputStreams from the request data. The files are saved locally on the server in temp files, which are submitted as input to the rewriter. The newly rewritten JAR file is then copied to the HTTP response as a binary stream.
7 1 <state name="s" /> 2 <edge name="badupload"> 3 <nodes var="s">0,#</nodes> 4 <or><and><set>picasa.uploadphoto.name</set> 5 <not><argval num="1"> 6 <streq>.*\.(jpg jpeg tif tiff png bmp gif)</streq> 7 </argval></not></and> 8 <and><set>googledocs.uploaddoc.file</set> 9 <not><argval num="1"> 10 <streq>.*\.(doc docx txt rtf)</streq> 11 </argval></not></and></or> 12 </edge> Figure 4. Policy that prohibits uploads of files with non-whitelisted extensions We ran the rewriter service on three different applications, with different policies for each. All tests were performed on a Dell Studio XPS notebook computer running Windows 7 64-bit with an Intel i7-q720m quad core processor, a Samsung PM800 solid state drive, and 4 GB of memory. The server-side code ran on an instance of GlassFish Server 3.1. Provided runtimes account only for time spent rewriting and performing related file I/O, and do not include any network operations such as uploading and downloading files. jweatherwatch. We enforced the policy from Figure 1 on a weather widget application called jweatherwatch [12]. The policy prohibits the application from accessing files in the Windows directory. The application obeys this policy, so the rewritten program showed no observable change in behavior. The uploaded JAR was 140 KB in size and rewriting increased its size by 6K (4%). Total processing time was approximately 4.3 seconds. Google.mE. Google.mE [13] is an open source Java application that acts as a client for various Google web applications, including GoogleDocs, Picasa, YouTube, and GMail. One of its features supports uploading of files to many of those services. We chose to enforce the policy in Figure 4, which prohibits uploads of non-picture files to Picasa and non-document files to GoogleDocs. The file type is identified by whitelisting permissible file extensions; filenames with extensions not explicitly listed in the respective <streq> elements are prohibited. When we attempted to upload a file with an unsupported extension to GoogleDocs, the rewritten application halted execution as expected. The original JAR was 921 KB in size while the rewritten one was 513 KB a size reduction of over 44%. The reduction is primarily to the lack of compression in the original JAR, whereas our rewriter compresses the output JAR by default. The runtime was reported as 21.7 seconds. Jeti. Jeti [14] is a simple Jabber IM client. We enforced the policy in Figure 5, which limits the number of simultaneous socket connections to 5. Such a policy might be used to protect a user from DDoS malware disguised as legitimate web service clients. Socket connection events increment security state s until s = 5, at which point the next connection event signals a policy violation. Socket close events decrement s. Interestingly, enforcement of this policy uncovered an apparent bug in the application. When a login is successful and the user later logs out, the connection is properly closed; however, connections for failed logins are never properly closed. Thus, six successive failed login attempts trigger a policy violation, and the rewritten program halts. The original JAR file was 533 KB in size and rewriting decreased it by 59 KB (11%). In this case, the size reduction is a result of the rewriter stripping out unnecessary metadata in the JAR s internal class files. The total processing time was 20.4 seconds. 5. Conclusion We implemented a web service that automatically in-lines security monitors into untrusted Java binary code in accordance with a client-specified, temporal security policy. The policy is specified using the SPoX XML format, which encodes temporal code properties as security automata. This allows client-specific security requirements for
8 1 <pointcut name="connect"> 2 <or><and><call>java.net.socket.new</call> 3 <argtyp num="2">int</argtyp></and> 4 <call>java.net.socket.connect</call></or></pointcut> 5 <state name="s" /> 6 <forall var="i" from="0" to="4"> 7 <edge name="inc_connections"> 8 <nodes var="s">i,i+1</nodes> 9 <pointcutid name="connect" /></edge> 10 </forall> 11 <forall var="i" from="1" to="5"> 12 <edge name="dec_connections"> 13 <nodes var="s">i,i-1</nodes> 14 <call>java.net.socket.close</call></edge> 15 </forall> 16 <edge name="six_connections"> 17 <nodes var="s">5,#</nodes> 18 <pointcutid name="connect" /></edge> Figure 5. Policy that prohibits more than 5 simultaneous connections mobile code to be shifted to a separate, trusted security service in a service-oriented architecture. The separate service is lighter-weight than platform-as-a-service approaches because it does not actually execute the mobile code. Processing time for rewriting averaged 0.02 seconds per kilobyte. This is acceptable for small applications, but would need to be improved for larger applications on the order of megabytes in size. Future work should also investigate certification approaches, such as those based on proof- or model-carrying code [15, 16], that could allow the in-lining service to remain untrusted by checking its output with a lighter-weight verifier [17]. References [1] F. B. Schneider, Enforceable security policies, ACM Trans. Information and System Security 3 (1) (2000) [2] F. Chen, G. Roşu, MOP: An efficient and generic runtime verification framework, in: Proc. ACM Object-Oriented Programming, Systems, Languages & Applications (OOPSLA), 2007, pp [3] J. Ligatti, L. Bauer, D. Walker, Run-time enforcement of nonsafety policies, ACM Trans. Information and System Security 12 (3) (2009). [4] I. Aktug, K. Naliuka, ConSpec - a formal language for policy specification, Science of Computer Programming 74 (1 2) (2008) [5] T. Lindholm, F. Yellin, The Java TM Virtual Machine Specification, 2nd Edition, Prentice Hall, [6] K. W. Hamlen, M. Jones, Aspect-oriented in-lined reference monitors, in: Proc. ACM Workshop on Programming Languages and Analysis for Security (PLAS), 2008, pp [7] G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, W. G. Griswold, An overview of AspectJ, in: Proc. European Conference on Object-Oriented Programming (ECOOP), Vol. 2072, 2001, pp [8] B. Alpern, F. B. Schneider, Recognizing safety and liveness, Distributed Computing 2 (1986) [9] M. Jones, K. W. Hamlen, Enforcing IRM security policies: Two case studies, in: Proc. IEEE Intelligence and Security Informatics Conference (ISI), 2009, pp [10] M. Jones, K. W. Hamlen, Disambiguating aspect-oriented security policies, in: Proc. Aspect-Oriented Software Development (AOSD), 2010, pp [11] M. Sridhar, K. W. Hamlen, Model-checking in-lined reference monitors, in: Proc. International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), 2010, pp [12] jweatherwatch, (2009). [13] Google.mE, (2010). [14] Jeti, (2007). [15] M. Dam, A. Lundblad, A proof carrying code framework for inlined reference monitors in Java bytecode, Computing Research Repository (CoRR) abs/ (2010). [16] R. Sekar, V. N. Venkatakrishnan, S. Basu, S. Bhatkar, D. DuVarney, Model-carrying code: A practical approach for safe execution of untrusted applications, in: Proc. ACM Symposium on Operating Systems Principles (SOSP), 2003, pp [17] M. Sridhar, K. W. Hamlen, Flexible in-lined reference monitor certification: Challenges and future directions, in: Proc. ACM SIGPLAN Workshop on Programming Languages Meets Program Verification (PLPV), 2011, pp
Aspect-Oriented Runtime Monitor Certification
Aspect-Oriented Runtime Monitor Certification Kevin W. Hamlen, Micah M. Jones, and Meera Sridhar University of Texas at Dallas {hamlen,micah.jones1,meera.sridhar}@utdallas.edu Abstract. In-lining runtime
Fabio Massacci Ida Siahaan
Inline-Reference Monitor Optimization using Automata Modulo Theory (AMT) Fabio Massacci Ida Siahaan 2009-09-24 STM09 - UNITN - Siahaan 1 Inlined Reference Monitors Security Policy Original Application
Combining Static and Dynamic Impact Analysis for Large-scale Enterprise Systems
Combining Static and Dynamic Impact Analysis for Large-scale Enterprise Systems The 15th International Conference on Product-Focused Software Process Improvement, Helsinki, Finland. Wen Chen, Alan Wassyng,
Generating Aspect Code from UML Models
Generating Aspect Code from UML Models Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany [email protected] Stefan Schulze Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich,
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
zen Platform technical white paper
zen Platform technical white paper The zen Platform as Strategic Business Platform The increasing use of application servers as standard paradigm for the development of business critical applications meant
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich
I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation Mathias Payer, ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application
Computability Classes for Enforcement Mechanisms*
Computability Classes for Enforcement Mechanisms* KEVIN W. HAMLEN Cornell University GREG MORRISETT Harvard University and FRED B. SCHNEIDER Cornell University A precise characterization of those security
Checking Access to Protected Members in the Java Virtual Machine
Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/
HOW TO CONFIGURE PASS-THRU PROXY FOR ORACLE APPLICATIONS
HOW TO CONFIGURE PASS-THRU PROXY FOR ORACLE APPLICATIONS Overview of Oracle JInitiator Oracle JInitiator enables users to run Oracle Forms applications using Netscape Navigator or Internet Explorer. It
Aspects for Testing Aspects?
Aspects for Testing Aspects? Dehla Sokenou, Stephan Herrmann Technische Universität Berlin Software Engineering Group Sekr. FR 5-6, Franklinstr. 28/29, D-10587 Berlin [dsokenou stephan]@cs.tu-berlin.de
Keywords Aspect-Oriented Modeling, Rule-based graph transformations, Aspect, pointcuts, crosscutting concerns.
Volume 4, Issue 5, May 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com Functional and Non-Functional
Verifying Semantic of System Composition for an Aspect-Oriented Approach
2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach
Put a Firewall in Your JVM Securing Java Applications!
Put a Firewall in Your JVM Securing Java Applications! Prateep Bandharangshi" Waratek Director of Client Security Solutions" @prateep" Hussein Badakhchani" Deutsche Bank Ag London Vice President" @husseinb"
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
An Exception Monitoring System for Java
An Exception Monitoring System for Java Heejung Ohe and Byeong-Mo Chang Department of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea {lutino, [email protected] Abstract. Exception
Adobe Systems Incorporated
Adobe Connect 9.2 Page 1 of 8 Adobe Systems Incorporated Adobe Connect 9.2 Hosted Solution June 20 th 2014 Adobe Connect 9.2 Page 2 of 8 Table of Contents Engagement Overview... 3 About Connect 9.2...
Bypassing Memory Protections: The Future of Exploitation
Bypassing Memory Protections: The Future of Exploitation Alexander Sotirov [email protected] About me Exploit development since 1999 Research into reliable exploitation techniques: Heap Feng Shui in JavaScript
How To Develop A Static Analysis System For Large Programs
Towards the Industrial Scale Development of Custom Static Analyzers John Anton, Eric Bush, Allen Goldberg, Klaus Havelund, Doug Smith, Arnaud Venet Kestrel Technology LLC 4984 El Camino Real #230 Los Altos,
Secure Web Application Coding Team Introductory Meeting December 1, 2005 1:00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda
Secure Web Application Coding Team Introductory Meeting December 1, 2005 1:00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda 1. Introductions for new members (5 minutes) 2. Name of group 3. Current
The Advantages of Using an Inliner
Under consideration for publication in Math. Struct. in Comp. Science Security Monitor Inlining and Certification for Multithreaded Java M A D S D A M 1, B A R T J A C O B S 2, A N D R E A S L U N D B
Can You Trust Your JVM Diagnostic Tools?
Can You Trust Your JVM Diagnostic Tools? Isaac Sjoblom, Tim S. Snyder, and Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris, MN 56267 [email protected], [email protected],
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
What is Web Security? Motivation
[email protected] http://www.brucker.ch/ Information Security ETH Zürich Zürich, Switzerland Information Security Fundamentals March 23, 2004 The End Users View The Server Providers View What is Web
How Program Monitors Enforce Non-Safety
Enforcing Non-safety Security Policies with Program Monitors Jay Ligatti 1,LujoBauer 2,andDavidWalker 1 1 Department of Computer Science, Princeton University 2 CyLab, Carnegie Mellon University Abstract.
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS
66 CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS 5.1 INTRODUCTION In this research work, two new techniques have been proposed for addressing the problem of SQL injection attacks, one
Job Reference Guide. SLAMD Distributed Load Generation Engine. Version 1.8.2
Job Reference Guide SLAMD Distributed Load Generation Engine Version 1.8.2 June 2004 Contents 1. Introduction...3 2. The Utility Jobs...4 3. The LDAP Search Jobs...11 4. The LDAP Authentication Jobs...22
Programming Language Pragmatics
Programming Language Pragmatics THIRD EDITION Michael L. Scott Department of Computer Science University of Rochester ^ШШШШШ AMSTERDAM BOSTON HEIDELBERG LONDON, '-*i» ЩЛ< ^ ' m H NEW YORK «OXFORD «PARIS»SAN
Java 7 Recipes. Freddy Guime. vk» (,\['«** g!p#« Carl Dea. Josh Juneau. John O'Conner
1 vk» Java 7 Recipes (,\['«** - < g!p#«josh Juneau Carl Dea Freddy Guime John O'Conner Contents J Contents at a Glance About the Authors About the Technical Reviewers Acknowledgments Introduction iv xvi
Sandy. The Malicious Exploit Analysis. http://exploit-analysis.com/ Static Analysis and Dynamic exploit analysis. Garage4Hackers
Sandy The Malicious Exploit Analysis. http://exploit-analysis.com/ Static Analysis and Dynamic exploit analysis About Me! I work as a Researcher for a Global Threat Research firm.! Spoke at the few security
WildFire Overview. WildFire Administrator s Guide 1. Copyright 2007-2015 Palo Alto Networks
WildFire Overview WildFire provides detection and prevention of zero-day malware using a combination of malware sandboxing and signature-based detection and blocking of malware. WildFire extends the capabilities
Enterprise Service Bus
We tested: Talend ESB 5.2.1 Enterprise Service Bus Dr. Götz Güttich Talend Enterprise Service Bus 5.2.1 is an open source, modular solution that allows enterprises to integrate existing or new applications
Automating Attack Analysis Using Audit Data. Dr. Bruce Gabrielson (BAH) CND R&T PMO 28 October 2009
Automating Attack Analysis Using Audit Data Dr. Bruce Gabrielson (BAH) CND R&T PMO 28 October 2009 2 Introduction Audit logs are cumbersome and traditionally used after the fact for forensics analysis.
Runtime Verification - Monitor-oriented Programming - Monitor-based Runtime Reflection
Runtime Verification - Monitor-oriented Programming - Monitor-based Runtime Reflection Martin Leucker Technische Universität München (joint work with Andreas Bauer, Christian Schallhart et. al) FLACOS
Using weblock s Servlet Filters for Application-Level Security
Using weblock s Servlet Filters for Application-Level Security September 2006 www.2ab.com Introduction Access management is a simple concept. Every business has information that needs to be protected from
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY Suhas Holla #1, Mahima M Katti #2 # Department of Information Science & Engg, R V College of Engineering Bangalore, India Abstract In the advancing
02 B The Java Virtual Machine
02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual
SiteCelerate white paper
SiteCelerate white paper Arahe Solutions SITECELERATE OVERVIEW As enterprises increases their investment in Web applications, Portal and websites and as usage of these applications increase, performance
Patterns for Secure Boot and Secure Storage in Computer Systems
Patterns for Secure Boot and Secure Storage in Computer Systems Hans Löhr, Ahmad-Reza Sadeghi, Marcel Winandy Horst Görtz Institute for IT Security, Ruhr-University Bochum, Germany {hans.loehr,ahmad.sadeghi,marcel.winandy}@trust.rub.de
Oracle Solaris Studio Code Analyzer
Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access
Detection and mitigation of Web Services Attacks using Markov Model
Detection and mitigation of Web Services Attacks using Markov Model Vivek Relan [email protected] Bhushan Sonawane [email protected] Department of Computer Science and Engineering, University of Maryland,
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Service Oriented Architecture
Service Oriented Architecture Charlie Abela Department of Artificial Intelligence [email protected] Last Lecture Web Ontology Language Problems? CSA 3210 Service Oriented Architecture 2 Lecture Outline
core. Volume I - Fundamentals Seventh Edition Sun Microsystems Press A Prentice Hall Title ULB Darmstadt
core. 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Volume I - Fundamentals Seventh Edition CAY S. HORSTMANN GARY
What Is the Java TM 2 Platform, Enterprise Edition?
Page 1 de 9 What Is the Java TM 2 Platform, Enterprise Edition? This document provides an introduction to the features and benefits of the Java 2 platform, Enterprise Edition. Overview Enterprises today
Aspect-Oriented Programming
Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering
Course Title: Software Development
Course Title: Software Development Unit: Customer Service Content Standard(s) and Depth of 1. Analyze customer software needs and system requirements to design an information technology-based project plan.
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java Jesús Mauricio Chimento 1, Wolfgang Ahrendt 1, Gordon J. Pace 2, and Gerardo Schneider 3 1 Chalmers University of Technology, Sweden.
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.
Handout 1 CS603 Object-Oriented Programming Fall 15 Page 1 of 11 Handout 1 Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner. Java
Specification and Analysis of Contracts Lecture 1 Introduction
Specification and Analysis of Contracts Lecture 1 Introduction Gerardo Schneider [email protected] http://folk.uio.no/gerardo/ Department of Informatics, University of Oslo SEFM School, Oct. 27 - Nov.
RE-TRUST Design Alternatives on JVM
RE-TRUST Design Alternatives on JVM ( - Italy) [email protected] http://softeng.polito.it/falcarin Trento, December, 19 th 2006 Tamper-Detection Tamper-detection goals Detect malicious modifications
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Last Updated: July 2011. STATISTICA Enterprise Server Security
Last Updated: July 2011 STATISTICA Enterprise Server Security STATISTICA Enterprise Server Security Page 2 of 10 Table of Contents Executive Summary... 3 Introduction to STATISTICA Enterprise Server...
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
SIPAC. Signals and Data Identification, Processing, Analysis, and Classification
SIPAC Signals and Data Identification, Processing, Analysis, and Classification Framework for Mass Data Processing with Modules for Data Storage, Production and Configuration SIPAC key features SIPAC is
Mobile Cloud Computing for Data-Intensive Applications
Mobile Cloud Computing for Data-Intensive Applications Senior Thesis Final Report Vincent Teo, [email protected] Advisor: Professor Priya Narasimhan, [email protected] Abstract The computational and storage
A Scala DSL for Rete-based Runtime Verification
A Scala DSL for Rete-based Runtime Verification Klaus Havelund Jet Propulsion Laboratory California Institute of Technology, California, USA Abstract. Runtime verification (RV) consists in part of checking
Appendix... B. The Object Constraint
UML 2.0 in a Nutshell Appendix B. The Object Constraint Pub Date: June 2005 Language The Object Constraint Language 2.0 (OCL) is an addition to the UML 2.0 specification that provides you with a way to
JAVA WEB START OVERVIEW
JAVA WEB START OVERVIEW White Paper May 2005 Sun Microsystems, Inc. Table of Contents Table of Contents 1 Introduction................................................................. 1 2 A Java Web Start
Monitoring Method Call Sequences using Annotations
Monitoring Method Call Sequences using Annotations B. Nobakht 1, M.M. Bonsangue 1,2, F.S. de Boer 1,2, and S. de Gouw 1,2 1 Leiden Institute of Advanced Computing, Universiteit Leiden, Niels Bohrweg 1,
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
Client vs. Server Implementations of Mitigating XSS Security Threats on Web Applications
Journal of Basic and Applied Engineering Research pp. 50-54 Krishi Sanskriti Publications http://www.krishisanskriti.org/jbaer.html Client vs. Server Implementations of Mitigating XSS Security Threats
Integration of Application Business Logic and Business Rules with DSL and AOP
Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland [email protected]
Last update: February 23, 2004
Last update: February 23, 2004 Web Security Glossary The Web Security Glossary is an alphabetical index of terms and terminology relating to web application security. The purpose of the Glossary is to
Copyright 2014 Jaspersoft Corporation. All rights reserved. Printed in the U.S.A. Jaspersoft, the Jaspersoft
5.6 Copyright 2014 Jaspersoft Corporation. All rights reserved. Printed in the U.S.A. Jaspersoft, the Jaspersoft logo, Jaspersoft ireport Designer, JasperReports Library, JasperReports Server, Jaspersoft
IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM
IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM Note Before you use this information and the product it supports, read the
Deploying Business Virtual Appliances on Open Source Cloud Computing
International Journal of Computer Science and Telecommunications [Volume 3, Issue 4, April 2012] 26 ISSN 2047-3338 Deploying Business Virtual Appliances on Open Source Cloud Computing Tran Van Lang 1 and
Countering The Faults Of Web Scanners Through Byte-code Injection
Countering The Faults Of Web Scanners Through Byte-code Injection Introduction Penetration testing, web application scanning, black box security testing these terms all refer to a common technique of probing
Toward A Taxonomy of Techniques to Detect Cross-site Scripting and SQL Injection Vulnerabilities
NCSU CSC TR 2008-4 1 Toward A Taxonomy of Techniques to Detect Cross-site Scripting and SQL Injection Vulnerabilities Yonghee SHIN, Laurie WILLIAMS, Members, IEEE Abstract Since 2002, over half of reported
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Glassfish, JAVA EE, Servlets, JSP, EJB
Glassfish, JAVA EE, Servlets, JSP, EJB Java platform A Java platform comprises the JVM together with supporting class libraries. Java 2 Standard Edition (J2SE) (1999) provides core libraries for data structures,
MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, 2015. Copyright 2015 MarkLogic Corporation. All rights reserved.
Reference Application Architecture Guide 1 MarkLogic 8 February, 2015 Last Revised: 8.0-1, February, 2015 Copyright 2015 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents
jmonitor: Java Runtime Event Specification and Monitoring Library
RV 04 Preliminary Version jmonitor: Java Runtime Event Specification and Monitoring Library Murat Karaorman 1 Texas Instruments, Inc. 315 Bollay Drive, Santa Barbara, California USA 93117 Jay Freeman 2
Fine-Grained User-Space Security Through Virtualization. Mathias Payer and Thomas R. Gross ETH Zurich
Fine-Grained User-Space Security Through Virtualization Mathias Payer and Thomas R. Gross ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application access
Deep-Secure Mail Guard Feature Guide
Deep-Secure Mail Guard Feature Guide The Deep-Secure Mail Guard provides a rich selection of message security functionality and content policy options to Simple Message Transfer Protocol (SMTP) and/or
Information Supplement: Requirement 6.6 Code Reviews and Application Firewalls Clarified
Standard: Data Security Standard (DSS) Requirement: 6.6 Date: February 2008 Information Supplement: Requirement 6.6 Code Reviews and Application Firewalls Clarified Release date: 2008-04-15 General PCI
www.virtualians.pk CS506 Web Design and Development Solved Online Quiz No. 01 www.virtualians.pk
CS506 Web Design and Development Solved Online Quiz No. 01 Which of the following is a general purpose container? JFrame Dialog JPanel JApplet Which of the following package needs to be import while handling
Out of the Fire - Adding Layers of Protection When Deploying Oracle EBS to the Internet
Out of the Fire - Adding Layers of Protection When Deploying Oracle EBS to the Internet March 8, 2012 Stephen Kost Chief Technology Officer Integrigy Corporation Phil Reimann Director of Business Development
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB
September Case Studies of Running the Platform NetBeans UML Servlet JSP GlassFish EJB In this project we display in the browser the Hello World, Everyone! message created in the session bean with servlets
Iron Chef: John Henry Challenge
Iron Chef: John Henry Challenge Brian Chess Pravir Chandra Black Hat 3/27/2008 Amsterdam Sean Fay Jacob West Concept We love Iron Chef. We can t cook. Concept Compare tools and manual code review in head-tohead
Interactive Application Security Testing (IAST)
WHITEPAPER Interactive Application Security Testing (IAST) The World s Fastest Application Security Software Software affects virtually every aspect of an individual s finances, safety, government, communication,
Systems Integration: Co C mp m onent- t bas a e s d s o s ftw ft a w r a e r e ngin i eeri r n i g
Systems Integration: Component-based software engineering Objectives To explain that CBSE is concerned with developing standardised components and composing these into applications To describe components
