🇰🇷 한글 설명
특정 조건이 충족될 경우, 권한이 있는 사용자가 임의의 코드를 실행하여 서비스 중단을 초래할 수 있는 취약점입니다. 이 문제는 C#으로 작성된 애플리케이션에서 사용자 데이터를 검증 없이 직렬화할 때 발생합니다.
💡 쉬운 설명
해커가 데이터베이스에 악성 코드가 담긴 데이터를 몰래 집어넣으면, 프로그램이 이를 실행하여 컴퓨터를 장악할 수 있는 문제입니다. 주로 C# 언어를 사용하고 보안 설정이 느슨한 윈도우 환경에서 발생합니다.
🇺🇸 원문 (English)
Under very specific circumstances (see Required configuration section below), a privileged user is able to cause arbitrary code to be executed which may cause further disruption to services. This is specific to applications written in C#. This affects all MongoDB .NET/C# Driver versions prior to and including v2.18.0
Following configuration must be true for the vulnerability to be applicable: * Application must written in C# taking arbitrary data from users and serializing data using _t without any validation AND
* Application must be running on a Windows host using the full .NET Framework, not .NET Core AND
* Application must have domain model class with a property/field explicitly of type System.Object or a collection of type System.Object (against MongoDB best practice) AND
* Malicious attacker must have unrestricted insert access to target database to add a _t discriminator."Following configuration must be true for the vulnerability to be applicable
📍 영향받는 시스템
MongoDB .NET/C# Driver v2.18.0 및 그 이전의 모든 버전
⚔️ 공격 벡터
데이터베이스에 대한 삽입 권한을 가진 공격자가 '_t' 디스크리미네이터를 포함한 악성 데이터를 삽입하여 코드 실행 유도
🛡️ 대응 방법
MongoDB .NET/C# Driver를 v2.18.1 이상 버전으로 업데이트하고, System.Object 타입 사용을 지양하며 데이터 검증 로직을 강화하십시오.
🔧 검증 코드
출력된 MongoDB.Driver의 버전이 2.18.0 이하인지 확인하십시오.
dotnet list package | grep MongoDB.Driver