Skip to content

Scrub Authorization values from the forwarded PJSIP trace - #14

Merged
PetrShtuka merged 1 commit into
mainfrom
fix/pjsip-log-authorization-scrubbing
Aug 10, 2026
Merged

Scrub Authorization values from the forwarded PJSIP trace#14
PetrShtuka merged 1 commit into
mainfrom
fix/pjsip-log-authorization-scrubbing

Conversation

@PetrShtuka

Copy link
Copy Markdown
Owner

Что

Закрывает последний пробел пункта 3 (диагностика и безопасность логов): onPJLog пробрасывал PJSIP wire-trace в CallWaveLog как есть, и на уровне debug трейс содержал Authorization:/Proxy-Authorization: digest-ответы — производную пароля аккаунта. Редактирование было задокументировано, но гарантировалось только дисциплиной (дефолт release — warning).

Изменения

  • CallWaveLog — новый +scrubAuthorizationInMessage: (internal): заменяет значения заголовков Authorization/Proxy-Authorization на <redacted>, имена заголовков сохраняет, регистронезависимо, с fast-path и сохранением формы trailing newline.
  • onPJLog — скраббинг перед форвардингом трейса.
  • Привязка к CallWaveLog.redactsIdentifiers: при выключенной редакции (осознанный escape hatch из FIELD-TESTING) трейс остаётся сырым — поведение задокументировано и не изменилось.
  • Обновлена документация (CallWaveLogging.h, CallWaveTypes.h, CallWaveKit/README.md): формулировки «trace содержит Authorization» заменены на точное описание скраббинга.

Тесты

CallWaveLogScrubbingTests — 6 кейсов: digest и proxy-заголовки, регистронезависимость и whitespace, строки без credentials (включая «Authorization» в теле), pass-through при выключенной редакции, форма trailing newline.

Полный прогон Scripts/run-package-tests.sh: все сьюты зелёные, 0 падений.

Независим от #11/#12/#13 (другие участки кода), конфликтов нет.

onPJLog forwards whole SIP messages to CallWaveLog, and at debug level
those messages carry Authorization/Proxy-Authorization digest responses
— a derivative of the account password. Redaction was documented but
enforced only by discipline (release defaults to warning), so a debug
build shipped by mistake would leak credentials.

The PJSIP sink now scrubs Authorization and Proxy-Authorization header
values before forwarding, replacing them with <redacted> while keeping
the header names readable. Scrubbing is tied to
CallWaveLog.redactsIdentifiers: FIELD-TESTING deliberately disables
redaction to inspect the raw trace, and that escape hatch is unchanged.

Adds CallWaveLogScrubbingTests covering digest and proxy headers,
case-insensitive matching, non-credential lines, the redaction-off
pass-through and the trailing-newline shape.
@PetrShtuka
PetrShtuka merged commit 7b57d83 into main Aug 10, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant