diff --git a/pkg/config/severity.go b/pkg/config/severity.go
index c707959ca403..49874c9a4c3a 100644
--- a/pkg/config/severity.go
+++ b/pkg/config/severity.go
@@ -34,5 +34,9 @@ type SeverityRule struct {
 }
 
 func (s *SeverityRule) Validate() error {
+	if s.Severity == "" {
+		return errors.New("severity should be set")
+	}
+
 	return s.BaseRule.Validate(severityRuleMinConditionsCount)
 }
diff --git a/pkg/config/severity_test.go b/pkg/config/severity_test.go
index 60c2ad25707d..049fd1663a8b 100644
--- a/pkg/config/severity_test.go
+++ b/pkg/config/severity_test.go
@@ -7,7 +7,108 @@ import (
 )
 
 func TestSeverity_Validate(t *testing.T) {
+	testCases := []struct {
+		desc     string
+		severity *Severity
+	}{
+		{
+			desc: "default with rules",
+			severity: &Severity{
+				Default: "high",
+				Rules: []SeverityRule{
+					{
+						Severity: "low",
+						BaseRule: BaseRule{
+							Path: "test",
+						},
+					},
+				},
+			},
+		},
+		{
+			desc: "default without rules",
+			severity: &Severity{
+				Default: "high",
+			},
+		},
+		{
+			desc: "same severity between default and rule",
+			severity: &Severity{
+				Default: "high",
+				Rules: []SeverityRule{
+					{
+						Severity: "high",
+						BaseRule: BaseRule{
+							Path: "test",
+						},
+					},
+				},
+			},
+		},
+	}
+
+	for _, test := range testCases {
+		test := test
+		t.Run(test.desc, func(t *testing.T) {
+			t.Parallel()
+
+			err := test.severity.Validate()
+			require.NoError(t, err)
+		})
+	}
+}
+
+func TestSeverity_Validate_error(t *testing.T) {
+	testCases := []struct {
+		desc     string
+		severity *Severity
+		expected string
+	}{
+		{
+			desc: "missing default severity",
+			severity: &Severity{
+				Default: "",
+				Rules: []SeverityRule{
+					{
+						Severity: "low",
+						BaseRule: BaseRule{
+							Path: "test",
+						},
+					},
+				},
+			},
+			expected: "can't set severity rule option: no default severity defined",
+		},
+		{
+			desc: "missing rule severity",
+			severity: &Severity{
+				Default: "high",
+				Rules: []SeverityRule{
+					{
+						BaseRule: BaseRule{
+							Path: "test",
+						},
+					},
+				},
+			},
+			expected: "error in severity rule #0: severity should be set",
+		},
+	}
+
+	for _, test := range testCases {
+		test := test
+		t.Run(test.desc, func(t *testing.T) {
+			t.Parallel()
+
+			err := test.severity.Validate()
+			require.EqualError(t, err, test.expected)
+		})
+	}
+}
+
+func TestSeverityRule_Validate(t *testing.T) {
 	rule := &SeverityRule{
+		Severity: "low",
 		BaseRule: BaseRule{
 			Path: "test",
 		},
@@ -17,20 +118,32 @@ func TestSeverity_Validate(t *testing.T) {
 	require.NoError(t, err)
 }
 
-func TestSeverity_Validate_error(t *testing.T) {
+func TestSeverityRule_Validate_error(t *testing.T) {
 	testCases := []struct {
 		desc     string
 		rule     *SeverityRule
 		expected string
 	}{
 		{
-			desc:     "empty rule",
-			rule:     &SeverityRule{},
+			desc: "missing severity",
+			rule: &SeverityRule{
+				BaseRule: BaseRule{
+					Path: "test",
+				},
+			},
+			expected: "severity should be set",
+		},
+		{
+			desc: "empty rule",
+			rule: &SeverityRule{
+				Severity: "low",
+			},
 			expected: "at least 1 of (text, source, path[-except],  linters) should be set",
 		},
 		{
 			desc: "invalid path rule",
 			rule: &SeverityRule{
+				Severity: "low",
 				BaseRule: BaseRule{
 					Path: "**test",
 				},
@@ -40,6 +153,7 @@ func TestSeverity_Validate_error(t *testing.T) {
 		{
 			desc: "invalid path-except rule",
 			rule: &SeverityRule{
+				Severity: "low",
 				BaseRule: BaseRule{
 					PathExcept: "**test",
 				},
@@ -49,6 +163,7 @@ func TestSeverity_Validate_error(t *testing.T) {
 		{
 			desc: "invalid text rule",
 			rule: &SeverityRule{
+				Severity: "low",
 				BaseRule: BaseRule{
 					Text: "**test",
 				},
@@ -58,6 +173,7 @@ func TestSeverity_Validate_error(t *testing.T) {
 		{
 			desc: "invalid source rule",
 			rule: &SeverityRule{
+				Severity: "low",
 				BaseRule: BaseRule{
 					Source: "**test",
 				},
@@ -67,6 +183,7 @@ func TestSeverity_Validate_error(t *testing.T) {
 		{
 			desc: "path and path-expect",
 			rule: &SeverityRule{
+				Severity: "low",
 				BaseRule: BaseRule{
 					Path:       "test",
 					PathExcept: "test",