1
0
mirror of https://github.com/winfsp/winfsp.git synced 2026-06-29 15:51:04 -05:00
Commit Graph

40 Commits

Author SHA1 Message Date
Bill Zissimopoulos 624f285452 update source copyright for 2026 2026-03-04 15:54:27 +02:00
Bill Zissimopoulos 7f82326454 sys: FspFastIoDeviceControl: add a couple of fixes
- Check that the operation succeeded prior to copying to the output buffer.
- Avoid information leaks by only copying what is necessary to the output
buffer (suggestion by Tay Kiat Loong).
2026-02-17 20:48:01 +02:00
Bill Zissimopoulos 13d306f586 sys: FspFastIoDeviceControl: check input/output buffer lengths 2026-02-17 17:07:28 +02:00
Bill Zissimopoulos ae40f0edb1 sys: FspFastIoDeviceControl: fix exploit reported by Tay Kiat Loong
The WinFsp "transact" protocol is used by user mode file systems to interface
with the FSD. This protocol works via the DeviceIoControl API and uses the
FSP_IOCTL_TRANSACT control code. The FSP_IOCTL_TRANSACT code is marked as
METHOD_BUFFERED.

When the DeviceIoControl call is forwarded as an IRP, the METHOD_BUFFERED flag
instructs the kernel to copy user mode buffers to kernel mode buffers (and
vice-versa). However when the DeviceIoControl call is forwarded via the FastIO
mechanism the METHOD_BUFFERED flag is ignored. This means that when WinFsp
added support for DeviceIoControl FastIO, the FSD started accessing user mode
buffers directly.

This means that a malicious file system could attempt exploits like changing
or freeing a buffer while the FSD is reading it. Tay Kiat Loong developed a
POC exploit which demonstrated this vulnerability.

This commit fixes the problem by patching FspFastIoDeviceControl to add the
missing METHOD_BUFFERED handling.
2026-02-17 15:21:35 +02:00
Bill Zissimopoulos c8366af48c update source copyright for 2025 2025-05-15 20:33:31 +01:00
Bill Zissimopoulos 7551193ad7 update source copyright to 2024 2024-01-08 12:38:44 +00:00
Bill Zissimopoulos c0fa5696d7 sys: FspVolumeFastTransact 2022-05-17 17:25:18 +01:00
Bill Zissimopoulos 43af829d46 sys,dll,inc: FSP_IOCTL_TRANSACT 2022-05-16 21:40:01 +01:00
Bill Zissimopoulos 751eaa69df update source copyright to 2022 2022-01-07 17:30:49 +00:00
Bill Zissimopoulos 6e3a8f70b2 update source copyright to 2021 2021-05-21 15:57:05 -07:00
Bill Zissimopoulos aedf01a384 update source copyright for 2020 2020-01-02 17:50:40 -08:00
Bill Zissimopoulos 9436fd8402 sys: implement SectorSize queries
- IRP_MJ_QUERY_VOLUME_INFORMATION/FileFsSectorSizeInformation
- IOCTL_STORAGE_QUERY_PROPERTY/StorageAccessAlignmentProperty
2019-09-06 20:52:15 -07:00
Bill Zissimopoulos de75454d50 sys: FspFsvolDeviceControl: disable mountdev handling on fsvol devices 2019-09-06 15:43:20 -07:00
Bill Zissimopoulos a47f853beb sys: mountdev: mount manager support 2019-09-05 09:54:36 -07:00
Bill Zissimopoulos d2de5e996c update source copyright for 2019 2019-02-28 10:39:31 -08:00
Bill Zissimopoulos 5d90c35e20 sys: FspFsvrtDeviceControl: STATUS_UNRECOGNIZED_VOLUME
This fixes GitHub issue #177. All credit for the investigation and
suggested workaround goes to @thinkport.
2018-11-21 15:32:25 -08:00
Bill Zissimopoulos 75ae8daf8f update commercial disclaimer 2018-08-21 18:09:33 -07:00
Bill Zissimopoulos 894ae7b8f3 sys,dll: DeviceControl operation 2018-05-04 13:56:20 -07:00
Bill Zissimopoulos a4629b8f8b sys: fsmup device
- This commit introduces the fsmup device, which is a major change in how
network file systems are handled. Previously every network file system's
fsvol device was directly registered with the MUP. Now there is a single
fsmup device that is registered with the MUP; network file systems' fsvol
devices register with fsmup instead. The fsmup device maintains a prefix
table which it uses to demultiplex and forward requests to the appropriate
fsvol device.
- This device change was necessatitated to fix issue #87.
2018-01-16 10:38:52 -08:00
Bill Zissimopoulos 9bd9cf4fbd update source copyright notices for 2018 2018-01-03 15:29:38 -08:00
Bill Zissimopoulos a57325e8af update source copyright notices for 2017 2017-01-05 13:56:18 -08:00
Bill Zissimopoulos bd952253fb cosmetic fix 2016-10-11 11:39:17 -07:00
Bill Zissimopoulos c7780cf7fa license: switch to GPLv3 from AGPLv3 2016-10-10 21:33:27 -07:00
Bill Zissimopoulos 968de4689c inc,src,tst: add AGPLv3 notices 2016-04-25 14:29:05 -07:00
Bill Zissimopoulos 7ff99da000 update copyright notices for 2016 2016-03-17 14:59:46 -07:00
Bill Zissimopoulos eda129ae81 sys: FSP_IOCMPL_DISPATCH now returns NTSTATUS 2016-01-27 11:59:52 -08:00
Bill Zissimopoulos 1ed7575316 Major refactoring: WIP 2015-12-22 16:25:42 -08:00
Bill Zissimopoulos e71ecd5fa1 sys: devctl: IOCTL_REDIR_QUERY_PATH_EX 2015-12-21 15:49:51 -08:00
Bill Zissimopoulos e2c36c0c2d sys: fsctl, devctl: debug logs 2015-12-21 15:44:53 -08:00
Bill Zissimopoulos 7197501c9a Major refactoring: WIP 2015-12-20 10:57:45 -08:00
Bill Zissimopoulos 2668e05748 sys: WIP 2015-11-28 13:17:46 -08:00
Bill Zissimopoulos 7ab5998c49 sys: WIP 2015-11-28 13:08:34 -08:00
Bill Zissimopoulos d7e9a25d37 sys: static analysis fixes 2015-11-28 00:01:39 -08:00
Bill Zissimopoulos 97c98ac265 sys: WIP 2015-11-27 23:37:57 -08:00
Bill Zissimopoulos 0db1f0614b sys: static analysis fixes 2015-11-27 23:30:59 -08:00
Bill Zissimopoulos 7fd635a6ab sys: driver.h: FSP_ENTER_IOC/FSP_LEAVE_IOC 2015-11-27 12:59:15 -08:00
Bill Zissimopoulos ee1663100a sys: I/O completion functions 2015-11-27 12:14:06 -08:00
Bill Zissimopoulos 80d6afc7b6 sys: WIP 2015-11-22 12:23:41 -08:00
Bill Zissimopoulos d6f1702af7 sys: WIP 2015-11-21 21:25:19 -08:00
Bill Zissimopoulos 4d910c7fa8 sys: rename files 2015-11-20 17:50:14 -08:00