Repository navigation
Conversation
… before privileged copy (R294)
…d PE source (R295)
…snapshots (R344 F06)
…journal; trim debug (R344 F08)
…ing cold replay (R347)
… guard (R347 F01)
mohammadmohammadzadeh19960-code
left a comment
There was a problem hiding this comment.
AI-assisted technical review under the connected MMZ GitHub account; this does NOT assert that a named human personally reviewed or approved the change.
Exact PR #80 head 8695cd7c8afdb1906645c0948ef750f6b2d3a4ab fast-forwards the old reviewed R349 security source. The production change is isolated to the in-memory PowerShell cleanup source in installer/TaskbarMonitorEnhanced_Setup.cs (C# Git blob 57a7555): TBMEDeferredDirectoryLeaseSet uses no-FILE_SHARE_DELETE native directory handles, verifies final path / reparse bits and preserves owner ancestry through file inventory and removal.
Independent hosted Windows 2025/2022 test coverage: compiled native class witness 39329467616 2/2 success, six exact checks per guest; actual original compiled Setup-generated cleanup overlapped a separate process's real root-rename attempt AFTER first test-file deletion 39331803665 2/2 success, 14 exact checks/guest, native Win32 sharing violation 32 while cleanup process was alive, original cleanup exit 0, canary and hosted Build AppData SHA preserved. Full exact-head PR CI 39333066467 all three jobs SUCCESS. Two native + four live parent/actor GitHub ZIP/raw SHA pairs independently matched, with 12 + 21 rejected receipt mutations. R354 regression 39329109043 6/6 successful against same production Setup source.
SCOPED ACCEPTANCE ONLY. The narrow observed active root-rename denial is supported, but it is not exhaustive proof against final Release-to-nonrecursive-Delete timing, every NTFS leaf/reparse/link race, cross-account elevated Broker mutation, interactive Windows secure-desktop UAC, or unrelated thermal OS banner/speaker and external Defender Issue #6 attribution. The manual C# local-threat SARIF is not suppressed or dismissed. This is a COMMENT review and not permission to merge or publish an unaccepted security release.
mohammadmohammadzadeh19960-code
left a comment
There was a problem hiding this comment.
AI-assisted, evidence-scoped security review using the linked GitHub connection (not a claim of a person's independent approval). Exact reviewed head: f3a8418. R356 changes the final owned empty-directory deletion from Release+Directory.Delete(path) to SetFileInformationByHandle(FileDispositionInfo) on the verified pinned native directory handle, keeping the original 22,000-character EncodedCommand guard. On two actual disposable Windows guests the original compiled Setup passed Nominal, RootJunction, ChildJunction, and independent LiveRace (8/8 jobs; 94 named checks); all 8 GitHub artifact ZIPs and 10 raw receipts were independently SHA-verified; the typed verifier rejected 27 hostile receipt mutations. Native API feasibility passed Windows A/B with Win32 32 rename denial, Win32 145 nonempty refusal, and 0 exact empty-directory disposition. Full source Build and Verification 39336379393 succeeded (3/3), original PE tests 39336379320 succeeded (8/8), and the updated PR CI 39338293952 succeeded (3/3). The repository's installed and official unsigned v1.7.8 release is unchanged. This review accepts ONLY those scoped native deletion outcomes, not exhaustive NTFS/file-leaf races, privileged Sensor Broker reparse substitution, real interactive secure-desktop UAC, physical Glass notification/audio, or reporter-supplied Defender Issue #6 driver SHA/origin. COMMENT only: keep this PR open/unmerged pending distinct remaining gates; do not mistake static scanning/build PASS for total security acceptance.
mohammadmohammadzadeh19960-code
left a comment
There was a problem hiding this comment.
AI-assisted scoped review update (not a personal human approval): security candidate HEAD remains f3a8418, while the new R358 test-only source a481af7 changes ONLY test harness/workflow. The original production Setup C# blob 2ab641628dd5a265d0c85a380d44f081a1346ec6 and protected Helper blob a3a967c869b247afd8ae7fe697565cabac8ff1d2 are byte-identical on those heads. Actual unmodified compiled Setup PE Helper PREPARED journal cold replay was exercised on separate Windows 2025/2022 hosted admin guests against a distinct native symlink MoveFileExW attempt at the fixed protected Supervisor leaf: run 39343228831 2/2 PASS with 15 exact checks per host, Win32 5 denial while Helper alive and trusted PREPARED/READY journal present; exact prior protected Broker/Supervisor/owner SHA, disabled scheduled task action/principal/export XML, journal retirement and final guest uninstall restored. Real independent GitHub ZIP/archive/raw SHA match both hosts. Project-accepted independent verifier rejected 26 typed receipt mutants; an additional separate reviewer validation rejected 19 more mutations and confirmed byte-for-byte zipped receipt linkage. Full source Build 39343228743 3/3 PASS. R358 local project authority commit fcff314; the test-only branch was NOT merged into the production security PR. This closes only the observed privileged symlink move attempt in full original Helper PREPARED replay; it does not prove every NTFS/hardlink/cross-user race, true secure-desktop interactive UAC, physical OS thermal banner or speaker, or external Defender Issue #6 reporter SHA/origin. No owner installed/public unsigned v1.7.8 changed. COMMENT only; do not interpret this as unconditional security acceptance or a human review.
Current security review — production candidate R356, validated through R360
Exact PR head:
f3a841856c6b7eeeec41beb464fc22af88e3aef8(same in the personal and organization review branches). Status: scoped security review only, not merged and not published. The official, owner-installed v1.7.8 remains intentionally unsigned and unchanged. This review is AI-assisted technical evidence, not a claim of a named person's independent approval.Accepted production change: the original Setup's deferred cleanup uses
SetFileInformationByHandle(FileDispositionInfo)to delete verified empty directories via their still-pinned native handles, removing the previously observed release-to-path-delete window. The protected Helper's existing Broker/Supervisor leaf-identity and journal-recovery safeguards remain in place. The original 22,000-character PowerShell command guard was preserved.Verified evidence (exact versions and scope):
PREPAREDjournal cold recoveries with separate native symlink replacement attempts denied; original protected binary/task XML restored.PREPAREDjournal recoveries with real two-link hardlinkMoveFileExWattempts denied (Win32 5); external file hashes preserved, 30 independent receipt mutants rejected. R360 Build successful. R358/R360 are test-only descendants, not additional unmerged product changes.Explicit remaining limitations: no exhaustive claim for all NTFS/cross-user races or all malware; real owner-visible secure-desktop UAC consent and actual physical Windows banner/speaker delivery are not independently witnessed. Issue #6 awaits the original reporter's flagged driver SHA-256 and download/installation origin; do not bypass Defender. Signing is intentionally waived for this release.
Decision: keep this PR in review; do not equate CI success with blanket security acceptance, a merged release or the already installed v1.7.8.
Historical R349–R355 review notes (retained for provenance)
Historical R355 security candidate — scoped acceptance, not yet merged
8695cd7c8afdb1906645c0948ef750f6b2d3a4ab, derived by non-force fast-forward from R34946c896f; product change is confined toinstaller/TaskbarMonitorEnhanced_Setup.cs. An in-memory native directory lease pins canonical profile/AppData and owned subdirectories withoutFILE_SHARE_DELETEduring original deferred cleanup, with native final-path and reparse verification.R355commit4ad4244.Remain OPEN: the final per-directory release-to-
Directory.Delete(..., false)micro-window and other NTFS/privileged Broker leaf races are not exhaustively proven; true user-visible native secure-desktop UAC consent, real owner OS thermal warning banner/speaker and external Issue #6 reporter-specific WinRing0 driver SHA/source have not been independently witnessed. Do not infer full malware clearance or dismiss CodeQL reports. This candidate is not authorized as complete security FINAL, and is not a change to installed/public intentionally unsigned v1.7.8.Historical R349 review context (preserved)
R349 exact embedded native leaf handle and original Helper regression (2026-10-19)
46c896f123a98aa7fa234bd4b266c8003ebb621e, non-force fast-forward descendants of R347. The personal PR remains OPEN; organization PR Release 1.0.1: resilient sensors, AMD/Intel GPU portability, adaptive taskbar placement #2 remains OPEN/DRAFT. Owner original unsigned v1.7.8 executable/Glass config, public release and protectedmainwere not changed.TBMEProtectedBrokerLease.OpenReplayLeafusing actualGENERIC_READ|GENERIC_WRITEand onlyFILE_SHARE_READ, withFILE_FLAG_OPEN_REPARSE_POINT, file-type/reparse/hardlink count and final-path checks. It retains each opened original snapshot leaf handle across PREPARED file write/readback, old task restoration and journal retirement. Restore writes and SHA rereads use the same exact handle, and preopens all original snapshot files before writing. Already-held DELETE access prevents new exclusive lease (fail closed). Compacting CSharp comments/indentation kept the original single in-memory PE resource and trustedRunAscommand length limits intact; no user-writable script extraction, security bypass or new driver installation.F5E5CBEA/actor7651D72E; B parent9E224CB5/actor81C90E43). Temporary ProgramFiles fixtures and canaries cleaned/checked.IOExceptionwithWIN32_32, corrected without product code change. Initial uncompressed CSharp triggered the established Setup command-line length limit, corrected by removing only CSharp comments/indentation (never relaxing the limit).R347 actual Windows privileged directory-rename defense (2026-10-19)
2e246134ddf5a3efcfa66900d6d97fc19167643f; both security PRs have been non-force fast-forwarded, remain OPEN / UNMERGED (organization PR Release 1.0.1: resilient sensors, AMD/Intel GPU portability, adaptive taskbar placement #2 stays Draft). Original user-installed unsigned v1.7.8, Glass config, protectedmain, release and CodeQL alerts were not changed.TBMEProtectedBrokerLeaseusedFILE_READ_ATTRIBUTESwhich Microsoft documents as exempt from sharing restrictions; hostile privileged directory rename succeeded despite the handle. F01 requestsFILE_LIST_DIRECTORYwithFILE_SHARE_READ|FILE_SHARE_WRITEand noFILE_SHARE_DELETE, pins the realProgram Files, protected product root andSensorBrokerdirectory across hash-bound PREPARED journal replay and task restoration; uses one exact Setup-compatible nativeAdd-Typehere-string.Current supplemental security evidence — R345 serial privileged foreign-member refusal (2026-10-19)
ce33b95b859845d865e5bb90db5120fdf0ed129f; R345cc85d570e18bf30a3cc226212b6884f940150e1fis a distinct test-only branch with no additional product change. Both PRs remain unmerged (organization PR remains Draft), and official unsigned v1.7.8 and owner Glass settings are unchanged.DEGRADED_ROLLBACK_RECOVERY_REQUIRED, preserved the unexpected file and PREPARED journal. After the exact test-owned file alone was removed and hash checked, identical Helper restored prior owner, Broker/Supervisor binaries and Task XML, retired journal, and final Uninstall succeeded. Exact-head full CI 3/3 PASS.CURRENT scoped security review — authenticated protected uninstall PREPARED journal recovery (R344, 2026-10-19)
ce33b95b859845d865e5bb90db5120fdf0ed129f(non-force fast-forward from R338ce91a0328e4af353e7e77ed227b9900327e82e76); PR remains OPEN / UNMERGED. The unsigned official v1.7.8, both protectedmainrefs, maintainer's running Main executable and Glass settings are untouched. No release or driver installation was performed.PREPAREDsnapshot BEFORE task/file removal. Its exact cold path refuses an unowned/foreign tree without a trusted journal, verifies the original owner marker, restores previous bytes/Task principal/action/XML, retires the journal, then a new unchanged original Helper may finish Uninstall. Two independently reproduced root causes were repaired: compositeFileSystemRights.Modifymasks incorrectly flag Users ReadAndExecute as Write, and local-versus-$script:PowerShell state shadowing had emitted a zero-file PREPARED snapshot. Diagnostic-only temporary logging was removed from the accepted PE source.DEGRADED_PREVIOUS_LAYER_RESTORED, journal retirement, third originalRunAsHelper finished withUNINSTALLED/ exit 0. Eight real NTFS ACL proof receipts (6 checks each) and two direct unchanged original-Helper negative tests reject both unowned/no journal and foreign SID marker/no journal while preserving protected bytes. All 18 raw typed guest receipts independently SHA-256 and commit-bound verified, official Setup candidate SHA25621745837189E8897BC77877EC312CE087C04A98846CDFC5297BD3C4AD8383B38. Earlier red/failed test runs remain recorded and were not treated as PASS.R340–R341 exact original Sensor Helper process and early-kill evidence (2026-10-19)
ce91a0328e4af353e7e77ed227b9900327e82e76, OPEN and UNMERGED. The additional isolated test-only headb992c4e13770a5a08c281c5f433bb13edf45a9b3modifies onlybuild/Test-R340-OriginalHelperActualUninstall-Native.ps1and.github/workflows/audit-r340-real-original-helper-uninstall.yml, not product source, owner installation/config, either protectedmain, or official unsigned v1.7.8.TBME_Setup_Elevated_Helper.ps1was invoked via the original System32 PowerShell 5.1BuildElevatedSensorProcessInfoRunAsfactory against an exact temporary Administrator-owned realProgram FilesBroker + disabled, never-executed global task with matched owner SID and binary SHA. Nominal R340 A/B 9/9 checks: actual helper process exited0, wroteUNINSTALLEDresult/log through native sink, removed temporary Broker and task. Killed R341 A/B 10/10 checks: the original Helper (not synthetic worker) was forcibly terminated afterBEGIN mode=Uninstalllog before any protected files/task were altered, witnessed unchanged task and exact binary hashes, and a different PID using identical real factory completed normalUninstall/cleanup with exit0.F087C4B54175A620027F9CFEAE9A4CC8E931085DD957BA1DF2142C9BED2F9E32, BC852A96516FC341E313815B4700886EDBA6ADB6EED6D60506A65035FDB6821E3; R341 early kill A2578F5104C291E6D871FCAF8388E9C399245F1234681C57F3BD3FED41AA21524, BF87B406EBEF3917AD53B1CF4FC27028A1F226B0CADD65141FAF209C9C12E4DA0. Exact test branch full CI 39218769924 3/3 SUCCESS. Test-harness-only failed predecessors 39216484416 (Scheduler account-name/SID), 39217108563 (PS5.1 reflection object wrappers), and 39218420796 (SwitchParameter to integer receipt) were diagnosed, corrected and not counted as PASS.PREPAREDjournal's post-mutation cold restoration or active competing privileged writer/reparse races. Seven manually compiled CSharp CodeQL sinks (4 Supervisor, 3 Setup), physical Glass temperature banner/speaker, original reporter Defender Issue do not donwload. virus #6 SHA/provenance, and independent security review remain unresolved. No driver installed, PR merged, security warning dismissed or official Release changed.Earlier R339 scoped real-other-SID Windows evidence for the unchanged R338 security candidate (2026-10-19)
ce91a0328e4af353e7e77ed227b9900327e82e76. R339 test-only commit78f60a99c6bf0c5ba63848245196756d521b765dadds two Windows PowerShell native test scripts and one disposable GitHub Actions workflow; no product source, protectedmain, public release or owner installation/config changes.TrustedWorkerPathsaccepted its approved protected executable and output paths 32 times on Windows 2025 / 51 on Windows 2022, with hashes intact. Both accounts, private Program Files fixture and ProgramData scratch were removed; pre-existing harmless build-only LocalAppData scratch was preserved. Both typed raw guest receipts independently SHA-256-checked. Full source CI 39213817390 3/3 SUCCESS.R338 security review code candidate — exact privileged Supervisor CLI trust boundary (2026-10-19)
ce91a0328e4af353e7e77ed227b9900327e82e76, non-force descendant of R337997c6f349fa64cfe6385113a9ede46d35479cc7a. Production fixedf2610c20789028050b3ea76b1bee01c77d07bf; the final child commit adds only an equal-threat manual compiled CodeQL workflow. Both protected main branches, official immutable unsigned v1.7.8 and the maintainer's installed Main/config are unchanged.TaskbarMonitorSensorSupervisorpreviously accepted arbitrary CLI--brokerexecutables, arbitrary--outputtelemetry destinations and unknown extra tokens before building childProcessStartInfofields. R338 requires one exact four-token pair, binds the Broker to the adjacent fixed protected Program Files filename and output to the exact canonical user LocalAppData path using OS known folders, rejects reparse and altered source directory, and constructs production paths from those OS known folders rather than forwarding CLI values. This is a bounded prelaunch mitigation, not atomic path-race proof or a real high-integrity UAC test.Historical unmerged security review — R337 protected sensor first-install recovery (2026-10-19)
997c6f349fa64cfe6385113a9ede46d35479cc7a, fast-forward descendant of R335fa57ae2c89304974f4b91d5a9ca7c3d5b06f57e1. Protectedmain, immutable unsigned official v1.7.8, live Main/config and user sensor services were not changed.Historical R298 security review — absolute native PowerShell for runas
6b38199821652515c5c0f0d13952be687d4c333d, non-force descendant of R297c20e4ee. The personal protectedmain, official immutable unsigned v1.7.8, owner Main/config and protected sensor services remain unchanged.ProcessStartInfo.FileName="powershell.exe"withUseShellExecute=trueandVerb="runas". Windows ShellExecute searches the current directory and PATH for an unqualified executable. R298 now constructs a fully qualified executable from the OS-providedEnvironment.SystemDirectory, checks the expected WindowsPowerShell/v1.0 file and each intermediate component for reparse, pinsWorkingDirectoryto that trusted directory and keepsrunasplus the existing bounded in-memory-EncodedCommandcontract. No fallback to an unqualified filename.runasand-EncodedCommand, forgedpowershell.exein the test's CWD and PATH ignored, and both Install/Uninstall pinned to the same system executable. Prior R286–R297 native and visual regressions PASS. The guest did not actually invoke UAC or modify a driver, task or protected service.1972442411FAILED with 11 High (10cs/path-injection, onecs/command-line-injection); all primary fingerprints unchanged from R297 analysis1972389031. Static taint starts atEnvironment.GetFolderPath(LocalApplicationData)in an asInvoker Setup; independent per-user vs elevated exploitability analysis and actual UAC behavior remain open, as does R296 memory-only rollback's process-crash durability. No suppression, merge, signing or new release is implied.Historical R053 trace — R052-only analysis (superseded as PR head by R290)
The historical R052 organization CodeQL check at that R052 commit reported nine new High
cs/path-injectionfindings. The corresponding CodeQL check failed; this one-line R052 patch did NOT close those findings.The full GitHub SARIF trace for analysis
1970888296identifies the source of the tainted value asEnvironment.GetFolderPath(SpecialFolder.LocalApplicationData)in the per-userAppRoot, flowing throughUPath()and into upgrade/rollback filesystem checks. It does not show the on-diskReadStageIndex().parts[0]string as the origin of those nine findings. The new allowlist rebinding is still valid defense in depth but is not a CodeQL acceptance fix.A separate security assessment should establish whether using the OS-known per-user LocalAppData folder in an unprivileged per-user installer creates an actionable cross-boundary path risk, accounting for the existing canonical-root and reparse/junction checks. If legitimate, fix the trust boundary with regression evidence. If a static-analysis false positive, document the exact reasoning for human review; do not suppress alerts simply to obtain a green check. Actual installed Windows upgrade/rollback remains untested here.
Security review candidate: upgrade-journal path binding (R052)
The organization synchronization draft surfaced nine new High CodeQL path-expression alerts in the installer upgrade/rollback journal. The affected
ReadStageIndex()already compares every journal label withUpgradeTargets[i].Reland rejects a mismatch, but it then passed the on-disk string toStageEntry. This narrowly scoped fix instead binds the validated label back to the compile-time allowlisted value before file operations.Exact scope and evidence
main:9960a06dba606d1c93b8ca2b84e0e3e25ca4f68d.security/upgrade-journal-constant-path-r052:486abbbbf7d1c50097113d77c8f00ee13b393c09.installer/TaskbarMonitorEnhanced_Setup.cs; one added comment and one binding change. Exact journal-format comparison and existing checksum/reparse/rollback checks remain.git diff --checkPASS. Three offline synthetic G13/G14 host-witness, G15 signing-origin and G16 publication-contract test scripts PASS.The organization draft will be advanced only non-forcibly, with SHA readback, to the same commit so its CodeQL PR scan can analyze the patch. Neither personal nor organization protected
main, official releases, installed applications or privileged settings were changed by this proposal.Review needed: Request independent, real Owner assessment before merging the source patch or the eventual organization synchronization.