Different findings need different responses
Keep vulnerability, support and age separate
A component can have several of these characteristics at once. CSI’s proposed classifications preserve the reason for a finding and the evidence behind it.
- Vulnerable
- A known security weakness applies to a component or version. Whether it can be exploited in a particular application requires a separate assessment. Current releases can also contain vulnerabilities.
- Deprecated
- The maintainer discourages an API, feature or library. It may still work. Record the replacement and any explicitly announced removal separately.
- Unsupported / end of life
- A named provider has ended support for a release. Record the date and support channel, including any applicable vendor backports. The software may still run.
- Unmaintained / abandoned
- Maintenance has stopped or the maintainer has declared abandonment. Repository inactivity is a signal to investigate, not sufficient proof on its own.
- Obsolete / superseded
- A component is no longer suitable for its intended role or has been replaced. State the specific reason, such as removal, incompatibility or an organisation’s policy.
- Legacy
- Older software that remains in use. Its age provides context; it does not establish a vulnerability, abandonment or the need to replace it.
Definitions and a concrete deprecation example
PHP 8.2 deprecated creating dynamic properties, with documented exceptions. The relevant finding needs to identify the property use, applicable class behaviour and target PHP release. It is a migration question, rather than proof that the application is vulnerable.
Sources: PHP’s deprecation guide, PHP’s support policy, Composer’s abandonment metadata and CycloneDX’s explanation of vulnerability context.