github.com/khulnasoft-lab/tunnel-db@v0.0.0-20231117205118-74e1113bd007/pkg/vulnsrc/bitnami/bitnami.go (about)

     1  package bitnami
     2  
     3  import (
     4  	"encoding/json"
     5  	"path/filepath"
     6  	"strings"
     7  
     8  	"golang.org/x/xerrors"
     9  
    10  	"github.com/khulnasoft-lab/tunnel-db/pkg/types"
    11  	"github.com/khulnasoft-lab/tunnel-db/pkg/vulnsrc/osv"
    12  	"github.com/khulnasoft-lab/tunnel-db/pkg/vulnsrc/vulnerability"
    13  )
    14  
    15  var bitnamiDir = filepath.Join("bitnami-vulndb", "data")
    16  
    17  func NewVulnSrc() osv.OSV {
    18  	sources := map[types.Ecosystem]types.DataSource{
    19  		vulnerability.Bitnami: {
    20  			ID:   vulnerability.BitnamiVulndb,
    21  			Name: "Bitnami Vulnerability Database",
    22  			URL:  "https://github.com/bitnami/vulndb",
    23  		},
    24  	}
    25  
    26  	return osv.New(bitnamiDir, vulnerability.BitnamiVulndb, sources, &transformer{})
    27  }
    28  
    29  type transformer struct{}
    30  
    31  type DatabaseSpecific struct {
    32  	Severity string `json:"severity"`
    33  }
    34  
    35  func (t *transformer) TransformAdvisories(advs []osv.Advisory, entry osv.Entry) ([]osv.Advisory, error) {
    36  	var specific DatabaseSpecific
    37  	if err := json.Unmarshal(entry.DatabaseSpecific, &specific); err != nil {
    38  		return nil, xerrors.Errorf("JSON decode error: %w", err)
    39  	}
    40  
    41  	severity := convertSeverity(specific.Severity)
    42  	for i := range advs {
    43  		advs[i].Severity = severity
    44  	}
    45  
    46  	return advs, nil
    47  }
    48  
    49  func convertSeverity(severity string) types.Severity {
    50  	switch strings.ToLower(severity) {
    51  	case "low":
    52  		return types.SeverityLow
    53  	case "moderate":
    54  		return types.SeverityMedium
    55  	case "high":
    56  		return types.SeverityHigh
    57  	case "critical":
    58  		return types.SeverityCritical
    59  	default:
    60  		return types.SeverityUnknown
    61  	}
    62  }