InfoGrab DocsInfoGrab Docs

보안 코딩 개발 가이드라인

보안 코딩 개발 가이드라인 관련 내용을 설명합니다.

이 문서에는 GitLab 코드베이스에서 흔히 발견되는 보안 취약점을 해결하기 위한 설명과 가이드라인이 담겨 있습니다. 개발자가 잠재적 보안 취약점을 조기에 식별하도록 지원하여, 시간이 지나며 릴리스되는 취약점 수를 줄이는 것을 목표로 합니다. SAST 커버리지 # 이 문서에 나열된 각 취약점에 대해 AppSec은 CI 파이프라인에서 실행되는 semgrep 규칙(또는 RuboCop 규칙) 형태의 SAST 규칙을 갖추는 것을 목표로 합니다. 아래는 기존 가이드라인 전체와 그 커버리지 상태를 정리한 표입니다. 가이드라인 상태 규칙 정규 표현식 ✅ 1 ReDOS ✅ 1 , 2 , 3 JWT ❌ 대기 중 SSRF ✅ 1 , 2 XSS ✅ 1 , 2 XXE ✅ 1 , 2 , 3 , 4 경로 탐색 (Ruby) ✅ 1 경로 탐색 (Go) ✅ 1 OS 명령어 삽입(Ruby) ✅ 1 OS 명령어 삽입(Go) ✅ 1 안전하지 않은 TLS 암호 ✅ 1 아카이브 작업(Ruby) ✅ 1 아카이브 작업(Go) ✅ 1 URL 스푸핑 ✅ 1 요청 파라미터 타입 지정 ✅ StrongParams RuboCop 취약점 완화를 위한 유료 티어 N/A 새 가이드라인 및 규칙 생성 프로세스 # 기존 문서 중 하나에 기여하거나 새로운 취약점 유형에 대한 가이드라인을 추가하려면 MR을 엽니다. 발견된 취약점의 예시로 연결되는 링크와, 정의된 완화 방법에서 사용한 참고 자료로 연결되는 링크를 포함하도록 합니다. 질문이 있거나 리뷰를 받을 준비가 되면 gitlab-com/gl-security/appsec 에 멘션합니다. 모든 가이드라인에는 이를 지원하는 semgrep 규칙 또는 RuboCop 규칙이 있어야 합니다. 가이드라인을 추가하는 경우 이를 위한 이슈를 열고, 가이드라인 MR에서 그 이슈로 연결되는 링크를 추가합니다. 또한 위의 "SAST 커버리지" 표에도 해당 가이드라인을 추가합니다. 새 semgrep 규칙 생성 # SAST 커스텀 규칙 프로젝트에 추가합니다. 각 규칙에는 이름이 rule_name.rb 또는 rule_name.go 로 설정된 테스트 파일이 있어야 합니다. 각 규칙에는 YAML 파일에 개발자를 위한 명확한 지침이 담긴, 잘 정의된 message 필드가 있어야 합니다. AppSec의 개입이 필요하지 않은 낮은 심각도의 이슈는 심각도를 INFO 로 설정하고, AppSec 리뷰가 필요한 이슈는 WARNING 으로 설정합니다. 그에 따라 봇이 AppSec에 멘션합니다. 새 RuboCop 규칙 생성 # RuboCop 개발 문서 를 따릅니다. gitlab-qa 프로젝트에 규칙을 추가하는 예시는 이 머지 리퀘스트 를 참고합니다. cop 자체는 gitlab-security gem 프로젝트 에 있어야 합니다 권한 # 설명 # 애플리케이션 권한은 누가 무엇에 접근할 수 있는지, 어떤 작업을 수행할 수 있는지를 결정하는 데 사용됩니다. GitLab의 권한 모델에 대한 자세한 내용은 GitLab 권한 가이드 또는 권한에 대한 사용자 문서 를 참고합니다. 영향 # 권한을 잘못 처리하면