C#


CSHARP.INSEC.DTP : Deprecated Transfer Protocol (C#)

Summary

An unsafe or deprecated transfer protocol is used inside a transfer method.

Properties

Class Name Deprecated Transfer Protocol (C#)
Significance security
Mnemonic CSHARP.INSEC.DTP
Categories
CWE CWE:757 Selection of Less-Secure Algorithm During Negotiation ('Algorithm Downgrade')
OWASP-2017 OWASP-2017:A9 Using components with known vulnerabilities
OWASP-2021 OWASP-2021:A6 Vulnerable and outdated components
Availability Available for C# only.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Deprecated Transfer Protocol (C#)"

Examples

using System;
using System.Net;
using System.Net.Security;
using System.Net.Sockets;
using System.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

namespace UnsafeTransferProtocol
{

  public class TransferProtocolUsage
  {
    public void UnsafeTransferProtocol(TcpClient client,
                                       string targetHost,
                                       X509CertificateCollection clientCertificates,
                                       bool checkCertificateRevocation,
                                       AsyncCallback asyncCallback,
                                       object asyncState) {
       SslStream sslStream = new SslStream(client.GetStream(), false);
       sslStream.BeginAuthenticateAsClient(targetHost,
                                           clientCertificates,
                                           System.Security.Authentication.SslProtocols.Ssl2,
                                           checkCertificateRevocation,
                                           asyncCallback,
                                           asyncState);                   // "Deprecated Transfer Protocol (C#)" warning issued here 
       ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;  // "Deprecated Transfer Protocol (C#)" warning issued here 
    }
  }
}

Resolution

Parameterize it in a configuration file.

Use safer protocols.

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.