Exemplo n.º 1
0
    def update_asset_properties(self, props, name, existing_params=None):
        if existing_params is None:
            asset = self.get_asset_by_name(name, simplify=False)

            existing_params = AssetParameters(
                assetName=asset.theName,
                shortCode=asset.theShortCode,
                assetDesc=asset.theDescription,
                assetSig=asset.theSignificance,
                assetType=asset.theType,
                cFlag=asset.isCritical,
                cRationale=asset.theCriticalRationale,
                tags=asset.theTags,
                ifs=asset.theInterfaces,
                cProperties=[]
            )
            existing_params.setId(asset.theId)

        existing_params.theEnvironmentProperties = props

        try:
            self.db_proxy.updateAsset(existing_params)
        except ARM.DatabaseProxyException as ex:
            self.close()
            raise ARMHTTPError(ex)
        except ARM.ARMException as ex:
            self.close()
            raise ARMHTTPError(ex)
Exemplo n.º 2
0
    def update_asset_properties(self, props, name, existing_params=None):
        if existing_params is None:
            asset = self.get_asset_by_name(name, simplify=False)

            existing_params = AssetParameters(
                assetName=asset.theName,
                shortCode=asset.theShortCode,
                assetDesc=asset.theDescription,
                assetSig=asset.theSignificance,
                assetType=asset.theType,
                cFlag=asset.isCritical,
                cRationale=asset.theCriticalRationale,
                tags=asset.theTags,
                ifs=asset.theInterfaces,
                cProperties=[])
            existing_params.setId(asset.theId)

        existing_params.theEnvironmentProperties = props

        try:
            self.db_proxy.updateAsset(existing_params)
        except ARM.DatabaseProxyException as ex:
            self.close()
            raise ARMHTTPError(ex)
        except ARM.ARMException as ex:
            self.close()
            raise ARMHTTPError(ex)
Exemplo n.º 3
0
    def update_asset(self, asset, name):
        old_asset = self.get_asset_by_name(name, simplify=False)
        id = old_asset.theId

        params = AssetParameters(
            assetName=asset.theName,
            shortCode=asset.theShortCode,
            assetDesc=asset.theDescription,
            assetSig=asset.theSignificance,
            assetType=asset.theType,
            cFlag=asset.isCritical,
            cRationale=asset.theCriticalRationale,
            tags=asset.theTags,
            ifs=asset.theInterfaces,
            cProperties=asset.theEnvironmentProperties
        )
        params.setId(id)

        try:
            self.db_proxy.updateAsset(params)
        except ARM.DatabaseProxyException as ex:
            self.close()
            raise ARMHTTPError(ex)
        except ARM.ARMException as ex:
            self.close()
            raise ARMHTTPError(ex)
Exemplo n.º 4
0
 def parameters(self):
     parameters = AssetParameters(
         self.theAssetName, self.theShortCode, self.theAssetDescription,
         self.theAssetSignificance, self.theType, self.theCriticalIndicator,
         self.theCriticalRationale, self.theTags, self.theInterfaces,
         self.theEnvironmentProperties)
     parameters.setId(self.theAssetId)
     return parameters
Exemplo n.º 5
0
 def assetParameters(self,assetId = -1):
   cMitigated = self.theSecurityProperties[armid.C_PROPERTY]
   iMitigated = self.theSecurityProperties[armid.I_PROPERTY]
   avMitigated = self.theSecurityProperties[armid.AV_PROPERTY]
   acMitigated = self.theSecurityProperties[armid.AC_PROPERTY]
   assetProperties = array((cMitigated,iMitigated,avMitigated,acMitigated))
   mitName = self.theName + ' response'
   parameters = AssetParameters(mitName,self.theDescription,'Mitigation',assetProperties)
   parameters.setId(assetId)
   return parameters
