Skip to content

AetherScreens v2.6.0

Choose a tag to compare

@bcblr1993 bcblr1993 released this 07 Nov 23:22
· 2 commits to master since this release

AetherScreens v2.6.0 — Protocol Stack, Audio Reassembly, Shared Drive Sandboxing & Memory Hardening

Highlights

  • RDP Audio & Format Hardening (RDPAudioFormat / RDPAudioSession / RDPAudioPlayer):
    • Eliminated a 16-bit integer overflow in RDPAudioFormat.isPCM16Bit when validating channelCount * 2, bounded channel counts (1...8) and sample rates (8,000...192,000 Hz), routed RDPSND packets through RDPStaticVirtualChannelReassembler so fragmented audio PDUs never corrupt the stream, and hardened AVAudioEngineConfigurationChange recovery.
  • O(bits) RSA Certificate Division & Strict MSB Validation (MCSConnectResponse):
    • Replaced repeated subtraction in remainderLittleEndian with $O(\text{bits})$ bitwise shift-and-subtract long division and enforced activeModulus.last != 0 so malformed server RSA blobs cannot stall the preflight thread.
  • Shared Directory Drive Sandbox & Handle Safety (RDPSharedDirectoryDrive):
    • Added lstat symlink inspection in resolveSandboxedURL to block dangling symlinks escaping the shared root, changed handleDelete on directories to use POSIX rmdir() (returning STATUS_DIRECTORY_NOT_EMPTY instead of recursive deletion), bounded open file handles at 4,096 with collision-free ID allocation, and routed RDPDR packets through static virtual channel reassembly.
  • Static & Dynamic Virtual Channel Memory Bounds (RDPStaticVirtualChannelReassembler / ConnectionPreflight):
    • Added automatic buffer reset (keepingCapacity: false) on any malformed fragment, bounded dynamic channel cbTotalDataSize to 64 MB, and fixed MCSDisconnectProviderUltimatumPDU slice index handling.
  • RFB, AppleFileCopy & RDP Client Memory Reclamation (RFBClient / RDPClient / RDPClipboardFileDownloader):
    • Replaced aligned UInt16 pointer loads with .loadUnaligned(as: UInt16.self) in RFBClient, eliminated intermediate Data copies in Tight rectangle decoding, freed readBuffer / decryptedReadBuffer / lastPublishedFiles capacities on disconnect, and replaced uncancelled asyncAfter closures with cancellable DispatchWorkItems in RDPClipboardFileDownloader.