Taint Analysis

IN metavariable은 taint 분석 내에서는 reserved된 keyword이며 taint 된 값에 정확한 위치를 지정하고 싶을때 사용

필드
설명

Source

진입점

Sanitizer

조건 충족시 안전한 값으로 치환시 사용

Sink

도달하는 구간

method

sanitizer / sink 에서 사용 가능한 필드이며 함수 명만으로 sanitizer / sink를 지정 가능함

method 와 AST(Pattern)을 동시 사용하고 싶을때 아래와 같이 사용 가능. AST만 사용할 경우 ast 필드 없이 사용

ast:
    pattern: ...
method:
    - method_name

예제:

  • 언어: Java

  • getInput()으로부터 전달 받은 사용자 값을 unsafeSink 함수에서 첫번째 값으로 "unsafe_option"과 같이 사용될 경우 탐지

  • sanitizerValue는 사용자 값을 안전하게 치환하는 함수이기에 이를 통해 치환된 값은 탐지 하고 싶지 않음

rule:
  taint:
    source:
      pattern: getInput()
    sanitizer:
      method:
        - sanitizerValue
    sink:
      pattern: unsafeSink($IN, "unsafe_option")

아래 코드와 같이 탐지

Last updated