emscripten-core / emscripten-core/emscripten

PostMessage triggers false security alert

Open
#22,888 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
27.6k
Forks
3.6k
Avg merge
1d 1h
Merged PRs (30d)
105

Description

This scanning tool:
https://www.hcl-software.com/appscan/products/appscan-standard

flags an error on this line:

https://github.com/emscripten-core/emscripten/blob/main/src/library_eventloop.js#L368

because PostMessage() is passing "*" as the second parameter.

As far as I can tell, that PostMessage turns into parentPort.postMessage() for which the
second parameter would be objects to transfer, so "*" would not apply.

This seems to be a harmless error that could be easily removed, so as to not trigger
AppScan or other scanning tools.

Here is the finding from AppScan:

Reasoning: AppScan found a postMessage() function that uses the wildcard * for the target domain[s] parameter

```
...
setImmediates.shift()();
}
};
addEventListener("message", Browser_setImmediate_messageHandler, true);
Browser.setImmediate = /** @type{function(function(): ?, ...?): number} */ (function
Browser_emulated_setImmediate(func) {
setImmediates.push(func);
if (ENVIRONMENT_IS_WORKER) {
if (Module["setImmediates"] === undefined) Module["setImmediates"] = [];
Module["setImmediates"].push(func);
postMessage({
target: emscriptenMainLoopMessageId
});
} else postMessage(emscriptenMainLoopMessageId, "*");
});
} else {
Browser.setImmediate = setImmediate;
} }
Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() {
Browser.setImmediate(Browser.mainLoop.runner);
};
Browser.mainLoop.method = "immediate";
...
```

There's another instance here:

https://github.com/emscripten-core/emscripten/blob/main/src/library_eventloop.js#L76

that didn't trigger the scan, but could.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.