Exemplo n.º 6
0
 def assetParameters(self,assetId = -1):
   cMitigated = 1
   iMitigated = 1
   avMitigated = 1
   acMitigated = 1
   anMitigated = 1
   panMitigated = 1
   unlMitigated = 1
   unoMitigated = 1
   for idx,propertyName in enumerate(self.theMitigatedProperties):
     if (propertyName == 'Confidentiality'): cMitigated = 3
     elif (propertyName == 'Integrity'): iMitigated = 3
     elif (propertyName == 'Availability'): avMitigated = 3
     elif (propertyName == 'Accountability'): acMitigated = 3
     elif (propertyName == 'Anonymity'): acMitigated = 4
     elif (propertyName == 'Pseudonymity'): acMitigated = 5
     elif (propertyName == 'Unlinkability'): acMitigated = 6
     elif (propertyName == 'Unobservability'): acMitigated = 7
   assetProperties = array((cMitigated,iMitigated,avMitigated,acMitigate,anMitigated,panMitigated,unlMitigated,unoMitigated))
   mitName = self.theName + ' response'
   parameters = AssetParameters(mitName,self.theDescription,assetProperties)
   parameters.setId(assetId)
   return parameters
Exemplo n.º 7
0
def buildCMAsset(target):
  assetName = target.name() + ' CM'
  assetDesc = target.description()
  assetType = target.type()
  shortCode = 'XX'
  significanceText = 'Mitigates risk '
  b = Borg()
  proxy = b.dbProxy
  risks = proxy.mitigatedRisks(target.id())
  significanceText += risks[0]
  assetEnvironmentProperties = []
  for cProps in target.environmentProperties():
    assetEnvironmentProperties.append(AssetEnvironmentProperties(cProps.name(),cProps.properties(),cProps.rationale()))
  return AssetParameters(assetName,shortCode,assetDesc,significanceText,assetType,False,'',target.tags(),[],assetEnvironmentProperties)
Exemplo n.º 8
0
    def update_asset(self, asset, name):
        old_asset = self.get_asset_by_name(name, simplify=False)
        id = old_asset.theId

        params = AssetParameters(assetName=asset.theName,
                                 shortCode=asset.theShortCode,
                                 assetDesc=asset.theDescription,
                                 assetSig=asset.theSignificance,
                                 assetType=asset.theType,
                                 cFlag=asset.isCritical,
                                 cRationale=asset.theCriticalRationale,
                                 tags=asset.theTags,
                                 ifs=asset.theInterfaces,
                                 cProperties=asset.theEnvironmentProperties)
        params.setId(id)

        try:
            self.db_proxy.updateAsset(params)
        except ARM.DatabaseProxyException as ex:
            self.close()
            raise ARMHTTPError(ex)
        except ARM.ARMException as ex:
            self.close()
            raise ARMHTTPError(ex)
Exemplo n.º 9
0
def buildFromTemplate(assetName,assetEnvs):
  b = Borg()
  taObjt = b.dbProxy.dimensionObject(assetName,'template_asset')
  assetDesc = taObjt.description()
  assetType = taObjt.type()
  shortCode = taObjt.shortCode()
  significanceText = taObjt.significance()
  assetEnvironmentProperties = []
  secProperties = taObjt.securityProperties()
  pRationale = taObjt.rationale()
  tags = taObjt.tags()
  ifs = taObjt.interfaces()
  for envName in assetEnvs:
    assetEnvironmentProperties.append(AssetEnvironmentProperties(envName,secProperties,pRationale))
  return AssetParameters(assetName,shortCode,assetDesc,significanceText,assetType,False,'',tags,ifs,assetEnvironmentProperties)  
Exemplo n.º 10
0
    def add_asset(self, asset, asset_props=None):
        try:
            self.db_proxy.nameCheck(asset.theName, 'asset')
        except ARM.ARMException as ex:
            self.close()
            raise ARMHTTPError(ex)

        assetParams = AssetParameters(
            assetName=asset.theName,
            shortCode=asset.theShortCode,
            assetDesc=asset.theDescription,
            assetSig=asset.theSignificance,
            assetType=asset.theType,
            cFlag=asset.isCritical,
            cRationale=asset.theCriticalRationale,
            tags=asset.theTags,
            ifs=asset.theInterfaces,
            cProperties=asset.theEnvironmentProperties)

        asset_id = self.db_proxy.addAsset(assetParams)
        return asset_id
