xiaoqin.fu created THRIFT-4929:
----------------------------------

             Summary: Sensitive information about socket input stream or output 
stream is leaked from TIOStreamTransport
                 Key: THRIFT-4929
                 URL: https://issues.apache.org/jira/browse/THRIFT-4929
             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.TIOStreamTransport,
  public void close() {
    if (inputStream_ != null) {
      try {
        inputStream_.close();
      } catch (IOException iox) {
        LOGGER.warn("Error closing input stream.", iox);
      }
      inputStream_ = null;
    }
    if (outputStream_ != null) {
      try {
        outputStream_.close();
      } catch (IOException iox) {
        LOGGER.warn("Error closing output stream.", iox);
      }
      outputStream_ = null;
    }
  }
Sensitive information about socket input stream or output stream is leaked. 
  The tainted 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 --> 
             org.apache.thrift.protocol.TBinaryProtocol --> 
             org.apache.thrift.transport.TIOStreamTransport --> 
             org.apache.thrift.protocol.TBinaryProtocol --> 
             org.apache.thrift.transport.TIOStreamTransport --> 
             CalculatorClient --> 
             CalculatorService$Client --> 
             CalculatorService$add_args --> 
             CalculatorService$add_result --> 
             org.apache.thrift.protocol.TBinaryProtocol --> 
             CalculatorClient --> 
             CalculatorService$add_result --> 
             org.apache.thrift.protocol.TBinaryProtocol --> 
              org.apache.thrift.transport.TIOStreamTransport --> 
              org.apache.thrift.protocol.TBinaryProtocol --> 
              org.apache.thrift.protocol.TProtocol --> 
              org.apache.thrift.protocol.TBinaryProtocol --> 
              org.apache.thrift.TServiceClient --> 
              org.apache.thrift.transport.TIOStreamTransport --> 
              CalculatorService$Client --> 
              CalculatorClient --> 
              org.apache.thrift.transport.TSocket --> 
              CalculatorClient --> 
              org.apache.thrift.protocol.TBinaryProtocol --> 
              CalculatorClient --> 
              org.apache.thrift.EncodingUtils --> 
              CalculatorService$Client --> 
              org.apache.thrift.transport.TSocket --> 
              org.apache.thrift.protocol.TBinaryProtocol --> 
              org.apache.thrift.transport.TIOStreamTransport --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               org.apache.thrift.transport.TIOStreamTransport --> 
               org.apache.thrift.EncodingUtils --> 
               org.apache.thrift.transport.TIOStreamTransport --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               org.apache.thrift.transport.TSocket --> 
               org.apache.thrift.protocol.TProtocol --> 
               org.apache.thrift.TServiceClient --> 
               org.apache.thrift.transport.TSocket --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               org.apache.thrift.transport.TSocket --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               org.apache.thrift.EncodingUtils --> 
               org.apache.thrift.transport.TIOStreamTransport --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               org.apache.thrift.transport.TSocket --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               org.apache.thrift.transport.TSocket --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               CalculatorClient --> 
               org.apache.thrift.protocol.TBinaryProtocol --> 
               org.apache.thrift.transport.TIOStreamTransport --> 



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to