mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8.5 KiB
8.5 KiB
| 1 | Group | Id | Mutation | File | Line | TestsThatFailed | Configurations | Detected | Note |
|---|---|---|---|---|---|---|---|---|---|
| 2 | access | M1 | Drop the WriteError for AddAceError in the retry-failed catch (swallows the error of the item) | AddAccess.cs | 149 | Add-NTFSAccess PathComplex: one AddAceError for the blocked path, unchanged, -PassThru only for the changed path | ElevatedDesktop, ElevatedCore | True | |
| 3 | access | M2 | Remove the continue after RemoveAceError in the retry-failed catch (-PassThru writes for the failed item too) | RemoveAccess.cs | 166 | Remove-NTFSAccess PathComplex: one RemoveAceError for the blocked path, unchanged, -PassThru only for the changed path | ElevatedDesktop, ElevatedCore | True | |
| 4 | access | M3 | Change the category of ClearAclError from WriteError to InvalidOperation in the retry-failed catch | ClearAccess.cs | 89 | Clear-NTFSAccess: ReadFileError and ClearAclError, each by category and target | ElevatedDesktop, ElevatedCore | True | |
| 5 | access | M4 | Change the category of ReadFileError from OpenError to ReadError | GetAccess.cs | 96 | Get-NTFSAccess Path: the error of a missing path by category and target | ElevatedDesktop, ElevatedCore | True | |
| 6 | access | M5 | Invert the orphan predicate (IsNullOrEmpty to not IsNullOrEmpty), so that it keeps resolvable accounts | GetOrphanedAccess.cs | 75 | All three Get-NTFSOrphanedAccess tests (Path state, Path error and pipeline, SD) | ElevatedDesktop, ElevatedCore | True | |
| 7 | access | M6 | Invert the -Account filter (== to !=) | SimpleAccessCmdlets.cs | 126 | Get-NTFSSimpleAccess SD: filter and partition a descriptor like -Path | ElevatedDesktop, ElevatedCore | True | |
| 8 | access | M7 | Default -Account changed from the current user to S-1-1-0 (Everyone) | GetEffectiveAccess.cs | 15 | Get-NTFSEffectiveAccess Path (allowed right present) and SecurityDescriptor (follows an in-memory change) | ElevatedDesktop, ElevatedCore | True | |
| 9 | access | M8 | Gate the -AppliesTo scope conversion on a condition that is never true (EndsWith("Simple") to EndsWith("NeverSimple")), so that the Simple sets keep default flags | AddAccess.cs | 113 | Add-NTFSAccess PathSimple: scope the entry of the next path | ElevatedDesktop, ElevatedCore | True | |
| 10 | audit | M1 | Delete the WriteError(ReadFileError) call, keep the continue | AddAudit.cs | 129 | Add-NTFSAudit pipeline by Path (both rows) | ElevatedDesktop, ElevatedCore | True | |
| 11 | audit | M2 | Invert removeSpecific in the primary Remove call | RemoveAudit.cs | 151 | Remove-NTFSAudit pipeline by Path (PathSimple row), narrow-rights test | ElevatedDesktop, ElevatedCore | True | |
| 12 | audit | M3 | DisableAuditInheritance(item, true) to (item, false) | ClearAudit.cs | 74 | Clear-NTFSAudit -DisableInheritance state test | ElevatedDesktop, ElevatedCore | True | |
| 13 | audit | M4 | ErrorCategory OpenError to NotSpecified in the generic catch of the SACL read | GetAudit.cs | 112 | Get-NTFSAudit without the Security privilege: category test | BasicDesktop, BasicCore | True | Invisible in the elevated configurations: the mutated line is reached only without the Security privilege |
| 14 | audit | M5 | ErrorId ReadError to ReadFileError for a missing path | Get-OrphanedAudit.cs | 43 | Get-NTFSOrphanedAudit pipeline by Path | ElevatedDesktop, ElevatedCore | True | |
| 15 | audit | M6 | ErrorCategory InvalidData to InvalidOperation in TestAuditSection | BaseCmdlets.cs | 159 | All 7 cross-cutting rows and the Get-NTFSAudit SD pipeline test (8 failures) | ElevatedDesktop, ElevatedCore | True | |
| 16 | audit | M7 | Delete the continue after the ReadFileError WriteError | RemoveAudit.cs | 141 | Remove-NTFSAudit pipeline by Path (both rows; cascades to a RemoveAceError NullReferenceException) | ElevatedDesktop, ElevatedCore | True | |
| 17 | audit | M8 | Invert IsNullOrEmpty in the orphaned-entry filter | Get-OrphanedAudit.cs | 74 | Get-NTFSOrphanedAudit pipeline by Path, pipeline SD, direct SD (3 failures) | ElevatedDesktop, ElevatedCore | True | |
| 18 | audit | M9 | Disable the -AppliesTo to flags conversion for the Simple sets (if (false && ...)) | AddAudit.cs | 114 | None of the new tests | ElevatedDesktop, ElevatedCore | False | Masked on a file target: AddFileSystemAuditRule forces InheritanceFlags None and PropagationFlags None for a file. PermissionScopes.Tests.ps1 (folder targets) catches the same mutation with 24 failures |
| 19 | inheritance | 1 | Disable-NTFSAccessInheritance ignores -RemoveInheritedAccessRules | DisableAccessInheritance.cs | 80 | 4 of 8 rows of the DACL protected-flag test | ElevatedDesktop, ElevatedCore | True | |
| 20 | inheritance | 2 | Enable-NTFSAccessInheritance ignores -RemoveExplicitAccessRules | EnableAccessInheritance.cs | 80 | 2 of 8 rows of the DACL protected-flag test | ElevatedDesktop, ElevatedCore | True | |
| 21 | inheritance | 3 | GetFileSystemInheritanceInfo(item) inverts the reported access flag | FileSystemInheritanceInfo.cs | 71 | 8 tests: ModifySdError rows, the RestoreOwnerError of Set-NTFSInheritance, two piped rows, Get-NTFSInheritance pipe, the Set-NTFSInheritance round trip | ElevatedDesktop, ElevatedCore | True | |
| 22 | inheritance | 4 | Get-NTFSOwner -SecurityDescriptor always returns the owner of the first descriptor | GetOwner.cs | 86 | Get-NTFSOwner -SecurityDescriptor, piped and passed directly | ElevatedDesktop, ElevatedCore | True | |
| 23 | inheritance | 5 | Set-NTFSOwner -SecurityDescriptor always sets the owner of the first descriptor | SetOwner.cs | 104 | Set-NTFSOwner -SecurityDescriptor, after the test got a direct multi-element array call | ElevatedDesktop, ElevatedCore | True | Not detected by the pipeline-only test: the pipeline rebinds the list to one element per item, which hides an index bug. The test was strengthened with a direct call with an array and the mutation was detected |
| 24 | inheritance | 6 | InvokeAsOwner swallows the error of the restore of the owner | BaseCmdlets.cs | 344 | The 3 RestoreOwnerError rows | ElevatedDesktop, ElevatedCore | True | |
| 25 | inheritance | 7 | Disable-NTFSAuditInheritance -Path loses ValueFromPipeline (keeps ValueFromPipelineByPropertyName) | DisableAuditInheritance.cs | 16 | None of the new tests | ElevatedDesktop, ElevatedCore | False | Get-ChildItem2 objects have a FullName property, so the binding by property name alone still binds them; only a bare string piped by value would show it |
| 26 | inheritance | 8 | Get-NTFSSecurityDescriptor reports NotSpecified instead of OpenError for a missing path | GetSecurityDescriptor.cs | 48 | OpenError for a path that does not exist | ElevatedDesktop, ElevatedCore | True | |
| 27 | inheritance | 9 | GetFileSystemInheritanceInfo(sd) inverts the reported audit flag | FileSystemInheritanceInfo.cs | 80 | Set-NTFSInheritance -SecurityDescriptor: both flags in one call | ElevatedDesktop, ElevatedCore | True | |
| 28 | inheritance | 10 | Set-NTFSInheritance -AccessInheritanceEnabled loses ValueFromPipelineByPropertyName | SetInheritance.cs | 42 | Restore a saved inheritance state through the pipeline | ElevatedDesktop, ElevatedCore | True | |
| 29 | items | M1 | RemoveItem2 catch no longer writes DeleteError for an IOException | RemoveItem2.cs | 101 | Remove-Item2 pipeline test (expected 1 error, got 0) | ElevatedDesktop, ElevatedCore | True | |
| 30 | items | M2 | GetFileHash2 generic catch no longer continues, so a null hash is written after the error | GetFileHash2.cs | 113 | Get-FileHash2 locked file first (expected 1 result, got 2) | ElevatedDesktop, ElevatedCore | True | |
| 31 | items | M3 | GetItem2.Path loses ValueFromPipeline | GetItem2.cs | 13 | Get-Item2 pipeline test | ElevatedDesktop, ElevatedCore | True | |
| 32 | items | M4 | RemoveItem2.Path loses ValidateNotNullOrEmpty | RemoveItem2.cs | 16 | All 4 rows of the Remove-Item2 empty-path test | ElevatedDesktop, ElevatedCore | True | A recursive-delete guard; the test acts only inside its own disposable sandbox folder |
| 33 | items | M5 | GetDiskSpace.DriveLetter loses Position = 1 | GetDiskSpace.cs | 14 | Get-DiskSpace positional test | ElevatedDesktop, ElevatedCore | True | |
| 34 | items | M6 | GetFileHash2.Algorithm setter ignores the value and forces SHA256 | GetFileHash2.cs | 34 | Get-FileHash2 pipeline and Algorithm test (MD5 assertion) | ElevatedDesktop, ElevatedCore | True | |
| 35 | items | M7 | NewSymbolicLink no longer returns after the ResourceExists error and falls through to the create attempt | NewSymbolicLink.cs | 80 | New-NTFSSymbolicLink success after a failure (expected 1 error, got 2) | ElevatedDesktop, ElevatedCore | True | |
| 36 | items | M8 | DisablePrivileges off by one: Count() == 0 to Count() == 1, which suppresses the error when nothing is enabled | OtherCmdlets.cs | 100 | Disable-Privileges error-path test | ElevatedDesktop, ElevatedCore | True |