Odin 압축 컴포넌트가 경계 검사 부재로 경계 밖 쓰기를 허용해 메모리 손상
공격자는 악의적인 압축 데이터 스트림(잘린 DEFLATE 스트림 또는 특정 패턴의 0바이트 스트림 등)을 구성해 zlib.inflate 또는 gzip.load가 내부 버퍼를 COMPRESS_OUTPUT_ALLOCATE_MAX 상한까지 확장한 뒤에도 쓰기를 계속하게 할 수 있습니다. grow_buffer는 상한에 도달해도 오류를 반환하지 않고, write_byte 등 하위 쓰기는 이후 길이 검증이 없으며 경계 검사가 비활성화되어 데이터가 힙 블록 밖에 기록됩니다. 그 결과 힙 버퍼 오버플로가 발생하고 서비스 거부, 임의 코드 실행 또는 민감 정보 유출로 이어질 수 있습니다.
컴포넌트
Odin은 시스템급 프로그래밍 언어와 그 표준 라이브러리 모음입니다. core/compress 모듈은 애플리케이션에 효율적인 스트림 및 버퍼 방식의 압축·해제를 제공하며, 동적 메모리 관리로 가변 길이 입출력 스트림을 처리합니다. 고성능 Zlib 및 Gzip 호환 처리와 자원이 제한된 환경에서의 낮은 오버헤드 변환이 핵심 설계 목표입니다.
유형
Out-of-bounds Write (CWE-787)
저장소
대응 방안
- 버퍼 확장 로직에 엄격한 상한 검사를 넣어 현재 길이가 미리 정한 최대값에 도달하면 조용히 실패하지 말고 즉시 오류를 반환하십시오. 모든 하위 쓰기 전에 남은 공간을 다시 확인하고 공간이 부족하면 처리를 중단하고 오류를 보고하십시오. 또한 핵심 #no_bounds_check 컴파일 지시를 제거해 기본 런타임 안전 검사를 켜십시오.
php-src pdo_pgsql 드라이버가 프리페어 문 열 수 변화로 경계 밖 읽기를 일으켜 서비스 붕괴
PDO::ATTR_EMULATE_PREPARES를 켜면, 프리페어 문이 두 번째 실행에서 첫 실행보다 많은 열을 반환할 때 내부 배열 S->cols와 stmt->columns가 초기 크기 그대로라 인덱스가 경계를 벗어나 읽힙니다. 공격자는 ALTER TABLE로 열을 추가하거나 뷰를 바꿔 결과 집합 구조를 변경하고, zend_symtable_update가 댕글링 포인터를 쓰게 해 힙 버퍼 오버플로를 일으킬 수 있습니다. 프로세스가 붕괴하거나 정보가 유출될 수 있어 가용성에 심각한 영향을 줍니다.
컴포넌트
php-src는 PHP 언어 소스 저장소입니다. pdo_pgsql 확장은 핵심 데이터 접근 컴포넌트로, PHP 애플리케이션과 PostgreSQL 사이의 표준화된 연결과 상호작용을 구현합니다. 객체 지향 설계로 효율적인 프리페어 문 실행, 매개변수 바인딩, 결과 집합 파싱을 제공해 복잡한 업무 논리에서도 대규모 동시 데이터베이스 질의를 안전하고 안정적으로 처리하며, 기업용 웹 백엔드 영속 계층의 핵심 의존성입니다.
유형
Out-of-bounds Read (CWE-125)
저장소
대응 방안
- 에뮬레이트 프리페어를 끄고 네이티브 드라이버 보호를 쓰거나, 동적으로 변하는 결과 집합 메타데이터를 코드에서 엄격히 검증해 실행 전마다 열 설명 배열을 다시 할당하고 크기와 메모리 경계를 확인하십시오.