Skip to content

Fix calculation of channel bindings hash in managed NTLM implementation#95898

Merged
rzikm merged 4 commits into
dotnet:mainfrom
filipnavara:managedntlm-channel-bindings
Dec 14, 2023
Merged

Fix calculation of channel bindings hash in managed NTLM implementation#95898
rzikm merged 4 commits into
dotnet:mainfrom
filipnavara:managedntlm-channel-bindings

Conversation

@filipnavara

@filipnavara filipnavara commented Dec 12, 2023

Copy link
Copy Markdown
Member

Fixes #95725

Tested on linux-x64 with Managed NTLM against Windows Server 2022 21H2 with Extended Protection set to Required.

@filipnavara
filipnavara requested a review from wfurt December 12, 2023 08:41
@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Dec 12, 2023
@ghost

ghost commented Dec 12, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/ncl, @bartonjs, @vcsjones
See info in area-owners.md if you want to be subscribed.

Issue Details

Fixes #95725

Author: filipnavara
Assignees: -
Labels:

area-System.Net.Security

Milestone: -

@rzikm rzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@rzikm

rzikm commented Dec 12, 2023

Copy link
Copy Markdown
Member

/azp run runtime-libraries-coreclr outerloop

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

rzikm commented Dec 12, 2023

Copy link
Copy Markdown
Member

/azp list

@azure-pipelines

Copy link
Copy Markdown
CI/CD Pipelines for this repository:

@rzikm

rzikm commented Dec 12, 2023

Copy link
Copy Markdown
Member

/azp run runtime-libraries enterprise-linux

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

rzikm commented Dec 13, 2023

Copy link
Copy Markdown
Member

/azp run runtime-libraries-coreclr outerloop

@rzikm

rzikm commented Dec 13, 2023

Copy link
Copy Markdown
Member

/azp run runtime-libraries enterprise-linux

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

1 similar comment
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@wfurt wfurt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.
Thanks @filipnavara for digging into this.
I assume we do not have good way how to write a test, right?

@filipnavara

Copy link
Copy Markdown
Member Author

I assume we do not have good way how to write a test, right?

We can create a subclass of ChannelBinding for use in tests and then do a round-trip against the managed mock NTLM server implementation and check that the computed hash of the channel binding matches the expectation. The trouble is that we would not be really testing the end-to-end scenario in that case. It's probably better than nothing but not really adequate. I may look into that at some point but I would prefer not to delay the PR on this. It would be nice to have for any future refactoring but the particular scenario was already tested manually against a real Windows Server with different settings manually applied.

We cannot test against real NTLM server on local Windows machine either because the managed NTLM implementation is not compiled in that configuration, and we would still need to establish a TLS connection with some reasonable certificate. There may potentially be some global system settings affecting it as well.

@rzikm

rzikm commented Dec 13, 2023

Copy link
Copy Markdown
Member

@dotnet/dnceng The outerloop pipeline seems is reporting lots of failures. For example https://dev.azure.com/dnceng-public/public/_build/results?buildId=498370&view=logs&j=631ed29b-f0dd-5b15-38a0-c6c555556dea&t=b9941189-b5a8-5df3-6b3a-0964fabb3acd

Individual work items don't indicate test failure (e.g. https://helixre107v0xdcypoyl9e7f.blob.core.windows.net/dotnet-runtime-refs-pull-95898-merge-dcd3063db7254525ba/System.IO.FileSystem.DriveInfo.Tests/1/console.61bb75be.log?helixlogtype=result), but it seems to always end with

ERROR: The process "corerun.exe" not found.
gen-debug-dump-docs.py: Did not find dumps, skipping dump docs generation.
['System.IO.FileSystem.DriveInfo.Tests' END OF WORK ITEM LOG: Command exited with 1]

Can you please have a look?

@dougbu

dougbu commented Dec 14, 2023

Copy link
Copy Markdown
Contributor

@rzikm we haven't changed anything in a while that should impact this aspect of testing. is XUnitLogChecker something specific to this repo❔ has it changed lately❔

@rzikm

rzikm commented Dec 14, 2023

Copy link
Copy Markdown
Member

I am not aware of any change on our side, maybe @carlossanlop would know. Looking at recent runs, it probably started at the beginning of December and I have seen it so far only on runtime-libraries-coreclr outerloop pipeline.

@carlossanlop

carlossanlop commented Dec 14, 2023

Copy link
Copy Markdown
Contributor

I made changes in those failure reporting tools, as you can see from the logs you shared.

But the problem was not in gen-debug-dump-docs.py, it was in XUnitLogChecker:

----- start ===============  XUnitLogChecker Output =====================================================
XUnitLogChecker.dll does not exist in the expected location: C:\h\w\A22708CE\p\XUnitLogChecker.dll
----- end ===============  XUnitLogChecker Output - exit code 1 ===============

I think there might have been a fix around this area after I introduced the support for this tool, because I did validate against outerloop.

It seems in this queue, the tool is not getting added to the set of payloads that get extracted in the helix machines. I opened an issue to investigate it: #96035 cc @ivdiazsa @mangod9 @JulieLeeMSFT @ericstj

Thanks for reporting it, @rzikm .

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-System.Net.Security community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

UseManagedNtlm in NET8 cannot authenticate NTLM on IIS with Extended Protection Accept & Required

7 participants