
Research
5 Malicious Chrome Extensions Enable Session Hijacking in Enterprise HR and ERP Systems
Five coordinated Chrome extensions enable session hijacking and block security controls across enterprise HR and ERP platforms.
Detects and notifies when program does not check-in within a timeout.
import {
createWatchdogTimer,
} from 'watchdog-timer';
/**
* @property destroy Called when `reset` is not called within `timeout` interval.
* @property reset Sets the timer's start time to the current time, and reschedules the timer to call its callback at the previously specified duration adjusted to the current time.
*/
type WatchdogTimerType = {|
+destroy: () => void,
+reset: () => void,
|};
/**
* @property consequentTimeouts Number of consequent timeouts. Calling `reset` resets `consequentTimeouts` to `0`.
*/
type TimeoutEventType = {|
+consequentTimeouts: number,
|};
/**
* @property onTimeout Called when `reset` is not called within `timeout` interval.
* @property timeout Timeout interval (in milliseconds).
*/
type WatchdogTimerConfigurationInputType = {|
+onTimeout: (event: TimeoutEventType) => void,
+timeout: number,
|};
createWatchdogTimer(configuration: WatchdogTimerConfigurationInputType) => WatchdogTimerType;
process.exitA watchdog timeout is one of the rare, valid use cases for forced process termination, i.e. using process.exit().
import {
createWatchdogTimer,
} from 'watchdog-timer';
const main = async () => {
const watchdogTimer = createWatchdogTimer({
onTimeout: () => {
console.error('watchdog timer timeout; forcing program termination');
process.nextTick(() => {
process.exit(1);
});
},
timeout: 1000,
});
while (true) {
// Reset watchdog-timer on each loop.
watchdogTimer.reset();
// `foo` is an arbitrary routine that might hang indefinitely,
// e.g. due to a hanging database connection socket.
await foo();
}
};
main();
lightship is an NPM module for signaling Kubernetes about the health of a Node.js application. In case of watchdog-timer, Lightship can be used to initiate a controlled termination of the Node.js process.
import {
createWatchdogTimer,
} from 'watchdog-timer';
import {
createLightship,
} from 'lightship';
const main = async () => {
const lightship = createLightship({
timeout: 5 * 1000,
});
lightship.signalReady();
lightship.registerShutdownHandler(async () => {
console.log('shutting down');
});
const watchdogTimer = createWatchdogTimer({
onTimeout: () => {
// If you do not call `destroy()`, then
// `onTimeout` is going to be called again on the next timeout.
watchdogTimer.destroy();
lightship.shutdown();
},
timeout: 1000,
});
while (true) {
if (lightship.isServerShuttingDown()) {
console.log('detected that the service is shutting down; terminating the event loop');
break;
}
// Reset watchdog-timer on each loop.
watchdogTimer.reset();
// `foo` is an arbitrary routine that might hang indefinitely,
// e.g. due to a hanging database connection socket.
await foo();
}
watchdogTimer.destroy();
};
main();
FAQs
Detects and notifies when program does not check-in within a timeout.
We found that watchguard demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Five coordinated Chrome extensions enable session hijacking and block security controls across enterprise HR and ERP platforms.

Research
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.

Research
/Security News
A malicious Chrome extension steals newly created MEXC API keys, exfiltrates them to Telegram, and enables full account takeover with trading and withdrawal rights.