def newObstacleParameters(self):
     obsName = self.decorator.getText("obstacleNameCtrl")
     envProperties = self.environmentProperties()
     parameters = ObstacleParameters(obsName, 'Obstacle refinement', [],
                                     [envProperties])
     parameters.setId(self.theObstacleId)
     return parameters
 def existingObstacleParameters(self):
   obsName = self.decorator.getText("obstacleNameCtrl")
   modifiedProperties = self.environmentProperties()
   envProperties = self.dbProxy.obstacleEnvironmentProperties(self.theObstacleId)
   for idx,p in enumerate(envProperties):
     if (p.name() == self.theEnvironmentName):
       envProperties[idx] = modifiedProperties
   parameters = ObstacleParameters(obsName,'Obstacle refinement',[],envProperties)
   parameters.setId(self.theObstacleId)
   return parameters
 def existingObstacleParameters(self):
     obsName = self.decorator.getText("obstacleNameCtrl")
     modifiedProperties = self.environmentProperties()
     envProperties = self.dbProxy.obstacleEnvironmentProperties(
         self.theObstacleId)
     for idx, p in enumerate(envProperties):
         if (p.name() == self.theEnvironmentName):
             envProperties[idx] = modifiedProperties
     parameters = ObstacleParameters(obsName, 'Obstacle refinement', [],
                                     envProperties)
     parameters.setId(self.theObstacleId)
     return parameters
Beispiel #4
0
def build(envName, obsName, excDim, excVal, excCat, excDef):
    sgRef = [(excVal, excDim, 'obstruct', 'No', 'use case exception')]
    envProperties = [
        ObstacleEnvironmentProperties(envName, '', excDef, excCat, sgRef, [])
    ]
    parameters = ObstacleParameters(obsName, 'Generated from exception', [],
                                    envProperties)
    return parameters
Beispiel #5
0
def build(envName, excDetails):

    obsName = excDetails[0]
    excDim = excDetails[1]
    excVal = excDetails[2]
    excDef = excDetails[4]
    excCat = excDetails[3]
    sgRef = [(excVal, excDim, 'obstruct', 'No', 'use case exception')]
    envProperties = [
        ObstacleEnvironmentProperties(envName, '', excDef, excCat, sgRef, [])
    ]
    parameters = ObstacleParameters(obsName, [], envProperties)
    return parameters
Beispiel #6
0
    def add(self,
            idx=-1,
            obsName="",
            envName="",
            newDefinition="",
            newCategory="Vulnerability",
            newOriginator=""):
        envName = self.envCombo.GetValue()
        parentObsName = self.obsCombo.GetValue()

        ep = ObstacleEnvironmentProperties(
            envName, '', newDefinition, newCategory,
            [(parentObsName, 'obstacle', 'and', 'No', 'None')])
        o = Obstacle(-1, obsName, newOriginator, [ep])
        op = ObstacleParameters(obsName, newOriginator, [ep])
        o.setId(self.dbProxy.addObstacle(op))
        if (idx != -1):
            self.obstacles.insert(idx, o)
        else:
            self.obstacles.append(o)
        return o
