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