UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

57 lines (56 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const base_1 = require("../../base"); class RDPPortOpenToWorldAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allSecurityGroups = params.security_groups; if (!allSecurityGroups) { return undefined; } const rdp_port_open_to_world = { type: types_1.CheckAnalysisType.Security }; rdp_port_open_to_world.what = "Is RDP port open to world?"; rdp_port_open_to_world.why = "We should always restrict RDP port only intended parties to access"; rdp_port_open_to_world.recommendation = "Recommended to restrict RDP port in security groups to specific IPs"; rdp_port_open_to_world.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allSecurityGroups) { const regionSecurityGroups = allSecurityGroups[region]; allRegionsAnalysis[region] = []; for (const securityGroup of regionSecurityGroups) { if (securityGroup.GroupName === "default") { continue; } const securityGroupAnalysis = {}; securityGroupAnalysis.resource = securityGroup; securityGroupAnalysis.resourceSummary = { name: "SecurityGroup", value: `${securityGroup.GroupName} | ${securityGroup.GroupId}`, }; if (this.isRDPOpenToWorld(securityGroup)) { securityGroupAnalysis.severity = types_1.SeverityStatus.Failure; securityGroupAnalysis.message = "RDP Port is open to entire world"; securityGroupAnalysis.action = "Restrict RDP port"; } else { securityGroupAnalysis.severity = types_1.SeverityStatus.Good; securityGroupAnalysis.message = "RDP port is not open to entire world"; } allRegionsAnalysis[region].push(securityGroupAnalysis); } } rdp_port_open_to_world.regions = allRegionsAnalysis; return { rdp_port_open_to_world }; } isRDPOpenToWorld(securityGroup) { if (!securityGroup) { return false; } return securityGroup.IpPermissions.some((rule) => { return rule.FromPort === 3389 && rule.IpRanges.some((ipRange) => { return ipRange.CidrIp === "0.0.0.0/0"; }); }); } } exports.RDPPortOpenToWorldAnalyzer = RDPPortOpenToWorldAnalyzer;