Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Extend OCSF schema for ASPM Findings #1357

Open
wants to merge 41 commits into
base: main
Choose a base branch
from

Conversation

jonrau-at-queryai
Copy link
Contributor

@jonrau-at-queryai jonrau-at-queryai commented Mar 2, 2025

Related issues

#1356

Description of changes:

As described in the Issue, ASPM/AppSec tools that report vulnerabilities typically have far more metadata than is possible to be mapped using the current attributes and objects available to Vulnerability Finding and the Vulnerabilities object. These run the gamut from policies, compliance requirements, SBOM details, exploit details, and more.

To that end I've made the following expansions on the schema

  • Created a new application_security_finding Finding event class to encompass ASPM and wider DevSec/AppSec findings where multiple elements of compliance, remediation, policy, vulnerabilities, and weaknesses may be reported.
  • Added dependency_chain, exploit_requirement, and exploit_type (strings), uri, end_column, start_column (integers), as well as exploit_reference_url, license_url, and package_manager_url (url_t) to the dictionary.
  • Added end_column, rule and start_column to affected_code object
  • Added category and desc to compliance object
  • Added uri to the file object
  • Added license_url, package_manager, package_manager_url, src_url, and uid to package object
  • Added type, type_id, uid, and version to sbom object
  • Added category, dependency_chain, exploit_reference_url, exploit_requirement, and exploit_type to vulnerability object
  • Added advisory.uid as an Observable (type_id: 39)
  • Updated several descriptions and requirements

Server Screenshots

Advisory UID Observable
image

Application Security Finding
image

Affected Code
image

File
image

Package
image

SBOM
image

Vulnerability
image

Mapping

This is based on the demo data you can place into OX Security

