Is 悟空AI搜索 safe?
Wukong AI Search fetches remote config that installs network rules and opens server-chosen tabs on each multi-search.
On each multi-search, the extension downloads a configuration from files.xiaolvji.com with no integrity check. It installs the network rules from that configuration as declarativeNetRequest rules, which can match any URL. It also opens URLs from a server-supplied list in background tabs, inserting the user's search keyword, during server-set time windows.
Who publishes itwww.xiaolvji.com - 1 other listing from the same operator, 1 of them carrying a finding
www.xiaolvji.com - 1 other listing from the same operator, 1 of them carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
1 other listing published from this account, 2k+ users between them. 1 of them carries a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Server-supplied time-gated URLs open in background tabs on each multi-search
Code analysis shows a list from files.xiaolvji.com can open URLs, with the search keyword inserted, in inactive tabs during multi-search.
No domain allowlist is applied.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-829
- Source
- Static analysis
You run a multi-engine search for a keyword.
It may open a server-chosen URL containing your keyword in a background tab.
Time-gated URL opened with the keyword substituted
glj handler
js/15.jsoe.get(["glj"], function(e) { var t, n = (new Date).getTime(); void 0 !== e.glj && void 0 !== e.glj[V] && Array.isArray(e.glj[V]) && 0 < e.glj[V].length && (t = e.glj[V].length, e = e.glj[V][n % t]) && void 0 !== e.data && void 0 !== e.st && void 0 !== e.et && e.data && n >= e.st && n < e.et && (t = encodeURIComponent(a), n = encodeURIComponent(t), e = e.data.replaceAll("%ds", n).replaceAll("%s", t), chrome.tabs.create({ windowId: f.id, url: e, active: !1, index: u.length }))})- datahttps://example.com/s?q=%s (illustrative)
The address that opens; the keyword you searched can be placed in it.
- st / etepoch milliseconds (illustrative)
Start and end times that decide when the address is allowed to open.
- files.xiaolvji.com
Config server whose glj list sets the URLs opened in background tabs.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
Server config is installed as request rewrite rules before each multi-search
Code analysis shows rules fetched from files.xiaolvji.com are installed as browser request-rewrite rules with no integrity check.
The extension holds access to all sites.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-829
- Source
- Static analysis
You start a multi-engine search in the extension.
It installs request rules supplied by files.xiaolvji.com, then opens the search tabs.
Config fetch and storage of the server reply
Config request
js/15.jsfetch(g, { method: "POST", headers: { "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" }, body: new URLSearchParams({ type: e, ctype: t, lang: V, version: i[V], cver: c, tn: r, ssid: ce(e, r, 8) })Server rule objects copied into the rule list
Rule list build
js/15.jsif ("executeScript" === a[5] && void 0 !== a[6].networkRules && Array.isArray(a[6].networkRules) && 0 < a[6].networkRules.length) for (var f of a[6].networkRules) { var u, l = f; l.id = r; let e = !(l.priority = 1); for (u of o) if (void 0 !== f.condition.urlFilter && u === f.condition.urlFilter) { e = !0; break } e || (o.push(f.condition.urlFilter), s.push(l), r++) }Install before search
js/15.jschrome.declarativeNetRequest.getDynamicRules(e => { e = e.map(e => e.id); chrome.declarativeNetRequest.updateDynamicRules({ addRules: E.ruleList, removeRuleIds: e }, () => { p(n, i, a), f = t + 2e4, O() })})- condition.urlFilter||example.com^ (illustrative)
Which pages the rule applies to; any address can be targeted.
- actionredirect or modifyHeaders (illustrative)
Whether matching requests are redirected or have headers changed.
- cllso flagtrue (illustrative)
When set, the rules are kept installed instead of being cleared.
- files.xiaolvji.com
Config server whose reply supplies the rules the extension installs.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
Where it sends data
Destinations our analysis observed 悟空AI搜索 contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- files.xiaolvji.comwidely used
悟空AI搜索 sends data to files.xiaolvji.com. A widely used service: 25 other extensions we have analysed send data here.