Skip to content

Commit 9043ade

Browse files
committed
v2.0.1: Full Offline Mode, Bug Fixes & Experimental Features
## 🆕 New Features ### Full Offline Mode - Disabled WebView2 telemetry and SmartScreen - App now runs completely offline (no network connections) - Isolated WebView data folder to minimize data collection - Added OpenURL() function to open external links in native browser ### Experimental: Restore Account Only - Quick account switch by restoring only auth state (state.vscdb) - Preserves extensions, settings, and workspaces - Must be enabled manually in Settings > Experimental ### Better Error Handling - Show error modal with solution when restore fails due to file locks - Option to disable 'Keep App Running' setting directly from error dialog ## 🐛 Bug Fixes ### Open Folder Bug (Windows) - Fixed: Clicking 'Folder' button opened Documents instead of AppData - Root cause: Windows Explorer doesn't recognize forward slashes (/) - Solution: Convert forward slashes to backslashes for Windows ## 📁 Files Changed - main.go: Added offline mode options, disabled telemetry - app.go: Added OpenURL(), RestoreAccountOnly(), fixed OpenFolder path - internal/backup/backup.go: Added RestoreAccountOnly() function - frontend/src/lib/SessionsTab.svelte: Experimental feature toggle, error handling - frontend/src/lib/SettingsTab.svelte: Added Experimental section - frontend/src/lib/stores/settings.js: Added experimentalRestoreAccountOnly - frontend/src/App.svelte: Version bump to v2.0.1 - frontend/src/lib/AboutTab.svelte: Version bump to v2.0.1 - frontend/package.json: Version bump to 2.0.1 ## Documentation - Added proposal: Virus False Positive Explanation - Added proposal: Disable Telemetry & Offline Mode - Added proposal: Change Account Feature (Experimental)
1 parent be0fcec commit 9043ade

File tree

16 files changed

+1085
-12
lines changed

16 files changed

