Problems ingesting CWE's into OpenCTI

I am trying to pull CWE data into OpenCTI using the API. To simplify what is going wrong, I will describe it using a bundle upload to OpenCTI directly because it results in the same problems.

Step 1: download CWE bundle from CTI Butler

Step 2: Import the STIX Bundle to OpenCTI

Step 3: See only Marking and Identity object imported

The bundle also contains Grouping, Weakness, and Extension Definition (for Weakness definition) objects.

So why are they not being ingested?

So firstly, if I did this again, I would represent CWEs as Vulnerabilities. We did this originally to make a clear distinction between CVEs and CWEs in Vulmatch. In hindsight, that was a bad decision, but we’re very wedded to it now :man_facepalming:

Now, to answer your question…

Groupings

These are present in the import (check the Containers tab)

Weakness / Extension Definitions

OpenCTI currently has limited support for custom STIX objects, and Extension Definitions.

Check out the Figma diagram on this page

In short no custom objects, unless hardcoded into OpenCTI (e.g. crytocurrency-wallet) are supported, hence why you don’t see them.

Support for Extension Definitions seems to be the same. Unless they are declared in the OCTI code, they will be ignored.

Looking at these two stale tickets, I don’t think support is coming in OCTI any time soon.

Workarounds

I’ve seen some people implement data connectors to provide a transform step to convert custom objects/properties into those supported by OCTI.

e.g. take weakness and convert to a vulnerability then import.

We will do something like this for our Vulmatch and CTI Butler OCTI connectors soon.