100 Commits

Author SHA1 Message Date
Tess Gauthier
24449c64b7
Merge pull request #684 from tgauth/merge-9.4
Merge 9.4
2023-09-27 15:33:29 -04:00
Tess Gauthier
f87f0c57a2
add check for program data folder permissions during sshd service startup (#686) 2023-09-05 12:59:28 -04:00
Tess Gauthier
a6229b9e7b fix hostkey tests 2023-08-28 14:51:40 -04:00
Tess Gauthier
e4b56ece19
revert motw entirely for scp and sftp (#668)
* revert motw entirely for scp and sftp

* revert scp
2023-03-15 13:33:53 -04:00
Tess Gauthier
2bf8005da1
limit scp mark of the web attempt to pull case and change logging to debug3 (#652) 2023-01-09 15:02:24 -05:00
Vivian Thiebaut
706441cbd0
Handle some codeQL warnings and errors (#645)
* Handle com codeql warnings and errors

* Handle additional codeql errors and warnings

* Add comment to changes made on upstream code

Co-authored-by: Tess Gauthier <tgauth@bu.edu>

* Fix diplicated return statement

Co-authored-by: Tess Gauthier <tgauth@bu.edu>
2022-12-02 13:59:24 -05:00
Tess Gauthier
11e2996573
address codeQL warnings (#598)
* codeql fixes

* fix type mismatches

* fix pointers in w32_time methods

* fixes for codeQL warnings

* modify checks for codeql warnings

* add comments for codeql suppressions

* additional codeql fixes and suppressions

* add codeql fixes

* add comments for codeql

* add comments for codeql

* switch from debug to error log messages

* fix another merge conflict

fix line endings in gss-sspi.c

* add null check in channels.c

* address PR feedback

* address additional review feedback

* add CodeQL comments to common code

* fix unittest-win32compat

* fix unit test

* address review feedback

* remove suppression
2022-11-30 11:57:01 -05:00
Tess Gauthier
24c095e785
add motw to scp and sftp (#614)
* add motw to scp and sftp

* retrigger appveyor

* fix motw for filepaths with unicode characters

* modify error handling

* add debug for appveyor

* modify motw method to use openssh method to open filestream

* fix return value for null fileStreamPath pointer

* fix spacing, comments, and failure message

* clean up mark of the web method

* incorporate MapUrlToZone for sftp & partially scp

* update scp for motw failure case

* Update contrib/win32/win32compat/misc.c

Co-authored-by: Paul Higinbotham <paulhi@microsoft.com>

* address pr review comments

* refactor failure handling in motw methods

* add CoUnitialize after CoInitializeEx call

* use urlmon.h constants for com instance

* update var name for consistency

Co-authored-by: Paul Higinbotham <paulhi@microsoft.com>
2022-09-08 11:55:10 -04:00
Tess Gauthier
04dd589b95
fix debug exception with static method (#607) 2022-08-03 10:42:55 -04:00
Marc-André Moreau
89cec9823c
fix duplicate symbols from posix_compat, openbsd_compat with libcrypto (#593) 2022-04-08 14:03:18 -07:00
bagajjal
4d2ea7f2f2 fix the error message when user tries to login with just domain name 2021-05-12 14:09:30 -07:00
bagajjal
1abee49b13 remove unnecessary logs 2021-05-12 11:18:10 -07:00
Oldřich Jedlička
62ea86fdbe
Rework username same as hostname (#469) 2021-05-06 15:20:35 -07:00
bagajjal
54824dd72e
Administrator non en-us OS. (#488) 2021-03-25 14:25:42 -07:00
bagajjal
2539e60536
fix HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH registry permissions (#484) 2021-03-22 19:17:33 -07:00
Bryan Berns
106db2baac
Make w32_rename() Atomic For Files (#438) 2020-04-02 10:17:27 -07:00
Bryan Berns
2c2ac97333 Add Long File Name Support (#400) 2019-12-17 12:40:36 -08:00
Bryan Berns
7dd58ed31f Allow Use Of Non-ASCII Character In SSH Client Passwords (#322)
* Allow Use Of Non-ASCII Character In SSH Client Passwords
2019-12-12 14:33:05 -08:00
sasdf
1b9b599f60 Change /dev/null to NUL (#403)
1) Change /dev/null to NUL.
2) Add logic to check for NULL_DEVICE_WIN in fileio.c and misc.c
2019-12-12 14:30:11 -08:00
bagajjal
a49bdce666
Port Unix bash tests (#410)
Leverage upstream test infrastructure to run against windows openssh binaries.
2019-12-09 15:12:46 -08:00
Bryan Berns
25588ffb7a Potential Bug When First Character In Path Is Unicode (#398)
Fix is_absolute_path() to ignore non-ASCII values.
2019-12-09 11:31:22 -08: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
bagajjal
0d93457a2e Added compression support vai Zlib (#404) 2019-11-01 10:57:34 -07:00
Bryan Berns
8346fc0d43 Correct Unicode Path Handling (#388)
Adjusted realpath() to use _wfullpath() to handle cases where paths may contain unicode characters.
Addresses PowerShell/Win32-OpenSSH#1401.
2019-07-16 11:42:02 -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
2abb7748a9 Address Renaming Issue With exFAT File Systems (#381)
- Updated Win32 error translation table to translate ERROR_INVALID_FUNCTION as EOPNOTSUPP which in turn allows the SFTP rename capability to failover to rename() when link()/unlink() combination does not work due to the volume not supporting it.
- Addressed file security descriptor with no defined DACL.
PowerShell/Win32-OpenSSH#1357
2019-03-25 09:53:23 -07:00
Yanbing
a75116b6f8 Fix of 1211 and 1082 (#349)
PowerShell/Win32-OpenSSH#1211
PowerShell/Win32-OpenSSH#1082

Added support for posix_spawnp that executes the command directly instead of appending path. (SH_ASKPASS and proxy command use this). Refactored posix spawn commandline building logic to automatically account for Windows CRT escaping rules on all arguments.
2018-11-05 12:22:20 -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
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
Yanbing
ed70a1a7f8
Add debug msg, replace API call incompatible with onecore , add build script (#324)
Add debug msg, replace API call incompatible with onecore , add build script
2018-06-18 22:39:31 -07:00
Manoj Ampalam
9369d870ad
upped version to 7.7.1.0 and fixed some issues with session path resolution (#320)
upped version to 7.7.1.0 and fixed some issues with session path resolution
2018-06-04 21:15:18 -07:00
Bryan Berns
3b450d5072 Updated SSHD Password Generation (#317)
Updated SSHD user password generation routine to be longer and more complex. This should satisfy systems with password filters that require more character types or very long passwords.
Updated routine to now securely zero memory for the SSHD account password.
Corrected attempt to write to NULL pointer by localtime_s() in localtime_r() and made function return NULL on error per specification.
Addressed various compiler / code analysis warnings.
2018-06-04 21:10:46 -07:00
Manoj Ampalam
1e0c864707
session process path changes (#319)
Added utility to build session process command line - this accounts for restrictions from various shells. With these changes, scp and sftp-server are expected to be machine wide PATH if a custom shell (other than cmd.exe) is defined. Added comprehensive test cases.
Fixed issue with USERNAME env variable containing domain prefix too.

PowerShell/Win32-OpenSSH#1165
PowerShell/Win32-OpenSSH#1165
PowerShell/Win32-OpenSSH#1171
2018-06-04 12:16:13 -07:00
Bryan Berns
710050b186 Remove None/Domain Users Group Filter (#316)
- Removed logic that was excluding the group membership SID that matched 'None' on workgroup computers or 'Domain Users' on domain systems.
- Removed test that was checking that AllowGroups failure if user was not in any group at all.  This is no longer testable since user will always be a member of at least one group.

https://github.com/PowerShell/Win32-OpenSSH/issues/1167
2018-06-03 08:23:30 -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
471b76dbd5 Updates To Address OneCore Linking (#311)
* Updates To Address OneCore Linking

- Modified generate_s4u_user_token() and sys_auth_passwd() to dynamically load TranslateNameW() to avoid OneCore static library linking.
- Modified getusergroups() to avoid Lsa* calls that are not present in OneCore libraries.

* Updates To Address OneCore Linking - Revisions

- Corrected failure detection logic when TranslateNameW() cannot be located.
2018-05-23 16:55:55 -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
236b04b335
Tentative changes to support sshd in interactive mode (#313)
Added support to run sshd as non-system. In this mode, sshd can authenticate only the user that sshd is running as, and only via public key authentication.

PowerShell/Win32-OpenSSH#1153
2018-05-22 22:24:23 -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
Bryan Berns
808a4ac5ce
Merge branch 'latestw_all' into path_fixes 2018-04-24 05:11:43 -04:00
Manoj Ampalam
c24cf7945e 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-24 05:00:23 -04:00
Bryan Berns
8c86f30a0f Reworked Path Resolution Function - Review Changes
- Changes based on review comments.
2018-04-24 04:47:09 -04: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