Follow us on Facebook

Header Ads

Securing Class Initialization in Java-like Languages



Securing Class Initialization in Java-like Languages

ABSTRACT:
Language-based information-flow security is concerned with specifying and enforcing security policies for information flow via language constructs. Although much progress has been made on understanding information flow in object-oriented programs, little attention has been given to the impact of class initialization on information flow. This paper turns the spotlight on security implications of class initialization. We reveal the subtleties of information propagation when classes are initialized, and demonstrate how these flows can be exploited to leak information through error recovery. Our main contribution is a type-and-effect system which tracks these information flows. The type system is parameterized by an arbitrary lattice of security levels. Flows through the class hierarchy and dependencies in field initializers are tracked by typing class initializers wherever they could be executed. The contexts in which each class can be initialized are tracked to prevent insecure flows of out-of-scope contextual information through class initialization statuses and error recovery. We show that the type system enforces termination-insensitive noninterference.

EXISTING SYSTEM:
Language-based concepts and techniques are becoming increasingly popular in the context of security because they provide an appropriate level of abstraction for specifying and enforcing application and language-sensitive security policies. Popular examples include: 1) Java stack inspection, which enforces a stack-based access-control discipline, 2) Java byte code verification, which traverses byte code to verify type safety, and 3) web languages such as Caja, ADsafe and FBJS which use program transformation and language subsets to enforce sandboxing and separation properties.
Language-based information-flow security is concerned with specifying and enforcing security policies for information flow via language constructs. There has been much recent progress on understanding information flow in languages of increasing complexity, and, consequently, information-flow security tools for languages such as Java, ML, and Ada have emerged. In particular, information flow in object-oriented languages has been an area of intensive development. However, it is surprising that the impact of class initialization, being an important aspect of object-oriented programs, has received scarce attention in the context of security.

DISADVANTAGES OF EXISTING SYSTEM:
·        Complexity is introduced by exceptions raised during initialization, as these can be exploited to leak secret information.
·        The key issue is that class initialization may perform side effects (such as opening a file or updating the memory). The side effects may be exploited by the attacker who may deduce from these side effects which classes have (not) been initialized, which is sometimes sufficient to learn secret information.



PROPOSED SYSTEM:
We propose a formalization that illustrates how to track information flow in presence of class initialization by a type-and-effect system for a simple language. By ensuring that the initialization (or success thereof) of a class containing public fields in no way depends on the evaluation of an expression (or success thereof) containing secret data, the type-and-effect system guarantees security in a form of noninterference. Informally, noninterference guarantees that a program’s public outputs are independent of secret inputs. A key intricacy here is that of class dependencies: An initialization of one class can cause the initialization of other classes. The only approach we are aware of that actually considers class initialization in the context of information-flow security is Jif



ADVANTAGES OF PROPOSED SYSTEM:
Jif’s restrictions on initialization code are rather severe: only simple constant manipulations, which cannot raise exceptions, are allowed. Our treatment of class initialization is more liberal than Jif’s and yet we demonstrate that it is secure. We argue that this liberty is desirable in scenarios such as server-side code.

SYSTEM CONFIGURATION:-

HARDWARE CONFIGURATION:-


ü Processor             -        Pentium –IV

ü Speed                             -        1.1 Ghz
ü RAM                    -        256 MB(min)
ü Hard Disk            -        20 GB
ü Key Board            -        Standard Windows Keyboard
ü Mouse                  -        Two or Three Button Mouse
ü Monitor                -        SVGA

 

SOFTWARE CONFIGURATION:-


ü Operating System                    : Windows XP
ü Programming Language           : JAVA
ü Java Version                           : JDK 1.6 & above.

REFERENCE:
Willard Rafnsson, Keiko Nakata, and Andrei Sabelfeld-“Securing Class Initialization in Java-like Languages”-IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING, VOL. 10, NO. 1, JANUARY/FEBRUARY 2013