Skip to content

Commit dbb3393

Browse files
authored
Merge pull request #8085 from dCache/14678/10.2
alarms: use HardenedLoggingEventInputStream to address possible RCE when
2 parents dd4e875 + 1831f88 commit dbb3393

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

modules/dcache/src/main/java/org/dcache/alarms/logback/LogEntryServerSocketNode.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
7878
*/
7979
package org.dcache.alarms.logback;
8080

81+
import ch.qos.logback.classic.net.server.HardenedLoggingEventInputStream;
8182
import ch.qos.logback.classic.spi.ILoggingEvent;
8283
import dmg.cells.nucleus.CDC;
8384
import java.io.BufferedInputStream;
8485
import java.io.EOFException;
8586
import java.io.IOException;
86-
import java.io.ObjectInputStream;
8787
import java.net.Socket;
8888
import java.net.SocketException;
8989
import java.util.HashMap;
@@ -109,7 +109,7 @@ final class LogEntryServerSocketNode implements Runnable {
109109
private static final Logger LOGGER
110110
= LoggerFactory.getLogger(LogEntryServerSocketNode.class);
111111

112-
private final ObjectInputStream ois;
112+
private final HardenedLoggingEventInputStream inputStream;
113113
private final Socket socket;
114114
private final LogEntryServer server;
115115
private final String hostName;
@@ -121,15 +121,16 @@ final class LogEntryServerSocketNode implements Runnable {
121121
this.server = socketServer;
122122
this.socket = socket;
123123
hostName = socket.getInetAddress().getCanonicalHostName();
124-
ois = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
124+
inputStream =
125+
new HardenedLoggingEventInputStream(new BufferedInputStream(socket.getInputStream()));
125126
}
126127

127128
public void run() {
128129
LogEntryHandler handler = server.getHandler();
129130
running = true;
130131
try {
131132
while (running) {
132-
ILoggingEvent event = (ILoggingEvent) ois.readObject();
133+
ILoggingEvent event = (ILoggingEvent) inputStream.readObject();
133134
Map<String, String> properties = new HashMap<>();
134135
Map<String, String> mdc = event.getMDCPropertyMap();
135136
properties.put(Alarm.HOST_TAG, hostName);
@@ -164,11 +165,11 @@ void close() {
164165
if (running) {
165166
running = false;
166167
try {
167-
ois.close();
168+
inputStream.close();
168169
} catch (IOException e) {
169170
LOGGER.debug("Could not close connection: {}, cause: {}.",
170171
e.getMessage(), e.getCause());
171172
}
172173
}
173174
}
174-
}
175+
}

0 commit comments

Comments
 (0)