You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] Doris BE leaks auth headers by logging every Stream Load HTTP header verbatim at INFO #64514
Initial triage: this looks like a real branch-4.1 regression.
What I checked:
The issue currently has no labels or comments and reports version 4.1.2-rc01.
In 4.1.2-rc01, be/src/service/http/action/stream_load.cpp logs HTTP headers= at INFO through req->get_all_headers(), but be/src/service/http/http_request.cpp returns each raw header value from get_all_headers().
In the same tag, be/src/service/http/action/stream_load_forward_handler.cpp separately iterates req->headers() into headers_info and logs that raw string at INFO.
Current branch-4.1 still has the same unmasked code.
master and 4.0.6-rc02 have the masking behavior: HttpRequest::debug_string() and get_all_headers() mask sensitive headers, and the forward handler logs through req->get_all_headers().
Conclusion:
The report is reproducible from code inspection. This is not just a logging-level/configuration issue: branch-4.1's service/http implementation does not contain the header-masking changes present on master and 4.0, and the forward handler also bypasses the header rendering helper. Sensitive headers such as Authorization, Proxy-Authorization, Auth-Token, and token can be emitted in BE INFO logs for Stream Load paths.
Suggested next steps:
Port the master/4.0 masking helper into be/src/service/http/http_request.cpp on branch-4.1, including both debug_string() and get_all_headers().
Change StreamLoadForwardHandler::on_header() on branch-4.1 to use req->get_all_headers() instead of directly formatting req->headers().
Add a regression/unit test for header rendering so Authorization, Proxy-Authorization, Auth-Token, and token are masked in log/debug strings.
Audit branch-4.1 callers of req->debug_string() and req->get_all_headers() because several HTTP actions log those strings and currently inherit the same raw-header behavior.
Missing information that would help release verification, without exposing secrets:
A sanitized example log line from 4.1.2-rc01 with only header names and masked values.
Whether the observed leak is from normal Stream Load, Stream Load forward, or both.
The exact build commit if it differs from the public 4.1.2-rc01 tag.
Hi, I'd like to work on this issue as my first contribution to Apache Doris.
I'm currently reproducing the issue locally and investigating its root cause. If no one is currently working on it, I'd like to take ownership of this issue.
Activity
zclllyybb commentedon Jun 15, 2026
Breakwater-GitHub-Analysis-Slot: slot_11db6348ed7e
Initial triage: this looks like a real branch-4.1 regression.
What I checked:
be/src/service/http/action/stream_load.cpplogsHTTP headers=at INFO throughreq->get_all_headers(), butbe/src/service/http/http_request.cppreturns each raw header value fromget_all_headers().be/src/service/http/action/stream_load_forward_handler.cppseparately iteratesreq->headers()intoheaders_infoand logs that raw string at INFO.branch-4.1still has the same unmasked code.masterand 4.0.6-rc02 have the masking behavior:HttpRequest::debug_string()andget_all_headers()mask sensitive headers, and the forward handler logs throughreq->get_all_headers().Conclusion:
The report is reproducible from code inspection. This is not just a logging-level/configuration issue: branch-4.1's
service/httpimplementation does not contain the header-masking changes present onmasterand 4.0, and the forward handler also bypasses the header rendering helper. Sensitive headers such asAuthorization,Proxy-Authorization,Auth-Token, andtokencan be emitted in BE INFO logs for Stream Load paths.Suggested next steps:
master/4.0 masking helper intobe/src/service/http/http_request.cpponbranch-4.1, including bothdebug_string()andget_all_headers().StreamLoadForwardHandler::on_header()onbranch-4.1to usereq->get_all_headers()instead of directly formattingreq->headers().Authorization,Proxy-Authorization,Auth-Token, andtokenare masked in log/debug strings.req->debug_string()andreq->get_all_headers()because several HTTP actions log those strings and currently inherit the same raw-header behavior.Missing information that would help release verification, without exposing secrets:
oldkingnana commentedon Jun 26, 2026
Hi, I'd like to work on this issue as my first contribution to Apache Doris.
I'm currently reproducing the issue locally and investigating its root cause. If no one is currently working on it, I'd like to take ownership of this issue.
Thank you!