Skip to content

Add service-name check and regress test#953

Open
yosuke-wolfssl wants to merge 1 commit intowolfSSL:masterfrom
yosuke-wolfssl:f_1274
Open

Add service-name check and regress test#953
yosuke-wolfssl wants to merge 1 commit intowolfSSL:masterfrom
yosuke-wolfssl:f_1274

Conversation

@yosuke-wolfssl
Copy link
Copy Markdown
Contributor

This PR adds the service-name check to comply with RFC 4252 section 5.
If service name is not equal to "ssh-connection", SSH_MSG_USERAUTH_FAILURE would be sent to the peer.
Also, new unit test is added to exercise service-name validation.

@yosuke-wolfssl yosuke-wolfssl self-assigned this Apr 24, 2026
Copilot AI review requested due to automatic review settings April 24, 2026 04:46
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds RFC 4252 §5 compliance by validating the service-name in SSH_MSG_USERAUTH_REQUEST and rejecting requests that do not target "ssh-connection" while keeping the connection open for retry. It also introduces a new internal test hook and a unit test intended to exercise the new validation behavior.

Changes:

  • Add service-name validation in DoUserAuthRequest() and send SSH_MSG_USERAUTH_FAILURE when invalid.
  • Expose DoUserAuthRequest() via a new wolfSSH_TestDoUserAuthRequest() internal test wrapper.
  • Add a new unit test to exercise service-name validation logic.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
wolfssh/internal.h Adds a new internal test API declaration for invoking DoUserAuthRequest() from unit tests.
src/internal.c Implements the service-name check and the corresponding test wrapper.
tests/unit.c Adds a unit test for service-name validation and wires it into the unit test runner.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/unit.c Outdated
Comment thread tests/unit.c Outdated
Comment thread src/internal.c
Comment thread src/internal.c
@padelsbach
Copy link
Copy Markdown
Contributor

@yosuke-wolfssl, can you please rebase to resolve conflicts?

Copy link
Copy Markdown

@wolfSSL-Fenrir-bot wolfSSL-Fenrir-bot left a comment

Choose a reason for hiding this comment

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

Fenrir Automated Review — PR #953

Scan targets checked: wolfssh-bugs, wolfssh-src

No new issues found in the changed files. ✅

Copy link
Copy Markdown
Member

@aidangarske aidangarske left a comment

Choose a reason for hiding this comment

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

Skoll Code Review

Scan type: review
Overall recommendation: APPROVE
Findings: 7 total — 7 posted, 0 skipped
7 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Low] Inconsistent cast style in new NameToId callsrc/internal.c:8405-8406
  • [Low] Error from SendUserAuthFailure overwrites ret, making invalid-service path return non-successsrc/internal.c:8405-8411
  • [Low] *idx = len is written even when SendUserAuthFailure returned an errorsrc/internal.c:8409-8411
  • [Low] Test assumes output path succeeds on a fresh session without documentationtests/unit.c:952-1041
  • [Low] Test does not cover empty or oversize service namestests/unit.c:964-973
  • [Info] serviceValid could be replaced by a guard-style early return block for readabilitysrc/internal.c:8370,8417
  • [Info] *idx = len set before SendUserAuthFailure result is checkedsrc/internal.c:8409-8410

Review generated by Skoll

Comment thread src/internal.c
Comment thread src/internal.c
Comment thread src/internal.c
Comment thread tests/unit.c
Comment thread tests/unit.c
Comment thread src/internal.c
Comment thread src/internal.c
Copy link
Copy Markdown

@wolfSSL-Fenrir-bot wolfSSL-Fenrir-bot left a comment

Choose a reason for hiding this comment

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

Fenrir Automated Review — PR #953

Scan targets checked: wolfssh-bugs, wolfssh-src

No new issues found in the changed files. ✅

@yosuke-wolfssl yosuke-wolfssl marked this pull request as ready for review April 28, 2026 02:45
@yosuke-wolfssl
Copy link
Copy Markdown
Contributor Author

Hello @aidangarske ,

It's ready for review again.
Could you please take a look at this ?

@ejohnstown ejohnstown self-requested a review April 28, 2026 16:27
Comment thread src/internal.c
authData.serviceName = buf + begin;
begin += authData.serviceNameSz;

ret = GetSize(&authData.authNameSz, buf, len, &begin);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The function GetStringRef() was added for cases like this. It does all the appropriate length checking and it updates the idx. I just never got around to replacing all GetSize() and adjusting the idx myself with this function.

GetStringRef will give you a pointer into buf that points at the string, and it gives you the length. You don't need to free it, and the pointer is to const.

Copy link
Copy Markdown
Member

@aidangarske aidangarske left a comment

Choose a reason for hiding this comment

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

Skoll Code Review

Scan type: review
Overall recommendation: COMMENT
Findings: 3 total — 3 posted, 0 skipped
3 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Medium] wolfSSH_SetUsernameRaw mutates session state before the service-name checksrc/internal.c:8351-8376
  • [Low] Unrelated blank-line removal between DoReceive and DoProtoIdsrc/internal.c:10719
  • [Low] Test couples to internal packet layout (byte-5 message-id) without abstractiontests/unit.c:1027-1035

Review generated by Skoll

Comment thread src/internal.c
Comment thread tests/unit.c
Comment thread src/internal.c
Copy link
Copy Markdown
Member

@aidangarske aidangarske left a comment

Choose a reason for hiding this comment

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

Skoll Multi-Scan Review

Modes: audit + review-security
Overall recommendation: COMMENT
Findings: 1 total — 1 posted, 0 skipped
1 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Low] [audit] Unknown-auth-method begin = len consumption path lacks meaningful coveragesrc/internal.c:8402-8408

Review generated by Skoll

Comment thread src/internal.c
@dgarske
Copy link
Copy Markdown
Member

dgarske commented May 5, 2026

@yosuke-wolfssl please see the feedback.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants