it-swarm-korea.com

화이트 박스와 블랙 박스

각 테스트 형태의 상대적인 장점과 단점은 무엇입니까?
즉, 정적 코드 분석과 런타임/동적 침투 테스트의 차이점은 무엇입니까?
각각의 장단점은 무엇입니까? 하나가 다른 것보다 선호되는 상황이 있습니까?

21
AviD

여기에 좋은 답변이 있지만 추가해야 할 몇 가지 추가 사항이 있습니다.

  • @atdre가 언급했듯이, 두 가지 다른 생물이며 다른 것을 측정합니다. 가능하면 두 가지를 모두 수행해야합니다.
  • @atdre가 말했듯이, 화이트 박스 + 블랙 박스조차 테스트하는 것만으로는 충분하지 않습니다. 적절한 위험 관리, 분석 등을 포함한 전체 론적 SDL을 포함하여 보안을 유지해야 할 다른 사항이 있습니다.
  • 요컨대 ... 블랙 박스는 대개 규모가 더 빠를 때가 많습니다. 화이트 박스 (코드 검토 포함)는 일반적으로 더 많은 작업이 필요합니다.
  • 블랙 박스 (즉, 펜 테스팅)는 일반적으로 화이트 박스보다 저렴할뿐 아니라 전체 시간뿐만 아니라 시간당 비용도 있습니다.
  • 화이트 박스보다 양질의 타사 블랙 박스 제공 업체가 있습니다. 총계가 아니라 실제로 실제로 해당 업체의 실적을 알고있는 업체 만 계산합니다. (또는 저의 인식입니까?)
  • WB는 종종 BB보다 훨씬 더 깊은 취약점을 발견합니다.
  • WB는 종종 BB가 우회 할 수없는 결함이있는 필터를 찾을 수 있습니다 (필터가 어떻게 구성되는지 알 때까지 회색 상자 테스트의 다른 지점).
  • BB가 테스트조차 할 수없는 많은 유형의 결함이 있습니다. 감사 로그, 암호화 결함, 백엔드 강화 등.
  • BB는 WB가 응용 프로그램 수준 (예 : 코드/디자인 등)에만있는 모든 비 코드 보호 (예 : WAF, IPS, OS 강화 등)를 사용하여 전체 시스템을 테스트 할 수 있습니다. 이것은 두 가지 방법으로 진행될 수 있습니다. 때로는 당신이 벡터를 우회 할 수있는 벡터 를 알고 있지만 BB 스캔을 완료하지 못하게되는 경우가 있습니다. 보호.
  • 마찬가지로 BB는 하위 시스템 간의 잘못된 상호 작용을 발견 할 수 있으며 일반적으로 WB는이를 놓칠 것입니다. 이것을 단위 테스트와 시스템 테스트로 고려하십시오.
  • WB는 시스템이 완성되기 오래 전에 수행 될 수 있으며 BB를 구축, 컴파일, 실행 및 실행해야합니다 (가급적이면 대부분의 기능 버그가 발생 함). 이를 통해 수명주기 초기에 검토를 수행 할 수있는 경우 SDL을보다 효율적으로 만들 수 있습니다.
  • 반면에 시스템이 이미 가동 된 경우 BB를 시작하는 것은 간단하지만 WB를 수행하려면 (올바르게 수행) 모든 소스 코드, 라이브러리, 도구 등을 찾아야합니다. 타사, COTS 등으로 인해 소스 코드가 없습니다.
7
AviD

이 질문은 Mark Dowd, Justin의 저서 인 The Art of Software Security Assessment 4 장에서 가장 잘 다루어 질 것이라고 생각합니다. Schuh와 John McDonald.

참조 없이는 최선의 방법이 소스 코드와 함께 런타임 데이터를 사용하면서 블랙 박스 테스트를 사용하여 "적중"(또는 추적, 일명 적용 범위)을 결정하지만 위협 모델 후에 만 ​​수행 할 수 있다는 것을 안전하게 알 수 있습니다 시스템의 일반적인 아키텍처는 잘 알려져 있습니다.

