- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Security Controls는 이스케이프 및 삭제를 사용하여 취약성 탐지에서 오탐 보고를 방지합니다. 보안 함수는 데이터 처리 방식을 세분화하여 적절한 변경 사항이 불필요한 보안 경고를 트리거하지 않도록 합니다.
Security Controls는 보안 유효성 검사에서 함수를 사용하는 방식에 따라 Input Validator 및 “Sanitizer**를 구분합니다.
Security Controls 정의는 설정 변수 DD_IAST_SECURITY_CONTROLS_CONFIGURATION
에 배치해야 합니다.
보안 제어 목록을 설정하려면 아래의 형식과 필드 사양을 따르세요.
이 형식은 특정 구분 기호를 사용하여 각 보안 제어 항목을 구성합니다.
<TYPE>:<SECURE_MARKS>:<CLASS/FILE>:<METHOD>:<PARAMETERS (Optional)>:<PARAMETERS TO VALIDATE (Optional)>
필드 | 설명 |
---|---|
유형 | 제어 유형을 정의합니다. 허용되는 값은 INPUT_VALIDATOR 또는 SANITIZER 입니다. |
보안 마크 | 적용할 취약성 유형 목록입니다. 사용 가능한 값은 보안 마크에 정의되어 있습니다. 부수적으로 * 을 사용하여 모든 유형에 대한 적용 가능성을 표시할 수 있습니다. |
클래스/파일 | 보안 제어를 구현하는 정규화된 클래스 또는 파일입니다. |
메서드 | 보안 제어를 구현하는 메서드의 이름입니다. |
파라미터(선택 사항) | 완전한 적격 클래스 파라미터입니다. 오버로드 메서드를 구분하는 데 사용됩니다. 생략 또는 오버로드가 존재하는 경우 보안 제어가 모든 오버로드 메서드에 적용됩니다. |
검증할 파라미터(선택 사항) | 검증할 파라미터 포지션의 0 기반 목록입니다. 첫 번째 파라미터 는 0 위치입니다. 이 필드는 INPUT_VALIDATOR 유형에만 적용됩니다. 일부 파라미터에 대해 유효성 검사가 필요하지 않은 경우 사용됩니다. |
;
(세미콜론): 각 보안 제어를 구분합니다.:
(콜론): 보안 제어 내의 각 필드를 구분합니다.,
(쉼표): 목록을 허용하는 필드 내에서 항목을 구분합니다.사용 가능한 보안 마크는 각 삽입 관련 취약성과 관련된 코드에 대응합니다. 지원되는 취약성에서 해당 코드와 각 언어에 대해 사용 가능한지 여부를 확인할 수 있습니다.
삽입 관련 취약점은 다음과 같습니다.
이 기능은 각 언어의 다음 추적 라이브러리 버전부터 사용할 수 있습니다.
bar.foo.CustomInputValidator#validate(String input1, String input2)
INPUT_VALIDATOR:COMMAND_INJECTION:bar.foo.CustomInputValidator:validate
bar.foo.CustomInputValidator#validate(String input1, String inputToValidate)
INPUT_VALIDATOR:COMMAND_INJECTION:bar.foo.CustomInputValidator:validate:1
bar.foo.CustomInputValidator#validate(String input1, String firstInputToValidate, String secondInputToValidate, Object anotherInput)
INPUT_VALIDATOR:COMMAND_INJECTION:bar.foo.CustomInputValidator:validate:1,2
bar.foo.CustomInputValidator#validate(String input)
INPUT_VALIDATOR:COMMAND_INJECTION,CODE_INJECTION:bar.foo.CustomInputValidator:validate
bar.foo.CustomInputValidator#validate(String input)
INPUT_VALIDATOR:*:bar.foo.CustomInputValidator:validate
bar.foo.CustomInputValidator#validate(String input)
bar.foo.CustomInputValidator#validate(String input, String input2)
INPUT_VALIDATOR:COMMAND_INJECTION:bar.foo.CustomInputValidator:validate:java.lang.String
첫 번째 메서드를 적용합니다.
bar.foo.CustomInputValidator#validate(String input)
bar.foo.CustomInputValidator#validate(String input, String input2)
INPUT_VALIDATOR:COMMAND_INJECTION:bar.foo.CustomInputValidator:validate
두 가지 메서드 모두에 적용됩니다.
bar.foo.CustomSanitizer#sanitize(String input)
SANITIZER:COMMAND_INJECTION:bar.foo.CustomSanitizer:sanitize
bar.foo.CustomSanitizer#sanitize(String input)
SANITIZER:COMMAND_INJECTION,CODE_INJECTION:bar.foo.CustomSanitizer:sanitize
bar.foo.CustomSanitizer#sanitize(String input)
SANITIZER:*:bar.foo.CustomSanitizer:sanitize
bar.foo.CustomSanitizer#sanitize(String input)
bar.foo.CustomSanitizer#sanitize(String input, String input2)
SANITIZER:COMMAND_INJECTION:bar.foo.CustomSanitizer:sanitize:자바(Java).lang.String
첫 번째 메서드를 적용합니다.
bar.foo.CustomSanitizer#sanitize(String input)
bar.foo.CustomSanitizer#sanitize(String input, String input2)
SANITIZER:COMMAND_INJECTION:bar.foo.CustomSanitizer:sanitize
두 가지 메서드 모두에 적용됩니다.
bar/foo/custom_input_validator.js#validate(input1, input2)
INPUT_VALIDATOR:COMMAND_INJECTION:bar/foo/custom_input_validator.js:validate
bar/foo/custom_input_validator.js#validate(input1, inputToValidate)
INPUT_VALIDATOR:COMMAND_INJECTION:bar/foo/custom_input_validator.js:validate:1
bar/foo/custom_input_validator.js#validate(input1, firstInputToValidate, secondInputToValidate, anotherInput)
INPUT_VALIDATOR:COMMAND_INJECTION:bar/foo/custom_input_validator.js:validate:1,2
bar/foo/custom_input_validator.js#validate(input)
INPUT_VALIDATOR:COMMAND_INJECTION,CODE_INJECTION:bar/foo/custom_input_validator.js:validate
bar/foo/custom_input_validator.js#validate(input)
INPUT_VALIDATOR:*:bar/foo/custom_input_validator.js:validate
bar/foo/custom_input_sanitizer.js#sanitize(input)
SANITIZER:COMMAND_INJECTION:bar/foo/custom_input_sanitizer.js:sanitize
bar/foo/custom_input_sanitizer.js#sanitize(input)
SANITIZER:COMMAND_INJECTION,CODE_INJECTION:bar/foo/custom_input_sanitizer.js:sanitize
bar/foo/custom_input_sanitizer.js#sanitize(input)
SANITIZER:*:bar/foo/custom_input_sanitizer.js:sanitize
validate
메서드는 명령 삽입 취약성을 방지하기 위해 입력 파라미터를 검증하는 validators
개체 내부로 내보내기됩니다.
// bar/foo/custom_input_validator.js
module.exports = {
validators: {
validate: (input) => {
/* validation process */
}
}
}
INPUT_VALIDATOR:COMMAND_INJECTION:bar/foo/custom_input_validator.js:validators.validate
npm
플랫 종속성 구조로 인해 직접 종속성과 전이적 종속성을 구분할 수 없습니다. 즉, 종속성 내에 보안 제어가 정의되어 있으면 해당 종속성의 모든 인스턴스(직접 또는 전이)가 영향을 받습니다.
다음 보안 제어 정의는 종속성 트리에 있는 모든 sql-sanitizer
패키지에 영향을 줍니다.
SANITIZER:SQL_INJECTION:node_modules/sql-sanitizer/index.js:sanitize