feat(cti): add Cyber Threat Intelligence info (#1442)
* feat(cti): add Cyber Threat Intelligence info * chore: replace io/ioutil as it is deprecated * chore: remove --format-csv in stdout writer * chore(deps): go get go-cti@v0.0.1 * feat(cti): update cti dict(support MITRE ATT&CK v11.1) * chore(deps): go get go-cti@master
This commit is contained in:
		
							
								
								
									
										28
									
								
								tui/tui.go
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								tui/tui.go
									
									
									
									
									
								
							@@ -9,9 +9,11 @@ import (
 | 
			
		||||
	"text/template"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/exp/slices"
 | 
			
		||||
	"golang.org/x/xerrors"
 | 
			
		||||
 | 
			
		||||
	"github.com/future-architect/vuls/config"
 | 
			
		||||
	"github.com/future-architect/vuls/cti"
 | 
			
		||||
	"github.com/future-architect/vuls/logging"
 | 
			
		||||
	"github.com/future-architect/vuls/models"
 | 
			
		||||
	"github.com/future-architect/vuls/util"
 | 
			
		||||
@@ -845,6 +847,32 @@ func setChangelogLayout(g *gocui.Gui) error {
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if len(vinfo.Ctis) > 0 {
 | 
			
		||||
			lines = append(lines, "\n",
 | 
			
		||||
				"Cyber Threat Intelligence",
 | 
			
		||||
				"=========================",
 | 
			
		||||
			)
 | 
			
		||||
 | 
			
		||||
			attacks := []string{}
 | 
			
		||||
			capecs := []string{}
 | 
			
		||||
			for _, techniqueID := range vinfo.Ctis {
 | 
			
		||||
				technique, ok := cti.TechniqueDict[techniqueID]
 | 
			
		||||
				if !ok {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
				if strings.HasPrefix(techniqueID, "CAPEC-") {
 | 
			
		||||
					capecs = append(capecs, fmt.Sprintf("* %s", technique.Name))
 | 
			
		||||
				} else {
 | 
			
		||||
					attacks = append(attacks, fmt.Sprintf("* %s", technique.Name))
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			slices.Sort(attacks)
 | 
			
		||||
			slices.Sort(capecs)
 | 
			
		||||
			lines = append(lines, append([]string{"MITRE ATT&CK:"}, attacks...)...)
 | 
			
		||||
			lines = append(lines, "\n")
 | 
			
		||||
			lines = append(lines, append([]string{"CAPEC:"}, capecs...)...)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if currentScanResult.Config.Scan.Servers[currentScanResult.ServerName].Mode.IsDeep() {
 | 
			
		||||
			lines = append(lines, "\n",
 | 
			
		||||
				"ChangeLogs",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user