DEEP DIVE REPORT

CVE-2026-65321 대응 가이드: PyAthena SQL 인젝션 및 쿼리 우회 점검 포인트

SecurityDesk
2026.08.03 조회 5

위협 요약

CVE-2026-65321은 Python용 Amazon Athena 클라이언트 라이브러리인 PyAthena의 SQL 매개변수 처리 문제다. 프로젝트 보안 권고는 영향을 받는 버전을 <= 3.35.3, 수정 버전을 3.35.4로 안내하며, CVSS v3.1 기준 9.8(Critical), CWE-89(SQL 인젝션)으로 분류한다.

위험은 PyAthena가 설치됐다는 사실만으로 발생하지 않는다. 신뢰할 수 없는 값이 PyAthena의 매개변수 API를 거쳐 DELETE 또는 CTAS(Create Table As Select) 문장에 들어가고, 그 쿼리가 Athena/Trino에서 실행되는 경로가 있어야 한다. 성공 시 영향은 쿼리를 실행한 AWS IAM, Lake Formation, Athena 워크그룹, S3 권한 범위 안으로 제한되지만, 해당 권한이 넓다면 데이터 조회·변경·삭제와 공격자 제어 결과 생성으로 이어질 수 있다.

취약점 개요

항목 내용
식별자 CVE-2026-65321 / GHSA-xwj5-g6cv-4r5c
취약점 유형 SQL 인젝션(SQL Injection), CWE-89
영향 범위 PyAthena <= 3.35.3
수정 버전 PyAthena 3.35.4
심각도 CVSS v3.1 9.8 (Critical)
영향 문장 DELETE, CTAS(CREATE TABLE … AS SELECT) 매개변수 처리 경로

PyAthena는 애플리케이션에서 전달한 매개변수를 SQL 문자열로 렌더링한다. 이 과정에서 엔진이 요구하는 문자열 리터럴 이스케이프 규칙과 다른 규칙을 사용하면, 입력 값에 포함된 작은따옴표가 데이터가 아니라 SQL 구문 경계로 해석될 수 있다.

기술적 분석

정상적인 Athena/Trino 문자열 리터럴은 작은따옴표를 두 번 쓰는 방식으로 이스케이프한다. 즉 작은따옴표는 ''로 표현돼야 한다. 취약 버전의 DefaultParameterFormatter.format()은 일부 문장 유형의 escaper 선택을 잘못 분기했다. SELECT, WITH, INSERT, UPDATE, MERGE에는 Trino용 처리를 적용했지만, DELETE와 CTAS를 포함한 나머지 문장에는 Hive용 처리를 적용했다.

Hive용 처리는 작은따옴표 앞에 역슬래시를 더하는 방식이다. 그러나 Athena/Trino의 문자열 리터럴은 이 역슬래시를 작은따옴표 이스케이프로 해석하지 않는다. 따라서 신뢰할 수 없는 입력에 작은따옴표가 있을 경우 리터럴이 의도보다 일찍 끝나고, 뒤따르는 문자열이 SQL 구문으로 해석될 가능성이 생긴다.

공식 수정 커밋은 Hive DDL에만 명시적으로 Hive escaper를 배정하고, 그 밖의 문장은 Trino 안전 escaper를 기본으로 쓰도록 변경했다. 또 선행 SQL 주석을 제거한 뒤 문장 유형을 판별하고, CTAS와 일반 CREATE TABLE을 구분한다. 추가 테스트는 DELETE, CTAS, CREATE VIEW, EXPLAIN DELETE, UNLOAD, 선행 주석이 있는 쿼리 등을 포함한다.

영향 범위

우선 점검할 대상은 외부 요청값이 ETL, 관리 기능, 데이터 정리 작업을 통해 DELETE 또는 CTAS의 매개변수로 전달되는 서비스다. 특히 운영 자동화나 배치 계정처럼 데이터 권한이 넓은 역할이 쿼리를 실행하는 경우 우선순위가 높다.

영향 여부는 다음 조건을 함께 확인해 판단한다.

  1. 런타임에서 실제로 PyAthena 3.35.3 이하를 사용하는지 lockfile, 컨테이너 이미지, SBOM과 설치 메타데이터로 확인한다.
  2. cursor.execute 또는 동등한 호출에서 DELETECREATE TABLE … AS SELECT와 매개변수 맵을 함께 쓰는지를 찾는다.
  3. 해당 매개변수에 외부 사용자·외부 시스템·파일 등 신뢰 경계 밖의 값이 유입되는지를 추적한다.
  4. 쿼리 실행 역할의 Athena, S3, Lake Formation 및 IAM 권한 범위를 확인한다.

이 조건을 만족하지 않으면 이 취약점으로 인한 직접 공격 경로는 확인되지 않는다. 반대로 조건을 만족하는 경우, 악용 결과는 실행 주체의 권한 안에서 발생하므로 권한이 넓을수록 데이터 영향도 커진다.

대응 방안

가장 우선할 조치는 PyAthena를 3.35.4 이상으로 업데이트하는 것이다. 의존성 선언만 바꾸지 말고, 배포된 이미지와 실행 환경에서 수정 버전이 실제로 사용되는지 확인해야 한다.

패치 전 또는 업데이트가 지연되는 환경에서는 DELETE와 CTAS 경로에 신뢰할 수 없는 값을 전달하지 않도록 제한한다. 입력 경로를 일시적으로 차단하거나, 신뢰된 값만 허용하는 방식으로 운영 통제를 둔다. 이는 업데이트를 대체하지 않는 임시 완화 조치다.

우선순위 조치 확인 방법
즉시 PyAthena 3.35.4 이상 적용 lockfile·이미지·SBOM·런타임 버전 대조
즉시 외부 입력이 DELETE·CTAS로 가는 경로 식별 및 제한 호출부와 입력 흐름 코드 검토
단기 쿼리 실행 역할 최소 권한화 IAM·Lake Formation·Athena 워크그룹 권한 검토
단기 쿼리 및 결과 저장소 접근 기록 검토 Athena 쿼리 로그, CloudTrail, S3 결과 버킷 기록 확인
검증 작은따옴표 포함 입력의 회귀 테스트 추가 SQL 문법이나 의도하지 않은 구문이 바뀌지 않는지 확인

이미 영향을 받는 경로가 운영됐던 경우에는 Athena 쿼리 기록, CloudTrail, 쿼리 결과 S3 버킷의 접근 기록을 함께 검토한다. 의심스러운 DELETE나 CTAS 실행 여부를 확인할 때는 실행 주체와 대상 데이터, 결과 위치를 연계해 살펴본다.

참고문헌

  • PyAthena GitHub Security Advisory: https://github.com/pyathena-dev/PyAthena/security/advisories/GHSA-xwj5-g6cv-4r5c
  • PyAthena 수정 커밋: https://github.com/pyathena-dev/PyAthena/commit/27901d12245ea722b3b4e211c60e2ade4e7c8efd
  • PyPI PyAthena 배포 메타데이터: https://pypi.org/pypi/pyathena/json
  • NVD CVE 레코드: https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-65321

본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9