🇰🇷 한글 설명
ParquetSharp의 DecimalConverter.ReadDecimal 함수가 공격자가 제어할 수 있는 값으로 stackalloc을 수행하여, 비정상적으로 큰 decimal 컬럼 너비가 선언될 경우 스택 오버플로우가 발생할 수 있습니다. 신뢰할 수 없는 Parquet 파일을 네트워크 서비스에서 읽는 경우 서비스가 중단될 수 있으며, 23.0.0.1 버전에서 패치되었습니다.
💡 쉬운 설명
외부에서 받은 특정 Parquet 파일을 읽을 때 프로그램이 비정상적으로 종료될 수 있는 취약점입니다. 서버 서비스라면 서비스 전체가 멈출 수 있습니다.
🇺🇸 원문 (English)
ParquetSharp is a .NET library for reading and writing Apache Parquet files. From version 18.1.0 to before version 23.0.0.1, DecimalConverter.ReadDecimal makes a stackalloc using what might be an attacker-supplied value. If an attacker declares a decimal column with some unreasonable width, this could lead to a stack overflow. In a service environment, this would potentially take down a service. This affects applications using ParquetSharp to read untrusted Parquet files in a network service. This issue has been patched in version 23.0.0.1.
📍 영향받는 시스템
ParquetSharp 18.1.0 이상 23.0.0.1 미만을 사용하는 .NET 애플리케이션 (특히 신뢰할 수 없는 Parquet 파일을 처리하는 네트워크 서비스)
⚔️ 공격 벡터
공격자가 비정상적인 decimal 컬럼 너비를 선언한 악성 Parquet 파일을 대상 서비스에 전송하여 스택 오버플로우(서비스 거부)를 유발
🛡️ 대응 방법
ParquetSharp를 23.0.0.1 이상으로 업그레이드하고, 신뢰할 수 없는 입력 파일에 대한 검증을 추가
🔧 검증 코드
출력된 ParquetSharp 패키지 버전이 23.0.0.1 미만(18.1.0~23.0.0.0)이면 취약하며, 23.0.0.1 이상이면 패치된 상태이고 출력이 없으면 해당 프로젝트에서 사용하지 않는 것입니다.
grep -rl 'ParquetSharp' --include='*.csproj' --include='packages.lock.json' . 2>/dev/null | xargs grep -h 'ParquetSharp' 2>/dev/null