Raw
{
    "data": {
        "getSingleIssueInfo": {
            "id": "679b7fea9a8e1da9ab4de76a",
            "issueId": "584352228-oxPolicy_securityScan_120-org.springframework:spring-web_5.3.19",
            "mainTitle": "spring-web@5.3.19 is a Java direct dependency having 5 direct vulnerabilities and 2 indirect vulnerabilities. CVE-2022-22965 (CVSS:9.8, Code Injection) is the most severe vulnerability.",
            "secondTitle": "spring-web\\@5.3.19 is a Java direct dependency having 5 direct vulnerabilities and 2 indirect vulnerabilities.<br><br>Vulnerability Context Counts:<br>&bull; Known Exploited Vulnerabilities (KEV): 1<br>&bull; EPSS High: 1<br>&bull; Public Exploits: 2<br><br>Vulnerability Severity Counts (CVSS | OX):<br>&bull; Critical : 2 | 1<br>&bull; High : 3 | 1<br>&bull; Low : 0 | 5<br>&bull; Medium : 2 | 0<br><br>Impacted Dependencies:<br>2 packages: org.springframework:spring-web\\@5.3.19, org.springframework:spring-beans\\@5.1.4.RELEASE",
            "name": "Vulnerable dependency (CVE) in code",
            "created": 1738243903760,
            "scanId": "91728285-4665-4570-8238-61f3dd74b9d7",
            "owners": [
                "Vincent van Gogh"
            ],
            "occurrences": 7,
            "isFixAvailable": false,
            "isGPTFixAvailable": true,
            "exclusionId": null,
            "exclusionCategory": "sca",
            "learnMore": [
                ""
            ],
            "comment": "i will probably fix this!",
            "severity": "Critical",
            "sourceTools": [
                "OX Open Source Security"
            ],
            "recommendation": "&bull; Current Dependency: spring-web\\@5.3.19<br>&bull; Recommended Upgrade: spring-web\\@6.2.2<br>&bull; spring-web\\@6.2.2 resolves 5 of 5 direct vulnerabilities and resolves 2 of 2 indirect vulnerabilities<br><br>Upgrading to spring-web\\@6.2.2 will resolve ALL known vulnerabilities in your current dependency.",
            "compliance": [
                {
                    "category": "Asset Management",
                    "standard": "ISO27001:2022",
                    "control": "A.8.8",
                    "description": "Management of Technical Vulnerabilities"
                },
                {
                    "category": "Risk Assessment",
                    "standard": "NIST-800-53-Revision-5",
                    "control": "RA-5",
                    "description": "Vulnerability Monitoring and Scanning"
                },
                {
                    "category": "Security",
                    "standard": "SOC2",
                    "control": "CC3.2",
                    "description": "Analyzes Threats and Vulnerabilities From Vendors, Business Partners, and Other Parties: The entity's risk assessment process includes the analysis of potential threats and vulnerabilities arising from vendors providing goods and services, as well as threats and vulnerabilities arising from business partners, customers, and others with access to the entity's information systems."
                },
                {
                    "category": "Develop and maintain secure systems and applications",
                    "standard": "PCI_DSS 4.0",
                    "control": "6.3.3",
                    "description": "All system components are protected from known vulnerabilities by installing applicable security patches/updates"
                },
                {
                    "category": "Develop and maintain secure systems and applications",
                    "standard": "PCI_DSS 3.2.1",
                    "control": "6.2",
                    "description": "Ensure that all system components and software are protected from known vulnerabilities by installing the applicable security patches provided by the manufacturer. Install critical security patches within a month"
                },
                {
                    "category": "Code Risks",
                    "standard": "CIS Github Benchmark v1.0.0",
                    "control": "1.5.5",
                    "description": "Ensure scanners are in place for open-source vulnerabilities in used packages"
                },
                {
                    "category": "Third-Party Packages",
                    "standard": "CIS Github Benchmark v1.0.0",
                    "control": "3.1.4",
                    "description": "Ensure dependencies are monitored between open-source components"
                },
                {
                    "category": "Validate Packages",
                    "standard": "CIS Github Benchmark v1.0.0",
                    "control": "3.2.2",
                    "description": "Ensure packages are automatically scanned for known vulnerabilities"
                }
            ],
            "scaVulnerabilities": [
                {
                    "cwe": [
                        {
                            "name": "CWE-94: Improper Control of Generation of Code ('Code Injection')",
                            "shortName": "CWE-94: Improper Control of Generation of Code ('Code Injection')",
                            "url": "https://cwe.mitre.org/data/definitions/94.html"
                        }
                    ],
                    "cve": "CVE-2022-22965",
                    "dependencyChain": "org.springframework:spring-web -> org.springframework:spring-beans",
                    "cveLink": "https://nvd.nist.gov/vuln/detail/CVE-2022-22965",
                    "cvsVer": "9.8",
                    "exploitInTheWildLink": "http://packetstormsecurity.com/files/166713/Spring4Shell-Code-Execution.html",
                    "description": "A Spring MVC or Spring WebFlux application running on JDK 9+ may be vulnerable to remote code execution (RCE) via data binding. The specific exploit requires the application to run on Tomcat as a WAR deployment. If the application is deployed as a Spring Boot executable jar, i.e. the default, it is not vulnerable to the exploit. However, the nature of the vulnerability is more general, and there may be other ways to exploit it.",
                    "dateDiscovered": "Fri Apr 01 2022",
                    "minorVerWithFix": "5.3.18",
                    "majorVerWithFix": "Not Available",
                    "exploitRequirement": "Network access required to system with installed dependency",
                    "exploitCode": "NETWORK",
                    "originalSeverity": "Critical"
                },
                {
                    "cwe": [
                        {
                            "name": "CWE-502: Deserialization of Untrusted Data",
                            "shortName": "CWE-502: Deserialization of Untrusted Data",
                            "url": "https://cwe.mitre.org/data/definitions/502.html"
                        }
                    ],
                    "cve": "CVE-2016-1000027",
                    "dependencyChain": "org.springframework:spring-web",
                    "cveLink": "https://nvd.nist.gov/vuln/detail/CVE-2016-1000027",
                    "cvsVer": "9.8",
                    "exploitInTheWildLink": "https://raw.githubusercontent.com/distributedweaknessfiling/cvelist/master/2016/1000xxx/CVE-2016-1000027.json",
                    "description": "Pivotal Spring Framework through 5.3.16 suffers from a potential remote code execution (RCE) issue if used for Java deserialization of untrusted data. Depending on how the library is implemented within a product, this issue may or not occur, and authentication may be required. NOTE: the vendor's position is that untrusted data is not an intended use case. The product's behavior will not be changed because some users rely on deserialization of trusted data.",
                    "dateDiscovered": "Thu Jan 02 2020",
                    "minorVerWithFix": "Not Available",
                    "majorVerWithFix": "6.0.0",
                    "exploitRequirement": "Network access required to system with installed dependency",
                    "exploitCode": "NETWORK",
                    "originalSeverity": "Critical"
                },
                {
                    "cwe": [
                        {
                            "name": "CWE-601: URL Redirection to Untrusted Site ('Open Redirect')",
                            "shortName": "CWE-601: URL Redirection to Untrusted Site ('Open Redirect')",
                            "url": "https://cwe.mitre.org/data/definitions/601.html"
                        },
                        {
                            "name": "CWE-918: Server-Side Request Forgery (SSRF)",
                            "shortName": "CWE-918: Server-Side Request Forgery (SSRF)",
                            "url": "https://cwe.mitre.org/data/definitions/918.html"
                        }
                    ],
                    "cve": "CVE-2024-22262",
                    "dependencyChain": "org.springframework:spring-web",
                    "cveLink": "https://nvd.nist.gov/vuln/detail/CVE-2024-22262",
                    "cvsVer": "8.1",
                    "exploitInTheWildLink": "",
                    "description": "Applications that use UriComponentsBuilder\u00a0to parse an externally provided URL (e.g. through a query parameter) AND\u00a0perform validation checks on the host of the parsed URL may be vulnerable to a  open redirect https://cwe.mitre.org/data/definitions/601.html \u00a0attack or to a SSRF attack if the URL is used after passing validation checks.\n\nThis is the same as  CVE-2024-22259 https://spring.io/security/cve-2024-22259 \u00a0and  CVE-2024-22243 https://spring.io/security/cve-2024-22243 , but with different input.\n\n",
                    "dateDiscovered": "Tue Apr 16 2024",
                    "minorVerWithFix": "5.3.34",
                    "majorVerWithFix": "6.1.6",
                    "exploitRequirement": "",
                    "exploitCode": null,
                    "originalSeverity": "High"
                },
                {
                    "cwe": [
                        {
                            "name": "CWE-601: URL Redirection to Untrusted Site ('Open Redirect')",
                            "shortName": "CWE-601: URL Redirection to Untrusted Site ('Open Redirect')",
                            "url": "https://cwe.mitre.org/data/definitions/601.html"
                        }
                    ],
                    "cve": "CVE-2024-22259",
                    "dependencyChain": "org.springframework:spring-web",
                    "cveLink": "https://nvd.nist.gov/vuln/detail/CVE-2024-22259",
                    "cvsVer": "8.1",
                    "exploitInTheWildLink": "",
                    "description": "Applications that use UriComponentsBuilder in Spring Framework\u00a0to parse an externally provided URL (e.g. through a query parameter) AND\u00a0perform validation checks on the host of the parsed URL may be vulnerable to a  open redirect https://cwe.mitre.org/data/definitions/601.html \u00a0attack or to a SSRF attack if the URL is used after passing validation checks.\n\nThis is the same as  CVE-2024-22243 https://spring.io/security/cve-2024-22243 , but with different input.\n\n",
                    "dateDiscovered": "Sat Mar 16 2024",
                    "minorVerWithFix": "5.3.33",
                    "majorVerWithFix": "6.1.5",
                    "exploitRequirement": "",
                    "exploitCode": null,
                    "originalSeverity": "High"
                },
                {
                    "cwe": [
                        {
                            "name": "CWE-601: URL Redirection to Untrusted Site ('Open Redirect')",
                            "shortName": "CWE-601: URL Redirection to Untrusted Site ('Open Redirect')",
                            "url": "https://cwe.mitre.org/data/definitions/601.html"
                        }
                    ],
                    "cve": "CVE-2024-22243",
                    "dependencyChain": "org.springframework:spring-web",
                    "cveLink": "https://nvd.nist.gov/vuln/detail/CVE-2024-22243",
                    "cvsVer": "8.1",
                    "exploitInTheWildLink": "",
                    "description": "Applications that use UriComponentsBuilder\u00a0to parse an externally provided URL (e.g. through a query parameter) AND\u00a0perform validation checks on the host of the parsed URL may be vulnerable to a  open redirect https://cwe.mitre.org/data/definitions/601.html \u00a0attack or to a SSRF attack if the URL is used after passing validation checks.\n",
                    "dateDiscovered": "Fri Feb 23 2024",
                    "minorVerWithFix": "5.3.32",
                    "majorVerWithFix": "6.1.4",
                    "exploitRequirement": "",
                    "exploitCode": null,
                    "originalSeverity": "High"
                },
                {
                    "cwe": [
                        {
                            "name": "CWE-1333: Inefficient Regular Expression Complexity",
                            "shortName": "CWE-1333: Inefficient Regular Expression Complexity",
                            "url": "https://cwe.mitre.org/data/definitions/1333.html"
                        },
                        {
                            "name": "CWE-400: Uncontrolled Resource Consumption",
                            "shortName": "CWE-400: Uncontrolled Resource Consumption",
                            "url": "https://cwe.mitre.org/data/definitions/400.html"
                        }
                    ],
                    "cve": "CVE-2024-38809",
                    "dependencyChain": "org.springframework:spring-web",
                    "cveLink": "https://nvd.nist.gov/vuln/detail/CVE-2024-38809",
                    "cvsVer": "5.3",
                    "exploitInTheWildLink": "",
                    "description": "Applications that parse ETags from \"If-Match\" or \"If-None-Match\" request headers are vulnerable to DoS attack.\n\nUsers of affected versions should upgrade to the corresponding fixed version.\n\nUsers of older, unsupported versions could enforce a size limit on \"If-Match\" and \"If-None-Match\" headers, e.g. through a Filter.",
                    "dateDiscovered": "Fri Sep 27 2024",
                    "minorVerWithFix": "5.3.38",
                    "majorVerWithFix": "6.1.12",
                    "exploitRequirement": "",
                    "exploitCode": null,
                    "originalSeverity": "Medium"
                },
                {
                    "cwe": [
                        {
                            "name": "CWE-770: Allocation of Resources Without Limits or Throttling",
                            "shortName": "CWE-770: Allocation of Resources Without Limits or Throttling",
                            "url": "https://cwe.mitre.org/data/definitions/770.html"
                        }
                    ],
                    "cve": "CVE-2022-22970",
                    "dependencyChain": "org.springframework:spring-web -> org.springframework:spring-beans",
                    "cveLink": "https://nvd.nist.gov/vuln/detail/CVE-2022-22970",
                    "cvsVer": "5.3",
                    "exploitInTheWildLink": "",
                    "description": "In spring framework versions prior to 5.3.20+ , 5.2.22+ and old unsupported versions, applications that handle file uploads are vulnerable to DoS attack if they rely on data binding to set a MultipartFile or javax.servlet.Part to a field in a model object.",
                    "dateDiscovered": "Thu May 12 2022",
                    "minorVerWithFix": "5.3.20",
                    "majorVerWithFix": "Not Available",
                    "exploitRequirement": "Network access required to system with installed dependency",
                    "exploitCode": "NETWORK",
                    "originalSeverity": "Medium"
                }
            ],
            "policy": {
                "id": "oxPolicy_securityScan_120",
                "name": "Vulnerable dependency (CVE) in code",
                "detailedDescription": "OSS/SCA is a critical tool that identifies vulnerabilities within open-source and third-party components of software applications. Ignoring OSS issues exposes applications to potential breaches, unauthorized access, and system malfunctions. As reliance on third-party libraries grows, the significance of addressing these vulnerabilities becomes paramount. The Log4J incident is one example of this. OSS scanning is the most basic way of determining if an application is using vulnerable dependencies."
            },
            "category": {
                "name": "Open Source Security",
                "categoryId": 6
            },
            "sbom": {
                "id": "679b7fee9a8e1da9ab4e18e5",
                "libId": "maven|org.springframework:spring-web|5.3.19",
                "license": "Apache-2.0",
                "appName": "OX-Security-Demo/Bank-Website",
                "dependencyType": "Direct",
                "location": "N/A",
                "appId": "584352228",
                "locationLink": "",
                "appLink": "https://github.com/OX-Security-Demo/Bank-Website",
                "pkgName": "org.springframework:spring-web",
                "copyWriteInfo": [
                    "Copyright {yyyy} {name of copyright owner}"
                ],
                "copyWriteInfoLink": "https://raw.githubusercontent.com/spring-projects/spring-framework/main/LICENSE.txt",
                "libLink": "https://github.com/spring-projects/spring-framework",
                "libraryName": "org.springframework:spring-web",
                "libraryVersion": "5.3.19",
                "latestVersion": null,
                "latestVersionDate": null,
                "stars": 52495,
                "forks": 36450,
                "openIssues": 1332,
                "maintainers": null,
                "notPopular": false,
                "licenseIssue": false,
                "notMaintained": null,
                "isDeprecated": false,
                "notImported": false,
                "notUpdated": false,
                "dependencyLevel": null,
                "language": "Java",
                "downloads": null,
                "contributors": null,
                "packageManager": "maven",
                "packageManagerLink": "https://mvnrepository.com/artifact/org.springframework/spring-web/5.3.19",
                "source": "Repository",
                "sourceLink": "https://github.com/spring-projects/spring-framework",
                "triggerPackage": null
            },
            "app": {
                "id": "584352228",
                "name": "OX-Security-Demo/Bank-Website",
                "businessPriority": 97,
                "type": "GitHub",
                "fakeApp": false,
                "repoName": "Bank-Website",
                "organization": "OX-Security-Demo"
            },
            "createdAt": 1710690270921
        }
    }
}
Mapped
{
    "action": "Observed",
    "action_id": 3,
    "activity_id": 1,
    "activity_name": "Create",
    "category_name": "Findings",
    "category_uid": 2,
    "class_name": "Application Security Finding",
    "class_uid": 2007,
    "comment": "i will probably fix this!",
    "count": 7,
    "message": "Vulnerable dependency (CVE) in code",
    "severity": "Critical",
    "severity_id": 5,
    "status": "In Progress",
    "status_id": 2,
    "type_name": "Application Security Finding: Create",
    "type_uid": 200701,
    "start_time": "2024-03-17T15:44:30.921000+00:00",
    "time": "2025-01-30T13:31:43.760000+00:00",
    "observables": [
        {
            "value": "584352228",
            "type_id": 10
        },
        {
            "value": "OX-Security-Demo/Bank-Website",
            "type_id": 38
        },
        {
            "value": "CVE-2022-22965",
            "type_id": 18
        },
        {
            "value": "CWE-94",
            "type_id": 17
        },
        {
            "value": "CVE-2016-1000027",
            "type_id": 18
        },
        {
            "value": "CWE-502",
            "type_id": 17
        },
        {
            "value": "CVE-2024-22262",
            "type_id": 18
        },
        {
            "value": "CWE-601",
            "type_id": 17
        },
        {
            "value": "CWE-918",
            "type_id": 17
        },
        {
            "value": "CVE-2024-22259",
            "type_id": 18
        },
        {
            "value": "CVE-2024-22243",
            "type_id": 18
        },
        {
            "value": "CVE-2024-38809",
            "type_id": 18
        },
        {
            "value": "CWE-1333",
            "type_id": 17
        },
        {
            "value": "CWE-400",
            "type_id": 17
        },
        {
            "value": "CVE-2022-22970",
            "type_id": 18
        },
        {
            "value": "CWE-770",
            "type_id": 17
        }
    ],
    "metadata": {
        "correlation_uid": "91728285-4665-4570-8238-61f3dd74b9d7",
        "original_time": 1710690270921,
        "profiles": [
            "Security Control"
        ],
        "uid": "679b7fea9a8e1da9ab4de76a",
        "version": "1.4.0",
        "product": {
            "lang": "en",
            "name": "OX Security",
            "url_string": "https://docs.ox.security/",
            "vendor_name": "OX Security",
            "feature": {
                "name": "Get Issues"
            }
        }
    },
    "compliance": {
        "requirements": [
            "ISO27001:2022 A.8.8",
            "NIST-800-53-Revision-5 RA-5",
            "SOC2 CC3.2",
            "PCI_DSS 4.0 6.3.3",
            "PCI_DSS 3.2.1 6.2",
            "CIS Github Benchmark v1.0.0 1.5.5",
            "CIS Github Benchmark v1.0.0 3.1.4",
            "CIS Github Benchmark v1.0.0 3.2.2"
        ],
        "standards": [
            "ISO27001:2022",
            "NIST-800-53-Revision-5",
            "SOC2",
            "PCI_DSS 4.0",
            "PCI_DSS 3.2.1",
            "CIS Github Benchmark v1.0.0"
        ]
    },
    "finding_info": {
        "created_time": "2024-03-17T15:44:30.921000+00:00",
        "data_sources": [
            "OX Open Source Security"
        ],
        "desc": "spring-web\\@5.3.19 is a Java direct dependency having 5 direct vulnerabilities and 2 indirect vulnerabilities.<br><br>Vulnerability Context Counts:<br>&bull; Known Exploited Vulnerabilities (KEV): 1<br>&bull; EPSS High: 1<br>&bull; Public Exploits: 2<br><br>Vulnerability Severity Counts (CVSS | OX):<br>&bull; Critical : 2 | 1<br>&bull; High : 3 | 1<br>&bull; Low : 0 | 5<br>&bull; Medium : 2 | 0<br><br>Impacted Dependencies:<br>2 packages: org.springframework:spring-web\\@5.3.19, org.springframework:spring-beans\\@5.1.4.RELEASE",
        "first_seen_time": "2024-03-17T15:44:30.921000+00:00",
        "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
        "title": "spring-web@5.3.19 is a Java direct dependency having 5 direct vulnerabilities and 2 indirect vulnerabilities. CVE-2022-22965 (CVSS:9.8, Code Injection) is the most severe vulnerability.",
        "types": [
            "Open Source Security"
        ],
        "uid": "584352228-oxPolicy_securityScan_120-org.springframework:spring-web_5.3.19",
        "uid_alt": "91728285-4665-4570-8238-61f3dd74b9d7"
    },
    "policy": {
        "desc": "OSS/SCA is a critical tool that identifies vulnerabilities within open-source and third-party components of software applications. Ignoring OSS issues exposes applications to potential breaches, unauthorized access, and system malfunctions. As reliance on third-party libraries grows, the significance of addressing these vulnerabilities becomes paramount. The Log4J incident is one example of this. OSS scanning is the most basic way of determining if an application is using vulnerable dependencies.",
        "is_applied": true,
        "name": "Vulnerable dependency (CVE) in code",
        "uid": "oxPolicy_securityScan_120"
    },
    "remediation": {
        "desc": "&bull; Current Dependency: spring-web\\@5.3.19<br>&bull; Recommended Upgrade: spring-web\\@6.2.2<br>&bull; spring-web\\@6.2.2 resolves 5 of 5 direct vulnerabilities and resolves 2 of 2 indirect vulnerabilities<br><br>Upgrading to spring-web\\@6.2.2 will resolve ALL known vulnerabilities in your current dependency."
    },
    "resources": [
        {
            "data": {
                "id": "584352228",
                "name": "OX-Security-Demo/Bank-Website",
                "businessPriority": 97,
                "type": "GitHub",
                "fakeApp": false,
                "repoName": "Bank-Website",
                "organization": "OX-Security-Demo"
            },
            "name": "OX-Security-Demo/Bank-Website",
            "type": "GitHub",
            "uid": "584352228"
        }
    ],
    "sbom": {
        "created_time": "2025-01-30T13:31:43.760000+00:00",
        "type": "OX Security",
        "type_id": 99,
        "uid": "679b7fee9a8e1da9ab4e18e5",
        "package": {
            "license": "Apache-2.0",
            "license_link": "https://raw.githubusercontent.com/spring-projects/spring-framework/main/LICENSE.txt",
            "package_manager": "maven",
            "package_manager_link": "https://mvnrepository.com/artifact/org.springframework/spring-web/5.3.19",
            "name": "org.springframework:spring-web",
            "src_url": "https://github.com/spring-projects/spring-framework",
            "uid": "maven|org.springframework:spring-web|5.3.19",
            "version": "5.3.19"
        }
    },
    "vulnerabilities": [
        {
            "desc": "A Spring MVC or Spring WebFlux application running on JDK 9+ may be vulnerable to remote code execution (RCE) via data binding. The specific exploit requires the application to run on Tomcat as a WAR deployment. If the application is deployed as a Spring Boot executable jar, i.e. the default, it is not vulnerable to the exploit. However, the nature of the vulnerability is more general, and there may be other ways to exploit it.",
            "dependency_chain": "org.springframework:spring-web -> org.springframework:spring-beans",
            "exploit_reference_link": "http://packetstormsecurity.com/files/166713/Spring4Shell-Code-Execution.html",
            "exploit_requirement": "Network access required to system with installed dependency",
            "exploit_type": "NETWORK",
            "is_exploit_available": true,
            "is_fix_available": true,
            "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
            "severity": "Critical",
            "cve": {
                "created_time": "Fri Apr 01 2022",
                "references": [
                    "https://nvd.nist.gov/vuln/detail/CVE-2022-22965"
                ],
                "uid": "CVE-2022-22965",
                "related_cwes": [
                    {
                        "caption": "Improper Control of Generation of Code ('Code Injection')",
                        "uid": "CWE-94"
                    }
                ]
            },
            "affected_packages": [
                {
                    "fixed_in_version": "5.3.18"
                }
            ]
        },
        {
            "desc": "Pivotal Spring Framework through 5.3.16 suffers from a potential remote code execution (RCE) issue if used for Java deserialization of untrusted data. Depending on how the library is implemented within a product, this issue may or not occur, and authentication may be required. NOTE: the vendor's position is that untrusted data is not an intended use case. The product's behavior will not be changed because some users rely on deserialization of trusted data.",
            "dependency_chain": "org.springframework:spring-web",
            "exploit_reference_link": "https://raw.githubusercontent.com/distributedweaknessfiling/cvelist/master/2016/1000xxx/CVE-2016-1000027.json",
            "exploit_requirement": "Network access required to system with installed dependency",
            "exploit_type": "NETWORK",
            "is_exploit_available": true,
            "is_fix_available": true,
            "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
            "severity": "Critical",
            "cve": {
                "created_time": "Thu Jan 02 2020",
                "references": [
                    "https://nvd.nist.gov/vuln/detail/CVE-2016-1000027"
                ],
                "uid": "CVE-2016-1000027",
                "related_cwes": [
                    {
                        "caption": "Deserialization of Untrusted Data",
                        "uid": "CWE-502"
                    }
                ]
            },
            "affected_packages": [
                {
                    "fixed_in_version": "6.0.0"
                }
            ]
        },
        {
            "desc": "Applications that use UriComponentsBuilder\u00a0to parse an externally provided URL (e.g. through a query parameter) AND\u00a0perform validation checks on the host of the parsed URL may be vulnerable to a  open redirect https://cwe.mitre.org/data/definitions/601.html \u00a0attack or to a SSRF attack if the URL is used after passing validation checks.\n\nThis is the same as  CVE-2024-22259 https://spring.io/security/cve-2024-22259 \u00a0and  CVE-2024-22243 https://spring.io/security/cve-2024-22243 , but with different input.\n\n",
            "dependency_chain": "org.springframework:spring-web",
            "exploit_reference_link": "",
            "exploit_requirement": "",
            "exploit_type": null,
            "is_exploit_available": false,
            "is_fix_available": true,
            "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
            "severity": "High",
            "cve": {
                "created_time": "Tue Apr 16 2024",
                "references": [
                    "https://nvd.nist.gov/vuln/detail/CVE-2024-22262"
                ],
                "uid": "CVE-2024-22262",
                "related_cwes": [
                    {
                        "caption": "URL Redirection to Untrusted Site ('Open Redirect')",
                        "uid": "CWE-601"
                    },
                    {
                        "caption": "Server-Side Request Forgery (SSRF)",
                        "uid": "CWE-918"
                    }
                ]
            },
            "affected_packages": [
                {
                    "fixed_in_version": "6.1.6"
                }
            ]
        },
        {
            "desc": "Applications that use UriComponentsBuilder in Spring Framework\u00a0to parse an externally provided URL (e.g. through a query parameter) AND\u00a0perform validation checks on the host of the parsed URL may be vulnerable to a  open redirect https://cwe.mitre.org/data/definitions/601.html \u00a0attack or to a SSRF attack if the URL is used after passing validation checks.\n\nThis is the same as  CVE-2024-22243 https://spring.io/security/cve-2024-22243 , but with different input.\n\n",
            "dependency_chain": "org.springframework:spring-web",
            "exploit_reference_link": "",
            "exploit_requirement": "",
            "exploit_type": null,
            "is_exploit_available": false,
            "is_fix_available": true,
            "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
            "severity": "High",
            "cve": {
                "created_time": "Sat Mar 16 2024",
                "references": [
                    "https://nvd.nist.gov/vuln/detail/CVE-2024-22259"
                ],
                "uid": "CVE-2024-22259",
                "related_cwes": [
                    {
                        "caption": "URL Redirection to Untrusted Site ('Open Redirect')",
                        "uid": "CWE-601"
                    }
                ]
            },
            "affected_packages": [
                {
                    "fixed_in_version": "6.1.5"
                }
            ]
        },
        {
            "desc": "Applications that use UriComponentsBuilder\u00a0to parse an externally provided URL (e.g. through a query parameter) AND\u00a0perform validation checks on the host of the parsed URL may be vulnerable to a  open redirect https://cwe.mitre.org/data/definitions/601.html \u00a0attack or to a SSRF attack if the URL is used after passing validation checks.\n",
            "dependency_chain": "org.springframework:spring-web",
            "exploit_reference_link": "",
            "exploit_requirement": "",
            "exploit_type": null,
            "is_exploit_available": false,
            "is_fix_available": true,
            "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
            "severity": "High",
            "cve": {
                "created_time": "Fri Feb 23 2024",
                "references": [
                    "https://nvd.nist.gov/vuln/detail/CVE-2024-22243"
                ],
                "uid": "CVE-2024-22243",
                "related_cwes": [
                    {
                        "caption": "URL Redirection to Untrusted Site ('Open Redirect')",
                        "uid": "CWE-601"
                    }
                ]
            },
            "affected_packages": [
                {
                    "fixed_in_version": "6.1.4"
                }
            ]
        },
        {
            "desc": "Applications that parse ETags from \"If-Match\" or \"If-None-Match\" request headers are vulnerable to DoS attack.\n\nUsers of affected versions should upgrade to the corresponding fixed version.\n\nUsers of older, unsupported versions could enforce a size limit on \"If-Match\" and \"If-None-Match\" headers, e.g. through a Filter.",
            "dependency_chain": "org.springframework:spring-web",
            "exploit_reference_link": "",
            "exploit_requirement": "",
            "exploit_type": null,
            "is_exploit_available": false,
            "is_fix_available": true,
            "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
            "severity": "Medium",
            "cve": {
                "created_time": "Fri Sep 27 2024",
                "references": [
                    "https://nvd.nist.gov/vuln/detail/CVE-2024-38809"
                ],
                "uid": "CVE-2024-38809",
                "related_cwes": [
                    {
                        "caption": "Inefficient Regular Expression Complexity",
                        "uid": "CWE-1333"
                    },
                    {
                        "caption": "Uncontrolled Resource Consumption",
                        "uid": "CWE-400"
                    }
                ]
            },
            "affected_packages": [
                {
                    "fixed_in_version": "6.1.12"
                }
            ]
        },
        {
            "desc": "In spring framework versions prior to 5.3.20+ , 5.2.22+ and old unsupported versions, applications that handle file uploads are vulnerable to DoS attack if they rely on data binding to set a MultipartFile or javax.servlet.Part to a field in a model object.",
            "dependency_chain": "org.springframework:spring-web -> org.springframework:spring-beans",
            "exploit_reference_link": "",
            "exploit_requirement": "Network access required to system with installed dependency",
            "exploit_type": "NETWORK",
            "is_exploit_available": false,
            "is_fix_available": true,
            "last_seen_time": "2025-01-30T13:31:43.760000+00:00",
            "severity": "Medium",
            "cve": {
                "created_time": "Thu May 12 2022",
                "references": [
                    "https://nvd.nist.gov/vuln/detail/CVE-2022-22970"
                ],
                "uid": "CVE-2022-22970",
                "related_cwes": [
                    {
                        "caption": "Allocation of Resources Without Limits or Throttling",
                        "uid": "CWE-770"
                    }
                ]
            },
            "affected_packages": [
                {
                    "fixed_in_version": "5.3.20"
                }
            ]
        }
    ]
}

