Security / News explained
An Iceberg column name can cross a data-access boundary
AWS’s November 2 advisory concerns generated SQL in the awswrangler Iceberg writer. The fix is available, and the permissions of both catalog editors and the job consuming their metadata deserve attention.
AWS published a security bulletin on November 2, 2026 about CVE-2026-119301 in AWS SDK for pandas, the Python library also called awswrangler. The affected Iceberg write path can let someone who controls particular catalog metadata borrow the data access of a more privileged job. For teams moving business data between systems, the important boundary includes who can change a column’s name. [1]
Metadata is an input too
The project’s advisory locates the problem in SQL generation: table and column identifiers were incorporated without correctly escaping the delimiter that marks an identifier. That includes column names read from the AWS Glue Data Catalog during schema reconciliation. A name stored in a catalog can therefore influence the structure of a later query. [2]
The documented to_iceberg() operation writes staged files, creates a temporary external table and inserts data into an Athena Iceberg table using an INSERT INTO … SELECT operation. That is useful context for understanding why a routine data-writing function also generates SQL. The security question extends beyond the values inside a pandas DataFrame. [4]
Our engineering interpretation is that a catalog should be treated as an input with an owner and a trust level. A team may carefully review the program that launches a nightly job while overlooking the people and processes that can alter the metadata it reads. The job can be unchanged while an important part of its input has changed underneath it.
The fix and the disclosure have different dates
The affected range is awswrangler 3.5.2 and later, before 3.17.1. AWS identifies 3.17.1 as the fixed release and dates that release to August 3, 2026; the public bulletin arrived on November 2. The release notes also identify the Iceberg identifier-escaping correction. This is a November advisory about a fix already available in an August release. [1] [3]
That distinction matters when assessing an installation. A deployment could already contain the repair, or a recently rebuilt service could still resolve an older pinned dependency. Our recommendation is to establish what the running job actually imports, including packaged copies and maintained forks. The age of a deployment ticket is a poor substitute for the contents of the deployed artifact.
The prerequisite is control of shared catalog metadata
According to the advisory, exploitation requires an authenticated user able to modify catalog metadata for a table the victim processes. The potential result is reading tables available to the more privileged principal and writing to the table that principal is updating. The finding concerns that relationship between a metadata editor and a separate job’s permissions. [2]
Consider a hypothetical reporting pipeline in which a partner can maintain one shared table’s schema, while a consolidation job can read several internal datasets. The partner’s intended authority is to describe its own table. If generated SQL lets that description influence the consolidation query, the job’s broader authority becomes relevant. This illustration explains the trust problem; it is not a report of a customer incident.
For a business owner, the useful discussion is therefore about both dependency maintenance and responsibility. Who owns the shared schema? Who approves changes to it? Which identity runs the scheduled writer? Those decisions often sit with different teams. Bringing them into the same review can reveal an assumption that neither team knew it was relying on.
Reduced exposure still leaves the upgrade to do
AWS says there is no complete workaround for earlier versions. Its interim guidance is to avoid running to_iceberg() with a principal more privileged than those who can modify the table’s catalog metadata, and to restrict glue:UpdateTable and related permissions on shared databases. It also calls for derivative code to incorporate the fixes. [1]
Our interpretation is that these measures deserve a careful access review, rather than a hurried permission change copied across every account. A legitimate pipeline may need separate responsibilities. Narrowing the writer’s access and controlling schema edits can reduce the opportunity for this particular boundary crossing, while the dependency repair addresses the vulnerable construction itself.
A useful completion record includes the ordinary work
For change owners, evidence of completion should connect the repaired dependency with the pipeline that uses it. We would expect a record of the deployed package, the job identity and a representative successful write using approved test data. Coverage of normal schema changes matters as well: a security repair that silently stops a reporting workflow still needs operational attention.
The broader lesson is modest and useful. Names, schemas and catalog entries can become inputs to code that acts with substantial authority. Giving those inputs a place in the access review makes the invisible handoff visible. A column name may look like office stationery; it should not be allowed to sign for somebody else’s permissions.
Sources + further reading
Source dates describe the original material. Publication above is the date this Zyel article went live.
- AWS bulletin 2026-161-AWS: CVE-2026-119301AWS · Checked Nov 4, 2026
- AWS SDK for pandas identifier-quoting advisoryAWS SDK for pandas maintainers · Checked Nov 4, 2026
- AWS SDK for pandas 3.17.1 release notesAWS SDK for pandas maintainers · Checked Nov 4, 2026
- awswrangler.athena.to_iceberg API referenceAWS SDK for pandas · Checked Nov 4, 2026
Reader discussion
What would you ask next?
Questions, useful corrections and thoughtful disagreement are welcome. Comments are reviewed before they appear.
No reader comments yet.