Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare v5.0.0 Release #53

Merged
merged 60 commits into from
Dec 19, 2023
Merged

Prepare v5.0.0 Release #53

merged 60 commits into from
Dec 19, 2023

Conversation

qtc-de
Copy link
Owner

@qtc-de qtc-de commented Dec 19, 2023

Added

  • Add support for dynamically created socket factory classes (docs)
  • Add support for method guessing on spring-remoting endpoints (docs)
  • Add a Spring Remoting example server (src, package)

Changed

  • Changed the namespace of the project from de.qtc to eu.tneitzel
  • Fix leak of local ysoserial path (e30f52c)
  • The GenericPrint plugin is now included in rmg per default (b09e9a5)
  • Stream corruption errors during method guessing are only displayed if --verbose is used

remote-method-guesser now attempts to create missing socket factory
classes dynamically.
Added a spring remoting server.
When using remote-method-guessers ysoserial integration, gadget objects
created by ysoserial were annotated by the marshaloutput stream. This
annotation included the absoulte file system path of the ysoserial
library, which represents a low impact information disclosure. Since
remote-method-guesser already overrides the default RMIClassLoader, this
behavior was now changed by always returning null as result of the
getClassAnnotation method.
A new RemoteObject was added to port 9010 of the ExampleServer. This
remote object is registred with a custom RMISocketFactory to allow tests
of the dynamic SockerFactory creation feature of remote-method-guesser.
The GenericPrint plugin is now included into rmg per default and can be
activated by using the --return-value option.
Switch namespace from de.qtc to eu.tneitzel. The initial namespace was
chosen without further thinking about it. From version v5.0.0 it is
planned to expose remote-method-guesser also via maven repositories.
Therefore, we switch now to a namespace that is actually owned by the
author.
When remote-method-guesser performs a lookup operation, classes may be
created dynamically to handle custom socket factories or RMI stubs. The
serialVersionUid of these classes need to match the incomming class.
remote-method-guesser hadles this using an error based appraoch, where
the required serialVersionUid is obtained from an exception message.

Up to this commit, the above mentioned mechanism only triggered once.
This causes problems if you have e.g. a RMI stub class that uses a
custom socket factory too. With this commit, the count is increased to
five (probably more than required, but it won't hurt).
In some configurations, stream corruptions can occur during method
guessing with multiple threads. This behavior seems to be non
deterministically and was not fully understood yet. However, even on
affected configurations, the miss rate is roughly at 1/3000 methods that
fail. For this reason, we catch the resulting exceptions for now and
only display warnings if running in verbose mode.
@qtc-de qtc-de merged commit 8d0fd45 into master Dec 19, 2023
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant