Repository navigation
fix(destination-pinecone): bump CDK to >=7.7.0 to address CVE-2025-68664 in langchain-core - #76341
Draft
Aaron ("AJ") Steers (aaronsteers) wants to merge 6 commits into
Draft
Aaron ("AJ") Steers (aaronsteers) wants to merge 6 commits into
Aaron ("AJ") Steers (aaronsteers) wants to merge 6 commits into
Conversation
Contributor
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Contributor
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. 💡 Show Tips and TricksPR Slash CommandsAirbyte Maintainers (that's you!) can execute the following slash commands on your PR:
📚 Show Repo GuidanceHelpful Resources
|
Contributor
|
- Replace airbyte_protocol imports with airbyte_cdk.models (airbyte_protocol package no longer exists in CDK v7+) - Replace ConfiguredAirbyteCatalog.parse_obj() with direct construction (CDK models migrated from Pydantic to dataclasses)
Adds a manifest-only YAML source connector (readback_manifest.yaml) in integration_tests/ that reads back from Pinecone after the smoke test writes data. Uses DynamicDeclarativeStream + HttpComponentsResolver to handle Pinecone's two-tier API (control plane host resolution -> data plane queries). Streams: - index_info: control-plane metadata (connection check) - namespace_stats: vector counts per namespace (primary readback signal) - list_vector_ids: individual vector IDs (serverless only) Convention: integration_tests/readback_manifest.yaml — reusable across future destination connectors that need non-SQL readback verification.
Co-Authored-By: AJ Steers <aj@airbyte.io>
Co-Authored-By: AJ Steers <aj@airbyte.io>
devin-ai-integration
Bot
force-pushed
the
devin/1776229493-fix-destination-pinecone-langchain-cve
branch
from
June 17, 2026 16:18
b7a45e1 to
8b8b990
Compare
Contributor
|
Deploy preview for airbyte-docs ready!
Deployed with vercel-action |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Addresses CVE-2025-68664 — a critical (CVSS 9.3) serialization injection vulnerability in
langchain-core < 0.3.81. Thedestination-pineconeconnector inherits this vulnerability transitively through its CDK dependency (airbyte-cdk[vector-db-based]), which was pinned to<2.0.0and resolvedlangchain_core==0.1.42.The CDK already ships patched langchain dependencies (
langchain_core >= 1.2.5) since airbytehq/airbyte-python-cdk#874 (included in CDK v7.7.0+). This PR bumps the connector's CDK constraint so it picks up the fix.Also adds a manifest-only readback source connector for E2E verification of data written to Pinecone (since Pinecone is a vector DB and doesn't support the standard SQL-based readback used by the smoke test skill).
Related oncall issue:
airbytehq/oncall#11744How
airbyte-cdkfrom<2.0.0to>=7.7.0(withvector-db-basedextras).^3.9to^3.10(required by CDK 4.0+).poetry.lock, which now resolveslangchain_core >=1.2.5(patched) instead of0.1.42(vulnerable).config.pyto import frompydantic.v1instead ofpydantic, matching the CDK'sVectorDBConfigModelbase class which uses Pydantic v1 models. Without this, Pydantic v1 raisesRuntimeError: no validator foundwhen the v2-basedPineconeIndexingModelis used as a field in a v1-based parent.destination.pyimports from the removedairbyte_protocolpackage toairbyte_cdk.models. MovedAirbyteLogMessage,Level, andDestinationSyncModeinto the top-level import block (previously these were lazy-imported fromairbyte_protocol.models.airbyte_protocolinside_log()andwrite()).pinecone_indexer_test.pyto constructConfiguredAirbyteCatalogdirectly via keyword arguments instead ofparse_obj(). CDK v7 protocol models are dataclasses, not Pydantic models, soparse_objno longer exists.integration_tests/readback_manifest.yaml— a manifest-only YAML source connector that reads back from the same Pinecone index after a smoke test write. UsesDynamicDeclarativeStream+HttpComponentsResolverto handle Pinecone's two-tier API (control plane host resolution → data plane queries). Validated withconnector-builder-mcp'svalidate_manifesttool. Convention:integration_tests/readback_manifest.yamlis intended to be reusable across future destination connectors needing non-SQL readback.Review guide
pyproject.toml— CDK version bump (<2.0.0→>=7.7.0) and Python version bump (^3.9→^3.10).destination_pinecone/config.py— single-line import change:from pydantic import …→from pydantic.v1 import ….destination_pinecone/destination.py— replacedfrom airbyte_protocol.models.airbyte_protocolinline imports with top-levelfrom airbyte_cdk.modelsimports.unit_tests/pinecone_indexer_test.py— replacedConfiguredAirbyteCatalog.parse_obj({…})with direct dataclass construction.poetry.lock— regenerated; verifylangchain_coreversion is>=1.2.5.integration_tests/readback_manifest.yaml— new manifest-only source connector for E2E readback. Three streams:index_info: control-plane metadata (GET /indexes/{index}) — used as connection checknamespace_stats: vector counts per namespace (POST /describe_index_stats) — primary readback signallist_vector_ids: individual vector IDs (GET /vectors/list) — serverless indexes onlyKey risks to verify
<2.0.0→>=7.7.0): The connector still uses Pydantic v1 patterns (parse_obj,schema(),class Config) for its own models viapydantic.v1. This is correct sinceVectorDBConfigModelusespydantic.v1, but CI tests should confirm full runtime compatibility.ConfigModel.parse_obj()andConfigModel.schema()still used indestination.py: These are valid becauseConfigModelextendsVectorDBConfigModelwhich is apydantic.v1.BaseModel. However, if the CDK ever migratesVectorDBConfigModelaway from pydantic.v1, these calls would break.>=7.7.0): Consistent with other vector DB connectors (e.g., pgvector uses>=1.0), but worth noting.HttpComponentsResolver: This is marked "experimental" in the CDK. Theplaceholder.pinecone.ioin the dynamic stream templates'url_baseis intentional — it gets overridden at runtime byComponentMappingDefinitioninjecting the resolved host from the control plane response. The manifest has not been tested against a live Pinecone index.Human review checklist
pydanticdirectly (should all usepydantic.v1for CDK compat)airbyte_protocolpackagelangchain_core >=1.2.5appears in the regenerated lock filegenerate_catalog()test helper constructs equivalent objects to the previousparse_objdictintegration_tests/readback_manifest.yamlpath convention is acceptable for future destinationsUser Impact
Resolves a critical security vulnerability (CVE-2025-68664) that could allow secret exfiltration or code execution via prompt injection through LangChain's serialization functions. Also provides tooling for future E2E verification of Pinecone writes.
Can this PR be safely reverted and rolled back?
Link to Devin session: https://app.devin.ai/sessions/1012ab4c5c264184aeff8068d3c43d1e
Requested by: Aaron ("AJ") Steers (@aaronsteers)