コード例 #1
0
ファイル: projectHelper.cs プロジェクト: secfb/Pen-Test-Tools
        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);
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 public static void AddObject(IVulnerability item)
 {
     lock (lockObject)
     {
         if (null == ListofVulnerabilities)
         {
             ListofVulnerabilities = new List <IVulnerability>();
         }
         ListofVulnerabilities.Add(item);
     }
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: projectHelper.cs プロジェクト: secfb/Pen-Test-Tools
 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);
         }
     }
 }
コード例 #9
0
 public void Add(IVulnerability vulnerability)
 {
 }