@jonrau-at-queryai jonrau-at-queryai changed the title Appsec finding Extend OCSF schema for ASPM Findings Mar 2, 2025
@jonrau-at-queryai jonrau-at-queryai self-assigned this Mar 2, 2025
@jonrau-at-queryai jonrau-at-queryai added the enhancement New feature or request label Mar 2, 2025
@jonrau-at-queryai jonrau-at-queryai added the v1.5.0 Items to be considered for OCSF v1.5.0 label Mar 2, 2025
@EthanBlackburn
Copy link

EthanBlackburn commented Mar 4, 2025

A couple thoughts:

SBOM

  1. sbom feels redundant – the SBOM is pointing out which package is affected (ie spring-web v5.3.19).
"sbom": {
        "created_time": "2025-01-30T13:31:43.760000+00:00",
        "type": "OX Security",
        "type_id": 99,
        "uid": "679b7fee9a8e1da9ab4e18e5",
        "package": {
            "license": "Apache-2.0",
            "license_link": "https://raw.githubusercontent.com/spring-projects/spring-framework/main/LICENSE.txt",
            "package_manager": "maven",
            "package_manager_link": "https://mvnrepository.com/artifact/org.springframework/spring-web/5.3.19",
            "name": "org.springframework:spring-web",
            "src_url": "https://github.com/spring-projects/spring-framework",
            "uid": "maven|org.springframework:spring-web|5.3.19",
            "version": "5.3.19"
        }
    },

