Clear-text protocols such as ftp, telnet or non-secure http lack encryption of transported data, as well as
the capability to build an authenticated connection. It means that an attacker able to sniff traffic from the network can read, modify or corrupt the
transported content. These protocols are not secure as they expose applications to an extensive range of risks:
Even in the context of isolated networks like offline environments or segmented cloud environments, the insider threat exists. Thus, attacks involving communications being sniffed or tampered with can still happen.
For example, attackers could successfully compromise prior security layers by:
In such cases, encrypting communications would decrease the chances of attackers to successfully leak data or steal credentials from other network components. By layering various security practices (segmentation and encryption, for example), the application will follow the defense-in-depth principle.
Note that using the http protocol is being deprecated by major web browsers.
In the past, it has led to the following vulnerabilities:
There is a risk if you answered yes to any of those questions.
ssh as an alternative to telnet sftp, scp or ftps instead of ftp https instead of http SMTP over SSL/TLS or SMTP with STARTTLS instead of clear-text SMTP It is recommended to secure all transport channels (even local network) as it can take a single non secure connection to compromise an entire application or system.
url = "http://example.com"; // Sensitive url = "ftp://anonymous@example.com"; // Sensitive url = "telnet://anonymous@example.com"; // Sensitive
For nodemailer:
const nodemailer = require("nodemailer");
let transporter = nodemailer.createTransport({
secure: false, // Sensitive
requireTLS: false // Sensitive
});
const nodemailer = require("nodemailer");
let transporter = nodemailer.createTransport({}); // Sensitive
For ftp:
var Client = require('ftp');
var c = new Client();
c.connect({
'secure': false // Sensitive
});
For telnet-client:
const Telnet = require('telnet-client'); // Sensitive
url = "https://example.com"; // Compliant url = "sftp://anonymous@example.com"; // Compliant url = "ssh://anonymous@example.com"; // Compliant
For nodemailer one of the following options must be set:
const nodemailer = require("nodemailer");
let transporter = nodemailer.createTransport({
secure: true, // Compliant
requireTLS: true, // Compliant
port: 465, // Compliant
secured: true // Compliant
});
For ftp:
var Client = require('ftp');
var c = new Client();
c.connect({
'secure': true // Compliant
});
No issue is reported for the following cases because they are not considered sensitive:
localhost