- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
",t};e.buildCustomizationMenuUi=t;function n(e){let t='
",t}function s(e){let n=e.filter.currentValue||e.filter.defaultValue,t='${e.filter.label}
`,e.filter.options.forEach(s=>{let o=s.id===n;t+=``}),t+="${e.filter.label}
`,t+=`ID: go-security/command-injection
Language: Go
Severity: Warning
Category: Security
CWE: 78
In Go, the exec.Command
function is used to run external commands. Using this function carelessly can lead to command injection vulnerabilities. Carefully review the data flow that leads to a command execution and ensures no data can be injected by a third-party.
Command injection occurs when untrusted input is passed directly to a system shell, allowing an attacker to execute arbitrary commands. This can result in unauthorized access to the system, data leaks, or other security breaches.
Avoid executing commands constructed using user-provided data, or if you must, always validate and sanitize user inputs before passing them to exec.Command
.
Either remove the user-controlled data, filter the potential command with a list of allowed command or sanitize the command before execution.
If there still are variables in the arguments to exec.Command
after remediation, include the following comment before the line to suppress the warning:
// no-dd-sa:go-security/command-injection
import (
"context"
"os"
"os/exec"
)
func main() {
directory := os.Args[1]
ctx := context.Background()
cmd := exec.CommandContext(ctx, "/bin/ls", directory)
output, err := cmd.CombinedOutput()
}
import (
"os"
"os/exec"
)
func main() {
directory1 := os.Args[1]
directory2 := os.Args[2]
cmd := exec.Command("/bin/ls", directory1, directory2)
output, err := cmd.CombinedOutput()
}
import (
"os/exec"
)
func main () {
res, err := exec.Command("/bin/ls", "something")
}
import (
"context"
"os/exec"
)
func main () {
ctx := context.Background()
res, err := exec.CommandContext(ctx, "/bin/ls")
}