Skip to content

Conversation

@mariot
Copy link
Member

@mariot mariot commented Dec 23, 2025

Proposed changes

Related issues

Checklist

  • I consider the submitted work as finished
  • I have signed my commits using GPG key.
  • I tested the code for its functionality using different use cases
  • I added/update the relevant documentation (either on github or on notion)
  • Where necessary I refactored code to improve the overall quality

Further comments

@mariot mariot self-assigned this Dec 23, 2025
@mariot mariot added filigran team use to identify PR from the Filigran team connector: recordedfuture-enrichment labels Dec 23, 2025
@mariot mariot force-pushed the feature/4753-threat-actor-to-intrusion-set branch from 77c3473 to acca410 Compare December 23, 2025 08:54
@SamuelHassine SamuelHassine requested a review from Copilot January 8, 2026 21:05
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a configuration option to convert Recorded Future Threat Actor entities to Intrusion Set entities instead of Threat Actor Group entities during observable enrichment. This addresses issue #4753 by providing flexibility in how threat actor data is represented in OpenCTI.

Key Changes

  • Added threat_actor_to_intrusion_set boolean configuration parameter with a default value of False
  • Updated observable enrichment logic to conditionally create IntrusionSet objects when the flag is enabled
  • Extended relationship matching to include IntrusionSet entities alongside existing threat-related entities

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
conftest.py Added test fixture configuration for the new threat_actor_to_intrusion_set parameter
enrich_observable.py Implemented conditional logic to create IntrusionSet instead of ThreatActorGroup based on configuration
rf_connector.py Passed the new configuration parameter to ObservableEnricher and improved TLP level type safety
config_loader.py Defined the new threat_actor_to_intrusion_set configuration field with validation
config.yml.sample Added commented-out example of the new configuration option
docker-compose.yml Added commented-out environment variable example
README.md Documented the new configuration parameter with usage warnings
.env.sample Added commented-out environment variable example

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

| Max TLP | info_max_tlp | `RECORDED_FUTURE_INFO_MAX_TLP` | `TLP:AMBER` | no | Max TLP marking of the entity to enrich (inclusive). One of `TLP:CLEAR`, `TLP:WHITE`, `TLP:GREEN`, `TLP:AMBER`, `TLP:AMBER+STRICT`, `TLP:RED`. |
| Indicator creation threshold | create_indicator_threshold | `RECORDED_FUTURE_CREATE_INDICATOR_THRESHOLD` | `0` | no | The risk score threshold at which an indicator will be created for enriched observables. If set to zero, all enriched observables will automatically create an indicator. If set to 100, no enriched observables will create an indicator. Reccomended thresholds are: `0`, `25`, `65`, `100` |
| Vulnerability enrichment optional fields | vulnerability_enrichment_optional_fields | `RECORDED_FUTURE_VULNERABILITY_ENRICHMENT_OPTIONAL_FIELDS` | `''` | no | A comma-separated list of optional fields to enrich vulnerabilities with. Currently, available fields are `aiInsights`, `cpe`and `risk`. See [RecordedFuture enrichment fields doc](https://docs.recordedfuture.com/reference/enrichment-field-attributes) for more details. |
| Theat Actor to Intrusion Set | threat_actor_to_intrusion_set | `RECORDED_FUTURE_THREAT_ACTOR_TO_INTRUSION_SET` | `False` | no | Converts all Recorded Future Threat Actors to STIX Object "Intrusion Set" instead of "Threat Actor". DO NOT USE unless you **really** know what you're doing. |
Copy link

Copilot AI Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected spelling of 'Theat' to 'Threat'.

Suggested change
| Theat Actor to Intrusion Set | threat_actor_to_intrusion_set | `RECORDED_FUTURE_THREAT_ACTOR_TO_INTRUSION_SET` | `False` | no | Converts all Recorded Future Threat Actors to STIX Object "Intrusion Set" instead of "Threat Actor". DO NOT USE unless you **really** know what you're doing. |
| Threat Actor to Intrusion Set | threat_actor_to_intrusion_set | `RECORDED_FUTURE_THREAT_ACTOR_TO_INTRUSION_SET` | `False` | no | Converts all Recorded Future Threat Actors to STIX Object "Intrusion Set" instead of "Threat Actor". DO NOT USE unless you **really** know what you're doing. |

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

connector: recordedfuture-enrichment filigran team use to identify PR from the Filigran team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Recorded Future Enrichment] RF Enrichment connector creates Threat Actors instead of Intrusion Sets

2 participants