보안 규칙
보안 규칙은 더 안전한 라이브러리 및 애플리케이션을 지원합니다. 이러한 규칙은 프로그램의 보안 결함을 방지하는 데 도움이 됩니다. 이러한 규칙을 사용하지 않도록 설정하는 경우 코드에 이유를 명확하게 표시하고 개발 프로젝트에 대해 지정된 보안 책임자에게 알려야 합니다.
이 섹션에서는
규칙 | 묘사 |
---|---|
CA2100: 보안 취약성에 대한 SQL 쿼리 검토 | 메서드는 문자열 인수에서 메서드로 빌드된 문자열을 사용하여 System.Data.IDbCommand.CommandText 속성을 설정합니다. 이 규칙은 문자열 인수에 사용자 입력이 포함되어 있다고 가정합니다. 사용자 입력에서 빌드된 SQL 명령 문자열은 SQL 삽입 공격에 취약합니다. |
CA2109: 표시되는 이벤트 처리기 검토 | 공용 또는 보호된 이벤트 처리 방법이 검색되었습니다. 이벤트 처리 메서드는 반드시 필요한 경우가 아니면 노출해서는 안 됩니다. |
CA2119: 비공개 인터페이스를 만족시키는 봉인 메서드 | 상속 가능한 공용 형식은 내부(Visual Basic의 Friend) 인터페이스의 재정의 가능한 메서드 구현을 제공합니다. 이 규칙 위반 문제를 해결하려면 어셈블리 외부에서 메서드가 재정의되지 않도록 합니다. |
CA2153: 손상된 상태 예외를 처리하지 않도록 방지 | CSE(손상된 상태 예외) 메모리 손상이 프로세스에 있음을 나타냅니다. 공격자가 손상된 메모리 영역에 익스플로잇을 배치할 수 있는 경우 프로세스가 충돌하는 것을 허용하지 않고 이를 포착하면 보안 취약성이 발생할 수 있습니다. |
CA2300: 안전하지 않은 역직렬 변환기 BinaryFormatter 사용하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2301: BinaryFormatter.Binder 먼저 설정하지 않고 BinaryFormatter.Deserialize를 호출하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2302: BinaryFormatter.Deserialize 호출하기 전에 BinaryFormatter.Binder가 설정되어 있는지 확인합니다. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2305: 안전하지 않은 역직렬 변환기 LosFormatter 사용하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2310: 안전하지 않은 역직렬 변환기 NetDataContractSerializer 사용하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2311: 먼저 NetDataContractSerializer.Binder 설정하지 않고 역직렬화하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2312: 역직렬화하기 전에 NetDataContractSerializer.Binder가 설정되어 있는지 확인합니다 | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2315: 안전하지 않은 역직렬 변환기 ObjectStateFormatter 사용하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2321: SimpleTypeResolver 사용하여 JavaScriptSerializer로 역직렬화하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2322: 역직렬화하기 전에 JavaScriptSerializer가 SimpleTypeResolver로 초기화되지 않았는지 확인합니다. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2326: None 이외의 TypeNameHandling 값을 사용하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2327: 안전하지 않은 JsonSerializerSettings 사용하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2328: JsonSerializerSettings가 안전한지 | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2329: 안전하지 않은 구성 사용하여 JsonSerializer로 역직렬화하지 마세요. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2330: 역직렬화할 때 JsonSerializer에 보안 구성이 있는지 확인합니다. | 안전하지 않은 역직렬 변환기는 신뢰할 수 없는 데이터를 역직렬화할 때 취약합니다. 공격자는 악의적인 부작용이 있는 개체를 삽입하기 위해 예기치 않은 형식을 포함하도록 직렬화된 데이터를 수정할 수 있습니다. |
CA2350: DataTable.ReadXml()의 입력을 신뢰할 수 있는지 | 신뢰할 수 없는 입력으로 DataTable 역직렬화하는 경우 공격자는 악의적인 입력을 만들어 서비스 거부 공격을 수행할 수 있습니다. 알 수 없는 원격 코드 실행 취약성이 있을 수 있습니다. |
CA2351: DataSet.ReadXml()의 입력을 신뢰할 수 있는지 | 신뢰할 수 없는 입력으로 DataSet 역직렬화하는 경우 공격자는 악의적인 입력을 만들어 서비스 거부 공격을 수행할 수 있습니다. 알 수 없는 원격 코드 실행 취약성이 있을 수 있습니다. |
CA2352: 직렬화 가능한 형식의 안전하지 않은 DataSet 또는 DataTable은 원격 코드 실행 공격에 취약할 수 | SerializableAttribute 표시된 클래스 또는 구조체에는 DataSet 또는 DataTable 필드 또는 속성이 포함되며 GeneratedCodeAttribute없습니다. |
CA2353: 직렬화 가능한 형식의 안전하지 않은 DataSet 또는 DataTable | XML serialization 특성 또는 데이터 계약 특성으로 표시된 클래스 또는 구조체에는 DataSet 또는 DataTable 필드 또는 속성이 포함됩니다. |
CA2354: 역직렬화된 개체 그래프의 안전하지 않은 DataSet 또는 DataTable은 원격 코드 실행 공격에 취약할 수 있습니다 | System.Runtime.Serialization.IFormatter으로 직렬화된 데이터를 역직렬화할 때, 캐스팅된 형식의 객체 그래프에는 DataSet 또는 DataTable가 포함될 수 있습니다. |
CA2355: 역직렬화된 개체 그래프의 안전하지 않은 DataSet 또는 DataTable | 캐스팅되거나 지정된 형식의 개체 그래프에 DataSet 또는 DataTable포함될 수 있는 경우 역직렬화합니다. |
CA2356: 웹 역직렬화된 개체 그래프의 안전하지 않은 DataSet 또는 DataTable | System.Web.Services.WebMethodAttribute 또는 System.ServiceModel.OperationContractAttribute 있는 메서드에는 DataSet 또는 DataTable참조할 수 있는 매개 변수가 있습니다. |
CA2361: DataSet.ReadXml()을 포함하는 자동 생성된 클래스가 신뢰할 수 없는 데이터 함께 사용되지 않는지 확인합니다. | 신뢰할 수 없는 입력으로 DataSet 역직렬화하는 경우 공격자는 악의적인 입력을 만들어 서비스 거부 공격을 수행할 수 있습니다. 알 수 없는 원격 코드 실행 취약성이 있을 수 있습니다. |
CA2362: 자동 생성된 직렬화 가능 형식의 안전하지 않은 DataSet 또는 DataTable은 원격 코드 실행 공격에 취약할 수 | BinaryFormatter 사용하여 신뢰할 수 없는 입력을 역직렬화하고 역직렬화된 개체 그래프에 DataSet 또는 DataTable포함하는 경우 공격자는 악의적인 페이로드를 만들어 원격 코드 실행 공격을 수행할 수 있습니다. |
CA3001: SQL 삽입 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력 및 SQL 명령을 사용하는 경우 SQL 삽입 공격을 염두에 두어야 합니다. SQL 삽입 공격은 악의적인 SQL 명령을 실행하여 애플리케이션의 보안 및 무결성을 손상할 수 있습니다. |
CA3002: XSS 취약성 대한 코드 검토 | 웹 요청에서 신뢰할 수 없는 입력으로 작업하는 경우 XSS(교차 사이트 스크립팅) 공격을 염두에 두어야 합니다. XSS 공격은 신뢰할 수 없는 입력을 원시 HTML 출력에 삽입하여 공격자가 악성 스크립트를 실행하거나 웹 페이지의 콘텐츠를 악의적으로 수정할 수 있도록 합니다. |
CA3003: 파일 경로 삽입 취약성에 대한 코드 검토 | 웹 요청에서 신뢰할 수 없는 입력으로 작업하는 경우 파일 경로를 지정할 때 사용자 제어 입력을 사용하는 것을 염두에 두어야 합니다. |
CA3004: 정보 공개 취약성에 대한 코드 검토 | 예외 정보를 공개하면 공격자가 애플리케이션의 내부 정보를 파악할 수 있으므로 공격자가 악용할 다른 취약성을 찾는 데 도움이 될 수 있습니다. |
CA3006: 프로세스 명령 삽입 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력으로 작업할 때는 명령 삽입 공격을 염두에 두어야 합니다. 명령 삽입 공격은 기본 운영 체제에서 악성 명령을 실행하여 서버의 보안 및 무결성을 손상할 수 있습니다. |
CA3007: 오픈 리디렉션 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력으로 작업할 때는 열린 리디렉션 취약성을 염두에 두어야 합니다. 공격자는 공개 리디렉션 취약성을 악용하여 웹 사이트를 사용하여 합법적인 URL을 표시하지만 의심하지 않는 방문자를 피싱 또는 기타 악성 웹 페이지로 리디렉션할 수 있습니다. |
CA3008: XPath 삽입 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력으로 작업할 때는 XPath 삽입 공격을 염두에 두어야 합니다. 신뢰할 수 없는 입력을 사용하여 XPath 쿼리를 생성하면 공격자가 악의적으로 쿼리를 조작하여 의도하지 않은 결과를 반환하고 쿼리된 XML의 내용을 공개할 수 있습니다. |
CA3009: XML 삽입 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력으로 작업할 때는 XML 삽입 공격을 염두에 두어야 합니다. |
CA3010: XAML 삽입 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력으로 작업할 때는 XAML 삽입 공격을 염두에 두어야 합니다. XAML은 개체 인스턴스화 및 실행을 직접 나타내는 태그 언어입니다. 즉, XAML에서 만든 요소는 시스템 리소스(예: 네트워크 액세스 및 파일 시스템 IO)와 상호 작용할 수 있습니다. |
CA3011: DLL 삽입 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력으로 작업하는 경우 신뢰할 수 없는 코드를 로드하는 것을 염두에 두어야 합니다. 웹 애플리케이션이 신뢰할 수 없는 코드를 로드하는 경우 공격자가 악의적인 DLL을 프로세스에 삽입하고 악성 코드를 실행할 수 있습니다. |
CA3012: regex 삽입 취약성에 대한 코드 검토 | 신뢰할 수 없는 입력으로 작업할 때는 정규식 삽입 공격을 염두에 두어야 합니다. 공격자는 regex 주입을 사용하여 정규식을 악의적으로 수정하거나, regex가 의도하지 않은 결과와 일치하도록 하거나, regex가 과도한 CPU를 소비하여 서비스 거부 공격을 발생시킬 수 있습니다. |
CA3061: URL로 스키마를 추가하지 마세요. | Add 메서드의 안전하지 않은 오버로드는 위험한 외부 참조를 일으킬 수 있으므로 사용하지 마세요. |
CA3075: 안전하지 않은 DTD 처리 | 안전하지 않은 DTDProcessing 인스턴스를 사용하거나 외부 엔터티 원본을 참조하는 경우 파서는 신뢰할 수 없는 입력을 수락하고 중요한 정보를 공격자에게 공개할 수 있습니다. |
CA3076: 안전하지 않은 XSLT 스크립트 실행 | .NET 애플리케이션에서 XSLT(Extensible StyleSheet Language Transformations)를 안전하지 않게 실행하는 경우 프로세서는 공격자에게 중요한 정보를 공개할 수 있는 신뢰할 수 없는 URI 참조를 해결하여 서비스 거부 및 사이트 간 공격으로 이어질 수 있습니다. |
CA3077: API 디자인의 안전하지 않은 처리, XML 문서 및 XML 텍스트 판독기 | XMLDocument 및 XMLTextReader에서 파생된 API를 디자인할 때는 DtdProcessing을 염두에 두어야 합니다. 외부 엔터티 원본을 참조하거나 확인할 때 안전하지 않은 DTDProcessing 인스턴스를 사용하거나 XML에서 안전하지 않은 값을 설정하면 정보가 공개될 수 있습니다. |
CA3147: ValidateAntiForgeryToken 사용하여 동사 처리기 표시 | ASP.NET MVC 컨트롤러를 디자인할 때는 사이트 간 요청 위조 공격을 염두에 두어야 합니다. 사이트 간 요청 위조 공격은 인증된 사용자의 악의적인 요청을 ASP.NET MVC 컨트롤러로 보낼 수 있습니다. |
CA5350: 약한 암호화 알고리즘 사용하지 마세요. | 약한 암호화 알고리즘 및 해시 함수는 여러 가지 이유로 오늘날 사용되지만 보호되는 데이터의 기밀성 또는 무결성을 보장하는 데 사용하면 안 됩니다. 이 규칙은 코드에서 TripleDES, SHA1 또는 RIPEMD160 알고리즘을 찾을 때 트리거됩니다. |
CA5351: 끊어진 암호화 알고리즘 사용하지 마세요. | 손상된 암호화 알고리즘은 안전한 것으로 간주되지 않으므로 사용하지 않는 것이 좋습니다. 이 규칙은 코드에서 MD5 해시 알고리즘 또는 DES 또는 RC2 암호화 알고리즘을 찾을 때 트리거됩니다. |
CA5358: 안전하지 않은 암호화 모드 사용하지 마세요. | 안전하지 않은 암호화 모드 사용 안 함 |
CA5359: 인증서 유효성 검사 사용하지 않도록 설정하지 마세요. | 인증서는 서버의 ID를 인증하는 데 도움이 될 수 있습니다. 클라이언트는 서버 인증서의 유효성을 검사하여 요청이 의도한 서버로 전송되는지 확인해야 합니다. ServerCertificateValidationCallback이 항상 true 반환하는 경우 모든 인증서가 유효성 검사를 통과합니다. |
CA5360: 역직렬화 위험한 메서드를 호출하지 마세요. | 안전하지 않은 역직렬화는 신뢰할 수 없는 데이터가 애플리케이션의 논리를 남용하거나, DoS(서비스 거부) 공격을 가하거나, 역직렬화될 때 임의의 코드를 실행하는 데 사용될 때 발생하는 취약성입니다. 애플리케이션이 제어하는 신뢰할 수 없는 데이터를 역직렬화할 때 악의적인 사용자가 이러한 역직렬화 기능을 악용하는 경우가 많습니다. 구체적으로, 역직렬화 과정에서 위험한 메서드를 호출합니다. 안전하지 않은 역직렬화 공격이 성공하면 공격자가 DoS 공격, 인증 바이패스 및 원격 코드 실행과 같은 공격을 수행할 수 있습니다. |
CA5361: SChannel이 강력한 암호화를 사용하지 않도록 비활성화하지 마세요. |
Switch.System.Net.DontEnableSchUseStrongCrypto
true 설정하면 나가는 TLS(전송 계층 보안) 연결에 사용되는 암호화가 약화됩니다. 암호화가 약하면 애플리케이션과 서버 간의 통신 기밀성이 손상되어 공격자가 중요한 데이터를 더 쉽게 도청할 수 있습니다. |
CA5362: 역직렬화된 개체 그래프에 잠재적 참조 주기 | 신뢰할 수 없는 데이터를 역직렬화하는 경우 역직렬화된 개체 그래프를 처리하는 코드는 무한 루프로 이동하지 않고 참조 주기를 처리해야 합니다. 여기에는 역직렬화 콜백의 일부인 코드와 역직렬화가 완료된 후 개체 그래프를 처리하는 코드가 모두 포함됩니다. 그렇지 않으면 공격자가 참조 주기를 포함하는 악의적인 데이터를 사용하여 서비스 거부 공격을 수행할 수 있습니다. |
CA5363: 요청 유효성 검사 사용하지 않도록 설정하지 마세요. | 요청 유효성 검사는 http 요청을 검사하고 교차 사이트 스크립팅을 포함하여 삽입 공격으로 이어질 수 있는 잠재적으로 위험한 콘텐츠가 포함되어 있는지 여부를 결정하는 ASP.NET 기능입니다. |
CA5364: 사용되지 않는 보안 프로토콜 사용하지 마세요. | TLS(전송 계층 보안)는 컴퓨터 간 통신을 보호하며, 가장 일반적으로 HTTPS(Hypertext Transfer Protocol Secure)를 사용합니다. 이전 프로토콜 버전의 TLS는 TLS 1.2 및 TLS 1.3보다 덜 안전하며 새로운 취약성이 있을 가능성이 높습니다. 위험을 최소화하려면 이전 프로토콜 버전을 사용하지 않습니다. |
CA5365: HTTP 헤더 검사 사용하지 않도록 설정 안 함 | HTTP 헤더 검사를 사용하면 응답 헤더에 있는 캐리지 리턴 및 줄 바꿈 문자(\r 및 \n)를 인코딩할 수 있습니다. 이 인코딩은 헤더에 포함된 신뢰할 수 없는 데이터를 에코하는 애플리케이션을 악용하는 삽입 공격을 방지하는 데 도움이 될 수 있습니다. |
CA5366: XmlReader를 사용하여 DataSet에서 XML 읽기 | DataSet 사용하여 신뢰할 수 없는 데이터로 XML을 읽으면 위험한 외부 참조를 로드할 수 있습니다. 이 참조는 보안 확인자를 사용하는 XmlReader 사용하거나 DTD 처리를 사용하지 않도록 설정하여 제한해야 합니다. |
CA5367: 포인터 필드 사용하여 형식을 직렬화하지 마세요. | 이 규칙은 포인터 필드 또는 속성이 있는 직렬화 가능한 클래스가 있는지 여부를 확인합니다. serialize할 수 없는 멤버는 정적 멤버 또는 NonSerializedAttribute표시된 필드와 같은 포인터일 수 있습니다. |
CA5368: Page 파생된 클래스에 대해 ViewStateUserKey 설정 | ViewStateUserKey 속성을 설정하면 공격자가 변수를 사용하여 공격을 생성할 수 없도록 개별 사용자의 뷰 상태 변수에 식별자를 할당하여 애플리케이션에 대한 공격을 방지할 수 있습니다. 그렇지 않으면 교차 사이트 요청 위조에 대한 취약성이 있습니다. |
CA5369: 역직렬화에 XmlReader 사용 | 신뢰할 수 없는 DTD 및 XML 스키마를 처리하면 위험한 외부 참조를 로드할 수 있습니다. 이 참조는 보안 확인자가 있는 XmlReader를 사용하거나 DTD 및 XML 인라인 스키마 처리를 사용하지 않도록 설정하여 제한해야 합니다. |
CA5370: 판독기 유효성 검사에 XmlReader 사용 | 신뢰할 수 없는 DTD 및 XML 스키마를 처리하면 위험한 외부 참조를 로드할 수 있습니다. 이 위험한 로드는 보안 확인자가 있는 XmlReader를 사용하거나 DTD 및 XML 인라인 스키마 처리를 사용하지 않도록 설정하여 제한할 수 있습니다. |
CA5371: 스키마 읽기에 XmlReader 사용 | 신뢰할 수 없는 DTD 및 XML 스키마를 처리하면 위험한 외부 참조를 로드할 수 있습니다. 보안 확인자와 함께 또는 DTD 및 XML 인라인 스키마 처리를 사용하지 않도록 설정하여 XmlReader를 사용하면 이 문제가 제한됩니다. |
CA5372: XPathDocument에 XmlReader 사용 | 신뢰할 수 없는 데이터에서 XML을 처리하면 위험한 외부 참조가 로드될 수 있습니다. 이 참조는 보안 확인자가 있는 XmlReader를 사용하거나 DTD 처리를 사용하지 않도록 설정하여 제한할 수 있습니다. |
CA5373: 사용되지 않는 키 파생 함수 사용하지 마세요. | 이 규칙은 약한 키 파생 메서드 System.Security.Cryptography.PasswordDeriveBytes 및 Rfc2898DeriveBytes.CryptDeriveKey 의 호출을 감지합니다.
System.Security.Cryptography.PasswordDeriveBytes 약한 알고리즘 PBKDF1을 사용했습니다. |
CA5374: XslTransform 사용하지 마세요. | 이 규칙은 코드에서 System.Xml.Xsl.XslTransform 인스턴스화되는지 확인합니다. System.Xml.Xsl.XslTransform 이제 사용되지 않으므로 사용하면 안 됩니다. |
CA5375: 계정 공유 액세스 서명 사용하지 마세요. | 계정 SAS는 서비스 SAS에서 허용되지 않는 Blob 컨테이너, 테이블, 큐 및 파일 공유에 대한 읽기, 쓰기 및 삭제 작업에 대한 액세스를 위임할 수 있습니다. 그러나 컨테이너 수준 정책을 지원하지 않으며 부여된 권한에 대한 유연성과 제어가 적습니다. 악의적인 사용자가 액세스하면 스토리지 계정이 쉽게 손상됩니다. |
CA5376: SharedAccessProtocol HttpsOnly를 사용 | SAS는 HTTP에서 일반 텍스트로 전송할 수 없는 중요한 데이터입니다. |
CA5377: 컨테이너 수준 액세스 정책 사용 | 컨테이너 수준 액세스 정책은 언제든지 수정하거나 해지할 수 있습니다. 부여된 사용 권한을 보다 유연하게 제어할 수 있습니다. |
CA5378: ServicePointManagerSecurityProtocols 사용하지 않도록 설정하지 마세요. |
DisableUsingServicePointManagerSecurityProtocols
true 설정은 Windows Communication Framework(WCF) TLS(전송 계층 보안) 연결을 TLS 1.0 사용으로 제한합니다. 해당 버전의 TLS는 더 이상 사용되지 않습니다. |
CA5379: 키 파생 함수 알고리즘이 충분히 강력하도록 보장하다 |
Rfc2898DeriveBytes 클래스는 기본적으로 SHA1 알고리즘을 사용합니다.
SHA256 이상의 생성자의 일부 오버로드에서 사용할 해시 알고리즘을 지정해야 합니다.
HashAlgorithm 속성에는 get 접근자만 있으며 overridden 한정자가 없습니다. |
CA5380: 루트 저장소 인증서를 추가하지 마세요. | 이 규칙은 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 인증서를 추가하는 코드를 검색합니다. 기본적으로 신뢰할 수 있는 루트 인증 기관 인증서 저장소는 Microsoft 루트 인증서 프로그램의 요구 사항을 충족하는 공용 CA 집합으로 구성됩니다. |
CA5381: 인증서가 루트 저장소 추가되지 않았는지 확인합니다. | 이 규칙은 신뢰할 수 있는 루트 인증 기관 인증서 저장소에 인증서를 추가할 수 있는 코드를 검색합니다. 기본적으로 신뢰할 수 있는 루트 인증 기관 인증서 저장소는 Microsoft 루트 인증서 프로그램의 요구 사항을 충족하는 CA(공용 인증 기관) 집합으로 구성됩니다. |
CA5382: ASP.NET Core 보안 쿠키 사용 | HTTPS를 통해 사용할 수 있는 애플리케이션은 보안 쿠키를 사용해야 합니다. 이 쿠키는 브라우저에 TLS(전송 계층 보안)를 사용하여서만 전송되어야 함을 나타냅니다. |
CA5383: ASP.NET Core 보안 쿠키를 사용해야 합니다. | HTTPS를 통해 사용할 수 있는 애플리케이션은 보안 쿠키를 사용해야 합니다. 이 쿠키는 브라우저에 TLS(전송 계층 보안)를 사용하여서만 전송되어야 함을 나타냅니다. |
CA5384: DSA(디지털 서명 알고리즘) 사용하지 마세요. | DSA는 약한 비대칭 암호화 알고리즘입니다. |
CA5385: 충분한 키 크기의 RSA(Rivest–Shamir–Adleman) 알고리즘 사용 | 2048비트보다 작은 RSA 키는 무차별 암호 대입 공격에 더 취약합니다. |
CA5386: SecurityProtocolType 값을 하드코딩하지 않도록 주의 | TLS(전송 계층 보안)는 컴퓨터 간 통신을 보호하며, 가장 일반적으로 HTTPS(Hypertext Transfer Protocol Secure)를 사용합니다. 프로토콜 버전 TLS 1.0 및 TLS 1.1은 더 이상 사용되지 않지만 TLS 1.2 및 TLS 1.3은 최신 버전입니다. 나중에 TLS 1.2 및 TLS 1.3은 더 이상 사용되지 않을 수 있습니다. 애플리케이션이 안전하게 유지되도록 하려면 프로토콜 버전을 하드 코딩하지 말고 .NET Framework v4.7.1 이상을 대상으로 합니다. |
CA5387: 반복 횟수가 부족한 약한 키 파생 함수를 사용하지 마세요 | 이 규칙은 반복 수가 100,000 미만인 Rfc2898DeriveBytes 암호화 키가 생성되었는지 확인합니다. 반복 횟수가 높을수록 생성된 암호화 키를 추측하려는 사전 공격을 완화하는 데 도움이 될 수 있습니다. |
CA5388: 약한 키 파생 함수를 사용할 때 충분한 반복 횟수를 확보하세요 | 이 규칙은 반복 수가 100,000보다 작은 Rfc2898DeriveBytes 암호화 키가 생성되었는지 확인합니다. 반복 횟수가 높을수록 생성된 암호화 키를 추측하려는 사전 공격을 완화하는 데 도움이 될 수 있습니다. |
CA5389: 대상 파일 시스템 경로에 보관 항목의 경로를 추가하지 마세요 | 파일 경로는 상대 경로일 수 있으며, 예상된 파일 시스템 대상 경로 외부로 파일 시스템 액세스를 허용하여 악의적인 구성 변경 및 '잠복 대기' 기술을 통한 원격 코드 실행을 유발할 수 있습니다. |
CA5390: 암호화 키 하드 코드하지 마세요. | 대칭 알고리즘이 성공하려면 암호 키를 보낸 사람 및 수신자에게만 알려야 합니다. 키가 하드 코딩되면 쉽게 검색됩니다. 컴파일된 이진 파일이 있더라도 악의적인 사용자가 쉽게 추출할 수 있습니다. 프라이빗 키가 손상되면 암호 텍스트의 암호를 직접 해독할 수 있으며 더 이상 보호되지 않습니다. |
CA5391: ASP.NET Core MVC 컨트롤러에서 위조 방지 토큰 사용 | 위조 방지 토큰의 유효성을 검사하지 않고 POST , PUT , PATCH 또는 DELETE 요청을 처리하는 것은 교차 사이트 요청 위조 공격에 취약할 수 있습니다. 사이트 간 요청 위조 공격은 인증된 사용자의 악의적인 요청을 ASP.NET Core MVC 컨트롤러로 보낼 수 있습니다. |
CA5392: P/Invoke에 대해 DefaultDllImportSearchPaths 특성을 사용하십시오 | 기본적으로 P/Invoke 함수를 사용하여 DllImportAttribute 로드할 라이브러리의 현재 작업 디렉터리를 포함하여 여러 디렉터리를 검색합니다. 이는 특정 애플리케이션에 대한 보안 문제일 수 있으며, 이로 인해 DLL 하이재킹이 발생합니다. |
CA5393: 안전하지 않은 DllImportSearchPath 값 사용하지 마세요. | 기본 DLL 검색 디렉터리 및 어셈블리 디렉터리에 악성 DLL이 있을 수 있습니다. 또는 애플리케이션이 실행되는 위치에 따라 애플리케이션의 디렉터리에 악의적인 DLL이 있을 수 있습니다. |
CA5394: 안전하지 않은 임의성 사용하지 마세요. | 암호학적으로 약한 의사 난수 생성기를 사용하면 공격자가 보안에 민감한 값을 예측할 수 있습니다. |
CA5395: 작업 메서드 대한 HttpVerb 특성 누락 | 데이터를 생성, 편집, 삭제 또는 수정하는 모든 작업 메서드는 교차 사이트 요청 위조 공격으로부터 위조 방지 특성으로 보호되어야 합니다. GET 작업을 수행하는 것은 부작용이 없고 지속형 데이터를 수정하지 않는 안전한 작업이어야 합니다. |
CA5396: HttpCookie 대해 HttpOnly를 true로 설정 | 심층 방어 조치로 보안에 중요한 HTTP 쿠키가 HttpOnly로 표시되어 있는지 확인합니다. 이는 웹 브라우저에서 스크립트가 쿠키에 액세스하는 것을 허용하지 않음을 나타냅니다. 삽입된 악성 스크립트는 쿠키를 도용하는 일반적인 방법입니다. |
CA5397: 사용되지 않는 SslProtocols 값 사용하지 마세요. | TLS(전송 계층 보안)는 컴퓨터 간 통신을 보호하며, 가장 일반적으로 HTTPS(Hypertext Transfer Protocol Secure)를 사용합니다. 이전 프로토콜 버전의 TLS는 TLS 1.2 및 TLS 1.3보다 덜 안전하며 새로운 취약성이 있을 가능성이 높습니다. 위험을 최소화하려면 이전 프로토콜 버전을 사용하지 않습니다. |
CA5398: 하드 코딩된 SslProtocols 값 피하기 | TLS(전송 계층 보안)는 컴퓨터 간 통신을 보호하며, 가장 일반적으로 HTTPS(Hypertext Transfer Protocol Secure)를 사용합니다. 프로토콜 버전 TLS 1.0 및 TLS 1.1은 더 이상 사용되지 않지만 TLS 1.2 및 TLS 1.3은 최신 버전입니다. 나중에 TLS 1.2 및 TLS 1.3은 더 이상 사용되지 않을 수 있습니다. 애플리케이션이 안전하게 유지되도록 하려면 프로토콜 버전을 하드 코딩하지 마십시오. |
CA5399: HttpClient 인증서 해지 목록 확인을 확실히 사용 안 함 | 해지된 인증서는 더 이상 신뢰할 수 없습니다. 공격자가 일부 악성 데이터를 전달하거나 HTTPS 통신에서 중요한 데이터를 도용하는 데 사용할 수 있습니다. |
CA5400: HttpClient 인증서 해지 목록 확인을 사용하지 않도록 설정하지 않았는지 확인합니다 | 해지된 인증서는 더 이상 신뢰할 수 없습니다. 공격자가 일부 악성 데이터를 전달하거나 HTTPS 통신에서 중요한 데이터를 도용하는 데 사용할 수 있습니다. |
CA5401: 기본값이 아닌 IV CreateEncryptor를 사용하지 마세요. | 대칭 암호화는 사전 공격을 방지하기 위해 항상 반복할 수 없는 초기화 벡터를 사용해야 합니다. |
CA5402: CreateEncryptor를 기본 IV와 함께 사용 | 대칭 암호화는 항상 반복할 수 없는 초기화 벡터를 사용하여 사전 공격을 방지해야 합니다. |
CA5403: 인증서 하드 코드하지 마세요. |
X509Certificate 또는 X509Certificate2 생성자의 data 또는 rawData 매개 변수는 하드 코딩됩니다. |
CA5404: 토큰 유효성 검사 사용하지 않도록 설정하지 마세요. | 토큰 유효성 검사를 제어하는 TokenValidationParameters 속성을 false 설정하면 안 됩니다. |
CA5405: 대리자 토큰 유효성 검사를 항상 건너뛰지 마세요. |
AudienceValidator 또는 LifetimeValidator 할당된 콜백은 항상 true 반환합니다. |
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET