일부 라이브러리는 코드를 생성하고 실행하여 호출자에 대한 일부 작업을 수행하여 작동합니다. 기본 문제는 신뢰가 낮은 코드를 대신하여 코드를 생성하고 더 높은 신뢰로 실행하는 것입니다. 호출자가 코드 생성에 영향을 줄 수 있으면 문제가 악화되므로 안전하다고 생각하는 코드만 생성되도록 해야 합니다.
항상 생성 중인 코드를 정확히 알아야 합니다. 즉, 따옴표로 묶인 문자열(예기치 않은 코드 요소를 포함할 수 없도록 이스케이프해야 함), 식별자(유효한 식별자인지 확인하기 위해 확인해야 함) 또는 기타 항목 등 사용자로부터 가져오는 모든 값에 대해 엄격한 컨트롤이 있어야 합니다. 식별자는 컴파일된 어셈블리를 수정하여 식별자에 이상한 문자가 포함되도록 할 수 있으므로 위험할 수 있습니다. 이 경우 보안 취약성이 거의 없지만 손상될 수 있습니다.
리플렉션 내보내기로 코드를 생성하는 것이 좋습니다. 이러한 문제를 많이 방지하는 데 도움이 되는 경우가 많습니다.
코드를 컴파일할 때 악성 프로그램에서 수정할 수 있는 방법이 있는지 여부를 고려합니다. 악성 코드가 소스 코드를 컴파일러가 읽기 전에 또는 코드가 .dll 파일을 로드하기 전에 디스크에서 소스 코드를 변경할 수 있는 짧은 시간이 있나요? 그렇다면 파일 시스템의 액세스 제어 목록을 적절하게 사용하여 이러한 파일이 포함된 디렉터리를 보호해야 합니다.
참고하십시오
.NET