internal static void ModifyVulnerabilityAnalysis(ModTypes _mod, string currentProject, IVulnerability details) { ProjectPOCO p = GetCurrentProject(currentProject); if (ModTypes.Add == _mod) { if (!checkExists(p, details, false)) { p.Vulnerabilities.Add(details); } } else if (ModTypes.Remove == _mod) { if (checkExists(p, details, false)) { IVulnerability c = p.Vulnerabilities.FirstOrDefault(x => x.Identifier == details.Identifier); if (null != c) { p.Vulnerabilities.Remove(c); } } } else if (ModTypes.Update == _mod) { if (checkExists(p, details, true)) { IVulnerability c = p.Vulnerabilities.FirstOrDefault(x => x.Identifier == details.Identifier); if (null != c) { p.Vulnerabilities.Remove(c); } p.Vulnerabilities.Add(details); } } }
public IVulnerability AddVulnerability(IWeakness weakness) { IVulnerability result = null; if (Instance is IIdentity identity) { IThreatModel model = (Instance as IThreatModel) ?? (Instance as IThreatModelChild)?.Model; if (model != null) { if (_vulnerabilities?.All(x => x.WeaknessId != weakness.Id) ?? true) { result = new Vulnerability(model, weakness, identity); if (_vulnerabilities == null) { _vulnerabilities = new List <IVulnerability>(); } _vulnerabilities.Add(result); if (Instance is IDirty dirtyObject) { dirtyObject.SetDirty(); } if (Instance is IVulnerabilitiesContainer container) { _vulnerabilityAdded?.Invoke(container, result); } } } } return(result); }
public void Initialize([NotNull] IVulnerability vulnerability) { _vulnerability = vulnerability; _model = vulnerability.Model; _standardMitigationsContainer.Visible = true; InitializeGrid(true); InitializeItem(vulnerability); var existingMitigations = vulnerability.Mitigations?.ToArray(); var mitigations = _model?.Mitigations?.OrderBy(x => x.Name); if (mitigations != null) { var defaultStrength = _model.GetStrength((int)DefaultStrength.Average); foreach (var mitigation in mitigations) { var existingMitigation = existingMitigations?.FirstOrDefault(x => x.MitigationId == mitigation.Id); var row = new GridRow(mitigation.Name, mitigation.ControlType.GetEnumLabel(), existingMitigation?.Strength ?? defaultStrength, existingMitigation?.Status ?? MitigationStatus.Undefined); row.Tag = mitigation; row.Checked = existingMitigation != null; _grid.PrimaryGrid.Rows.Add(row); } } }
public ThreatEventVulnerability([NotNull] IThreatEvent threatEvent, [NotNull] IVulnerability vulnerability) : this() { _model = threatEvent.Model; _modelId = threatEvent.Model.Id; _threatEventId = threatEvent.Id; _threatEvent = threatEvent; _vulnerabilityId = vulnerability.Id; _vulnerability = vulnerability; _model.AutoApplySchemas(this); }
public static void AddObject(IVulnerability item) { lock (lockObject) { if (null == ListofVulnerabilities) { ListofVulnerabilities = new List <IVulnerability>(); } ListofVulnerabilities.Add(item); } }
public VulnerabilityMitigation([NotNull] IVulnerability vulnerability, [NotNull] IMitigation mitigation, IStrength strength) : this() { _model = vulnerability.Model; _modelId = vulnerability.Model.Id; _vulnerabilityId = vulnerability.Id; _vulnerability = vulnerability; _mitigationId = mitigation.Id; _mitigation = mitigation; Strength = strength; _model.AutoApplySchemas(this); }
public void Add(IVulnerability vulnerability) { if (vulnerability == null) { throw new ArgumentNullException(nameof(vulnerability)); } if (vulnerability is IThreatModelChild child && child.Model != (Instance as IThreatModelChild)?.Model) { throw new ArgumentException(); } if (_vulnerabilities == null) { _vulnerabilities = new List <IVulnerability>(); } _vulnerabilities.Add(vulnerability); }
private static bool checkExists(ProjectPOCO p, IVulnerability details, bool isUpdate) { if (null == p.Vulnerabilities) { p.Vulnerabilities = new List <IVulnerability>(); } if (!isUpdate) { IEnumerable <IVulnerability> d = p.Vulnerabilities.Where(x => x.Details == details.Details && x.CompletedDate == details.CompletedDate && x.CVSS == details.CVSS && x.DiscoveredDate == details.DiscoveredDate && x.Risk == details.Risk && x.Status == details.Status && x.Title == details.Title); if (0 == d.Count()) { return(false); } else { return(true); } } else { IEnumerable <IVulnerability> d = p.Vulnerabilities.Where(x => x.Identifier == details.Identifier); if (0 == d.Count()) { return(false); } else { return(true); } } }
public void Add(IVulnerability vulnerability) { }