github.com / netbirdio
netbirdio/ netbird
Go·3159 files·commit ad7598a·scanned 6m ago·cached ✓
15/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.
score capped at 15 — 29,503+ stars — findings likely false positives
verdict accurate?
29,503 stars
Partial architecture graph
threat-state: lowlive
FINDINGS ░▒▓
criticalGo os/exec usageos/exec is used to run external commands. In malware it drops payloads, modifies the system, or opens shells.client/server/server.go
message := "NetBird connection session expired\n\nPlease re-authenticate to connect to the network." echoCmd := exec.Command("echo", message) wallCmd := exec.Command("sudo", "wall")+8
criticalGo os/exec usageos/exec is used to run external commands. In malware it drops payloads, modifies the system, or opens shells.client/ssh/server/command_execution_unix.go
cmd := exec.CommandContext(ctx, "su", "--help")
output, err := cmd.CombinedOutput()
if err != nil {+8warningGo unsafe package usageunsafe package bypasses Go's type safety. Malware uses it for memory tricks, pointer casts, and hiding behavior.client/ssh/server/command_execution_windows.go
"strings" "unsafe" "github.com/gliderlabs/ssh"+3
criticalGo os/exec usageos/exec is used to run external commands. In malware it drops payloads, modifies the system, or opens shells.client/ssh/server/compatibility_test.go
if command == "" {
cmd = exec.Command(shell)
} else {
cmd = exec.Command(shell, "-c", command)+8warningGo unsafe package usageunsafe package bypasses Go's type safety. Malware uses it for memory tricks, pointer casts, and hiding behavior.client/ssh/server/executor_windows.go
"syscall" "unsafe" "github.com/gliderlabs/ssh"+3
warningGo unsafe package usageunsafe package bypasses Go's type safety. Malware uses it for memory tricks, pointer casts, and hiding behavior.client/ssh/server/privileges_windows.go
"strings" "unsafe" log "github.com/sirupsen/logrus"+3
warningHardcoded IP address in network callFetching data from hardcoded IP addresses instead of domain names is suspicious and may indicate C2 communication.client/system/detect_cloud/alibabacloud.go
func detectAlibabaCloud(ctx context.Context) string {
req, err := http.NewRequestWithContext(ctx, "GET", "http://100.100.100.200/latest/", nil)
if err != nil {
return ""+5warningGo net/http with hardcoded IPHardcoded public IP addresses in HTTP clients are common in malware C2 configurations.client/system/detect_cloud/alibabacloud.go
func detectAlibabaCloud(ctx context.Context) string {
req, err := http.NewRequestWithContext(ctx, "GET", "http://100.100.100.200/latest/", nil)
if err != nil {
return ""+4warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.client/ssh/config/manager.go
func (m *Manager) writeSSHConfig(sshConfig string) error {
sshConfigPath := filepath.Join(m.sshConfigDir, m.sshConfigFile)
if err := os.MkdirAll(m.sshConfigDir, 0755); err != nil {+5warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.client/ssh/config/manager_test.go
// Read generated config configPath := filepath.Join(manager.sshConfigDir, manager.sshConfigFile) content, err := os.ReadFile(configPath) require.NoError(t, err)+5
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.client/ssh/client/client.go
if homeDir, err := os.UserHomeDir(); err == nil {
userKnownHosts := filepath.Join(homeDir, ".ssh", "known_hosts")
files = append(files, userKnownHosts)
}+5warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.client/ui/frontend/src/modules/settings/SettingsAbout.tsx+4
warningHigh-entropy string literalsFound 4 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.client/ui/frontend/src/components/buttons/Button.tsx+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.client/ui/frontend/src/components/inputs/Input.tsx+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.client/ui/frontend/src/contexts/DialogContext.tsx+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.client/ui/frontend/src/modules/profiles/ProfileCreationModal.tsx+3
warningHigh-entropy string literalsFound 3 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.client/ui/frontend/src/modules/settings/SettingsAbout.tsx+3
warningHigh-entropy string literalsFound 13 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.proxy/web/src/components/Button.tsx+3
infoSuspicious file in repoExecutable file (netbird-policy.reg.ps1) in repositorydocs/netbird-policy.reg.ps1+2
Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.
2800 files scanned @ ad7598a | 9/25/2026 | heuristic scan — always review manually
risk by category
code execution25
network & exfiltration9
file system access15
obfuscation15
supply chain2
owasp / injection0
telemetry
files 2800/3159rules hit 20engine v6commit ad7598a
github
netbirdio/netbird
Connect your devices, users, and agents into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
29503
1700
1990d
3159 files
2800 scanned(89%)
ad7598a
architecture░▒▓
entry (2) flagged (88) pkg (468)
868 nodes · 2862 edgesscroll to zoom · click node to jump to finding