
정규 표현식 기반 스캐너로, 코드베이스에서 하드코딩된 자격 증명을 탐지합니다. CI/CD 통합을 위해 설계되었으며, 주석을 통한 탐지 억제 기능과 낮은 오탐률을 특징으로 합니다.
이 스크립트는 대규모의 다양한 코드베이스에 대해 하드 코딩된 자격 증명 또는 구성 파일에 존재하는 자격 증명을 스캔하기 위한 것입니다. 이러한 자격 증명은 심각한 보안 문제를 나타내며, 탐지하고 관리하기가 매우 어려울 수 있습니다.
이 스크립트의 구체적인 초점은 CI/CD 파이프라인에서 개발 팀이 직접 사용할 수 있는 도구를 만들어, 코드에 자격 증명이 존재할 때 팀에 경고함으로써 이 문제에 대한 수정 프로세스를 관리하고, 팀이 문제가 발생하면 즉시 해결할 수 있도록 하는 것입니다.
이 도구를 특정 시점 스캐너로 적용할 수도 있지만, 자격 증명은 시간이 지남에 따라 코드베이스에 다시 스며들 가능성이 높으므로, 스크립트를 CI/CD 프로세스, 자동화된 빌드 메커니즘 또는 팀이 수행하는 다른 정기적인 자동 스캔 프로세스에 통합할 것을 강력히 권장합니다.
이 스크립트는 다음과 같은 목표를 염두에 두고 작성되었습니다:
이 스크립트는 다른 인기 있는 SAST 도구와의 일부 호환성을 제공하려고 시도합니다.
파일 시작 부분에 있는 '# noqa file' 텍스트는 해당 파일에서 추가 문제가 보고되는 것을 억제하며, 'flake8: noqa' 텍스트도 동일한 역할을 합니다.
개별 줄에 있는 '# noqa' 텍스트는 해당 줄의 문제 보고를 억제합니다. 다른 일반적인 억제 주석도 작동합니다. 현재 목록은 다음과 같습니다:
# noinspection
# noqa
#noqa
@SuppressWarnings
DevSkim
NOLINT
NOSONAR
checkmarx
coverity
fortify
noinspection
nosec
safesql
veracode
또한 팀원들에게 거짓 양성의 이유가 특히 자격 증명의 존재임을 명확히 하기 위해 주석 '# noqa cred'를 사용할 것을 권장합니다. 여기에 언급된 많은 도구(예: devskim)는 동일한 목적을 위해 언어 또는 플랫폼에 관련된 특정 오류 코드를 사용합니다. 동일한 코드 줄에 여러 유형의 오류가 있을 수 있습니다.
SAST 도구에서 실제 양성(true positive)인 경고를 억제하는 것은 매우 나쁜 관행임을 주의해야 합니다. 코드베이스에서 SAST/린트 억제 주석을 주기적으로 검토하여 '실제 양성'이 억제되지 않았는지 확인하는 것이 좋은 관행입니다.
'-nosuppress' 명령줄 플래그는 스크립트가 모든 억제 주석을 무시하도록 합니다.