많은 프로그래머들이 비보안적인 코드를 작성하려고 하지는 않는다 - 그러나 어쨌든 작성한다. 다음은 이에 대한 많은 이유들이다. 이들중 대부분은 1998년 12월 17일 Bugtraq 에 게시한 Aleph One 에 의해 수집 및 요약된 것이다.
대부분의 학교에서 컴퓨터 보안에 대해 말하는 교과 과정은 없다. 있다 하더라도 컴퓨터 보안 교과 과정은 대개 전체적으로 보안적인 프로그램을 작성하는 방법을 논의하고 있지 않다. 많은 교과 과정은 단지 암호학 또는 프로토콜과 같은 특정 영역만을 다루고 있다. 이들도 중요하지만 버퍼 오버플로우, 문자열 포맷팅 및 입력 검사와 같은 공통적인 실세계의 문제를 대개 논의하지 못하고 있다. 저자는 이것이 가장 중요한 문제들중 하나라고 믿는다; 대학교를 마친 프로그래머들이라도 보안적인 프로그램 작성 방법을 배울 것 같지는 않으며 더구나 우리는 보안적인 프로그램을 작성하는데 있어 이러한 사람들에게 의존하고 있다.
프로그래밍 책/클래스가 보안적인/안전한 프로그래밍 기법을 가르치지 않고 있다. 정말로 최근까지 보안적인 프로그램 작성 방법에 대한 책은 전혀 없었다.
어느 누구도 학문적인 입증 방법을 사용하지 않는다.
C 는 불안전한 언어이며 표준 C 라이브러리 문자열 함수도 불안전하다.
이는 C 가 널리 사용되고 있기때문에 특히 중요하다 - C 를 사용하는 간단한 방식은 위험한 악용을 허용한다.
프로그래머가 ``다수의 사용자"를 생각하지 않는다.
프로그래머는 인간이며 인간은 게으르다. 따라서 프로그래머는 보안적인 방법 대신 ``쉬운" 방법을 대개 사용할 것이다 - 일단 작동한다면 대개 이를 추후에 수정하지 않는다.
대부분의 프로그래머들은 결코 훌륭한 프로그래머가 아니다.
대부분의 프로그래머들은 보안 인력이 아니다; 이들은 졀코 공격자만큼 생각을 하지 않는다.
대부분의 보안 인력은 프로그래머가 아니다. 이는 몇몇 Bugtraq 기여자들의 진술이지만 이 주장이 실제 옳은 지는 명확하지 않다.
대부분의 컴퓨터 보안 모델은 엄하다.
많은 ``파괴된" 레거시 소프트웨어들이 있다. (보안 결함을 제거하거나 더욱 제한적인 보안 정책과 함께 사용하기 위해) 이 소프트웨어를 수정하는 것은 어렵다
소비자들은 보안에 관심이 없다. 저자는 소비자들이 보안에 관심을 갖기를 희망한다; 지속적으로 악용되고 있는 컴퓨터 시스템은 도움이 되지 않거나 사용하기 쉽지 않다.
보안 비용과 여분의 개발 시간.
추가적인 테스트 관점에서 보안 비용.