저자는 후보 포인트 전략과 결합 할 때 안전한 정적 코드 분석을 좋아하는 것처럼 보이지만 다음 사항이 사실이 아니라고 가정 할 때 가치가 크게 다를 수 있다고 생각합니다.

  • 보안 정적 분석 도구가 언어 및 해당 기본 클래스 라이브러리를 지원해야합니다.
  • 일반적으로 전체 시스템을 사용할 수 있어야합니다. 즉 시스템 컴파일러, VM 또는 원래 시스템의 기타 아티팩트를 포함 할 수있는 모든 타사/구성 요소 구성 요소 및 외부 라이브러리를 포함하여 빌드 가능한 소스 코드를 포함해야합니다.
  • 기본 클래스 라이브러리의 일부가 아닌 모든 외부 구성 요소/라이브러리에는 보안 정적 분석 도구의 소스 싱크 패스 스루 데이터베이스에 정의 된 소스 및 싱크가 있어야합니다. 일부 패스 스루 (예 : 필터)의 복잡성은 구현 또는 구현 자에 따라 다를 수 있으므로 거의 항상 사용자 정의 구성이 필요합니다
  • 특정 패턴 또는 아키텍처 코드 요소를 추가로 사용하면 다른 변형이 발생할 수 있으며, 가장 현대적인 안전한 정적 분석 도구로는 불가능한 사용자 정의가 필요할 수 있습니다.

위의 이유와 NIST SATE 연구에서 제시된 이유 (NIST SAMATE가 수행 한 이유)로 인해 화이트 박스 분석에 사용할 수있는 많은 안전한 정적 분석 도구를 추천하기가 어렵습니다. 소스 코드를 위에서 아래로 읽는 것이 가장 쉬운 코드 이해 전략을 사용하는 것이 거의 항상 낫습니다. 관리되는 코드 루트킷 등을 찾는 경우에는 매우 중요합니다.

응용 프로그램을 테스트 및 감사/평가하는 대신 기술에 거의 영향을 미치지 않는 다른 접근 방식을 취합니다. 내 제안은 각 응용 프로그램의 현재 구현 된 응용 프로그램 보안 컨트롤과 함께 응용 프로그램 인벤토리를 포함하는 응용 프로그램 보안 위험 관리 포털을 구현하는 것입니다. 초기 기준 후에는 애플리케이션 보안 제어를 MITER CWE, SAFEcode 및 OWASP ASVS와 같은 산업 표준에 따라 평가해야합니다. 격차 분석 (이는 표준 위험 관리 용어이며 ISO 27001 또는 이와 유사한 정보 보안 관리 프로그램에서 구현 될 때 가장 잘 작동 함)을 사용하여 최적의 응용 프로그램 보안 제어 및 경로를 결정할 수 있습니다. 현재 구현 된 컨트롤에서 필요한 컨트롤까지.

더 나은 결과를 얻고 프로그램의 성공을 측정하려면 화이트 박스 또는 블랙 박스 테스트와 같은 리스크 평가 활동을 수행하기 전에이 리스크 관리 포털을 구현해야합니다.

9
atdre

블랙 박스

  • 장점 : 쉽고 빠르며 간단한 테스트
  • 단점 : 때로는 해싱 알고리즘, 세션 ID 엔트로피 등을 확인하기 위해 응용 프로그램의 일부를 테스트 할 수 없습니다. 전체 응용 프로그램이 테스트되었는지 확실하지 않습니다

흰색 상자

  • 장점 : 소스 코드를 확인하는 기능 (시간 절약-매개 변수가 모든 곳에서 안전하게 사용되는 것을 볼 수있는 경우 SQL 삽입을 테스트 할 필요가 없음); GUI를 사용하여 액세스하거나 테스트 할 수없는 응용 프로그램 부분을 테스트 할 수 있습니다
  • 단점 : 테스트가 정말 복잡해질 수 있습니다

일반적으로 화이트 박스 테스트를 사용하면 소스 코드를 살펴보고 완전한 침투 테스트를 수행 할 수 있지만 시간이 많이 걸리는 반면 블랙 박스는 쉽고 빠르며 간단합니다. 나는 회색 상자 테스트를 선호합니다-블랙 박스 방법을 사용하고 개발자의 인터뷰/응용 프로그램의 특정 부분 (소스 인증, 세션 관리, 구성 관리, ...).

5
bretik