live · scanning repos
Scanrepo
github.com
github.com / wavetermdev

wavetermdev/waveterm

Go·1085 files·commit 9f1c967·scanned 5d ago·cached ✓
15/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 15 — 22,574+ stars — findings likely false positives

verdict accurate?
22,574 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.pkg/blockcontroller/tsunamicontroller.go
func runTsunamiAppBinary(ctx context.Context, appBinPath string, appPath string, blockMeta waveobj.MetaMapType) (*TsunamiAppProc, error) {
	cmd := exec.Command(appBinPath)
	cmd.Env = append(os.Environ...
+8
criticalGo os/exec usageos/exec is used to run external commands. In malware it drops payloads, modifies the system, or opens shells.pkg/buildercontroller/buildercontroller.go

	cmd := exec.Command(appBinPath)
	cmd.Env = append(os.Environ(), "TSUNAMI_CLOSEONSTDIN=1")
+8
warningGo unsafe package usageunsafe package bypasses Go's type safety. Malware uses it for memory tricks, pointer casts, and hiding behavior.pkg/util/procinfo/procinfo_darwin.go
	"syscall"
	"unsafe"

	"github.com/ebitengine/purego"
+3
warningGo unsafe package usageunsafe package bypasses Go's type safety. Malware uses it for memory tricks, pointer casts, and hiding behavior.pkg/util/procinfo/procinfo_windows.go
	"syscall"
	"unsafe"

	"golang.org/x/sys/windows"
+3
criticalGo os/exec usageos/exec is used to run external commands. In malware it drops payloads, modifies the system, or opens shells.pkg/util/shellutil/shellutil.go
	userStr := "/Users/" + osUser.Username
	out, err := exec.CommandContext(ctx, "dscl", ".", "-read", userStr, "UserShell").CombinedOutput()
	if err != nil {
		return DefaultShellPath
+8
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.tsunami/frontend/src/vdom.tsx
            try {
                const fn = eval(fnDecl.jscode);
                if (typeof fn === "function") retVal = fn(...args);
            } catch (err) {
+8
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
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.pkg/remote/conncontroller/conncontroller.go
	home := wavebase.GetHomeDir()
	localConfig := filepath.Join(home, ".ssh", "config")
	systemConfig := filepath.Join("/etc", "ssh", "config")
	sshConfigFiles := []string{localConfig, systemConfig}
+5
warningClipboard read accessnavigator.clipboard.readText() reads the user's clipboard. In a wallet/crypto context this is often used to steal copied seed phrases or private keys.frontend/app/app.tsx
    try {
        const clipboardText = await navigator.clipboard.readText();
        if (clipboardText == null) {
            return null;
+4
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.pkg/aiusechat/tools_readfile.go
	}{
		{filepath.Join(homeDir, ".gnupg") + string(filepath.Separator), "GPG directory"},
		{filepath.Join(homeDir, ".password-store") + string(filepath.Separator), "password store directory"},
		{"/etc...
+5
infoSuspicious file in repoVery large source file (1410KB) — could contain obfuscated payloadpackage-lock.json+2
infoAuthor has no other public repositoriesGitHub user "augmentcode[bot]" has no other public repositories, common for burner accounts used in scams.+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.

752 files scanned @ 9f1c967 | 10/23/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration0
file system access14
obfuscation0
supply chain4
owasp / injection0
telemetry
files 752/1085rules hit 12engine v7commit 9f1c967

github

wavetermdev/waveterm

An open-source, AI-integrated, cross-platform terminal for seamless workflows

Go
22574
1172
1603d
1085 files
752 scanned(69%)
9f1c967

architecture░▒▓

entry (3) flagged (17) pkg (381)
781 nodes · 2200 edgesscroll to zoom · click node to jump to finding