Share via


CA2315: 안전하지 않은 역직렬 변환기 ObjectStateFormatter를 사용하지 마세요.

속성
규칙 ID CA2315
타이틀 안전하지 않은 역직렬 변환기 ObjectStateFormatter를 사용하지 마세요.
범주 보안
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 아니요

원인

System.Web.UI.ObjectStateFormatter deserialization 메서드를 호출했거나 참조했습니다.

규칙 설명

안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정하여 악의적인 부작용을 개체에 주입할 수 있습니다. 예를 들어 안전하지 않은 역직렬 변환기에 대한 공격은 기본 운영 체제에서 명령을 실행하거나, 네트워크를 통해 통신하거나, 파일을 삭제할 수 있습니다.

이 규칙은 System.Web.UI.ObjectStateFormatter deserialization 메서드 호출 또는 참조를 찾습니다.

위반 문제를 해결하는 방법

경고를 표시하지 않는 경우

다음 경우에는 이 규칙의 경고를 표시하지 않아도 됩니다.

  • 입력을 신뢰할 수 있습니다. 애플리케이션의 트러스트 경계 및 데이터 흐름이 시간이 지남에 따라 달라질 수 있다는 점을 고려합니다.
  • 위반 문제를 해결하는 방법의 예방 조치 중 하나를 수행했습니다.

의사 코드 예제

위반

using System.IO;
using System.Web.UI;

public class ExampleClass
{
    public object MyDeserialize(byte[] bytes)
    {
        ObjectStateFormatter formatter = new ObjectStateFormatter();
        return formatter.Deserialize(new MemoryStream(bytes));
    }
}
Imports System.IO
Imports System.Web.UI

Public Class ExampleClass
    Public Function MyDeserialize(bytes As Byte()) As Object
        Dim formatter As ObjectStateFormatter = New ObjectStateFormatter()
        Return formatter.Deserialize(New MemoryStream(bytes))
    End Function
End Class