Beispiel #7
0
    def endElement(self, name):
        if name == 'intent':
            self.inIntent = 0
        elif name == 'definition':
            self.inDefinition = 0
        elif name == 'rationale':
            self.inRationale = 0
        elif name == 'motivation':
            self.theMotivations.append(
                (self.theGoal, self.theValue, self.theDescription))
            self.resetMotivationElements()
        elif name == 'participant':
            self.theParticipants.append((self.theParticipant, self.theMotives,
                                         self.theResponsibilities))
            self.resetParticipantElements()
        elif name == 'description':
            self.inDescription = 0
            if self.inImplementation:
                self.inImplementation = 0
        elif name == 'consequences':
            self.inConsequences = 0
        elif name == 'implementation':
            self.inImplementation = 0
        elif name == 'known_uses':
            self.inKnownUses = 0
        elif name == 'related_patterns':
            self.inRelatedPatterns = 0
        elif name == 'obstacle':

            self.theObstacles.append(
                TemplateObstacleParameters(
                    self.theObstacleName, self.theObstacleCategory,
                    self.theDefinition, self.theConcerns,
                    self.theResponsibilities, self.theProbability,
                    self.theRationale))
            self.resetObstacleElements()
        elif name == 'obstacle_association':
            self.theObstacleAssociations.append(
                (self.theObstacleName, self.theRefType,
                 self.theSubObstacleName, self.theRationale))
            self.resetObstacleAssociationElements()
        elif name == 'attack_pattern':
            assetList = self.theTargets + self.theExploits
            for assetName in assetList:
                self.theAssetParameters.append(
                    AssetParametersFactory.buildFromTemplate(
                        assetName, [self.theEnvironment]))

            attackerNames = []
            for attackerName, attackerMotives, attackerCapabilities in self.theParticipants:
                attackerRoles = self.dbProxy.dimensionRoles(
                    self.dbProxy.getDimensionId(attackerName, 'persona'),
                    self.dbProxy.getDimensionId(self.theEnvironment,
                                                'environment'), 'persona')
                ep = AttackerEnvironmentProperties(self.theEnvironment,
                                                   attackerRoles,
                                                   attackerMotives,
                                                   attackerCapabilities)
                p = AttackerParameters(attackerName, '', '', [], [ep])
                p.isPersona = True
                self.theAttackerParameters.append(p)
                attackerNames.append(attackerName)

            for tObs in self.theObstacles:
                sgRefs = []
                for resp in tObs.responsibilities():
                    sgRefs.append((resp, 'role', 'responsible', 0, 'None'))
                ep = ObstacleEnvironmentProperties(self.theEnvironment, '',
                                                   tObs.definition(),
                                                   tObs.category(), [], sgRefs,
                                                   tObs.concerns())
                ep.theProbability = tObs.probability()
                ep.theProbabilityRationale = tObs.probabilityRationale()
                self.theObstacleParameters.append(
                    ObstacleParameters(tObs.name(), self.thePatternName, [],
                                       [ep]))

            for obsAssoc in self.theObstacleAssociations:
                obsName = obsAssoc[0]
                refType = obsAssoc[1]
                subObsName = obsAssoc[2]
                assocRationale = obsAssoc[3]
                self.theObstacleAssociationParameters.append(
                    GoalAssociationParameters(self.theEnvironment, obsName,
                                              'obstacle', refType, subObsName,
                                              'obstacle', 0, assocRationale))

            vp = VulnerabilityEnvironmentProperties(self.theEnvironment,
                                                    self.theSeverity,
                                                    self.theExploits)
            vulRows = self.dbProxy.getVulnerabilityDirectory(self.theExploit)
            vulData = vulRows[0]
            self.theVulnerabilityParameters = VulnerabilityParameters(
                self.theExploit, vulData[2], vulData[3], [], [vp])

            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')

            for thrMotivation in self.theMotivations:
                spName = thrMotivation[0]
                spValue = thrMotivation[1]
                spRationale = thrMotivation[2]
                spDict[spName] = (a2i(spValue), spRationale)

            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']

            tp = ThreatEnvironmentProperties(
                self.theEnvironment, self.theLikelihood, self.theTargets,
                attackerNames, [
                    cProperty, iProperty, avProperty, acProperty, anProperty,
                    panProperty, unlProperty, unoProperty
                ], [
                    cRationale, iRationale, avRationale, acRationale,
                    anRationale, panRationale, unlRationale, unoRationale
                ])
            thrRows = self.dbProxy.getThreatDirectory(self.theAttack)
            thrData = thrRows[0]
            self.theThreatParameters = ThreatParameters(
                self.theAttack, thrData[3], thrData[2], [], [tp])

            if (self.theAttackObstacle != ''):
                self.theObstacleAssociationParameters.append(
                    GoalAssociationParameters(self.theEnvironment,
                                              self.theAttackObstacle,
                                              'obstacle', 'or', self.theAttack,
                                              'threat', 0, 'None'))
            if (self.theExploitObstacle != ''):
                self.theObstacleAssociationParameters.append(
                    GoalAssociationParameters(self.theEnvironment,
                                              self.theExploitObstacle,
                                              'obstacle', 'or',
                                              self.theExploit, 'vulnerability',
                                              0, 'None'))
            rep = MisuseCaseEnvironmentProperties(self.theEnvironment,
                                                  self.theImplementation)
            mc = MisuseCase(-1, 'Exploit ' + self.thePatternName, [rep],
                            self.thePatternName)
            self.theRiskParameters = RiskParameters(self.thePatternName,
                                                    self.theAttack,
                                                    self.theExploit, mc, [],
                                                    self.theIntent,
                                                    self.theEnvironment)
