Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[BUG] dangerous secret name warning list is missing BASH_ENV, ENV, ZDOTDIR, IFS and other interpreter vectors

Đang mở Phù hợp với người mới
#561 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
88/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
go
Lĩnh vực
cli, security

Hướng nghiên cứu

Bắt đầu tại pkg/controllers/secrets.go, ở dangerousSecretNames, sau đó chạy bản tái hiện doppler run được ghi trong tài liệu với BASH_ENV, ZDOTDIR, IFS và LD_PRELOAD. Hoàn tất khi đầu ra cảnh báo bao gồm các biến shell và interpreter được liệt kê, trong đó có PYTHONSTARTUP, RUBYOPT và JAVA_TOOL_OPTIONS.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Describe the bug

The CLI's dangerous-secret-name warning list (dangerousSecretNames in pkg/controllers/secrets.go) is missing several well-known environment-variable code-execution vectors — most notably BASH_ENV, plus ENV, ZDOTDIR, IFS, PYTHONSTARTUP, RUBYOPT, and JAVA_TOOL_OPTIONS.

doppler run warns when the config contains dangerous secret names (per https://docs.doppler.com/docs/accessing-secrets#injection), and the docs explicitly note the list "is not exhaustive". Still, BASH_ENV is arguably the most common shell-hijack vector on Linux/macOS: non-interactive bash sources $BASH_ENV before executing a command, so a secret named BASH_ENV pointing at any shell script at a predictable path (repo scripts, CI artifact dirs, /tmp files created by the pipeline) executes in every doppler run consumer's environment. Currently it is injected with no warning, while e.g. LD_PRELOAD gets one.

Confirmed on a dev build against a mock API: with secrets BASH_ENV=/path/script, ZDOTDIR=/dir, IFS=;;, LD_PRELOAD=/lib.so:

  • the warning output listed only LD_PRELOAD
  • BASH_ENV, ZDOTDIR, and IFS were all injected into the child environment
  • the script referenced by BASH_ENV was sourced and executed by the spawned /bin/bash -c child

(Note: IFS requires no file at all — it alters word-splitting of the user's own --command.)

To Reproduce

  1. Configure secrets including BASH_ENV pointing to an existing shell script and LD_PRELOAD pointing to a nonexistent path
  2. doppler run --command '/bin/bash -c "true"' --debug
  3. Observe the warning lists only LD_PRELOAD; the BASH_ENV script executes with no warning

Expected behavior

The warning list should include the standard shell/interpreter-hijack variable names — at minimum BASH_ENV, ENV, ZDOTDIR, IFS, PYTHONSTARTUP, RUBYOPT, JAVA_TOOL_OPTIONS — so users relying on the CLI's warning get consistent coverage of the vectors the docs describe.

Suggested fix (one-line addition to dangerousSecretNames in pkg/controllers/secrets.go):

var dangerousSecretNames = [...]string{
	// Operating Systems environment variable names
	// Linux
	"PROMPT_COMMAND",
	"LD_PRELOAD",
	"LD_LIBRARY_PATH",
	"BASH_ENV", // non-interactive bash sources this
	"ENV",      // POSIX sh sources this
	"ZDOTDIR",  // zsh sources $ZDOTDIR/.zshrc
	"IFS",      // alters shell word-splitting
	...

Desktop (please complete the following information):

  • OS: Linux
  • Version 7.0.0-28-generic

CLI Version:
Built from source @ b618e5f (version dev); present in current main.

Additional context

Found during a security review of the CLI. The docs already document the RCE danger and recommend mounting as the remediation, so this is a warning-completeness improvement rather than a security report. The same review also confirmed PATH/PS1/HOME reserved-key handling works as intended. Happy to open a PR.

Ngôn ngữ chính
Go
Star
397
Fork
87
Merge trung bình
20 phút
Pull request đã merge (30 ngày)
2

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

  • Không có Dockerfile hay tệp Docker Compose
  • Không có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của DopplerHQ/cli

Tất cả issue của DopplerHQ/cli

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.