Skip to content

Commit 5d88dee

Browse files
committed
Fix security warning for debugging and error reporting for deprecated unsafe modules
1 parent 1637047 commit 5d88dee

4 files changed

Lines changed: 15 additions & 11 deletions

File tree

native/NativeModule/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ ipcHandle("__Luna.registerNative", async (_, fileName: string, code: string) =>
3636
code,
3737
};
3838

39-
let exports = secureLoad(moduleInfo);
39+
let exports;
4040
try {
41-
exports;
41+
exports = secureLoad(moduleInfo);
4242
} catch (err) {
4343
const isDepricatedModule = Error.isError(err) && /Cannot use import statement outside a module/i.test(err.message);
44-
if (isDepricatedModule) throw new Error("Plugin using depricated unsafe native code! Please ask the plugin author to rebuild!");
44+
if (isDepricatedModule) throw new Error("Plugin using deprecated unsafe native code! Please ask the plugin author to rebuild!");
4545
throw err;
4646
}
4747

native/NativeModule/moduleAlias.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ export const moduleAlias = (moduleName: string) => {
2929
case "clipboard":
3030
return "your CLIPBOARD";
3131

32+
case "DebugProcess":
33+
return "DEBUG the main process";
34+
3235
default:
3336
return moduleName;
3437
}

native/NativeModule/secureLoad.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ export const secureLoad = (moduleInfo: NativeModuleInfo): Module["exports"] => {
9292

9393
const WebAssembly = new Proxy(globalThis.WebAssembly, {
9494
get(target, prop, receiver) {
95-
console.warn(`[🛑Security🛑] "${fileName}" is loading WebAssembly (${String(prop)})!`);
95+
console.warn(`[🛑Security🛑] '${fileName}' is loading WebAssembly (${String(prop)})!`);
9696
if (!isTrusted(moduleInfo, "WebAssembly", target)) {
97-
throw new Error(`[🛑Security🛑] Access Denied! User blocked 'WebAssembly' in '${fileName}'`);
97+
throw new Error(`[🛑Security🛑] Access Denied! User blocked 'WebAssembly' (${String(prop)}) in '${fileName}'`);
9898
}
9999

100100
return Reflect.get(target, prop, receiver);
@@ -135,12 +135,13 @@ export const secureLoad = (moduleInfo: NativeModuleInfo): Module["exports"] => {
135135
argv: process.argv,
136136

137137
debugProcess: () => {
138-
console.warn(`[🛑Security🛑] "${fileName}" is calling "process.debugProcess"`);
139-
// if (!isTrusted(fileName, "DebugProcess", "Debug the main process, gives full system access!", hash)) {
140-
// throw new Error(`Access Denied! User blocked "process.debugProcess" in "${fileName}"`);
141-
// }
142138
// @ts-expect-error This exists
143-
process._debugProcess(process.pid);
139+
const debugProcess: (pid: number) => void = process._debugProcess;
140+
console.warn(`[🛑Security🛑] '${fileName}' is calling 'process.debugProcess'`);
141+
if (!isTrusted(moduleInfo, "DebugProcess", debugProcess)) {
142+
throw new Error(`[🛑Security🛑] Access Denied! User blocked 'process.debugProcess' in '${fileName}'`);
143+
}
144+
debugProcess(process.pid);
144145
return process.debugPort;
145146
},
146147
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "luna",
3-
"version": "1.9.11-beta",
3+
"version": "1.9.12-beta",
44
"description": "A client mod for the Tidal music app for plugins",
55
"author": {
66
"name": "Inrixia",

0 commit comments

Comments
 (0)