Beispiel #8
0
 def parameters(self):
   parameters = ObstacleParameters(self.theObstacleName,self.theObstacleOriginator,self.theTags,self.theEnvironmentProperties)
   parameters.setId(self.theObstacleId)
   return parameters
Beispiel #9
0
 def parameters(self):
   properties = ObstacleEnvironmentProperties(self.theEnvironmentName,'',self.theObstacleDefinition,self.theObstacleCategory,self.theAssociations,self.theSubAssociations,self.theConcerns)
   parameters = ObstacleParameters(self.theObstacleName,[],[properties])
   return parameters
 def newObstacleParameters(self):
   obsName = self.decorator.getText("obstacleNameCtrl")
   envProperties = self.environmentProperties()
   parameters = ObstacleParameters(obsName,'Obstacle refinement',[],[envProperties])
   parameters.setId(self.theObstacleId)
   return parameters
Beispiel #11
0
 def endElement(self, name):
     if name == 'domainproperty':
         p = DomainPropertyParameters(self.theName, self.theDescription,
                                      self.theType, self.theOriginator,
                                      self.theTags)
         self.theDomainProperties.append(p)
         self.resetDomainPropertyAttributes()
     elif name == 'goal_environment':
         p = GoalEnvironmentProperties(self.theEnvironmentName, '',
                                       self.theDescription,
                                       self.theCategory, self.thePriority,
                                       self.theFitCriterion, self.theIssue,
                                       [], [], self.theConcerns,
                                       self.theConcernAssociations)
         self.theEnvironmentProperties.append(p)
         self.resetGoalEnvironmentAttributes()
     elif name == 'obstacle_environment':
         p = ObstacleEnvironmentProperties(self.theEnvironmentName, '',
                                           self.theDescription,
                                           self.theCategory, [], [],
                                           self.theConcerns)
         self.theEnvironmentProperties.append(p)
         self.resetObstacleEnvironmentAttributes()
     elif name == 'goal':
         p = GoalParameters(self.theName, self.theOriginator, self.theTags,
                            self.theEnvironmentProperties)
         self.theGoals.append(p)
         self.resetGoalAttributes()
     elif name == 'obstacle':
         p = ObstacleParameters(self.theName, self.theOriginator,
                                self.theTags, self.theEnvironmentProperties)
         self.theObstacles.append(p)
         self.resetObstacleAttributes()
     elif name == 'requirement':
         reqId = self.dbProxy.newId()
         r = RequirementFactory.build(reqId, self.theLabel, self.theName,
                                      self.theDescription, self.thePriority,
                                      self.theRationale,
                                      self.theFitCriterion,
                                      self.theOriginator, self.theType,
                                      self.theReference)
         self.theRequirements.append(
             (r, self.theReference, self.theReferenceType))
         self.resetRequirementAttributes()
     elif name == 'countermeasure':
         p = CountermeasureParameters(self.theName, self.theDescription,
                                      self.theType, self.theTags,
                                      self.theEnvironmentProperties)
         self.theCountermeasures.append(p)
         self.resetCountermeasureAttributes()
     elif name == 'mitigating_property':
         self.theSpDict[self.thePropertyName] = (self.thePropertyValue,
                                                 self.theDescription)
         self.resetMitigatingPropertyAttributes()
     elif name == 'countermeasure_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 = CountermeasureEnvironmentProperties(
             self.theEnvironmentName, self.theCmRequirements,
             self.theTargets, [
                 cProperty, iProperty, avProperty, acProperty, anProperty,
                 panProperty, unlProperty, unoProperty
             ], [
                 cRationale, iRationale, avRationale, acRationale,
                 anRationale, panRationale, unlRationale, unoRationale
             ], self.theCost, self.theCmRoles, self.theTaskPersonas)
         self.theEnvironmentProperties.append(p)
         self.resetCountermeasureEnvironmentAttributes()
     elif (name == 'target'):
         self.theTargets.append(
             Target(self.theTargetName, self.theTargetEffectiveness,
                    self.theRationale))
         self.theTargetResponses = []
     elif (name == 'description'):
         self.inDescription = 0
     elif (name == 'definition'):
         self.inDescription = 0
     elif name == 'fit_criterion':
         self.inFitCriterion = 0
     elif name == 'issue':
         self.inIssue = 0
     elif name == 'rationale':
         self.inRationale = 0
     elif name == 'originator':
         self.inOriginator = 0