+1085
-12
lines changed
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
# SurfManager - Virus Detection False Positive Explanation
2+
3+
## Summary
4+
5+
SurfManager.exe di-flag oleh beberapa antivirus/sandbox sebagai suspicious, padahal ini adalah **FALSE POSITIVE**. Dokumen ini menjelaskan kenapa detection terjadi dan kenapa app ini aman.
6+
7+
---
8+
9+
## Detection Details
10+
11+
### Sigma Rule Triggered:
12+
> **"Suspicious Loading of Dbgcore/Dbghelp DLLs from Uncommon Location"**
13+
>
14+
> Detects loading of dbgcore.dll or dbghelp.dll from uncommon locations such as user directories. These DLLs contain the MiniDumpWriteDump function, which can be abused for credential dumping purposes or in some cases for evading EDR/AV detection by suspending processes.
15+
16+
### VirusTotal Results:
17+
- **Detection Score:** 2/72 (Very Low - False Positive)
18+
- **Flagged by:** DeepInstinct (MALICIOUS), Trapmine (Malicious.moderate.ml.score)
19+
- **Community Score:** Positive
20+
- **Sandbox Results:** No actual malware behavior detected
21+
22+
**Note:** 2/72 = 2.7% detection rate. Industry standard considers <5% as likely false positive, especially when flagged by ML-based engines (DeepInstinct, Trapmine) rather than signature-based engines.
23+
24+
---
25+
26+
## Why DeepInstinct & Trapmine Flag This
27+
28+
### About These Engines:
29+
30+
| Engine | Type | Known For |
31+
|--------|------|-----------|
32+
| **DeepInstinct** | ML/AI-based | High false positive rate on Go/Wails apps |
33+
| **Trapmine** | ML-based | Behavioral heuristics, flags process management |
34+
35+
### Why ML Engines Flag Wails/Go Apps:
36+
37+
1. **Go binaries are large** (~10MB) - ML sees this as suspicious
38+
2. **Static linking** - Go includes all dependencies, looks "packed"
39+
3. **WebView2 behavior** - Loading debug DLLs triggers heuristics
40+
4. **Process management** - Killing processes looks like malware
41+
42+
### Common False Positives:
43+
44+
Many legitimate Go/Wails apps get flagged:
45+
- Wails framework apps
46+
- Electron apps
47+
- Any app using WebView2
48+
- Backup software with process management
49+
50+
---
51+
52+
## Why This Detection Happens (False Positive)
53+
54+
### 1. Wails Framework Uses WebView2
55+
56+
SurfManager dibangun dengan **Wails** framework yang menggunakan **Microsoft WebView2** untuk rendering UI. WebView2 adalah komponen resmi Microsoft yang:
57+
58+
- Berbasis Chromium/Edge
59+
- Load berbagai system DLLs termasuk debug-related DLLs
60+
- Digunakan oleh banyak aplikasi legitimate (Microsoft Teams, VS Code, dll)
61+
62+
```
63+
Wails App
64+
└── WebView2 (Microsoft Edge Runtime)
65+
└── Loads dbghelp.dll, dbgcore.dll (normal behavior)
66+
```
67+
68+
### 2. Process Management Features
69+
70+
SurfManager memiliki fitur untuk:
71+
- **Close/Kill processes** sebelum backup/restore (untuk release file locks)
72+
- **Check if app is running**
73+
74+
Fitur ini menggunakan library `gopsutil` yang legitimate, tapi behavior-nya mirip dengan malware yang juga perlu manage processes.
75+
76+
```go
77+
// Legitimate code untuk close app sebelum backup
78+
func (k *Killer) SmartClose(appName string, processNames []string) error {
79+
// Gracefully close app, then force kill if needed
80+
}
81+
```
82+
83+
### 3. Network Communication
84+
85+
Detected IPs adalah **Google/Microsoft services**:
86+
- `173.194.193.94` - Google (untuk WebView2 updates/telemetry)
87+
- `74.125.201.95` - Google
88+
- `edge.microsoft.com` - Microsoft Edge/WebView2
89+
- `config.edge.skype.com` - Microsoft services
90+
91+
**Ini semua legitimate Microsoft/Google endpoints**, bukan C2 servers!
92+
93+
### 4. Memory Pattern URLs
94+
95+
URLs yang terdeteksi di memory adalah dari:
96+
- **WebView2 cache** - Normal browser behavior
97+
- **PKI/Certificate URLs** (`c.pki.goog`) - Certificate validation
98+
- **Microsoft telemetry** - WebView2 standard behavior
99+
100+
---
101+
102+
## Evidence This Is NOT Malware
103+
104+
### ✅ Open Source
105+
- Source code 100% available di GitHub
106+
- Anyone can audit the code
107+
- No obfuscated or hidden code
108+
109+
### ✅ Very Low Detection Rate
110+
- VirusTotal: **2/72 detections** (2.7% - likely false positive)
111+
- Only ML-based engines flagged (DeepInstinct, Trapmine)
112+
- No signature-based engines detected malware
113+
- ML engines are known for high false positive rates on legitimate apps
114+
115+
### ✅ Legitimate Use Case
116+
- App untuk backup/restore VSCode/Cursor sessions
117+
- Process management needed to release file locks
118+
- Network traffic is to Microsoft/Google (WebView2)
119+
120+
### ✅ Signed Dependencies
121+
- Uses official Microsoft WebView2
122+
- Uses well-known Go libraries (gopsutil, wails)
123+
124+
---
125+
126+
## Technical Breakdown
127+
128+
### DLLs Loaded (Normal for WebView2 apps):
129+
130+
| DLL | Purpose | Why Loaded |
131+
|-----|---------|------------|
132+
| `dbghelp.dll` | Debug helper | WebView2/Chromium crash reporting |
133+
| `dbgcore.dll` | Debug core | WebView2/Chromium diagnostics |
134+
| `webview2loader.dll` | WebView2 | UI rendering |
135+
136+
### Process Management Code:
137+
138+
```go
139+
// File: internal/process/killer.go
140+
// Purpose: Close apps gracefully before backup/restore
141+
142+
func (k *Killer) KillProcess(pid int) error {
143+
proc, err := process.NewProcess(int32(pid))
144+
// ... graceful termination, then force kill
145+
}
146+
```
147+
148+
**This is NOT credential dumping!** It's just closing apps so we can backup their data files.
149+
150+
---
151+
152+
## MITRE ATT&CK Explanation
153+
154+
| Detected Technique | Our Legitimate Use |
155+
|-------------------|-------------------|
156+
| T1059 (Command Execution) | Running backup/restore operations |
157+
| T1027 (Obfuscation) | WebView2 JavaScript bundling (normal) |
158+
| T1036 (Masquerading) | FALSE - we don't masquerade |
159+
| T1082 (System Discovery) | Checking if apps are installed/running |
160+
| T1071 (App Layer Protocol) | HTTPS to Google/Microsoft (WebView2) |
161+
162+
---
163+
164+
## How to Verify Safety
165+
166+
### 1. Check Source Code
167+
```
168+
https://github.com/[repo]/SurfManager
169+
```
170+
All code is open source and auditable.
171+
172+
### 2. Build From Source
173+
```bash
174+
git clone [repo]
175+
cd SurfManager
176+
wails build
177+
```
178+
You can build the exact same binary yourself.
179+
180+
### 3. Check Network Traffic
181+
All network traffic goes to:
182+
- `*.google.com` - WebView2
183+
- `*.microsoft.com` - WebView2/Edge
184+
185+
No suspicious C2 servers.
186+
187+
---
188+
189+
## Recommendations for Users
190+
191+
### If Your Antivirus Flags This:
192+
193+
1. **Add Exception** - Whitelist `SurfManager.exe` in your antivirus
194+
2. **Check VirusTotal** - Confirm 0 detections on actual malware engines
195+
3. **Build From Source** - If paranoid, build the app yourself from GitHub
196+
197+
### For Antivirus Vendors:
198+
199+
This is a **false positive** caused by:
200+
- WebView2 loading debug DLLs (normal Chromium behavior)
201+
- Process management features (legitimate for backup software)
202+
- Network traffic to Google/Microsoft (WebView2 telemetry)
203+
204+
Please whitelist this application or improve heuristics to not flag WebView2-based apps.
205+
206+
---
207+
208+
## Conclusion
209+
210+
SurfManager is **NOT malware**. The detection is a **false positive** caused by:
211+
212+
1. **WebView2** loading debug DLLs (standard Chromium behavior)
213+
2. **Process management** features that look suspicious but are legitimate
214+
3. **Network traffic** to Google/Microsoft services (WebView2)
215+
216+
The app is:
217+
- ✅ Open source
218+
- ✅ 2/72 VirusTotal detections (very low, ML-based only)
219+
- ✅ Uses official Microsoft WebView2
220+
- ✅ All network traffic to legitimate endpoints
221+
- ✅ No signature-based engine detected malware
222+
223+
---
224+
225+
**Author:** SurfManager Team
226+
**Date:** 2026-01-04
227+
**Status:** False Positive - Safe to Use

0 commit comments

Comments
 (0)