What value does SBOM provide that affected_package does not? Are there cases where end consumer of the data need to know that there is an SBOM?

application_security_finding

  1. I think the main motivation behind the application_security_finding class is to allow for findings with both CVEs and compliance findings. However, this conflates two distinct notions of compliance:
  • Generic Compliance Requirements: Broad guidelines such as "ensure scanners are in place" or "monitor vulnerabilities in third-party components."

  • Concrete Compliance Requirements: Specific, actionable findings such as "CloudTrail is disabled in AWS account X."

The compliance examples provided are highly generic, focusing on broad best practices rather than actionable findings.

...
                    "description": "Management of Technical Vulnerabilities"
...
                    "description": "Vulnerability Monitoring and Scanning"
...
                    "description": "Analyzes Threats and Vulnerabilities From Vendors, Business Partners, and Other Parties: The entity's risk assessment process includes the analysis of potential threats and vulnerabilities arising from vendors providing goods and services, as well as threats and vulnerabilities arising from business partners, customers, and others with access to the entity's information systems."
...
                    "description": "All system components are protected from known vulnerabilities by installing applicable security patches/updates"
...
                    "description": "Ensure that all system components and software are protected from known vulnerabilities by installing the applicable security patches provided by the manufacturer. Install critical security patches within a month"
...
                    "description": "Ensure scanners are in place for open-source vulnerabilities in used packages"
...
                    "description": "Ensure dependencies are monitored between open-source components"
...
                    "description": "Ensure packages are automatically scanned for known vulnerabilities"
 

When I think of a compliance finding, I think of concrete findings, such as "Cloudtrail is not enabled in account X". As a consumer of the example data, I would only want to know about the CVEs in the packages. It feels like a good idea to decorate the vulnerability_finding with these generic compliance requirements as you've done with the compliance object on application_security_finding

  1. (philosophical) There are certainly multiple types of vulnerabilities (Configuration drift, CVE, code vuln) but I don't think application security finding is a real "finding" in the strict sense of the word; The findings here are the 7 vulnerabilities in the spring package, and unless I'm missing something, the vulnerabiltiy_finding class is sufficient. Application security posture management is a class of tools not a class of vulnerabilities.

Signed-off-by: Jonathan Rau <139361268+jonrau-at-queryai@users.noreply.github.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
description_updates Issues related to missing/incorrect/lacking descriptions of attributes enhancement New feature or request findings Issues related to Findings Category non_breaking Non Breaking, backwards compatible changes v1.5.0 Items to be considered for OCSF v1.5.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Expand vulnerability_finding and vulnerability to cover ASPM/AppSec-related findings
4 participants