Exemplo n.º 11
0
 def endElement(self, name):
     if name == 'role':
         p = RoleParameters(self.theName, self.theType, self.theShortCode,
                            self.theDescription, [])
         self.theRoleParameters.append(p)
         self.resetRoleAttributes()
     elif name == 'asset':
         envDict = {}
         for sp in self.theSecurityProperties:
             envName = sp[0]
             spName = sp[1]
             spValue = a2i(sp[2])
             spRationale = sp[3]
             if envName in envDict:
                 (envDict[envName])[spName] = (spValue, spRationale)
             else:
                 spDict = {}
                 spDict['confidentiality'] = (0, 'None')
                 spDict['integrity'] = (0, 'None')
                 spDict['availability'] = (0, 'None')
                 spDict['accountability'] = (0, 'None')
                 spDict['anonymity'] = (0, 'None')
                 spDict['pseudonymity'] = (0, 'None')
                 spDict['unlinkability'] = (0, 'None')
                 spDict['unobservability'] = (0, 'None')
                 spDict[spName] = (spValue, spRationale)
                 envDict[envName] = spDict
         for envName in envDict:
             spDict = envDict[envName]
             cProperty, cRationale = spDict['confidentiality']
             iProperty, iRationale = spDict['integrity']
             avProperty, avRationale = spDict['availability']
             acProperty, acRationale = spDict['accountability']
             anProperty, anRationale = spDict['anonymity']
             panProperty, panRationale = spDict['pseudonymity']
             unlProperty, unlRationale = spDict['unlinkability']
             unoProperty, unoRationale = spDict['unobservability']
             ep = AssetEnvironmentProperties(envName, [
                 cProperty, iProperty, avProperty, acProperty, anProperty,
                 panProperty, unlProperty, unoProperty
             ], [
                 cRationale, iRationale, avRationale, acRationale,
                 anRationale, panRationale, unlRationale, unoRationale
             ])
             self.theEnvironmentProperties.append(ep)
         p = AssetParameters(self.theName, self.theShortCode,
                             self.theDescription, self.theSignificance,
                             self.theAssetType, self.isCritical,
                             self.theCriticalRationale, self.theTags,
                             self.theInterfaces,
                             self.theEnvironmentProperties)
         self.theAssetParameters.append(p)
         self.resetAssetAttributes()
     elif name == 'security_property':
         self.theSecurityProperties.append(
             (self.theEnvironmentName, self.thePropertyName,
              self.thePropertyValue, self.theRationale))
         self.resetSecurityPropertyAttributes()
     elif name == 'threatened_property':
         self.theSpDict[self.thePropertyName] = (self.thePropertyValue,
                                                 self.theRationale)
         self.resetThreatenedPropertyAttributes()
     elif name == 'vulnerability':
         p = VulnerabilityParameters(self.theName, self.theDescription,
                                     self.theType, self.theTags,
                                     self.theEnvironmentProperties)
         self.theVulnerabilities.append(p)
         self.resetVulnerabilityAttributes()
     elif name == 'vulnerability_environment':
         p = VulnerabilityEnvironmentProperties(self.theEnvironmentName,
                                                self.theSeverity,
                                                self.theAssets)
         self.theEnvironmentProperties.append(p)
         self.resetVulnerabilityEnvironmentAttributes()
     elif name == 'attacker':
         p = AttackerParameters(self.theName, self.theDescription,
                                self.theImage, self.theTags,
                                self.theEnvironmentProperties)
         self.theAttackerParameters.append(p)
         self.resetAttackerAttributes()
     elif name == 'attacker_environment':
         p = AttackerEnvironmentProperties(self.theEnvironmentName,
                                           self.theRoles,
                                           self.theMotivations,
                                           self.theCapabilities)
         self.theEnvironmentProperties.append(p)
         self.resetAttackerEnvironmentAttributes()
     elif name == 'threat':
         p = ThreatParameters(self.theName, self.theType, self.theMethod,
                              self.theTags, self.theEnvironmentProperties)
         self.theThreats.append(p)
         self.resetThreatAttributes()
     elif name == 'threat_environment':
         cProperty, cRationale = self.theSpDict['confidentiality']
         iProperty, iRationale = self.theSpDict['integrity']
         avProperty, avRationale = self.theSpDict['availability']
         acProperty, acRationale = self.theSpDict['accountability']
         anProperty, anRationale = self.theSpDict['anonymity']
         panProperty, panRationale = self.theSpDict['pseudonymity']
         unlProperty, unlRationale = self.theSpDict['unlinkability']
         unoProperty, unoRationale = self.theSpDict['unobservability']
         p = ThreatEnvironmentProperties(
             self.theEnvironmentName, self.theLikelihood, self.theAssets,
             self.theAttackers, [
                 cProperty, iProperty, avProperty, acProperty, anProperty,
                 panProperty, unlProperty, unoProperty
             ], [
                 cRationale, iRationale, avRationale, acRationale,
                 anRationale, panRationale, unlRationale, unoRationale
             ])
         self.theEnvironmentProperties.append(p)
         self.resetThreatEnvironmentAttributes()
     elif name == 'risk':
         mc = MisuseCase(-1, 'Exploit ' + self.theName,
                         self.theEnvironmentProperties, self.theName)
         p = RiskParameters(self.theName, self.theThreat,
                            self.theVulnerability, mc, self.theTags)
         self.theRisks.append(p)
         self.resetRiskAttributes()
     elif name == 'misusecase':
         p = MisuseCaseEnvironmentProperties(self.theEnvironmentName,
                                             self.theDescription)
         self.theEnvironmentProperties.append(p)
         self.resetRiskEnvironmentAttributes()
     elif name == 'response':
         p = ResponseParameters(self.theType + ' ' + self.theRisk,
                                self.theRisk, self.theTags,
                                self.theEnvironmentProperties, self.theType)
         self.theResponses.append(p)
         self.resetResponseAttributes()
     elif name == 'accept_environment':
         p = AcceptEnvironmentProperties(self.theEnvironmentName,
                                         self.theCost, self.theDescription)
         self.theEnvironmentProperties.append(p)
         self.resetResponseEnvironmentAttributes()
     elif name == 'transfer_environment':
         p = TransferEnvironmentProperties(self.theEnvironmentName,
                                           self.theDescription,
                                           self.theResponseRoles)
         self.theEnvironmentProperties.append(p)
         self.resetResponseEnvironmentAttributes()
     elif name == 'deter_environment':
         p = MitigateEnvironmentProperties(self.theEnvironmentName, 'Deter')
         self.theEnvironmentProperties.append(p)
         self.resetResponseEnvironmentAttributes()
     elif name == 'prevent_environment':
         p = MitigateEnvironmentProperties(self.theEnvironmentName,
                                           'Prevent')
         self.theEnvironmentProperties.append(p)
         self.resetResponseEnvironmentAttributes()
     elif name == 'detect_environment':
         p = MitigateEnvironmentProperties(self.theEnvironmentName,
                                           'Detect', self.theDetectionPoint)
         self.theEnvironmentProperties.append(p)
         self.resetResponseEnvironmentAttributes()
     elif name == 'react_environment':
         p = MitigateEnvironmentProperties(self.theEnvironmentName, 'React',
                                           '', self.theDetectionMechanisms)
         self.theEnvironmentProperties.append(p)
         self.resetResponseEnvironmentAttributes()
     elif name == 'asset_association':
         p = ClassAssociationParameters(
             self.theEnvironmentName, self.theHeadName, 'asset',
             self.theHeadNav, self.theHeadAdornment, self.theHeadNry,
             self.theHeadRole, self.theTailRole, self.theTailNry,
             self.theTailAdornment, self.theTailNav, 'asset',
             self.theTailName)
         self.theAssociations.append(p)
         self.resetAssociationAttributes()
     elif name == 'description':
         self.inDescription = 0
     elif name == 'method':
         self.inMethod = 0
     elif name == 'narrative':
         self.inDescription = 0
     elif name == 'rationale':
         self.inRationale = 0
     elif name == 'significance':
         self.inSignificance = 0
     elif name == 'critical':
         self.inCritical = 0
Exemplo n.º 12
0
 def parameters(self):
   parameters = AssetParameters(self.theAssetName,self.theShortCode,self.theAssetDescription,self.theAssetSignificance,self.theType,self.theCriticalIndicator,self.theCriticalRationale,self.theTags,self.theInterfaces,self.theEnvironmentProperties)
   parameters.setId(self.theAssetId)
   return parameters