{
  "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
  "bomFormat": "CycloneDX",
  "specVersion": "1.6",
  "serialNumber": "urn:uuid:a84f320d-eb98-540b-805f-f7377ca2d941",
  "version": 1,
  "metadata": {
    "supplier": {
      "name": "TuxCare",
      "url": [
        "https://tuxcare.com"
      ]
    }
  },
  "components": [
    {
      "name": "spring-ai-vector-store",
      "purl": "pkg:maven/org.springframework.ai/spring-ai-vector-store@1.0.9-tuxcare.1",
      "type": "library",
      "group": "org.springframework.ai",
      "bom-ref": "pkg:maven/org.springframework.ai/spring-ai-vector-store@1.0.9-tuxcare.1",
      "version": "1.0.9-tuxcare.1",
      "pedigree": {
        "ancestors": [
          {
            "name": "spring-ai-vector-store",
            "purl": "pkg:maven/org.springframework.ai/spring-ai-vector-store@1.0.9",
            "type": "library",
            "group": "org.springframework.ai",
            "version": "1.0.9"
          }
        ]
      },
      "supplier": {
        "url": [
          "https://tuxcare.com"
        ],
        "name": "TuxCare"
      }
    }
  ],
  "vulnerabilities": [
    {
      "id": "CVE-2026-22729",
      "affects": [
        {
          "ref": "pkg:maven/org.springframework.ai/spring-ai-vector-store@1.0.9-tuxcare.1"
        }
      ],
      "bom-ref": "urn:uuid:bbd63b54-6c1b-5d54-8d20-c3b440f93410",
      "analysis": {
        "state": "not_affected",
        "detail": "Vulnerability CVE-2026-22729 does not affect version 1.0.9-tuxcare.1 of org.springframework.ai:spring-ai-vector-store. The target Spring AI v1.0.9 is NOT AFFECTED by CVE-2026-22729. The vulnerability (JSONPath injection via unescaped user input in filter expressions) was fixed by upstream vendor Broadcom/VMware in two commits (a2f6f4cb and f6204b59) that were already included in the Spring AI 1.0.9 release. TuxCare onboarded version 1.0.9 (commit ecb2df6a5) which already contained these upstream fixes. The current codebase has: (1) AbstractFilterExpressionConverter.doSingleValue() as an abstract method forcing all implementations to use proper escaping helpers (emitJsonValue, emitLuceneString, emitSpelString), and (2) FilterExpressionTextParser.unescapeStringValue() properly handling escaped quotes and backslashes. All concrete implementations (Pinecone, Neo4j, SimpleVectorStore, etc.) use the safe escaping methods. The vulnerable pattern (direct concatenation without escaping) is absent from HEAD.\n\nAdvisory cross-check (dlmn): outside the affected ranges of GitHub (>= 1.1.0-M1, < 1.1.3; < 1.0.4), NVD (>= 1.0.0, < 1.0.4; >= 1.1.0, < 1.1.3), cve.org (>= 1.0.x, < 1.0.4; >= 1.1.x, < 1.1.3), Snyk (>= 1.0.0-M5, < 1.0.4; >= 1.1.0-M1, < 1.1.3; >= 2.0.0-M1, < 2.0.0-M3).",
        "justification": "code_not_present"
      }
    },
    {
      "id": "CVE-2026-22738",
      "affects": [
        {
          "ref": "pkg:maven/org.springframework.ai/spring-ai-vector-store@1.0.9-tuxcare.1"
        }
      ],
      "bom-ref": "urn:uuid:b9ba3eaf-9d6d-5cd9-b4ae-4c2762fffa4d",
      "analysis": {
        "state": "not_affected",
        "detail": "Vulnerability CVE-2026-22738 does not affect version 1.0.9-tuxcare.1 of org.springframework.ai:spring-ai-vector-store. The target Spring AI 1.0.9 is NOT affected by CVE-2026-22738 (SpEL injection in SimpleVectorStore). The vulnerable SpEL-based filter evaluation code was removed by upstream commit 92c502472 authored by christian.tzolov@broadcom.com, which shipped in the upstream Spring AI 1.0.9 release. The target uses the safe SimpleVectorStoreFilterExpressionEvaluator that performs direct AST evaluation without constructing or parsing SpEL expression strings from user input.\n\nAdvisory cross-check (dlmn): outside the affected ranges of GitHub (>= 1.0.0, < 1.0.5; >= 1.1.0-M1, < 1.1.4), NVD (>= 1.0.0, < 1.0.5; >= 1.1.0, < 1.1.4), cve.org (>= 1.0.0, < 1.0.5; >= 1.1.0, < 1.1.4), Snyk (< 1.0.5; >= 1.1.0-M1, < 1.1.4).",
        "justification": "code_not_present"
      }
    },
    {
      "id": "CVE-2026-40967",
      "affects": [
        {
          "ref": "pkg:maven/org.springframework.ai/spring-ai-vector-store@1.0.9-tuxcare.1"
        }
      ],
      "bom-ref": "urn:uuid:c3e7a673-ecc3-5cde-acf7-03d2df417e35",
      "analysis": {
        "state": "not_affected",
        "detail": "Vulnerability CVE-2026-40967 does not affect version 1.0.9-tuxcare.1 of org.springframework.ai:spring-ai-vector-store. The target Spring AI version 1.0.9 is NOT AFFECTED by CVE-2026-40967. All filter expression injection vulnerabilities were fixed by the upstream vendor (Broadcom) in commits eb763fd1c, a2f6f4cb1, and 6c99d545e, which were included in the Spring AI 1.0.9 release before TuxCare onboarded it. The fixes add proper escaping of metadata keys and values across all FilterExpressionConverter implementations: JSON escaping via emitJsonValue() for JSON-based stores (Pinecone, Chroma, Neo4j, PostgreSQL), Lucene escaping via emitLuceneString() for Lucene-based stores (Elasticsearch, OpenSearch, GemFire), Redis TAG/TEXT escaping via escapeTagValue() and RediSearchUtil.escapeQuery(), SQL escaping for MariaDB/Oracle, and backtick escaping for Couchbase/Neo4j. VectorStoreChatMemoryAdvisor was also fixed to use FilterExpressionBuilder.eq() instead of manual string concatenation.\n\nAdvisory cross-check (dlmn): outside the affected ranges of GitHub (>= 1.0.0, < 1.0.6; >= 1.1.0, < 1.1.5), NVD (>= 1.0.0, < 1.0.6; >= 1.1.0, < 1.1.5), cve.org (>= 1.0.0, < 1.0.6; >= 1.1.0, < 1.1.5), Snyk (< 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5; < 1.0.6; >= 1.1.0-M1, < 1.1.5).",
        "justification": "code_not_present"
      }
    }
  ],
  "dependencies": [
    {
      "ref": "pkg:maven/org.springframework.ai/spring-ai-vector-store@1.0.9-tuxcare.1"
    }
  ]
}