@@ -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