Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

need CSV linter #2

Open
amalone-scwx opened this issue May 19, 2023 · 0 comments
Open

need CSV linter #2

amalone-scwx opened this issue May 19, 2023 · 0 comments

Comments

@amalone-scwx
Copy link
Collaborator

We should have a script that can do the following:

  • verify that an MR is not breaking CSV format
  • verify that each CSV line is using the right pseudo-schema fields and values
  • no duplicate tests
  • ATR test reference Number, Guid, Names match
  • operators are supported (~=, =, *=)

For example, the following CSV lines get parsed into objects in harness

_E_,File,READ,path*=/proc/[0-9]*/mem
_E_,Process,cmdline*=python.*/T1003.007/src/dump_heap.py

schema

type FieldCriteria struct {
	FieldName string              `json:"field"`
	Op        string              `json:"op"`
	Value     string              `json:"value"`
}


// _E_,Process,cmdline=echo "# THIS IS A COMMENT"
// _E_,File,WRITE,path=/etc/ufw/ufw.conf
type ExpectedEvent struct {
	Id          string            `json:"id"`
	EventType   string            `json:"event_type"`
	SubType     string            `json:"sub_type,omitempty"`
	FieldChecks []FieldCriteria   `json:"field_checks"`
	IsMaybe     bool              `json:"is_maybe,omitempty"`


	Matches     []*SimpleEvent   `json:"matches,omitempty"`
}

// _C_,Process,Pipe,0,1
type CorrelationRow struct {
	Id string                     `json:"id"`
	Type string                   `json:"type"`
	SubType string                `json:"sub_type"`
	EventIndexes []string         `json:"indexes"`
	IsMet bool                    `json:"is_met"`
}

// ARG,remote_host,victim-host
type ArgRow struct {
	Name string
	Value string
}

type MitreTestCriteria struct {
	Technique        string              `json:"technique"`
	TestIndex        uint                `json:"test_index"`
	TestName         string              `json:"test_name"`
	ExpectedEvents   []*ExpectedEvent     `json:"expected_events"`
	ExpectedCorrelations []*CorrelationRow  `json:"exp_correlations,omitempty"`
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant