{@link net.jini.loader.ProxyCodebaseSpi} has been provided to allow codebase
+ uri to be loaded into a ClassLoader, specific to the service proxy, where
+ class visibility is controlled by the ClassLoader, not any other mechanism,
+ such that codebase annotations are not required and will not cause issues.
+
+
Refer to {@link https://web.archive.org/web/20060514011913/http://research.sun.com/technical-reports/2006/smli_tr-2006-149.pdf}
+
@since 2.0
@version 2.0
diff --git a/JGDMS/jgdms-platform/src/main/java/net/jini/loader/smli_tr-2006-149.pdf b/JGDMS/jgdms-platform/src/main/java/net/jini/loader/smli_tr-2006-149.pdf
new file mode 100644
index 000000000..0b0059e90
Binary files /dev/null and b/JGDMS/jgdms-platform/src/main/java/net/jini/loader/smli_tr-2006-149.pdf differ
diff --git a/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/net/Uri.java b/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/net/Uri.java
index 9b0f72a6a..afa4da7c6 100644
--- a/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/net/Uri.java
+++ b/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/net/Uri.java
@@ -45,7 +45,7 @@
* RFC3986. A zone delimiter %, if present, must be represented in escaped %25
* form as per RFC6874.
*
- * In addition to RFC3896 normalization, IPv6 host addresses will be normalized
+ * In addition to RFC3986 normalization, IPv6 host addresses will be normalized
* to comply with RFC 5952 A Recommendation for IPv6 Address Text Representation.
* This is to ensure consistent equality between identical IPv6 addresses.
*
diff --git a/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/CombinerSecurityManager.java b/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/CombinerSecurityManager.java
index 7adc92899..f730b3c6e 100644
--- a/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/CombinerSecurityManager.java
+++ b/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/CombinerSecurityManager.java
@@ -53,7 +53,6 @@
import org.apache.river.concurrent.RC;
import org.apache.river.concurrent.Ref;
import org.apache.river.concurrent.Referrer;
-import org.apache.river.thread.NamedThreadFactory;
/**
* CombinerSecurityManager, is intended to be a highly scalable
diff --git a/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/PolicyOnlySecurityManager.java b/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/PolicyOnlySecurityManager.java
index 4d413ff25..e44cf833c 100644
--- a/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/PolicyOnlySecurityManager.java
+++ b/JGDMS/jgdms-platform/src/main/java/org/apache/river/api/security/PolicyOnlySecurityManager.java
@@ -19,7 +19,7 @@
import java.security.ProtectionDomain;
/**
- * PolicyOnlySecurityManager allows the Principle of Lease Privilege to be used
+ * PolicyOnlySecurityManager allows the Principle of Least Privilege to be used
* with a security Policy, while retaining scalability and performance.
*
* ProtectionDomains created with the two argument constructor are static,
diff --git a/JGDMS/jgdms-pref-class-loader/suppression.xsd b/JGDMS/jgdms-pref-class-loader/suppression.xsd
index 06d2bf80d..ec4aadb05 100644
--- a/JGDMS/jgdms-pref-class-loader/suppression.xsd
+++ b/JGDMS/jgdms-pref-class-loader/suppression.xsd
@@ -4,7 +4,6 @@
- ^pkg:maven/au\.net\.zeus\.jgdms/jgdms\-pref\-class\-loader@.*$CVE-2010-1151
diff --git a/JGDMS/pom.xml b/JGDMS/pom.xml
index 4e757c586..ce26761bb 100644
--- a/JGDMS/pom.xml
+++ b/JGDMS/pom.xml
@@ -115,7 +115,7 @@
pfirmstone
- 2.4.12
+ 2.4.211.52.04.8.2
@@ -177,7 +177,7 @@
true
-
+
biz.aQute.bndbnd-maven-plugin
- 4.2.0
+ 7.0.0org.apache.maven.plugins
diff --git a/JGDMS/service-starter/pom.xml b/JGDMS/service-starter/pom.xml
index e35c31316..e7b4f18fa 100644
--- a/JGDMS/service-starter/pom.xml
+++ b/JGDMS/service-starter/pom.xml
@@ -102,7 +102,10 @@
-
+
+
org.apache.maven.pluginsmaven-source-plugin
diff --git a/JGDMS/service-starter/suppression.xsd b/JGDMS/service-starter/suppression.xsd
new file mode 100644
index 000000000..ec4aadb05
--- /dev/null
+++ b/JGDMS/service-starter/suppression.xsd
@@ -0,0 +1,9 @@
+
+
+
+
+ CVE-2010-1151
+
+
diff --git a/JGDMS/tools/classdep/pom.xml b/JGDMS/tools/classdep/pom.xml
index 03bcb63af..ca384cc35 100644
--- a/JGDMS/tools/classdep/pom.xml
+++ b/JGDMS/tools/classdep/pom.xml
@@ -1,102 +1,102 @@
-
-
-
- 4.0.0
-
-
- au.net.zeus.jgdms
- tools
- 3.1.1-SNAPSHOT
-
-
- au.net.zeus.jgdms.tools
- classdep
-
- Tool :: ClassDep
- Tool used to analyze a set of classes and determine on what other classes
- they directly or indirectly depend. Typically this tool is used to
- compute the necessary and sufficient set of classes to include in a JAR
- file, for use in the class path of a client or service, or for use in the
- codebase of a client or service. The tool starts with a set of "root"
- classes and recursively computes a dependency graph, finding all of the
- classes referenced directly by the root classes, finding all of the
- classes referenced in turn by those classes, and so on, until no new
- classes are found or until classes that are not of interest are
- found. The normal output of the tool is a list of all of the classes in
- the dependency graph. The output from this command can be used as input
- to the jar tool, to create a JAR file containing precisely
- those classes.
-
-
-
-
- org.ow2.asm
- asm
- 9.7
-
-
- org.ow2.asm
- asm-commons
- 9.6
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
-
-
-
- org.apache.river.tool.ClassDep
- ${project.version}
- asm-9.2.jar asm-commons-9.2.jar
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
-
-
- attach-sources
- verify
-
- jar-no-fork
-
-
-
-
-
- maven-compiler-plugin
-
- 8
- compact1
- 8
- true
- true
- UTF-8
- 128m
- 1024m
-
-
-
-
+
+
+
+ 4.0.0
+
+
+ au.net.zeus.jgdms
+ tools
+ 3.1.1-SNAPSHOT
+
+
+ au.net.zeus.jgdms.tools
+ classdep
+
+ Tool :: ClassDep
+ Tool used to analyze a set of classes and determine on what other classes
+ they directly or indirectly depend. Typically this tool is used to
+ compute the necessary and sufficient set of classes to include in a JAR
+ file, for use in the class path of a client or service, or for use in the
+ codebase of a client or service. The tool starts with a set of "root"
+ classes and recursively computes a dependency graph, finding all of the
+ classes referenced directly by the root classes, finding all of the
+ classes referenced in turn by those classes, and so on, until no new
+ classes are found or until classes that are not of interest are
+ found. The normal output of the tool is a list of all of the classes in
+ the dependency graph. The output from this command can be used as input
+ to the jar tool, to create a JAR file containing precisely
+ those classes.
+
+
+
+
+ org.ow2.asm
+ asm
+ 9.7
+
+
+ org.ow2.asm
+ asm-commons
+ 9.7
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ org.apache.river.tool.ClassDep
+ ${project.version}
+ asm-9.2.jar asm-commons-9.2.jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ attach-sources
+ verify
+
+ jar-no-fork
+
+
+
+
+
+ maven-compiler-plugin
+
+ 8
+ compact1
+ 8
+ true
+ true
+ UTF-8
+ 128m
+ 1024m
+
+
+
+
diff --git a/README.md b/README.md
index a78c26b08..a6b1ccf2a 100644
--- a/README.md
+++ b/README.md
@@ -42,6 +42,11 @@ https://groups.google.com/forum/#!forum/river-secure-ipv6-discovery
* Unnecessary DNS calls have been eliminated.
* Hi performance lookup service method delays or avoids unnecessary codebase downloads.
-## A footnote on JEP411
+## For secuity reasons, Java 24 and later versions are not supported.
+* Authorization is a foundational component of JGDMS, required to limit privileges between cooperating, trusted but independant parties. Just because you trust to do business with someone, doesn't mean you would allow them to access all your personal information.
+* We do not reccommend you run untrusted code (sandboxing), with JGDMS, you can ensure that users are only granted privileges using the code you intended them to use.
+* If you would like to assist maintaining a fork of Java that includes Authorization, please get in touch.
+
+## A footnote on JEP411 and JEP486
In years to come, when Java deployments are sufferring from multiple vulnerabilities, the decision to remove Authorization from Java will be seen with hindsight as one of the biggest blunders made by the OpenJDK team. Java might have avoided a number of vulnerabilities, had Java's trusted computing base remained small, had permission checks been made for enabling data parsing, and the work of Li Gong been properly maintained. I strongly advise against running without a SecurityManager, JGDMS has for many years been run with the SecurityManager enabled. Statments made on the JEP411 page, are simply incorrect. The time will come when this footnote is proven correct.
* https://youtu.be/uVob-4aXbxY
diff --git a/common.xml b/common.xml
index 3ba725212..9d5d65e05 100644
--- a/common.xml
+++ b/common.xml
@@ -144,10 +144,10 @@
-
+
+
+
+
@@ -177,9 +177,9 @@
-->
-
+
@@ -188,7 +188,7 @@
-
+
diff --git a/qa/build.xml b/qa/build.xml
index af4251744..02570bf45 100644
--- a/qa/build.xml
+++ b/qa/build.xml
@@ -216,9 +216,9 @@
-
-
-
+
+
+
@@ -304,9 +304,9 @@
-
-
-
+
+
+
@@ -344,9 +344,9 @@
-
-
-
+
+
+
diff --git a/qa/src/org/apache/river/qa/harness/MasterTest.java b/qa/src/org/apache/river/qa/harness/MasterTest.java
index 946659917..338b15167 100644
--- a/qa/src/org/apache/river/qa/harness/MasterTest.java
+++ b/qa/src/org/apache/river/qa/harness/MasterTest.java
@@ -41,7 +41,7 @@
import net.jini.security.policy.DynamicPolicyProvider;
import org.apache.river.api.security.CombinerSecurityManager;
import org.apache.river.api.io.AtomicMarshalInputStream;
-//import org.apache.river.tool.SecurityPolicyWriter;
+import org.apache.river.tool.SecurityPolicyWriter;
//import org.bouncycastle.jce.provider.BouncyCastleProvider;
//import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider;
@@ -101,6 +101,7 @@ public static void main(String[] args) {
System.setErr(System.out);
logger.log(Level.FINE, "Starting MasterTest");
if (System.getSecurityManager() == null) {
+ logger.log(Level.WARNING, "SecurityManager was null");
// System.setSecurityManager(new java.rmi.RMISecurityManager());
// System.setSecurityManager(new SecurityPolicyWriter()); // Seems to be ok here
System.setSecurityManager(new CombinerSecurityManager());
diff --git a/qa/src/org/apache/river/qa/harness/TestDescription.java b/qa/src/org/apache/river/qa/harness/TestDescription.java
index f2ab80cc7..1c55f2d93 100644
--- a/qa/src/org/apache/river/qa/harness/TestDescription.java
+++ b/qa/src/org/apache/river/qa/harness/TestDescription.java
@@ -634,18 +634,18 @@ String[] getCommandLine(Properties overrides) throws TestException {
String testClass = getTestClassName();
ArrayList cmdList = new ArrayList(64);
cmdList.add(getJVM());
- cmdList.add("-Djava.security.policy=" + getPolicyFile());
- if (getCodebase() != null) {
- cmdList.add("-Djava.rmi.server.codebase=" + getCodebase());
- }
cmdList.add("-cp");
cmdList.add(getClasspath());
- // all options follow -cp, making them easy to find in the log
+ // all options follow -cp, making them easy to find in the log
String[] vmArgs = getJVMArgs();
String[] options = config.extractOptions(vmArgs);
for (int i = 0; i < options.length; i++) {
cmdList.add(options[i]);
}
+ cmdList.add("-Djava.security.policy=" + getPolicyFile());
+ if (getCodebase() != null) {
+ cmdList.add("-Djava.rmi.server.codebase=" + getCodebase());
+ }
// extractproperties will discard undefined optional properties
// testhosts property is expected to be included here if defined
boolean discardLoggingProps = false;
diff --git a/qa/src/org/apache/river/qa/resources/qaDefaults.properties b/qa/src/org/apache/river/qa/resources/qaDefaults.properties
index b38974f19..9fcf47638 100644
--- a/qa/src/org/apache/river/qa/resources/qaDefaults.properties
+++ b/qa/src/org/apache/river/qa/resources/qaDefaults.properties
@@ -406,7 +406,8 @@ org.apache.river.qa.harness.actdeathdelay=5
#
# -Djava.security.manager=org.apache.river.tool.SecurityPolicyWriter,\
# -DSecurityPolicyWriter.path.properties=${qa.home}/harness/policy/securitypolicywriterpath.properties,\
-#
+#
+# -Djava.security.manager=allow,\
# This option is used to test previous LoaderKey behaviour in PreferredClassProvider and
# SecureClassLoader pdCache.
# -Dnet.jini.loader.codebaseAnnotation=URL
@@ -423,7 +424,8 @@ org.apache.river.qa.harness.actdeathdelay=5
org.apache.river.qa.harness.globalvmargs=\
-ea,\
-esa,\
--Djava.security.debug=certpath,\
+-Djava.security.manager=org.apache.river.tool.SecurityPolicyWriter,\
+-DSecurityPolicyWriter.path.properties=${qa.home}/harness/policy/securitypolicywriterpath.properties,\
-Djava.net.preferIPv6Addresses=true,\
-Dsun.net.maxDatagramSockets=1024,\
-Djdk.io.permissionsUseCanonicalPath=true,\
diff --git a/qa/src/org/apache/river/test/resources/qa1.logging b/qa/src/org/apache/river/test/resources/qa1.logging
index 3b352a5c8..f0a28be34 100644
--- a/qa/src/org/apache/river/test/resources/qa1.logging
+++ b/qa/src/org/apache/river/test/resources/qa1.logging
@@ -39,7 +39,7 @@ handlers = java.util.logging.ConsoleHandler
# level setting (set below) to limit messages printed to
# the console.
-.level = INFO
+.level = CONFIG
############################################################
# Handler specific properties: formatters and logger levels
@@ -198,12 +198,12 @@ org.apache.river.discovery.x500.level = SEVERE
# For the Helper Utilities
net.jini.discovery.LookupDiscovery.level = SEVERE
net.jini.discovery.LookupLocatorDiscovery.level = SEVERE
-net.jini.lookup.JoinManager.level = SEVERE
+net.jini.lookup.JoinManager.level = FINEST
net.jini.lookup.ServiceDiscoveryManager.level = SEVERE
net.jini.lease.LeaseRenewalManager.level = SEVERE
# For Thread Pool Utilities
-org.apache.river.thread.RetryTask.level = SEVERE
+org.apache.river.thread.RetryTask.level = FINER
org.apache.river.thread.WakeupManager.level = SEVERE
org.apache.river.thread.ThreadPool.level = SEVERE
@@ -278,8 +278,8 @@ org.apache.river.outrigger.transactions.level = SEVERE
org.apache.river.example.browser.level = SEVERE
# For the test harness, tests, and infrastructure.
-org.apache.river.qa.harness.level = INFO
-org.apache.river.qa.harness.test.level = INFO
-org.apache.river.qa.harness.service.level = INFO
-org.apache.river.qa.harness.config.level = INFO
+org.apache.river.qa.harness.level = FINE
+org.apache.river.qa.harness.test.level = FINE
+org.apache.river.qa.harness.service.level = FINE
+org.apache.river.qa.harness.config.level = FINE
org.apache.river.test.spec.jeri.mux.level = SEVERE