Dear community, we're excited to announce the launch of OpenCTI 6.5.0! 🥳
This release focuses on solving key pain points and unlocking new use cases:
- Help analysts produce & disseminate finished intelligence
- IOC management: introduce exclusion lists to avoid ingesting unwanted IOCs
- AI: become an assistant for analysts
ℹ️ Enterprise Edition Activation Changes
Note
As you know, in June 2023 we introduced an “Enterprise Edition” of the platform. As we explained at the time, this was in no way a reneging on our commitment to open source software, which has been part of our DNA since the very first day of our adventure. We are convinced that we have honored this promise perfectly, continuing to invest heavily in the features of the community version and innovating for all our communities.
Access to the Enterprise Edition, subject to a special license and annual subscription, has remained for almost two years based on the good faith of the platform's users, with acceptance of the license requiring a simple checkbox in the platform settings.
To promote transparency and fair use of our products, OpenCTI 6.5.0 introduces a license key system to control activation of the Enterprise Edition. All Filigran customers and non-governmental charity organizations using EE in accordance with the terms of the license have already received their license key(s).
As a consequence, upgrading a platform with EE activated and without a valid license key will result in the full de-activation of all EE features. Of course, for organizations wishing to access the associated features for testing and development purposes, trial license keys can be generated automatically and independently from our website. Please, don't hesitate to reach out to us if you have any question or concern about this new license key system.
Analysts spend significant time working on incidents and reports to identify threats and create knowledge that improves their organization's security posture.
However, transforming this information into standardized, easily disseminated finished intelligence documents often proves challenging.
This is why we introduced the ability to create your own finished intelligence template 📜 (Enterprise Edition). From the container's customization page, you can now define templates that use variables of your container and the entities and relations present in your container. These predefined templates will reuse the intelligence contained in your container. Your analysts can simply generate finished intelligence from these templates to initialize documents pre-populated with relevant data. This significantly reduces the time needed to produce any kind of reports.
Better yet, these templates can be imported and exported 💡, allowing you to reuse them across different platforms!
In addition, we've added the capability to manage dissemination lists & leverage them to send PDF documents via email (Enterprise Edition) 📨. Once administrators define email distribution lists, analysts can use them to send Finished Intelligence documents directly to their dissemination circles. This gives non-OpenCTI users easy access to analyst-produced documents.
In certain circumstances, intelligence access needs to be more restricted—for instance, during critical incidents or when handling sensitive threat reports. To address this, we've added the ability to restrict access to a container with our authorized member mechanism 🔒. Even with shared containers, enabling access restriction limits visibility to specifically authorized users, groups, or organizations. These authorized members receive only the access rights you grant them (view, edit, manage), helping you maintain data confidentiality.
To ensure restricted data remains manageable if an entity manager leaves your organization, administrators can access a restriction management panel 🔓 to remove restrictions on entities when needed.
Minimizing false positives is essential for improving the accuracy and effectiveness of threat detection. To support this, we've introduced exclusion lists ⛔ in OpenCTI.
This feature lets you create exclusion lists to prevent specific IOCs, such as internal IPs or trusted domains, from being ingested into the platform. By preventing the ingestion of these non-malicious IOCs, you ensure they are not propagated to your external detection solutions (ex: SIEM), reducing noise and enhancing detection accuracy.
AI should enhance analysts' daily work, which is why we've revamped our AI module ✨ (Enterprise Edition). Now available across all platform entities, it supports analysts in their daily tasks. From any entity, such as a threat, analysts can quickly view latest activity, get summaries from recent reports, and see activity logs—putting useful information at their fingertips!
Understanding and presenting data effectively is crucial in CTI. This is why we have worked on the following features.
- Correlation views have been redesigned with this in mind. All container types can now correlate with each other—for example, if an incident response shares IOCs with a report, they'll be correlated. We've added an information panel explaining container correlations and improved the graph view to better illustrate entity relationships between containers. 💡
- Dashboards, especially List widgets, now feature the ability to select columns in knowledge & entity perspective 📊. Users can select and reorder columns based on their needs. When filtering across multiple entity types, only common attributes will be available for selection.
- We've added a useful feature to notifications: you can now filter on the trigger of the notification 🔔(via label click or filter selection). This helps you understand which trigger generated which notification.
- Knowledge views for Attack Patterns have been enhanced with a relation view, making information easier to understand and manage. This improvement was specifically requested by the community 👂 to better handle Attack Patterns linked to threats.
Our OpenBAS :openbas: integration has been redesigned to support choosing the correct architecture when running simulations from OpenCTI. This includes a deprecation, detailed below.
In terms of data ingestion, OpenCTI now provides the capability to expose TAXII 2.1 data collections for pushing STIX-formatted data. Available under Data/Ingestion, the TAXII Push ingester enables users and external systems to import STIX 2.1 objects into OpenCTI through an exposed TAXII collection, ensuring full compliance with the 'Add objects' section of the TAXII 2.1 specification.
We’ve also updated and integrated a new GraphQL playground to enhance your development experience by making it easier to test and interact with our GraphQL API 😎.
Finally, we've improved performance for large dataset operations ⚡ through two backend enhancements: improved worker thread pool and relocated lock mechanism to a separate process. This means faster background task processing and more efficient operations on shared entities, resulting in fewer errors.
Regarding connectors and integrations, this milestone brought several new connectors and integrations like:
- Tenable Security Center
- Google SecOps SIEM
- Proofpoint ET Pro Rep List
- Spycloud
- Zvelo
- YARA Import Files
But also to enhance some connectors :
- Hatching triage
- Sentinel-Intel
- RecordedFuture
- Mandiant
- Crowdstrike
- ImportDocument
- Harfanglab
- Flashpoint
We deeply want to thank our Partner & Community for their contributions:
- New connectors:
- Loader Insight Agency File Feed
- Intel471-V2
- Zscaler ZIA
- IBM XTI
- Hunt.io
- Wiz
- Connectors enhancements:
- TAXII2-connector
- MISP connector
- Feedly
- Tagger
- crtsh
- Orange Cyber Defense
- Zerofox
- TheHive
- Greynoize
- VirusTotal
- ShadowServer
- ransomware.live
Finally, we have made efforts to expand the availability of our Docker containers. In addition to being hosted on Docker Hub, all OpenCTI containers are now also accessible via [GitHub Container Registry](https://github.com/orgs/OpenCTI-Platform/packages).
We hope this release will please you! Feel free to drop us a note about anything. We’re always happy to get feedback about our product usage, whether it’s to hear that everything works perfectly or to get some improvement ideas to.
All the details about what has been released for which repo is available here:
- openCTI: https://github.com/OpenCTI-Platform/opencti/releases
- connectors: https://github.com/OpenCTI-Platform/connectors/releases
- client-python: https://github.com/OpenCTI-Platform/client-python/releases
⚠️ Deprecation
Deprecation Notice: GenerationScenario Mutations in OpenCTI - OpenBAS
The following three mutations related to GenerationScenario have been deprecated due to changes in their signature and response format:
- obasContainerGenerateScenario → Replaced by obasContainerGenerateScenarioWithInjectPlaceholders
- obasThreatGenerateScenario→ Replaced by obasThreatGenerateScenarioWithInjectPlaceholders
- obasVictimGenerateScenario→ Replaced by obasVictimGenerateScenarioWithInjectPlaceholders
Key Changes in new version : + WithInjectPlaceholders
New Signature Object: SimulationConfig
- simulationType: Defines the type of simulation: Technical or Simulated
- selection:
- interval: Defines the execution interval.
New Response Object: GenerationResponse
- urlResponse: URL of the generated scenario in OpenBAS.
- attackPatternNotAvailableInOpenBAS: List of identifiers not covered by OpenBAS.
- hasInjectPlaceholders: Indicates if any inject placeholders were created in OpenBAS.
For more information about the deprecation duration, please refer to our documentation: https://docs.opencti.io/latest/deployment/breaking-changes/.
Enhancements:
- #9711 Move resource lock handling to a separate process
- #9709 Improve worker thread control using thread pool
- #9598 Implement EE license mechanism
- #9580 Introduce AI Insights and refactor Ask AI
- #9572 Be able to reset local storage from User Profile
- #8943 Authorized members on Containers: Remove Feature Flag & Verify testing coverage
- #8941 Finish Exclusion Lists MVP
- #8940 Finish Outcome Template First Step
- #8906 Import/export an Outcome Template
- #8835 Add a view in entity/knowledge/attack pattern representing the relation
- #8820 Specify arch and platform when creating injects for OpenBAS
- #8336 Make outcome templates customizable
- #7309 In notifications, be able to filter for given triggers (and add it as quick filters)
- #7296 In list of relationships in custom dashboard (Knowledge => List), be able to choose to see only the "source" or only the "target" instead of both
- #7295 Be able to select the columns to display in custom dashboard lists widgets
- #6728 Draft: finish last chunk & test ux worklow
- #5652 Deploy the NLP connector to SaaS users for testing
- #5554 Leverage mailing lists to send manually any entity - PDF only
- #5551 Create mailing lists in the platform for the default mailer
- #4961 Management panel for Access Restriction on Knowledge Entities
- #3345 Be able to request access to information when creation is conflicting between organizations - First part
- #3227 Related containers / correlation enhancements
Bug Fixes:
- #9795 [backend] Improve notification template verifications
- #9508 [Dashboard] Number of elements in list capped at 100 despite larger value in "Number of results"
- #8689 Container: copy/pasting some content directly in source mode in main content breaks the platform
- #8191 Playground favicon is not correct
Pull Requests:
- [backend] add exclusion cache handling (#8941) by @ValentinBouzinFiligran in #9079
- [frontend] Add page titles to Settings pages and convert to functional components by @VerboseCat in #8160
- [frontend] Add page titles to Data pages by @VerboseCat in #8300
- [frontend] Marking definitions data tables (9049) by @Archidoit in #9196
- [frontend] Refacto of data tables dimensions computation (#8808) by @lndrtrbn in #8930
- [frontend] Exclusion List frontend Create - Delete (#8941) by @frapuks in #9197
- [backend] add missing backend feature to exclusion list (#8941) by @JeremyCloarec in #9177
- [graphql] Replace redlock@5.0.0-beta.2 w/ @sesamecare-oss/redlock@1.2.1 by @ckane in #6622
- [frontend] Exclusion list page with datatable (#8941) by @ValentinBouzinFiligran in #9238
- [backend] improve exclusion cache handling (binary search version) (#8941) by @JeremyCloarec in #9253
- Updated Titles to Functional Component Pages Only by @dotdev8 in #7753
- [backend] catch exclusion list key not formated correctly (#8941) by @JeremyCloarec in #9288
- [frontend] improve Exclusion list creation form (#8941) by @frapuks in #9266
- [frontend] Popover entities menu support for FAB_REPLACEMENT feature flag by @Bonsai8863 in #9001
- [frontend] Popover threats menu support for FAB_REPLACEMENT feature flag by @Bonsai8863 in #9000
- [frontend] Popover arsenal menu support for FAB_REPLACEMENT feature flag by @Bonsai8863 in #8999
- [frontend] Popover techniques menu support for FAB_REPLACEMENT feature flag by @ParamConstructor in #8876
- [frontend] Popover event menu support for FAB_REPLACEMENT feature flag by @ParamConstructor in #8873
- [frontend/backend] Outcome templates: Exports and improvements (#8940) by @Archidoit in #8945
- Popover observations menu support for FAB_REPLACEMENT feature flag by @daimyo007 in #9009
- [backend] Add dedicated error for orga restricted entities + Feature flag (#3345) by @aHenryJard in #9310
- [frontend] exclusion lists status (#8941) by @frapuks in #9314
- [frontend] Show all types of containers in overview correlation widget & CTA to correlation graph (#3227) by @delemaf in #9175
- [backend] add exclusion list file size info (#8941) by @JeremyCloarec in #9347
- [backend/frontend] Management panel for restricted entities - chunk1 (#4961) by @marieflorescontact in #9219
- [frontend] Filter correlation graphs on common SCOs and indicators by default (#3227) by @Gwendoline-FAVRE-FELIX in #9203
- [backend] add validation mode to askJobImport (#6728) by @JeremyCloarec in #9249
- [frontend] move enroll playbook action in headers by @labo-flg in #9165
- [frontend] Update an Exclusion list (#8941) by @ValentinBouzinFiligran in #9327
- [frontend] improve draft UI pages (#6577) by @JeremyCloarec in #9315
- FAB replacement for widgets on dashboards by @abijahcalderon in #7517
- [backend] filter notifications by trigger (#7309) by @SouadHadjiat in #9248
- [frontend/backend] Remove authorized members action on Restricted entities view - chunk 2 by @CelineSebe in #9312
- [backend] handle hashed observable values exclusion list check (#8941) by @JeremyCloarec in #9496
- [frontend] scos list updated (#8941) by @ValentinBouzinFiligran in #9495
- [frontend] Widgets code refacto by @Archidoit in #9483
- [frontend/backend] Template customization Chunk 1 : Basic implementation (#8336) by @Archidoit in #9232
- [frontend] Add enroll/enrich to note & grouping popover menu (#9217) by @delemaf in #9316
- [frontend] add hover effect on datatables rows by @lndrtrbn in #9519
- [backend/frontend] Save authorized members activation date (#4961) by @marieflorescontact in #9526
- [frontend] entity list validation schema (#8941) by @ValentinBouzinFiligran in #9561
- [frontend] translations added (#8941) by @ValentinBouzinFiligran in #9571
- [frontend] Fix title of page fallback by @Kedae in #9579
- [backend] add field patch validation for updates in draft (#6728) by @JeremyCloarec in #9504
- [backend] also remove rel_can-share.internal_id during reindex (#6577) by @JeremyCloarec in #9585
- Fix dashboard header UI (under FAB replacement FF) by @labo-flg in #9464
- [backend/frontend] Introduce AI Insights by @SamuelHassine in #9581
- [backend] multiple draft bug fixes (#6728) by @JeremyCloarec in #9593
- [frontend] sync icon and translations (#8941) by @ValentinBouzinFiligran in #9592
- [frontend] add missing tab titles by @labo-flg in #9597
- [frontend] CSS changes for correlation graph query buttons (#3227) by @Gwendoline-FAVRE-FELIX in #9584
- [frontend] reset local storage from user profile (#9572) by @labo-flg in #9589
- [frontend] Preview on correlated case (#3227) by @delemaf in #9230
- [backend/frontend] Introduce EE license mechanism by @richard-julien in #9609
- [backend] Refactoring the HTML of emails (#5551) by @Gwendoline-FAVRE-FELIX in #9559
- [backend] Migrate graphQL playground to GraphiQL (#7363) by @Archidoit in #9328
- [backend/frontend] Remove authorized members for containers feature flag (#4961) by @marieflorescontact in #9560
- [frontend] remove Playground button in profile when disabled from settings (#7363) by @labo-flg in #9622
- [frontend] replace the wrong variable by @frapuks in #9620
- Refactor Data/import and set tab title by @labo-flg in #9594
- [frontend/backend] EXCLUSION_LIST feature flag removed (#8941) by @ValentinBouzinFiligran in #9602
- [frontend/backend] Enabled/disabled “authorized members” in Containers' form creation + default values (#4961) by @CelineSebe in #9402
- [frontend] align Profile buttons to the right for consistency by @labo-flg in #9638
- [frontend] UI update (#8941) by @ValentinBouzinFiligran in #9650
- [frontend] Fix related container table size (#3227) by @delemaf in #9655
- [frontend/backend] Specify arch and platform when creating injects for OpenBAS (#8820) by @savacano28 in #9250
- [backend] fix node script starting e2e server by @lndrtrbn in #9680
- [backend] throw error when createIndicatorFromObservable fails (#8941) by @JeremyCloarec in #9663
- [frontend] improve overall draft UI (#6728) by @JeremyCloarec in #9563
- [frontend] Columns customisation interface for relationship list widget (#7295) by @delemaf in #9532
- [frontend] Fix columns resize in list widget (#7295) by @delemaf in #9685
- [frontend] put the auth member admin panel under EE (#4961) by @labo-flg in #9661
- [frontend] reverse condition check valid EE by @frapuks in #9686
- [frontend] Fix OpenBAS simulation for Cases (#8820) by @Archidoit in #9688
- [frontend] Remove "ACCESS_RESTRICTION_AT_CREATION" FF by @CelineSebe in #9662
- [backend/frontend] dissemination list - send file by email (#5551) by @frapuks in #9617
- [backend] Fix param in query ai by @savacano28 in #9696
- [frontend/backend] Fintel templates customization Chunk 2 : Widgets (#8336) by @Archidoit in #9493
- [frontend] fix inferred icon in WidgetListRelationships (#7295) by @delemaf in #9701
- [frontend] - Fixes and standardization of some front parts (#8941) by @Kedae in #9705
- [backend/frontend] update copyright date to 2025 by @labo-flg in #9714
- [backend] extend grace period for deprecated "promote" API by @labo-flg in #9707
- [frontend/backend] Export/import Fintel templates (#8906) by @lndrtrbn in #9706
- [frontend] Columns customisation for list entities widget (#7295) by @delemaf in #9636
- [frontend] align the card selector UI in export form by @labo-flg in #9730
- [frontend] fix Fintel templates pdf export button (#8336) by @Archidoit in #9729
- [frontend] Fix reset default columns on widgets perspective changes (#7295) by @delemaf in #9738
- [frontend] COLUMNS_CUSTOMIZATION feature flag removed (#7295) by @ValentinBouzinFiligran in #9735
- [frontend] align the card selector UI in export form by @labo-flg in #9734
- [worker] Pool thread control by @richard-julien in #9653
- [frontend] Improve color for readability on AI and fix loading on simulation by @Kedae in #9736
- [frontend] Title tag correction. Icon swap to be the Label tag used elsewhere in platform by @ParamConstructor in #9745
- [frontend] Some import fixes and Markdown field min height adapted by @lndrtrbn in #9753
- [backend] register deprecated module to schema for retro-compatibility (#8820) by @labo-flg in #9757
- [frontend] widget config no select column on fintel context by @lndrtrbn in #9761
- [ci] Fix environment variable for CI by @helene-nguyen in #9764
- [backend] save column selection when creating public dashboards by @labo-flg in #9747
- [frontend] Add a new relationship views in entities having an Attack Pattern Knowledge view (#8835) by @CelineSebe in #9623
- [backend] Introduce child fork to handle locking get/release and renewal by @richard-julien in #9654
- [frontend] Limit number of results to 100 in list widgets (#9508) by @Archidoit in #9768
- [frontend] Uniformize Enterprise Edition message by @Archidoit in #9774
- [frontend/backend] Fintel template fixes (#8336) by @Archidoit in #9765
- [backend/frontend] manage dissemination list and send PDFs (#5551) by @Gwendoline-FAVRE-FELIX in #9682
- [frontend] align buttons in profile view to the right for consistency by @labo-flg in #9792
- [backend] dissemination list fix audit log on disseminate (#5551) by @aHenryJard in #9784
- [backend/frontend] sending dissemination email synchronously (#5551) by @labo-flg in #9798
- [backend] Revert wrong await added on publisherManager (#5551) by @aHenryJard in #9800
- [frontend/backend] Fintel templates improvements for 6.5 (#8336) by @Archidoit in #9789
- [backend/frontend] update API disseminationListSend inputs (#5551) by @labo-flg in #9803
- [frontend] Detect datatable parent height changes to auto adapt by @lndrtrbn in #9801
- [backend/frontend] remove FF dissemination list (#5551) by @frapuks in #9782
- [frontend] Fix FiltersIconButton in line by @CelineSebe in #9796
- Fix page container usage for DataTable filters by @Kedae in #9808
- [frontend] fix file name in fintel template export form (#8336) by @Archidoit in #9807
- [frontend/backend] remove Fintel Templates Feature Flag (#8336) by @Archidoit in #9737
- [backend] Adding some allowed function in webhook (#9795) by @aHenryJard in #9827
- [frontend] add missing feature flag for import validation mode (#9300) by @JeremyCloarec in #9835
New Contributors:
- @dotdev8 made their first contribution in #7753
- @savacano28 made their first contribution in #9250
Full Changelog: 6.4.11...6.5.0