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

Additional Threat Actor Relationship Types #8341

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/lang/front/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -2187,6 +2187,7 @@
"relationship_relation-has": "hat",
"relationship_remediates": "behebt",
"relationship_reported-in": "berichtet in",
"relationship_reports-to": "berichte an",
"relationship_resides-in": "wohnt in",
"relationship_resolves-to": "löst sich auf in",
"relationship_revoked-by": "widerrufen durch",
Expand All @@ -2199,6 +2200,7 @@
"relationship_stix-sighting-relationship": "gesichtet in/an",
"relationship_subnarrative-of": "teilerzählung von",
"relationship_subtechnique-of": "untertechnik von",
"relationship_supports": "unterstützt",
"relationship_targets": "ziele",
"relationship_to": "auf",
"relationship_type": "Beziehungsart",
Expand Down
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/lang/front/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -2187,6 +2187,7 @@
"relationship_relation-has": "has",
"relationship_remediates": "remediates",
"relationship_reported-in": "reported in",
"relationship_reports-to": "reports to",
"relationship_resides-in": "resides in",
"relationship_resolves-to": "resolves to",
"relationship_revoked-by": "revoked by",
Expand All @@ -2199,6 +2200,7 @@
"relationship_stix-sighting-relationship": "sighted in/at",
"relationship_subnarrative-of": "subnarrative of",
"relationship_subtechnique-of": "subtechnique of",
"relationship_supports": "supports",
"relationship_targets": "targets",
"relationship_to": "to",
"relationship_type": "Relationship type",
Expand Down
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/lang/front/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -2187,6 +2187,7 @@
"relationship_relation-has": "tiene",
"relationship_remediates": "mitiga",
"relationship_reported-in": "reportado en",
"relationship_reports-to": "informes a",
"relationship_resides-in": "reside en",
"relationship_resolves-to": "resuelve a",
"relationship_revoked-by": "revocado por",
Expand All @@ -2199,6 +2200,7 @@
"relationship_stix-sighting-relationship": "detectado en",
"relationship_subnarrative-of": "es subnarrativa de",
"relationship_subtechnique-of": "es subtécnica de",
"relationship_supports": "apoya",
"relationship_targets": "tiene como objetivo",
"relationship_to": "to",
"relationship_type": "Tipo de relación",
Expand Down
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/lang/front/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -2187,6 +2187,7 @@
"relationship_relation-has": "a",
"relationship_remediates": "remédie",
"relationship_reported-in": "rapporté dans",
"relationship_reports-to": "rapports à",
"relationship_resides-in": "réside dans",
"relationship_resolves-to": "résout",
"relationship_revoked-by": "révoqué par",
Expand All @@ -2199,6 +2200,7 @@
"relationship_stix-sighting-relationship": "détecté dans/en",
"relationship_subnarrative-of": "sous-narratif de",
"relationship_subtechnique-of": "sous-technique de",
"relationship_supports": "prend en charge",
"relationship_targets": "cible",
"relationship_to": "à",
"relationship_type": "Type de relation",
Expand Down
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/lang/front/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -2187,6 +2187,7 @@
"relationship_relation-has": "存在する",
"relationship_remediates": "対応する",
"relationship_reported-in": "で報告",
"relationship_reports-to": "報告先",
"relationship_resides-in": "住む",
"relationship_resolves-to": "名前解決される",
"relationship_revoked-by": "失効",
Expand All @@ -2199,6 +2200,7 @@
"relationship_stix-sighting-relationship": "目撃",
"relationship_subnarrative-of": "サブナラティブ",
"relationship_subtechnique-of": "サブテクニック",
"relationship_supports": "サポート",
"relationship_targets": "標的",
"relationship_to": "to",
"relationship_type": "リレーションシップ種別",
Expand Down
4 changes: 3 additions & 1 deletion opencti-platform/opencti-front/lang/front/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -2160,7 +2160,7 @@
"relationship_installed-software": "설치된 소프트웨어",
"relationship_investigates": "조사",
"relationship_kill-chain-phase": "킬 체인 단계",
"relationship_known-as": "relationship_known-as",
"relationship_known-as": "~로 알려진",
"relationship_located-at": "위치",
"relationship_mitigates": "완화",
"relationship_national-of": "국적",
Expand All @@ -2187,6 +2187,7 @@
"relationship_relation-has": "보유",
"relationship_remediates": "개선",
"relationship_reported-in": "보고됨",
"relationship_reports-to": "보고하다",
"relationship_resides-in": "거주",
"relationship_resolves-to": "해결",
"relationship_revoked-by": "취소됨",
Expand All @@ -2199,6 +2200,7 @@
"relationship_stix-sighting-relationship": "목격",
"relationship_subnarrative-of": "하위 서술",
"relationship_subtechnique-of": "하위 기술",
"relationship_supports": "지원합니다",
"relationship_targets": "표적",
"relationship_to": "대상",
"relationship_type": "관계 유형",
Expand Down
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/lang/front/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -2187,6 +2187,7 @@
"relationship_relation-has": "关系有",
"relationship_remediates": "补救",
"relationship_reported-in": "报告于",
"relationship_reports-to": "报告给",
"relationship_resides-in": "驻留在",
"relationship_resolves-to": "解析为",
"relationship_revoked-by": "撤销",
Expand All @@ -2199,6 +2200,7 @@
"relationship_stix-sighting-relationship": "目击关系",
"relationship_subnarrative-of": "的子叙事",
"relationship_subtechnique-of": "子技术",
"relationship_supports": "支持",
"relationship_targets": "目标",
"relationship_to": "到",
"relationship_type": "关系类型",
Expand Down
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/src/components/ItemIcon.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,8 @@ const iconSelector = (type, variant, fontSize, color, isReversed) => {
case 'located-at':
case 'related-to':
case 'mitigates':
case 'reports-to':
case 'supports':
case 'known-as':
case 'impersonates':
case 'indicates':
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,14 @@ const ThreatActorIndividualKnowledgeComponent = ({
element={
<EntityStixCoreRelationships
entityId={threatActorIndividual.id}
relationshipTypes={['part-of', 'cooperates-with', 'employed-by', 'derived-from']}
relationshipTypes={[
'part-of',
'cooperates-with',
'employed-by',
'reports-to',
'supports',
'derived-from',
]}
stixCoreObjectTypes={['Threat-Actor']}
entityLink={link}
defaultStartTime={threatActorIndividual.first_seen}
Expand Down
2 changes: 2 additions & 0 deletions opencti-platform/opencti-front/src/utils/Colors.js
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,8 @@ export const itemColor = (type, dark = false, reversed = false) => {
case 'subtechnique-of':
case 'numberOfConnectedElement':
case 'known-as':
case 'reports-to':
case 'supports':
if (dark) {
return '#616161';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import {
RELATION_HOSTS,
RELATION_IMPERSONATES,
RELATION_KNOWN_AS,
RELATION_REPORTS_TO,
RELATION_SUPPORTS,
RELATION_LOCATED_AT,
RELATION_NATIONAL_OF,
RELATION_OWNS,
Expand Down Expand Up @@ -271,6 +273,26 @@ const THREAT_ACTOR_INDIVIDUAL_DEFINITION: ModuleDefinition<StoreEntityThreatActo
{ name: ENTITY_TYPE_THREAT_ACTOR_INDIVIDUAL, type: REL_EXTENDED },
]
},
{ name: RELATION_REPORTS_TO,
targets: [
{ name: ENTITY_TYPE_THREAT_ACTOR_INDIVIDUAL, type: REL_EXTENDED },
]
},
{ name: RELATION_SUPPORTS,
targets: [
{ name: ENTITY_TYPE_THREAT_ACTOR_INDIVIDUAL, type: REL_EXTENDED },
]
},
{ name: RELATION_REPORTS_TO,
targets: [
{ name: ENTITY_TYPE_THREAT_ACTOR_GROUP, type: REL_EXTENDED },
]
},
{ name: RELATION_SUPPORTS,
targets: [
{ name: ENTITY_TYPE_THREAT_ACTOR_GROUP, type: REL_EXTENDED },
]
},
{
name: RELATION_DERIVED_FROM,
targets: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ export const RELATION_RESIDES_IN = 'resides-in'; // Extension (OpenCTI)
export const RELATION_CITIZEN_OF = 'citizen-of'; // Extension (OpenCTI)
export const RELATION_NATIONAL_OF = 'national-of'; // Extension (OpenCTI)
export const RELATION_KNOWN_AS = 'known-as'; // Extension (OpenCTI)
export const RELATION_REPORTS_TO = 'reports-to'; // Extension (OpenCTI)
export const RELATION_SUPPORTS = 'supports'; // Extension (OpenCTI)

export const RELATION_SUBTECHNIQUE_OF = 'subtechnique-of'; // Extension (MITRE)
export const RELATION_REVOKED_BY = 'revoked-by'; // Extension (MITRE)
Expand Down Expand Up @@ -107,6 +109,8 @@ export const STIX_CORE_RELATIONSHIPS = [
RELATION_CITIZEN_OF,
RELATION_NATIONAL_OF,
RELATION_KNOWN_AS,
RELATION_REPORTS_TO,
RELATION_SUPPORTS,
];

schemaTypesDefinition.register(ABSTRACT_STIX_CORE_RELATIONSHIP, STIX_CORE_RELATIONSHIPS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ describe('Filter keys schema generation testing', async () => {

// Stix Core Relationships
filterDefinition = filterKeysSchema.get(ABSTRACT_STIX_CORE_RELATIONSHIP)?.get(RELATION_FROM_FILTER);
expect(filterDefinition?.subEntityTypes.length).toEqual(50); // 49 stix core relationship types + abstract type 'stix-core-relationships'
expect(filterDefinition?.subEntityTypes.length).toEqual(52); // 51 stix core relationship types + abstract type 'stix-core-relationships'
// Stix Cyber Observables
filterDefinition = filterKeysSchema.get(ABSTRACT_STIX_CYBER_OBSERVABLE)?.get('x_opencti_score'); // attribute existing for all the observables
filterDefinition = filterKeysSchema.get(ABSTRACT_STIX_CYBER_OBSERVABLE)?.get(INPUT_LABELS); // ref existing for all the observables
Expand Down