추측하는 대신, 나는 실제로 대답하기 전에이 주제에 대해 약간의 연구를하면서, 내가 생각할 수있는 가장 권위있는 자료 ( CVE Details )로 이동했다. 공개적으로 공개 된 보안 익스플로잇의이 포괄적 인 목록은 다양한 유형의 소프트웨어의 위협 수준을 평가하기 위해 할 수있는 최선의 방법 일 것입니다.
물론 사용 가능한 모든 자료 를 읽는 데 시간이 걸리지는 않았지만 샘플 위협 평가를 위해 몇 가지 "기본"컴파일러, IDE 및 텍스트 편집기를 선택했습니다. 소프트웨어 실행에 대해 진지한 경우 최소한 어떤 위협이 있는지 확인해야합니다. 또한 오래된 소프트웨어는 일반적으로 최신 소프트웨어보다 버그가 많으므로 실행중인 최신 버전을 실행하는 것이 이상적입니다.
먼저 다양한 텍스트 편집기를 살펴볼 수 있습니다. 최고의 편집자가 가장 간단한 것 같습니다. Linux 쉘을 사용중인 경우 Vi, Windows를 사용중인 경우 메모장 단일 문자가 현재 인코딩 체계를 벗어나는 경우 형식 지정 기능, 구문 분석, 데이터에 대한 간단한보기 및 구문 분석의 자동 종료가없는 것입니다. 메모장 ++조차도 소수의 취약점이 있습니다. 신뢰할 수없는 파일을 볼 때 복잡한 것을 피하십시오.
둘째, IDE를 살펴볼 수 있습니다. IDE에서 파일을 열도록 선택하면 일부 IDE에서 버그가보고 된 것입니다. Visual Studio에는 확장 메커니즘을 통해 이용 가능한 익스플로잇이 있었으므로 솔루션을 여는 데 문제가있을 수 있습니다. IDE를 피하면 사용자와 신뢰할 수없는 코드 사이의 전체 문제가 발생하지 않습니다. VI를 사용하는 것이 훨씬 안전 해 보입니다.
셋째, 실제 컴파일러를 살펴볼 수 있습니다. 나는 Adobe, Microsoft, Java 및 GNU의 C / C ++를 포함한 몇 가지를 탐색했으며 일반적으로 말해서 컴파일하는 코드 (및 사용자 정의 make-file이 없다고 가정하여 빌드 조차도 )가 상대적으로 안전하다는 것을 알았습니다. 실제로 컴파일 된 바이너리를 실행하여 발생할 수있는 보안 취약점이 있습니다. 다시 말해, 컴파일만으로 시스템을 인수 할 수는 없지만 코드를 실행하여 시스템을 인수 할 수 있습니다.
결론적으로, 전달 방법이 시스템을 이미 가로 채지 않았다고 가정하면 (예 : 이메일 클라이언트가 해킹되었거나 USB 드라이브가 감염된 경우 ...) 소스 코드를 읽고 소스 코드를 컴파일하는 것이 안전 할 것입니다 . 특정 소프트웨어를 조사하면 파일을 올바른 코드 페이지 등으로 검증하는 등의 방법으로 더 안전하게 만들 수 있습니다. 코드 실행은 신경 쓰지 않는 하드웨어에서만 수행해야합니다. VM은 아니지만 네트워크 액세스가없고 민감한 파일이나 외부 장치가없는 물리적으로 다른 컴퓨터입니다. 코드를 이해 한다고 생각 하더라도 간단한 연구 결과에 따르면 컴파일러에도 숨겨진 버퍼 오버플로 악용이 뒤에서 몰래 들어가 임의의 코드를 실행할 수있는 버그가 있지만 원하는 경우에만프로그램을 실행 하거나 디버그 하십시오. 실제 컴파일은 안전해야합니다.