Commit Graph

56 Commits

Author SHA1 Message Date
vthiebaut10 0b73c4636d
Allow non-admin user processes to log message to ETW / log file (#513) 2021-06-11 16:56:04 -07:00
bagajjal 9dba3f91e4
Bagajjal/compile test v8.6 (#503)
Fixed compilation and test failures with V8.6.
2021-04-29 12:41:08 -07:00
bagajjal 34608f3d29
Read VTSequence from console (#412)
Use console win32 API to read the VTSequence for keystrokes on client-side.
2019-12-05 13:20:04 -08:00
Manoj Ampalam 754f7b4885 Ported v8.1 changes 2019-11-01 12:20:04 -07:00
bagajjal 0d93457a2e Added compression support vai Zlib (#404) 2019-11-01 10:57:34 -07:00
Manoj Ampalam 9cc51aa7e4
Fixed issue around incorrect handling of Handle and CredHandle types in Kerb GSS/SSPI adapter code
Prior logic was using a common variable to encapsulate both these types and doing a runtime check based on GetTokenInformation call to determine the actual underlying type. These two types are not guaranteed to have different values and any conflict could result in a random crash that would be nearly impossible to debug.
2019-09-10 14:38:16 -07:00
Manoj Ampalam 7ed284f878
Ported v8.0 changes 2019-05-24 23:08:06 -07:00
Bryan Berns 44ba5483cd Enable PKCS11 Support (#331)
- Enable use of PKCS11 library files by adjusting central configuration file.
- Modified dlsym() to return a void pointer instead of an int which is consistent with POSIX. The previous return type caused an issue with 32-bit builds with PKCS11 enabled.
2019-05-21 13:36:24 -07:00
Chris Spencer 3449eb2152 Added dlerror() and fixed issue with dlopen() handling UTF-8 filenames
dlerror() is supposed to return a char *, but currently returns a
DWORD. Reimplement it using the Win32 FormatMessage function.
Correctly handle UTF-8 filenames in the Win32 implementation of dlopen()
2019-05-21 13:02:53 -07:00
Bryan Berns 2f551d4535 Kerberos SSPI Support Via GSSAPI
Added an implementation of GSSAPI interface to support Kerberos SSPI within OpenSSH. This is only a partial definition of the full GSSAPI specification since OpenSSH only requires a subset of the overall GSSAPI functionality.
2019-01-08 20:29:58 -08:00
Manoj Ampalam cc16f80123
Converge fork and upstream branches
- Removed #ifdef WINDOWS blocks in base code where the feature support can be conveyed by a failed POSIX API call
- Refactored password authentication code
- Other misc changes - Removed DebugBreak on Release Builds
2018-10-30 14:54:13 -07:00
Manoj Ampalam d74ae2e5dd Ported V7.9 changes 2018-10-25 12:22:09 -07:00
Manoj Ampalam 68719a25df Ported fork to 7.8 2018-10-05 15:11:07 -07:00
Manoj Ampalam af4e4113b2
Ported bash based E2E tests and integrated security fix for cve-2018-15473(#346)
- Updated code to dynamic load Lsa functions until RS5 SDK includes them
 - Add conpty support in openssh
- Fixed Wierd characters (?25l) are seen, when logged in from ssh client
- Backspace doesn't work in powershell window
- Changes to support ssh-shellhost as an alternative shell
- Added support to have ssh-shellhost work as a standby shell (ssh-shellhost -c "cmdline") simply executes cmdline via CreateProcess
- Added E2E test cases and fixed unittests broken from prior changes
- Added PTY launch interface that supports both conpty and ssh-shellhost pty.
- Implemented PTY control channel in ssh-shellhost that supports Window resize events.
- Fixed regression with starting a PTY session with an explicit command
- modified ssh-shellhost pty argument to ---pty to remove ambiguity in cases when both -p and -c are present in commandline. Ex. ssh-shellhost.exe -c "myprogram -p -c argument"
2018-10-04 14:16:02 -07:00
Manoj Ampalam 84e87be8ae
ConPTY changes and support for auto-updating known_hosts;
- Logic to support conpty (currently disabled until validation is complete)
- fdopen() and fchmod() support for file handles
- support for auto updating known_hosts via ssh and ssh-keygen
- Support for dynamic Windows-size changes with PTY
- Changes to support OneCore SDK
- Test cases
2018-07-25 15:15:05 -07:00
Manoj Ampalam 8bb672aa4d
Optimized group membership resolution (#327)
Current group membership resolution though very effective, is very slow. In a typical domain joined enterprise machine, adding a simple entry like the following in sshd_config
AllowGroups administrators
will incur a long delay in remote session establishment as sshd tried to pull all groups associated with the domain user.

Changes in this PR optimize the general case scenarios where no wild cards are in use. Specifically rules like this are processed promptly:

AllowGroups group1, group2, group3 //with no wild cards
Match Group group1 //single group with no negation and wild cards

Optimization is done by resolve the groupname in rule immediately to SID and checking its membership against user token. Enumerating the entire group membership is done on a lazy on-demand basis.

Beyond the optimization, there are 2 functional changes

- removed domain prefix for builtin groups
- removed domain prefix'ed versions of local groups since we are strictly following the convention that local principals shouldn't have any domain qualification.
2018-07-03 10:15:07 -07:00
bagajjal 8013f1377b implement freezero(), use localtime_s() instead of localtime() (#300)
PowerShell/Win32-OpenSSH#1121
2018-05-29 19:00:56 -07:00
Bryan Berns ec102dce28 Alternate Thread Creation API To Avoid Memory Leaks (#306)
* Alternate Thread Creation API To Avoid Memory Leaks

- Switched from CreateThread() to _beginthreadex() and ExitThread() to _endthreadex() in order to avoid potential leaks when linking with static CRT library.
- Addressed a variety of warnings that were being detected with static code analysis.

* Addressed Type Cast Warning

- Added explicit cast to the output of _beginthreadex() to avoid a compiler warning.

* Indentation Fix
2018-05-23 16:53:36 -07:00
Manoj Ampalam 3fb0c252c3
Refactor session logic (default shell, non PTY, child spawning) (#312)
Changes include:
- Removing sid from pwd structure to comply with Unix structure
- Integrating default shell logic within pwd
- pwd placeholder to allow logins using usernames not associated with Windows account (possible via custom LSA authentication)
- Moving all nonPTY logic from shellhost to session.c. 
- ssh-shellhost is now exclusively for implementing PTY
- Spawning all session processes from within a shell
- Validation checks in safely_chroot
2018-05-22 21:49:58 -07:00
Manoj Ampalam 7b28a316eb
Enable SFTP chroot support (#308)
- Added chroot implementation that simply stores the path in internal state and sets an environment variable
- Spawned processes pickup chroot from environment variable
- Core change in realpath and resolved_path_utf16 now take into account chroot path.
- Unit tests
- Other miscellaneous changes to account for chroot enabled logic in core code

PowerShell/Win32-OpenSSH#190
PowerShell/Win32-OpenSSH#292
2018-05-11 14:45:20 -07:00
Bryan Berns fe422e5c15 Enhanced Group Discovery / Normalized Names (#286)
Modified getusergroups() to use s4u tokens to discover nested groups and return them in NetBiosName\GroupName format.
Modified get_passwd() to internally normalize names to NetBiosName\SamAccountName format and changed functions that use it to translate to UPN where necessary.
Removed unnecessary support functions used by previous version of getusergroups().
Various refactoring and function consolidation / simplification.
Addressed several buffer over-read issues.

PowerShell/Win32-OpenSSH#553
2018-05-01 23:20:42 -07:00
Manoj Ampalam 1616b21ecb
Added support for hard links over sftp
https://github.com/PowerShell/Win32-OpenSSH/issues/1119
Added link() support using the CreateHardLink() function.
Made readlink() and link() declarations consistent with other functions.
2018-04-05 09:57:41 -07:00
Manoj Ampalam 32a7aec453 Ported upstream changes (7.7) 2018-04-02 22:30:15 -07:00
Bryan Berns 296c6934bc Added link() Support
- Added link() support using the CreateHardLink() function.
- Made readlink() and link() declarations consistent with other functions.
2018-03-31 07:52:58 -04:00
Bryan Berns 993cce0798 Added symlink() Implementation; Revised readlink() (#289)
- Added implementation of symlink() using native CreateSymbolicLink() function.
- Added unit tests for symlink behavior in readlink(), lstat, stat(), and symlink().
- Reworked readlink() to be more inline with POSIX readlink() behavior.
- Reworked symlink handling in stat/lstat due to revised readlink().
- Added additional error handling to readlink().
- Added symlink() Implementation - Memory Leak Fix
- Modified fileio_readlink() to properly free a temporary buffer it creates.
2018-03-29 10:54:38 -07:00
Bryan Berns d43856a300 Added Symbolic Link Support (#285)
Created readlink() implementation.
Separated, corrected lstat() implementation.
Added symlink file type indicator to returned request data.
2018-03-15 17:13:13 -07:00
bagajjal c85ba2b8c3 Separate binary path from cfg path and log path (#263)
Separate binary path from cfg path and log path, test update
2018-01-19 15:12:43 -08:00
Manoj Ampalam fdd54b6334
Implement Unix styled privilege separation in Windows (#258)
OpenSSh privilege separation model - http://www.citi.umich.edu/u/provos/ssh/privsep.html 
Posix_spawn is implemented in POSIX adapter as an alternative to fork() that is heavily used in Privilege separation. 
Additional state info is added to sshd to accommodate distinguishing the various modes (privileged monitor, unprivileged child, authenticated child).
Required service state (like config and host keys) is transmitted over pipes from monitor to child processes.
Changes to installation scripts and tests to accomodate new architectural changes
2018-01-15 13:57:31 -08:00
bagajjal bcf9c5336f SFTP fix to download a very large file in chunks #863 (#227)
PowerShell/Win32-OpenSSH#863
2017-11-20 23:25:01 -08:00
Manoj Ampalam 21ebb53a30 Multiple fixes (#224)
PowerShell/Win32-OpenSSH#894
Added logic to profile path retrieval to consider environment variables in path read from registry
PowerShell/Win32-OpenSSH#883
Added flags to support libssh2 SFTP. These are No-Ops for now. We may support them later if needed. Added PowerShell/Win32-OpenSSH#915 to keep track of TODO work item
2017-10-17 12:29:13 -07:00
bagajjal c9c715e707 Fix sftp scp file permission (#212)
PowerShell/Win32-OpenSSH#884
Convert the mode properly to file permissions.
If mode has "read" permission then we set the file permission to "read & execute"
If mode has "write" permission then we set the file permission to "Write & Modify"
Inherit the file permissions from the parent folder when sftp / scp creates the file on windows.
sftp - put & get.
scp - from local to remote windows machine.
2017-10-16 13:00:40 -07:00
bagajjal 6e7210d3c1 fix the CRLF issue, review comments related to allow/deny user/groups#861
* fix the CRLF issue
* fixing the allow/deny group review comments
2017-09-05 12:41:46 -07:00
bagajjal ab2aefff6d Fix allow/deny groups #816 (#203)
Fixing allow groups, deny groups. (PowerShell/Win32-OpenSSH#816)
Convert users, groups read from sshd_config to lowercase.
2017-09-01 14:53:12 -07:00
Manoj Ampalam 19d40e6668 Ported changes to support Windows 2017-08-28 00:32:51 -07:00
Manoj Ampalam dd88d8d5d4 Move to LibreSSL, Fixed issues arising from compiling Windows specific code at warling level 3 2017-06-13 10:33:47 -07:00
Manoj Ampalam bf124757d6 Fixed x86 build 2017-06-07 22:29:34 -07:00
Manoj Ampalam 849b637a7e Porting latest openssh/master changes to Windows 2017-06-07 22:04:05 -07:00
Yanbing 81bcaaa7cf Add mode support in open() and onboard file perm related changes and tests (#145)
PowerShell/Win32-OpenSSH#710
PowerShell/Win32-OpenSSH#725
PowerShell/Win32-OpenSSH#729
PowerShell/Win32-OpenSSH#731
PowerShell/Win32-OpenSSH#732
2017-05-23 21:45:38 -07:00
bagajjal e296463fc8 Add new unit testcases (#139)
PowerShell/Win32-OpenSSH#605
PowerShell/Win32-OpenSSH#602
PowerShell/Win32-OpenSSH#603
2017-05-22 22:50:51 -07:00
Yanbing afc6ca91f7 Fixes for #648 and #718
PowerShell/Win32-OpenSSH#648
PowerShell/Win32-OpenSSH#718
2017-05-18 12:15:18 -07:00
Manoj Ampalam 8a83d3360c Fixed key based auth with talking to docker containers
PowerShell/Win32-OpenSSH#677
2017-04-27 21:00:12 -07:00
Manoj Ampalam c3c5c1fa7f Support I/O redirection in all ssh clients (ssh.exe, sftp.exe and scp.exe) (#113)
PowerShell/Win32-OpenSSH#668
2017-04-14 16:15:32 -07:00
Yanbing 425bc4033f latestw + Test Infra upgrades
Includes
- CR changes for upstream PR
- Fix in spawn_child logic
- Test Infra upgrades
2017-03-24 12:35:52 -07:00
Manoj Ampalam 70da1e67ea fgets and utf8 functions for Windows (#87) 2017-03-06 16:18:40 -08:00
Manoj Ampalam 0ed1ef55f7 AF_UNIX IPC sockets client side support (#84)
AF_UNIX kind of sockets are now supported. socket() and connect() calls are implemented. Windows specific logic in authfd.c is now removed. https://github.com/PowerShell/Win32-OpenSSH/issues/532 is created to keep track of ssh-agent end point authentication
2017-02-17 21:02:59 -08:00
Yanbing 8e9236b03b Groupaccess support (https://github.com/PowerShell/Win32-OpenSSH/issues/463) 2017-02-14 13:43:06 -08:00
Manoj Ampalam a73b5d6def Cleaned up core sources for upstream PR (#78) 2017-02-10 14:02:02 -08:00
bagajjal 70784d5606 Fixed Denyusers issue when logging in with ssh username@domain@serverip (https://github.com/PowerShell/Win32-OpenSSH/issues/511) 2017-02-02 23:54:02 -08:00
Manoj Ampalam 9906e0515d Tidied do_exex_windows in session.c (https://github.com/PowerShell/Win32-OpenSSH/issues/510) 2017-02-02 15:03:21 -08:00
Manoj Ampalam affdad94cd Fixed progress meter issue (https://github.com/PowerShell/Win32-OpenSSH/issues/505) (#68)
Resulted due to off_t defined as long in Windows headers. Fix - override
as long long.
2017-01-29 23:54:24 -08:00