> 백엔드 개발 > C++ > Json.Net `TypeNameHandling` 설정(자동)이 외부 JSON 데이터 공격에 취약합니까?

Json.Net `TypeNameHandling` 설정(자동)이 외부 JSON 데이터 공격에 취약합니까?

DDD
풀어 주다: 2025-01-07 14:39:42
원래의
957명이 탐색했습니다.

Is Your Json.Net `TypeNameHandling` Setting (Auto) Vulnerable to External JSON Data Attacks?

Json.Net TypeNameHandling을 Auto로 설정하면 외부 JSON 데이터가 위협을 일으킬 수 있나요?

JSON 역직렬화에서 Json의 TypeNameHandling 설정입니다. Net은 잠재적인 위협을 완화하는 데 중요한 역할을 합니다. 그러나 사용자가 제공한 JSON 데이터와 함께 이 설정을 사용할 때의 안전성에 대한 우려는 여전히 남아 있습니다. 문제를 자세히 조사하고 잠재적인 위험과 주의 사항을 살펴보겠습니다.

TypeNameHandling의 취약점

외부 JSON 페이로드는 다음을 지정하는 "$type" 속성을 포함하도록 조작될 수 있습니다. 역직렬화 유형. 이러한 유형의 유효성을 주의 깊게 검증하지 않으면 공격자는 이를 악용하여 "공격 가젯"으로 알려진 불량 개체를 인스턴스화할 수 있습니다. 이러한 가젯은 RCE(원격 코드 실행) 또는 파일 시스템 조작과 같은 악의적인 작업을 실행할 수 있습니다.

보호 조치

Json.Net은 이러한 공격을 방지하기 위한 보호 장치를 구현했습니다. :

  • 알 수 없는 속성 무시: 알 수 없는 속성을 무시합니다. 속성을 사용하여 외부 "$type" 속성이 있는 JSON 페이로드를 무해하게 렌더링합니다.
  • 직렬화 호환성: 다형성 값 역직렬화 중에 확인된 유형이 예상 유형과 일치하는지 확인합니다. 그렇지 않은 경우 예외가 발생합니다.

잠재적 허점

이러한 조치에도 불구하고 공격 도구가 여전히 구축될 수 있는 특정 상황이 있습니다. 명백히 유형이 지정되지 않은 멤버가 없는 경우: