몇몇 도구들은 보안 문제를 처리하기 전에 이를 탐지하는데 도움이 될 수 있다. 물론 모든 그러한 문제를 발견할 수는 없지만 지나칠 수 있는 문제를 잡는데 도움이 될 수 있다. 다음은 오픈 소스/자유 소프트웨어 도구에 중점을 둔 약간의 도구들이다.
한가지 명백한 타입의 도구는 잠재적인 보안 문제를 갖고 있다고 알려진 패턴을 찾아내는 소스 코드를 검사하는 프로그램이다 (예, 라이브러리 함수 호출은 대개 보안 취약성의 출처이다). 이러한 종류의 프로그램은 ``소스 코드 스캐너" (source code scanner) 라고 불리는데 다음 몇몇 그러한 도구들이다:
Secure Software Solutions 의 RATS (Rough Auditing Tool for Security) 는 http://www.securesw.com/rats 에서 얻을 수 있다. 이 프로그램은 일반적인 문제에 대해 C/C++ 소스 코드를 스캔하며 GPL 라이센스하에 있다.
저자가 개발한 Flawfinder; 이는 http://www.dwheeler.com/flawfinder 에서 얻을 수 있다. 이도 또한 일반적인 문제에 대해 C/C++ 소스 코드를 스캔하며 GPL 라이센스하에 있다. RATS 와는 달리 flawfinder 는 파이썬으로 구현되어 있다. RATS 와 Flawfinder 개발자들은 하나의 ``가장 우수한" 오픈 소스 프로그램을 만들기 위해 함께 공동작업할 방법을 찾는데 의견을 일치하였다.
Cigital (이전 Reliable Software Technologies, RST) 의 ITS4 는 정적으로 C/C++ 코드를 검사한다. ITS4 는 소스 코드에 패턴 매칭을 수행해 어떤 함수 호출과 같은 위험할 수 있다고 알려진 패턴을 찾아내는데 소스 코드를 포함해 어떤 수정과 재배포 권리와 함께 비상업적 사용을 위해서는 무료로 얻을 수 있다. 이 도구는 Open Source Definition (OSD) 에 의해 정의된 것과 같은 ``오픈 소스" 로 발표되지 않았음을 주목해라. 특히 OSD 조항 6 은 오픈 소스 라이센스에서 "non-commercial use only" 절을 금지하고 있다. ITS4 는 http://www.rstcorp.com/its4 에서 얻을 수 있다.
LCLint 는 정적으로 C 프로그램을 검사하는 도구인데 이는 최소한의 노력으로 더욱 좋은 lint (유닉스 운영체제에서 사용되는 프로그램으로서, C 언어의 원시 프로그램을 읽어들여 오류가 있는지를 검사하는 프로그램) 로 사용될 수 있다. 프로그램에 주석을 다는 추가 노력이 행해진다면 LCLint 는 어떤 표준 lint 보다 더욱 강한 검사를 수행할 수 있다. 이 소프트웨어는 GPL 라이센스이며 http://lclint.cs.virginia.edu 에서 얻을 수 있다.
cqual 은 C 프로그램에서 버그를 찾기위한 타입 기반 분석 도구이다. 이는 C 의 타입 시스템을 특별한 사용자 정의 타입 한정사 (qualifier) 로 확장하는데 예를 들어 값들이 ``tainted" 또는 ``untainted" 임을 나타낼 수 있다 (펄의 taint 검사와 유사). 프로그래머는 몇몇 장소에 그들의 프로그램에 대한 주석을 다는데 cqual 은 주석이 정확한지 검사하기 위해 한정사 추론을 수행한다. cqual 은 이맥스 기반 인터페이스인 Program Analysis Mode 를 사용해 분석 결과를 나타낸다. 현재 버전은 C 프로그램의 잠재적인 포맷-문자열 취약성을 찾아낼 수 있다. Cqual 의 이전 버전인 Carillon 은 C 프로그램에서 Y2K 문제를 찾아내기 위해 사용되었다. 소프트웨어는 GPL 라이센스로 http://www.cs.berkeley.edu/Research/Aiken/cqual 에서 얻을 수 있다.
Cyclone 은 C 의 보안 약점을 제거하기 위한 만들어진 C 와 같은 언어이다. 이론상 ``더욱 보안적인" 언어로 언제나 바꿀 수 있지만 이것이 늘 도움이 되지는 않는다 (언어는 공통적인 실수를 피하도록 도움을 줄 수는 있지만 각자의 의중을 읽을 수는 없다). John Viega 는 Cyclone 을 검토하였으며, 2001년 12월 다음과 같이 말했다: ``Cyclone 은 명확하게 멋진 언어이다. 이는 프로그래머에게 실제 이익이 될 수 있는 많은 특징이 있을 뿐만 아니라 C 언어의 어떠한 능력도 빼앗지 않을 것 같고 게다가 강력한 보안 보증을 추가한 C 다이어렉트 (dialect, 컴퓨터 언어의 특수한 판) 이다. 불행히 Cyclone 은 아직 가장 중요한 시간에 준비되어 있지 않았다. Cyclone 을 못쓰게 만드는 제한들은 예외로 하더라도 아직까지 매우 미성숙된 기술을 사용하는 위험을 무릅쓰는 것이 가치가 없을만큼 아직 자바 (또는 훌륭한 툴셋을 갖고 있는 C) 에 대해 충분한 장점을 제공하지 못하고 있다. 아마도 몇년내에 Cyclone 는 효율면에서 위험할 정도로 C 와 유사한 강력하고 널리 지원되는 언어로 성숙할 것이다. 그날이 오면 분명히 내가 C 를 포기하는 것을 볼 것이다." Cyclone 컴파일러는 GPL 및 LGPL 라이센스하에 발표되었으며 더욱 자세한 정보는 Cyclone 웹 사이트 에서 얻을 수 있다.
다른 방법은 프로그램내의 약점을 찾기 위해 테스트 패턴을 만들어 프로그램을 실행시키는 것이다. 다음은 약간의 도구들이다.
BFBTester, Brute Force Binary Tester, 은 GPL 라이센스 프로그램으로 이진 프로그램의 보안을 빠르게 검사하는데 이 프로그램은 단일 및 다중 인수 커맨드 라인 오버플로우와 환경변수 오버플로우를 검사한다. 버전 2.0 이상은 비보안적인 tempfile 이름을 사용하는지 검사하기 위해 또한 tempfile 을 생성하려는 동작을 감시할 수 있다. 한때 BFBTester 는 리눅스의 POSIX 쓰레드 구현시의 기술적 문제때문에 리눅스에서 실행되지 않았지만 버전 2.0.1 에서 수정되었다. 더욱 자세한 정보는 http://my.ispchannel.com/~mheffner/bfbtester 에서 얻을 수 있다.
fuzz 프로그램은 다른 소프트웨어를 검사하는 도구로 임의의 데이타로 평가할 프로그램을 공격함으로써 프로그램을 검사한다. 이 도구는 실제 보안에 한정된 것은 아니다.
많은 보통의 잠재적인 단점을 갖고 있는 ftp 서버 또는 방화벽과 같은 제품을 구축하려면 표준 보안 스캐닝 도구가 유용함을 알 수 있다. Nessus 는 한가지 훌륭한 도구로 이외에도 많은 도구들이 있다. 이러한 종류의 도구들은 회귀 검사 (regression testing) 을 하는데 매우 유용하지만 이들은 본질적으로 과거의 특정 취약성과 공통적인 설정 에러 목록을 사용하기 때문에 새로운 프로그램에서 문제점을 찾아내는데 유용하지 않을 수도 있다.
보안적인 인프라를 구현하기 위해 다른 도구를 호출할 필요가 있을 것이다. Open-Source PKI Book 은 공개키 기반구조 (public key infrastructure, PKI) 를 구현하기 위한 많은 오픈 소스 프로그램을 기술하고 있다.
물론 비보안적으로 설정된 플랫폼에서 보안적인 프로그램을 실행시키는 것은 의미가 없다. 공격에 보다 저항적인 시스템 설정을 하거나 수정하기 위해 강화 시스템을 검사할 수도 있다. 리눅스에서 한가지 강화 시스템은 Bastille 리눅스로 이는 http://www.bastille-linux.org 에서 얻을 수 있다.