live · scanning repos
Scanrepo
github.com
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 {
+8
warningGo 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)
+8
warningGo 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
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
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 ""
+5
warningGo 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 ""
+4
warningSSH/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 {
+5
warningSSH/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)
	}
+5
warningExtremely 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.

Go
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