Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
b69c678
Harden startup and shell environment handling
amirimatin Jun 15, 2026
5af4ef6
docs: add security audit report highlighting vulnerabilities and reme…
amirimatin Jun 15, 2026
446c426
Merge branch 'hotfix/security-hardening' into release
amirimatin Jun 16, 2026
5fd8353
Fix LPS1 prompt timezone rendering
amirimatin Jun 16, 2026
50f5d03
Merge branch 'hotfix/lps1-timezone' into release
amirimatin Jun 16, 2026
c53bbab
chore: ignore local development artifacts
amirimatin Jun 16, 2026
bfb3dbe
feat: add safe history search and completion UX
amirimatin Jun 16, 2026
70798da
Merge branch 'f/lshell-completion-upgrade' into release
amirimatin Jun 16, 2026
024b9b9
fix: block bareword symlink path ACL bypass
amirimatin Jun 17, 2026
d1ffd92
fix: block bareword symlink path ACL bypass
amirimatin Jun 17, 2026
c33e03c
Merge branch 'hotfix/path-acl-symlink-guard-release' into release
amirimatin Jun 17, 2026
b9a59dc
fix: enhance path ACL checks for awk and sed commands to prevent bare…
amirimatin Jun 17, 2026
9e63ebf
Merge release into path ACL symlink guard hotfix
amirimatin Jun 17, 2026
aa2670b
fix: harden scp parsing and child runtime environment
amirimatin Jun 17, 2026
f046ef6
fix: implement command path drift detection and resolution caching
amirimatin Jun 17, 2026
803dd28
fix: refuse legacy SFTP passthrough by default; add sftp_unsafe_legac…
amirimatin Jun 17, 2026
9df42ac
fix: update version to 0.12.0 in changelog, variables, and spec files
amirimatin Jun 17, 2026
549e4d5
test: normalize expectations for pinned command paths
amirimatin Jun 17, 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
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,8 @@ dist/
test.lsh
.pylint_cache/
.pylint.d/
.hypothesis/
.hypothesis/
.venv/
local-docs/
.vscode/
.idea/
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Contact: [ghantoos@ghantoos.org](mailto:ghantoos@ghantoos.org)
[https://github.com/ghantoos/lshell](https://github.com/ghantoos/lshell)

### v0.12.0 (UNRELEASED)
### v0.12.0 17/06/2026
- Packaging/CI: Raised minimum supported Python version to 3.10 (`requires-python >=3.10`), removed EOL Python versions from CI, and aligned docs/package metadata with the new baseline; CI/classifiers now track active CPython release branches 3.10-3.14 (Python 3.6 reached EOL on 23/12/2021).
- Security: Removed regex-driven shell parsing from the authorization flow.
- Engine: Migrated security parsing to a deterministic scanner.
Expand Down
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,14 @@ Key settings to review:
- `umask`
- runtime containment: `max_sessions_per_user`, `max_background_jobs`, `command_timeout`, `max_processes`

Security note:
`path` restrictions apply to commands parsed by `lshell`, but they do not inspect
individual file requests handled inside the SFTP protocol itself. If you enable
legacy `sftp`, `lshell` now refuses the passthrough by default unless you set
`sftp_unsafe_legacy=1`. Treat OpenSSH `ChrootDirectory` plus `ForceCommand internal-sftp` as the
real filesystem boundary, and use SSH-side controls such as `DisableForwarding`
or read-only SFTP modes when needed.

CLI overrides are supported, for example:

```bash
Expand Down Expand Up @@ -219,7 +227,8 @@ timer : 0
path : ['/etc', '/usr']
env_path : '/sbin:/usr/foo'
scp : 1
sftp : 1
sftp : 0
sftp_unsafe_legacy : 0
overssh : ['rsync','ls']
aliases : {'ls':'ls --color=auto','ll':'ls -l'}

Expand Down
2 changes: 1 addition & 1 deletion debian/changelog
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
lshell (0.11.1rc2-1) UNRELEASED; urgency=medium
lshell (0.12.0-1) UNRELEASED; urgency=medium

* debian/watch:
- Corrected to work with lshell versioning on github.
Expand Down
Loading