Skip to content

Commit 4abebbe

Browse files
add: add vulnerable_ports logic
1 parent 3a75f0c commit 4abebbe

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

src/plugin/manager/ec2/security_group_manager.py

+18-21
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def create_cloud_service(self, region, options, secret_data, schema):
3737
cloudtrail_resource_type = "AWS::EC2::SecurityGroup"
3838

3939
# If Port Filter Option Exist
40-
vulnerable_ports = self.options.get("vulnerable_ports", DEFAULT_VULNERABLE_PORTS)
40+
vulnerable_ports = options.get("vulnerable_ports", DEFAULT_VULNERABLE_PORTS)
4141

4242
# Get default VPC
4343
default_vpcs = self._get_default_vpc()
@@ -166,16 +166,15 @@ def create_cloud_service(self, region, options, secret_data, schema):
166166
)
167167

168168
def custom_security_group_rule_info(self, raw_rule, remote, remote_type, vulnerable_ports):
169+
protocol_display = self._get_protocol_display(raw_rule.get("IpProtocol"))
169170
raw_rule.update(
170171
{
171-
"protocol_display": self._get_protocol_display(
172-
raw_rule.get("IpProtocol")
173-
),
172+
"protocol_display": protocol_display,
174173
"port_display": self._get_port_display(raw_rule),
175174
"source_display": self._get_source_display(remote),
176175
"description_display": self._get_description_display(remote),
177176
remote_type: remote,
178-
"vulnerable_ports": self._get_vulnerable_ports(raw_rule, vulnerable_ports)
177+
"vulnerable_ports": self._get_vulnerable_ports(protocol_display, raw_rule, vulnerable_ports)
179178
}
180179
)
181180

@@ -295,23 +294,21 @@ def get_instance_name_from_tags(instance):
295294
return ""
296295

297296
@staticmethod
298-
def _get_vulnerable_ports(raw_rule, vulnerable_ports):
299-
is_port_all = False
300-
297+
def _get_vulnerable_ports(protocol_display: str, raw_rule: dict, vulnerable_ports: str):
301298
try:
302-
toPort = int(raw_rule.get("ToPort"))
303-
fromPort = int(raw_rule.get("FromPort"))
304-
except (ValueError, TypeError):
305-
is_port_all = True
306-
toPort, fromPort = None, None
299+
if protocol_display == "ALL":
300+
return [int(port.strip()) for port in vulnerable_ports.split(',')]
307301

308-
ports = []
309-
try:
310-
for port in map(str.strip, vulnerable_ports.split(',')):
311-
target_port = int(port)
312-
if is_port_all or (fromPort <= target_port <= toPort):
313-
ports.append(target_port)
302+
to_port = raw_rule.get("ToPort")
303+
from_port = raw_rule.get("FromPort")
304+
305+
if to_port is None or from_port is None:
306+
return []
314307

315-
return ports
316-
except Exception:
308+
return [
309+
int(port.strip())
310+
for port in vulnerable_ports.split(',')
311+
if from_port <= int(port.strip()) <= to_port
312+
]
313+
except ValueError:
317314
raise ERROR_VULNERABLE_PORTS(vulnerable_ports)

0 commit comments

Comments
 (0)