...
| Wiki Markup |
|---|
According to the principle of least privilege, every program and every user of the system should operate using the least set of privileges necessary to complete their particular task \[[Saltzer 1974|AA. Bibliography#SaltzerReferences#Saltzer 74], [Saltzer 1975|AA. Bibliography#SaltzerReferences#Saltzer 75]\]. The Build Security In website \[[DHS 2006|AA. Bibliography#DHSReferences#DHS 06]\] provides additional definitions of this principle. Executing with minimal privileges mitigates against exploitation in case a vulnerability is discovered in the code. These principles can be applied in various ways to Java language programming. Occasionally a system will have components, most of which require only a base set of privileges, but a few require more privileges than the base set; these are said to run with elevated privileges. |
...
| Wiki Markup |
|---|
Regarding the implementation and use of custom security managers, as opposed to default ones, the Java Security Architecture Specification \[java:[SecuritySpec 2008|AA. Bibliography#SecuritySpecReferences#SecuritySpec 08]\] states |
We encourage the use of
AccessControllerin application code, while customization of a security manager (via subclassing) should be the last resort and should be done with extreme care. Moreover, a customized security manager, such as one that always checks the time of the day before invoking standard security checks, could and should utilize the algorithm provided byAccessControllerwhenever appropriate.
...
| Wiki Markup |
|---|
According to the Java API \[java:[API 2006|AA. Bibliography#APIReferences#API 06]\] the {{ClassLoader.checkPackageAccess()}} method documentation: |
...
| Wiki Markup |
|---|
In 2004, Schoenefeld \[java:[Schoenefeld 2004|AA. Bibliography#SchoenefeldReferences#Schoenefeld 04]\] discovered a vulnerability in Opera v7.54 in that the default security policy granted the runtime permission {{"accessClassInPackage.sun.*"}} to unprivileged applets so that they could access internal Sun packages. This allowed attackers to obtain sensitive local information and crash the client web browser. |
...
| Wiki Markup |
|---|
As an example of what constitutes the immediate caller and the object, consider the method {{java.lang.Class.newInstance()}}. Here, the immediate caller is the class that contains this method call whereas the object on which the {{newInstance()}} method is being invoked is referred to as the {{Class}} object ({{classObjectName.newInstance()}}). According to the Java Language Specification \[[JLS 2005|AA. Bibliography#JLSReferences#JLS 05]\], the method {{getClass()}} returns the {{Class}} object that represents the class of the object. |
...