logo

Database

Typescript Bunyan Log Forging

Description

Detects when unsanitized user-controlled input is written into Bunyan log messages in TypeScript applications. Without proper sanitization, attackers can inject newline characters or forged log entries into the log stream, misleading security monitoring systems and hiding malicious activity.

Weakness:

091 - Log injection

Category: System Manipulation

Detection Strategy

    Identifies calls to Bunyan logger methods (info, error, warn, debug, fatal, trace, log)

    Resolves the logger instance back to its definition to confirm it was created via bunyan.createLogger()

    Inspects the arguments passed to the log call for symbols, element accesses, or member accesses that originate from HTTP request data

    Reports a vulnerability when user-controlled input reaches a Bunyan log method without sanitization or validation

Vulnerable code example

import express, { Request, Response } from 'express';
import bunyan from 'bunyan';

const app = express();
const log = bunyan.createLogger({ name: 'app' });

app.get('/action', (req: Request, res: Response) => {
  const action = req.query.action as string;...

✅ Secure code example

import express, { Request, Response } from 'express';
import bunyan from 'bunyan';

const app = express();
const log = bunyan.createLogger({ name: 'app' });

app.get('/action', (req: Request, res: Response) => {
  const action = req.query.action as string;...