xiaoqin.fu created THRIFT-4930: ---------------------------------- Summary: An information leakage about socket input stream or output stream from TIOStreamTransport to TSocket Key: THRIFT-4930 URL: https://issues.apache.org/jira/browse/THRIFT-4930 Project: Thrift Issue Type: Bug Components: Java - Library Affects Versions: 0.12.0, 0.11.0 Environment: Ubuntu 16.04.3 LTS Open JDK version "1.8.0_191" build 25.191-b12 Reporter: xiaoqin.fu Attachments: TaintPath
The source: org.apache.thrift.transport.TIOStreamTransport: public int read(byte[] buf, int off, int len) throws TTransportException { if (inputStream_ == null) { throw new TTransportException(TTransportException.NOT_OPEN, "Cannot read from null inputStream"); } int bytesRead; ...... bytesRead = inputStream_.read(buf, off, len); ...... } The sink: org.apache.thrift.transport.TSocket: public void close() { ...... if (socket_ != null) { try { socket_.close(); } catch (IOException iox) { LOGGER.warn("Could not close socket.", iox); } socket_ = null; } } Sensitive information about socket input stream or output stream is leaked. The taint path: org.apache.thrift.transport.TIOStreamTransport --> org.apache.thrift.transport.TTransport --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TTransport --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TTransport --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TTransport --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TTransport --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TTransport --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TTransport --> CalculatorService$add_result$add_resultStandardScheme --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.TServiceClient --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TIOStreamTransport --> CalculatorService$add_result$add_resultStandardScheme --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TIOStreamTransport --> CalculatorService$add_result$add_resultStandardScheme --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$Client --> org.apache.thrift.protocol.TMessage --> org.apache.thrift.protocol.TField --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_result$add_resultStandardScheme --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_result$add_resultStandardScheme --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.protocol.TField --> CalculatorService$Client --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_result --> org.apache.thrift.TServiceClient --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.TServiceClient --> org.apache.thrift.protocol.TField --> CalculatorService$add_result$add_resultStandardScheme --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$Client --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$Client --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.protocol.TMessage --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.TServiceClient --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.TServiceClient --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_result$add_resultStandardScheme --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.protocol.TMessage --> CalculatorService$add_result$add_resultStandardScheme --> CalculatorService$add_args --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_result --> CalculatorService$add_args --> org.apache.thrift.TServiceClient --> CalculatorService$add_result --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_args --> CalculatorService$add_result$add_resultStandardScheme --> CalculatorService$add_result --> org.apache.thrift.EncodingUtils --> CalculatorClient --> CalculatorService$add_result --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.TServiceClient --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_result --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.EncodingUtils --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.EncodingUtils --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.EncodingUtils --> CalculatorService$add_args --> CalculatorService$add_args$add_argsStandardSchemeFactory --> CalculatorClient --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_result$add_resultStandardSchemeFactory --> CalculatorService$add_result --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorClient --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_args --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorService$add_args --> org.apache.thrift.protocol.TBinaryProtocol --> CalculatorClient --> CalculatorService$add_result --> org.apache.thrift.protocol.TBinaryProtocol --> org.apache.thrift.transport.TSocket --> -- This message was sent by Atlassian JIRA (v7.6.14#76016)