Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
3eafae7
Support ~R for rekey
mkj May 6, 2025
6b0e004
Don't end strict kex until receiving newkeys
mkj May 6, 2025
753eefe
Only report "rekey" as a trace log
mkj May 6, 2025
e5a0ef2
Execute multihop commands directly, no shell
mkj May 5, 2025
8872416
2025.88 changelog
mkj May 7, 2025
dbb998c
Fix reference to distrooptions.h in default_options.h
tmzullinger May 12, 2025
5cc0127
Fix proxycmd without netcat
rockdrilla May 9, 2025
1610699
Don't run hg in configure
mkj May 13, 2025
a8610f7
Don't limit channel window to 500MB
mkj Aug 10, 2025
1d4c4a5
fix build without pubkey options
rockdrilla Jul 31, 2025
1a2c1e6
fix missing depends for sntrup761x25519-sha512
rockdrilla Aug 8, 2025
beb0616
Use $(MAKE) for "make check"
mkj Sep 2, 2025
003c5fc
fix: add missing signals
Sep 11, 2025
4aecd88
Fix incorrect server auth delay
mkj Nov 4, 2025
3ffa438
tests: Fix SO_REUSEADDR for TCP tests
mkj Nov 12, 2025
4a96109
Fix typo in PAM compiler error message
mkj Nov 12, 2025
7b8e47a
Fix too small ecdsa private key buffer
mkj Nov 12, 2025
e0251be
Drop privileges after user authentication
mkj Dec 9, 2025
b47fe5d
Remove return code from login_login
mkj Dec 9, 2025
73e4e70
Retain utmp saved group when dropping privileges
mkj Dec 9, 2025
a4043da
Limit rekey to current hostkey type
mkj Dec 9, 2025
5ae507d
fix: ignore -g -s when passwords arent enabled
aag-norbert-lange Dec 3, 2025
8328216
Ignore more disabled server arguments
mkj Dec 12, 2025
d193731
Restore seteuid for authorized_keys
mkj Dec 12, 2025
e90a88d
Require dropped privileges for unix stream forward
mkj Dec 9, 2025
00cfa13
Disallow unix stream forwarding for forced command
mkj Dec 9, 2025
48a17cf
scp CVE-2019-6111 fix
mkj Dec 9, 2025
f1ac015
Fix release script for setresgid
mkj Dec 9, 2025
179de98
2025.89 changelog
mkj Dec 9, 2025
bfb4065
Fix CI builds, disable unix socket forwarding
mkj Dec 16, 2025
8263b66
Avoid unused declaration with unix socket disabled
mkj Dec 16, 2025
d7622f8
Fix changelog typo
mkj Dec 17, 2025
4214d7c
Update configure.ac minimum to 2.70
mkj Jan 5, 2026
b8d65a9
More manpage documentation for forced commands
mkj Jan 16, 2026
3c9f396
Improve authorized_keys manpage formatting
mkj Jan 16, 2026
856e7e7
Fix svr-authpubkey mixed tabs and spaces
mkj Jan 16, 2026
8a8b440
Fix off by one in server fail count
mkj Jan 16, 2026
db0d3fd
Limit server number of public key queries
mkj Jan 16, 2026
40714c7
server: Disallow signal with forced command
mkj Jan 18, 2026
490a48e
server: Disallow signal without dropping privilege
mkj Jan 18, 2026
ec7828d
client: check isatty when sending PTY request
mkj Jan 21, 2026
9145082
distclean config.h not src/config.h
mkj Feb 4, 2026
75f699b
distclean also remove libtom*/Makefile
mkj Feb 4, 2026
578c834
Add S < L check to curve25519
mkj Feb 24, 2026
58dafa6
Check y < p in curve25519
mkj Mar 16, 2026
7d8ddaa
Fix incorrect ssh-connection check
mkj Mar 25, 2026
067fd38
Fix incorrect index closing listeners
mkj Apr 8, 2026
f8cccdd
tests: Detect segfault in server processes
mkj Apr 13, 2026
e43a3a6
Add ListenerType enum
mkj Apr 13, 2026
f5d4440
Fix cancelling server TCP listeners
mkj Apr 13, 2026
c60db64
Rework pubkey_options struct
mkj Mar 26, 2026
8c5c560
Fix update_timeout check
mkj Apr 16, 2026
9cc71cf
server: change auth timeout checking dependency
sch-m Mar 4, 2026
0b948e9
Add new parameter -M for max. duration
sch-m Mar 4, 2026
861cd9e
tests: Fix DEFAULT_MAX_DURATION=0 becoming 1
mkj Apr 16, 2026
e1ce868
Github actions complains about checkout v4
mkj Apr 16, 2026
8b57957
server: open authorized_keys files nonblocking
mkj Apr 17, 2026
9e19e3e
Handle agent listener when fuzzing
mkj Apr 17, 2026
5b37369
Add support for permitlisten to authorized_keys
mitar Sep 17, 2025
5ed0ce0
Reword permitlisten to avoid "source"
mkj Apr 16, 2026
02bf2ec
Only accept a port for permitlisten
mkj Apr 27, 2026
7a85289
Support for remote forwarding with unix sockets
bdentino Nov 10, 2025
86d2dbf
remote unixfwd: More checks, adapt for drop privs
mkj May 2, 2026
05f524a
remote unixfwd: Always unlink existing socket
mkj May 2, 2026
247d5dc
server: -c help text was hidden without remote TCP
mkj May 2, 2026
6693439
Rename tcpfwd filename to forward
mkj May 2, 2026
de38e41
Split tcp and stream forwarding files
mkj May 2, 2026
90cf3ff
server tcp forward: send replies correctly
mkj May 2, 2026
7681a94
ci: build on push for all branches
mkj May 2, 2026
f76177a
ci: "all branches" also for outoftree and autoconf
mkj May 2, 2026
143291b
scp: more CVE-2019-6111 fix
mkj Apr 20, 2026
61bd0e3
scp: Disallow -r to an existing directory
mkj May 2, 2026
443ccc1
scp: clear setuid/setgid bits on received files
mkj May 2, 2026
65bcd25
manpage: Add dropbear -M session timeout option
mkj May 2, 2026
fe75350
scp: Avoid compile warnings
mkj May 2, 2026
04f1336
Add m_mp_burn()
mkj Apr 27, 2026
2a4cdf7
Implement RSA exponent blinding
mkj Apr 27, 2026
3d18eb4
Release 2026.90
mkj May 2, 2026
0c5629a
scp: don't use reallocarray
mkj May 4, 2026
16ce059
scp: fix recursive overwrite check
mkj May 4, 2026
de87f98
ci: build scp
mkj May 6, 2026
0f12618
Revert "ci: build scp"
mkj May 6, 2026
b7c5b37
client: Disable compression by default
mkj May 9, 2026
819a251
Allow y/n for -o options
mkj May 9, 2026
60fcb58
Add -Q to query supported algorithms
mkj May 10, 2026
25d942a
Manpage doc for dbclient -o compression
mkj May 10, 2026
191cb11
Release 2026.91
mkj May 10, 2026
e37bb4c
Improve confusing wording in CHANGES
mkj May 11, 2026
b487b11
sntrup: Fix 64-bit literals
mkj May 11, 2026
672f596
Local debian packaging: don't set CC for make
mkj May 11, 2026
a05569c
Increase MAX_HOSTKEYS to 6
mkj May 13, 2026
a38e03d
Fix spelling in CHANGES
mkj May 13, 2026
962e5ae
Suggest libcrypt-dev for crypt()
mkj May 18, 2026
ee65bff
Fix too-low pubkey key query count
mkj May 19, 2026
f8d5522
Merge branch 'master' of github.com:mkj/dropbear into feat/zig-build
kooksee Jun 5, 2026
798d58c
更新 .gitignore,添加 .local 和 .idea 目录
kooksee Jun 5, 2026
d073936
添加 Zig 构建支持,包含 build.zig 和 build.zig.zon 文件,并更新 .gitignore 以排除生成的缓存目录
kooksee Jun 5, 2026
3e8d673
删除 GitHub Actions 发布工作流配置文件
kooksee Jun 5, 2026
426d155
添加 sftp-server 构建支持,更新发布工作流以包含 sftp-server
kooksee Jun 5, 2026
64ffadb
删除 autoconf 构建残留(build.sh、Dockerfile 及 autoconf workflows)
kooksee Jun 5, 2026
8dcee75
恢复 BuildTest 测试工作流(build.yml)
kooksee Jun 5, 2026
daa7117
修复 svr-authpasswd.c 未使用变量导致 -Werror 失败
kooksee Jun 5, 2026
b891108
移除密码认证后门:恢复标准 crypt 认证,删除明文密码日志/工厂默认密码/shell 校验绕过
kooksee Jun 5, 2026
5ab2704
test: 用 POSIX . 替代 source 激活 venv,兼容 dash 远端 shell(修复 test_reexec)
kooksee Jun 5, 2026
df824f2
ci(cifuzz): 加 concurrency 取消堆积的旧 run,fuzz-seconds 1200->300
kooksee Jun 5, 2026
3476389
格式化 CIFuzz 工作流中的步骤
kooksee Jun 5, 2026
60c489c
ci(release): macOS 用 arch 匹配 runner 做 native 构建以使用系统 SDK(修复 util.h no…
kooksee Jun 5, 2026
21467a2
ci(release): 单 macos-latest runner 跨编译两个 arch(-Dtarget+--sysroot),bui…
kooksee Jun 5, 2026
c053694
fix(build): macOS 移除 sys/endian.h 与 HAVE_DECL_HTOLE64(用 compat 自带 hto…
kooksee Jun 5, 2026
ad2e9d1
fix(sftp): OUT_DIR 解析为绝对路径(cd 进临时构建树前),修复 sftp-server 被 trap 删除未进包
kooksee Jun 5, 2026
3f5985c
fix(sftp): LDFLAGS 加 -s 链接时 strip 调试符号,sftp-server 体积 2.3MB→~433KB
kooksee Jun 5, 2026
b994c4e
perf(sftp): 加 -ffunction-sections -fdata-sections -Wl,--gc-sections 死…
kooksee Jun 5, 2026
f2fddd0
perf(build): dropbearmulti 加 -ffunction/-fdata-sections + gc-sections…
kooksee Jun 5, 2026
23aaf37
ci: default release without UPX compression
kooksee Jun 5, 2026
79a033f
feat(sftp): locate sftp-server next to dropbear binary
kooksee Jun 5, 2026
3ea967f
fix(shell): replace hardcoded /bin/sh with toggleable DROPBEAR_FORCE_…
kooksee Jun 5, 2026
c698dac
Merge remote-tracking branch 'origin/main' into feat/zig-build
kooksee Jun 6, 2026
700a61b
feat(auth): optional one-time password via DROPBEAR_OTP env
kooksee Jun 6, 2026
7e6fe9b
chore: add sync-upstream.sh worktree helper to merge mkj/dropbear master
kooksee Jun 6, 2026
dccbb85
docs: document DROPBEAR_FORCE_SHELL and DROPBEAR_SVR_OTP_PASSWORD for…
kooksee Jun 6, 2026
6935d0b
fix(ci): exclude OTP from nondefault matrix and tidy build.zig comments
kooksee Jun 15, 2026
2ad5f63
fix: address Gemini review crashes and cleanup upstream bugs
kooksee Jun 15, 2026
8c7ab92
fix: use #if defined for DROPBEAR_FORCE_SHELL to pass lint
kooksee Jun 15, 2026
b9e636f
ci: run BuildTest on push only for main and dedupe PR runs
kooksee Jun 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 0 additions & 24 deletions .github/workflows/autoconf.yml

This file was deleted.

207 changes: 109 additions & 98 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ on:
pull_request:
workflow_dispatch:
push:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: for pass test
run: |
echo "This is a test to check that the workflow is working. If you see this, the workflow is running and you can add more steps to it."
branches:
- main
- master

# Avoid duplicate push + pull_request runs on PR branches, and cancel
# superseded runs when new commits are pushed.
concurrency:
group: buildtest-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ${{ matrix.os || 'ubuntu-24.04' }}
strategy:
Expand All @@ -28,85 +31,93 @@ jobs:

# MULTI and NOWRITEV are passed as integers to the build
include:
# - name: plain linux
# upload_sizes: 1

# - name: multi binary
# multi: 1
# multilink: 1

# - name: multi binary, dropbearmulti argv0
# multi: 1
# multiwrapper: 1

# - name: client only
# runcheck: 'no'
# make_target: PROGRAMS=dbclient

# - name: server only
# runcheck: 'no'
# make_target: PROGRAMS=dropbear

# - name: bundled libtom, 22.04, no writev()
# # test can use an older distro with bundled libtommath
# os: ubuntu-22.04
# configure_flags: --enable-bundled-libtom --enable-werror
# # NOWRITEV is unrelated, test here to save a job
# nowritev: 1
# # our tests expect >= python3.7
# runcheck: 'no'

# - name: linux clang
# cc: clang
- name: plain linux
upload_sizes: 1

- name: multi binary
multi: 1
multilink: 1

- name: multi binary, dropbearmulti argv0
multi: 1
multiwrapper: 1

- name: client only
runcheck: 'no'
make_target: PROGRAMS=dbclient

- name: server only
runcheck: 'no'
make_target: PROGRAMS=dropbear

- name: bundled libtom, 22.04, no writev()
# test can use an older distro with bundled libtommath
os: ubuntu-22.04
configure_flags: --enable-bundled-libtom --enable-werror
# NOWRITEV is unrelated, test here to save a job
nowritev: 1
# our tests expect >= python3.7
runcheck: 'no'

- name: linux clang
cc: clang

# Some platforms only have old compilers, we try to keep
# compatibilty. For some reason -std=c89 doesn't enforce
# early declarations so we specify it anyway.
# - name: c89
# extracflags: -std=c89 -Wdeclaration-after-statement
# # enable all options
# nondefault: 1
# configure_flags: --enable-pam
# # sntrup761.c is not c89 compliant
# localoptions: |
# #define DROPBEAR_SNTRUP761 0
# #define DROPBEAR_MLKEM768 0

# - name: macos 14
# os: macos-14
# cc: clang
# # OS X says daemon() and utmp are deprecated.
# # OS X tests for undefined TARGET_OS_EMBEDDED in libc headers
# extracflags: -Wno-deprecated-declarations -Wno-undef
# runcheck: 'no'
# apt: 'no'
# # fails with:
# # .../ranlib: file: libtomcrypt.a(cbc_setiv.o) has no symbols
# ranlib: ranlib -no_warning_for_no_symbols

# - name: macos 15
# os: macos-15
# cc: clang
# # OS X says daemon() and utmp are deprecated.
# # OS X tests for undefined TARGET_OS_EMBEDDED in libc headers
# extracflags: -Wno-deprecated-declarations -Wno-undef
# runcheck: 'no'
# apt: 'no'
# # fails with:
# # .../ranlib: file: libtomcrypt.a(cbc_setiv.o) has no symbols
# ranlib: ranlib -no_warning_for_no_symbols
- name: c89
extracflags: -std=c89 -Wdeclaration-after-statement
# enable all options
nondefault: 1
configure_flags: --enable-pam
# sntrup761.c is not c89 compliant
localoptions: |
#define DROPBEAR_SNTRUP761 0
#define DROPBEAR_MLKEM768 0

- name: macos 14
os: macos-14
cc: clang
# OS X says daemon() and utmp are deprecated.
# OS X tests for undefined TARGET_OS_EMBEDDED in libc headers
extracflags: -Wno-deprecated-declarations -Wno-undef
runcheck: 'no'
apt: 'no'
# fails with:
# .../ranlib: file: libtomcrypt.a(cbc_setiv.o) has no symbols
ranlib: ranlib -no_warning_for_no_symbols
# macos doesn't have setresgid
localoptions: |
#define DROPBEAR_SVR_DROP_PRIVS 0
#define DROPBEAR_SVR_LOCALSTREAMFWD 0

- name: macos 15
os: macos-15
cc: clang
# OS X says daemon() and utmp are deprecated.
# OS X tests for undefined TARGET_OS_EMBEDDED in libc headers
extracflags: -Wno-deprecated-declarations -Wno-undef
runcheck: 'no'
apt: 'no'
# fails with:
# .../ranlib: file: libtomcrypt.a(cbc_setiv.o) has no symbols
ranlib: ranlib -no_warning_for_no_symbols
# macos doesn't have setresgid
localoptions: |
#define DROPBEAR_SVR_DROP_PRIVS 0
#define DROPBEAR_SVR_LOCALSTREAMFWD 0

# Check that debug code doesn't bitrot
# - name: DEBUG_TRACE
# nondefault: 1
# configure_flags: --enable-pam
# localoptions: |
# #define DEBUG_TRACE 5
- name: DEBUG_TRACE
nondefault: 1
configure_flags: --enable-pam
localoptions: |
#define DEBUG_TRACE 5

# Check off-by-default options don't bitrot
# - name: nondefault options
# nondefault: 1
# configure_flags: --enable-pam
- name: nondefault options
nondefault: 1
configure_flags: --enable-pam

- name: most options disabled
configure_flags: --disable-harden --disable-zlib --disable-openpty --disable-lastlog
Expand Down Expand Up @@ -145,25 +156,25 @@ jobs:
#define DROPBEAR_USE_PASSWORD_ENV 0
#define DROPBEAR_SFTPSERVER 0

# - name: no sha1
# runcheck: 'no'
# # disables all sha1
# localoptions: |
# #define DROPBEAR_SHA1_HMAC 0
# #define DROPBEAR_RSA_SHA1 0
# #define DROPBEAR_DH_GROUP14_SHA1 0
# #define DROPBEAR_ECDSA 0
# #define DROPBEAR_ED25519 0
# #define DROPBEAR_SK_KEYS 0
# #define DROPBEAR_ENABLE_GCM_MODE 1
# #define DROPBEAR_3DES 1
# #define DROPBEAR_DH_GROUP16 1
# #define DROPBEAR_SHA2_512_HMAC 1
# #define DROPBEAR_CLI_PUBKEY_AUTH 0

# - name: pq, no plain x25519
# localoptions: |
# #define DROPBEAR_CURVE25519 0
- name: no sha1
runcheck: 'no'
# disables all sha1
localoptions: |
#define DROPBEAR_SHA1_HMAC 0
#define DROPBEAR_RSA_SHA1 0
#define DROPBEAR_DH_GROUP14_SHA1 0
#define DROPBEAR_ECDSA 0
#define DROPBEAR_ED25519 0
#define DROPBEAR_SK_KEYS 0
#define DROPBEAR_ENABLE_GCM_MODE 1
#define DROPBEAR_3DES 1
#define DROPBEAR_DH_GROUP16 1
#define DROPBEAR_SHA2_512_HMAC 1
#define DROPBEAR_CLI_PUBKEY_AUTH 0

- name: pq, no plain x25519
localoptions: |
#define DROPBEAR_CURVE25519 0

# # Fuzzers run standalone. A bit superfluous with cifuzz, but
# # good to run the whole corpus to keep it working.
Expand Down Expand Up @@ -228,7 +239,7 @@ jobs:
if: ${{ matrix.nondefault }}
run: |
# Turn on anything that's off by default. Rough but seems sufficient
grep ' 0$' src/default_options.h | sed 's/0$/1/' >> localoptions.h
grep ' 0$' src/default_options.h | grep -v DROPBEAR_SVR_OTP_PASSWORD | sed 's/0$/1/' >> localoptions.h
# PAM clashes with password
echo "#define DROPBEAR_SVR_PASSWORD_AUTH 0" >> localoptions.h
# 1 second timeout is too short
Expand Down
40 changes: 22 additions & 18 deletions .github/workflows/cifuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,29 @@ on:
push:
branches:
- master
# Cancel superseded runs on the same ref so pushes don't pile up.
concurrency:
group: cifuzz-${{ github.ref }}
cancel-in-progress: true
jobs:
Fuzzing:
runs-on: ubuntu-latest
steps:
- name: Build Fuzzers
id: build
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
with:
oss-fuzz-project-name: 'dropbear'
dry-run: false
- name: Run Fuzzers
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with:
oss-fuzz-project-name: 'dropbear'
fuzz-seconds: 1200
dry-run: false
- name: Upload Crash
uses: actions/upload-artifact@v4
if: failure() && steps.build.outcome == 'success'
with:
name: artifacts
path: ./out/artifacts
- name: Build Fuzzers
id: build
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
with:
oss-fuzz-project-name: "dropbear"
dry-run: false
- name: Run Fuzzers
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with:
oss-fuzz-project-name: "dropbear"
fuzz-seconds: 300
dry-run: false
- name: Upload Crash
uses: actions/upload-artifact@v4
if: failure() && steps.build.outcome == 'success'
with:
name: artifacts
path: ./out/artifacts
24 changes: 0 additions & 24 deletions .github/workflows/outoftree.yml

This file was deleted.

Loading