Class GhidraObjectInputFilter
- All Implemented Interfaces:
ObjectInputFilter
GhidraObjectInputFilter provides global serial input filter for use with Ghidra server
and client applications. This filter primarily targets RMI deserialization, however as a
global filter it impacts all deserialization cases which may need to be considered
when specifying filters.
Filter files use syntax as supported by ObjectInputFilter.Config.createFilter(String)
with the addition of remoteIf=<remote-classname> entries for client filters to
specify those Remote interfaces which require the use of dynamic Proxy class
implementations for RMI stubs.
RMI Server applications should invoke configureServerSerialFilter(ResourceFile, Supplier)
during early initialization with a suitable filter file, while Ghidra client applications should
invoke configureClientSerialFilter() to use all Module data *.serial.filter files
to define client deserialization restrictions.
See ObjectInputFilter.Config.createFilter(String) for filter file syntax.
See ObjectInputFilter.Config.setSerialFilterFactory(java.util.function.BinaryOperator).
-
Nested Class Summary
Nested classes/interfaces inherited from interface ObjectInputFilter
ObjectInputFilter.Config, ObjectInputFilter.FilterInfo, ObjectInputFilter.Status -
Method Summary
Modifier and TypeMethodDescriptionstatic voidConfigure global serial input filter for a client.static voidconfigureServerSerialFilter(ResourceFile filterFile, Supplier<String> sourceNameSupplier) Install global deserialization filter factory for a server.protected StringGet the class serialization source.
-
Method Details
-
checkInput
- Specified by:
checkInputin interfaceObjectInputFilter
-
getSourceName
Get the class serialization source. If asourceSupplierRefhas been set it will be used, otherwise null will be returned.- Returns:
- serialized data source name or null
-
configureServerSerialFilter
public static void configureServerSerialFilter(ResourceFile filterFile, Supplier<String> sourceNameSupplier) throws IllegalStateException Install global deserialization filter factory for a server. This will handle all deserialization filtering including SignedObject payloads.This filter will make use of the
GhidraSerialFilterFactoryand ensure that it is properly installed.- Parameters:
filterFile- serial filter filesourceNameSupplier- source name supplied for use during logging, or null. It is assumed that a the current thread may be used to differentiate a client connection over which the serialization is occuring.- Throws:
IllegalStateException- if error occured building or installing serial input filter and related filter factory.
-
configureClientSerialFilter
Configure global serial input filter for a client. This will handle all deserialization filtering including SignedObject payloads. The object deserialization filter will be based on the accumulation of alldata/*.serial.filterfiles found within all Application modules.This filter will make use of the
GhidraSerialFilterFactoryand ensure that it is properly installed.- Throws:
IllegalStateException- if error occurred building or installing serial input filter and related filter factory.
-