incastle의 콩나물

Bandit으로 application security testing하기 본문

Data Engineering

Bandit으로 application security testing하기

incastle 2022. 4. 12. 23:50

Bandit이란?

- bandit은 Python 코드에서 일반적인 보안 문제를 찾기 위해 설계된 도구입니다.

- 이를 위해 Bandit은 각 파일을 처리하고 이 파일에서 AST를 만들고 AST 노드에 대해 적절한 플러그인을 실행합니다. - - Bandit이 모든 파일 스캔을 마치면 보고서를 생성합니다.    

 

사용법

## severity-level : low, medium, high 중 특정 level 이상의 보안 항목만 보고 싶을 때
## o : save file path
## f : save file format (csv, json 등 다양하게 있음)
## b : baseline_report 설정

bandit -r . o [save_report_path] --severity-level [level] -f json 
bandit -r . o [save_report_path] --severity-level [level] -f json -b [baseline path]

1) baseline없이 먼저 report를 만든다.

2) 추후 배포를 하거나 코드 변경이 있을 때 baseline report를 바라보고 bandit을 돌린다. 

3) baseline에서 발생됐던 report들 이외에 새로운 bug or severity 코드가 발생되면 results부분에 해당 코드들이 report되어 저장된다. 

4) 새로운 bug가 없으면 results는 빈 list를 반환한다. 

 

 

 

참고

  • AST : application security testing   
  • DAST : dynamic application security testing
    • 동적 어플리케이션 보안 테스트
    • Black-Box Test 방식
      • 응용 프로그램의 내부 구조나 작동원리를 모르는 상태에서 동작을 검사하는 테스트 방식        
    • 어플리케이션이 실행 중인 상태에서 보안 취약점을 탐지하는 것
    • 대부분의 DAST Solution은 웹 어플리케이션의 취약점을 테스트하도록 설계되어 있다.    -
  • SAST : static application security testing
    • 정적 어플리케이션 보안 테스트
    • White-Box Test 방식
      • 응용 프로그램의 내부 구조와 동작을 검사하는 테스트 방식
    • 컴파일되지 않은 소스코드를 분석하여 수치 오류, 입력 유효성, 경쟁 조건(Race Condition), 경로 탐색, 포인터 및 참조 등과 같은 결함을 확인할 수 있다.    

'Data Engineering' 카테고리의 다른 글

CGI, WSGI, ASGI  (0) 2022.02.05