
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
Brute adds brute force mitigation to hapi-based application servers. It creates a Fibonacci sequence to delay responses, if the maximum allowed calls is exhausted, the route returns 429 status with a Retry-After header indicating how long a client should wait before attempting to call.
npm install hapi-brute
npm test
In this mode the plugin is invoked early in the response cycle and requires no change to route handler. given that it is invoked early the plugin will determine brute attempts based on the IP address of the request only.
server.route({
method: 'GET',
path: '/1',
config: {plugins: {brute: {preResponse: true}},
handler: function (request, reply) {
return reply('ok');
});
When you need to limit requests based on an arbitrary condition, for example the username someone is using to log in
server.route({
method: 'GET',
path: '/1',
config: {plugins: {brute: true}},
handler: function (request, reply) {
const user = request.auth.credentials.username;
reply.brute('username', user, (err, reset)=> {
if(validUser(user)) {
// reset the counter for the user
// after a valid attempt
reset((err)=> {
reply('welcome ' + username);
});
} else {
reply('Invalid username/password');
}
});
}
});
server.route({
method: 'GET',
path: '/1',
config: {plugins: {brute: true}},
handler: function (request, reply) {
const user = request.auth.credentials.username;
reply.brute('username', user)
.then((reset)=> {
if(validUser(user)) {
// reset the counter for the user
// after a valid attempt
return reset()
.then(() => {
reply('welcome ' + username);
});
} else {
reply('Invalid username/password');
}
});
}
});
{
allowedRetries: 5, // the number of attempts before the client gets a 429 response
// the first attempt will see no delay the second will see 200ms delay
// 3rd - 5th attempts will see longer delays calculated using a Fibonacci sequence
initialWait: 200, // the initial delay the client will exhibit after the first attempt
maxWait: 15000, // during the allowed retries, the delay will not exceed this value
timeWindow: 6 * 60 * 1000, // once a client gets a 429, it has to wait for the amount of time to expire
proxyCount: 0, // which proxy in the proxy list in the x-forwarded-for header should be used
// 0 is disables considering proxies
preResponse: false // should the plugin kick-in before before the route handler is invoked
}
FAQs
Hapi bruteforce prevention
We found that hapi-brute 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.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.