Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run Ubuntu 22.04 in test matrix #234

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 27 additions & 4 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
name: Verify

# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
permissions:
actions: none
checks: none
contents: none
deployments: none
id-token: none
issues: none
discussions: none
packages: none
pages: none
pull-requests: none
repository-projects: none
security-events: none
statuses: none

on:
push:
branches:
Expand All @@ -10,7 +26,7 @@ on:

jobs:
test:
runs-on: ubuntu-18.04
runs-on: ${{ matrix.os }}
timeout-minutes: 40

strategy:
Expand All @@ -19,15 +35,22 @@ jobs:
ruby:
- 2.6
- 2.7
- 3.0.3
- 3.1.1
- 3.0
- 3.1
os:
- ubuntu-18.04
- ubuntu-22.04
exclude:
- { os: ubuntu-22.04, ruby: 2.6 }
- { os: ubuntu-22.04, ruby: 2.7 }
- { os: ubuntu-22.04, ruby: 3.0 }
test_cmd:
- bundle exec rspec

env:
RAILS_ENV: test

name: Ruby ${{ matrix.ruby }} - ${{ matrix.test_cmd }}
name: ${{ matrix.os }} - Ruby ${{ matrix.ruby }} - ${{ matrix.test_cmd }}
steps:
- name: Checkout code
uses: actions/checkout@v2
Expand Down
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# RubySMB

[![Code Climate](https://codeclimate.com/github/rapid7/ruby_smb.png)](https://codeclimate.com/github/rapid7/ruby_smb)
[![Coverage Status](https://coveralls.io/repos/github/rapid7/ruby_smb/badge.svg?branch=master)](https://coveralls.io/github/rapid7/ruby_smb?branch=master)

This is a native Ruby implementation of the SMB Protocol Family. It currently supports:

Expand Down
8 changes: 5 additions & 3 deletions lib/ruby_smb/signing.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ module Signing
# @param [RubySMB::GenericPacket] packet The packet to sign.
# @return [RubySMB::GenericPacket] the signed packet
def smb1_sign(packet)
packet = Signing::smb1_sign(packet, @session_key, @sequence_counter)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The tests were mocking the session_key accessor, but not the @session_key instance variable. As a result, OpenSSL 3 was throwing validation errors that '' was an invalid key.

@sequence_counter += 1
packet = Signing::smb1_sign(packet, session_key, sequence_counter)
self.sequence_counter += 1

packet
end
Expand Down Expand Up @@ -41,7 +41,7 @@ def self.smb1_sign(packet, session_key, sequence_counter)
# @param [RubySMB::GenericPacket] packet The packet to sign.
# @return [RubySMB::GenericPacket] the signed packet
def smb2_sign(packet)
Signing::smb2_sign(packet, @session_key)
Signing::smb2_sign(packet, session_key)
end

# Take an SMB2 packet and sign it. This version is a module function that
Expand All @@ -51,6 +51,8 @@ def smb2_sign(packet)
# @param [String] session_key The key to use for signing.
# @return [RubySMB::GenericPacket] the signed packet
def self.smb2_sign(packet, session_key)
return packet if session_key.nil? || session_key == ''
adfoster-r7 marked this conversation as resolved.
Show resolved Hide resolved

packet.smb2_header.flags.signed = 1
packet.smb2_header.signature = "\x00" * 16
hmac = OpenSSL::HMAC.digest(OpenSSL::Digest.new('SHA256'), session_key, packet.to_binary_s)
Expand Down
14 changes: 6 additions & 8 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
# Enable legacy providers
ENV['OPENSSL_CONF'] = File.expand_path(
File.join(File.dirname(__FILE__), 'support', 'openssl.conf')
)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

OpenSSL 3 no longer loads old cyphers by default. This allows the tests to pass. Metasploit-framework will have this file loaded at runtime.

Unfortunately it means direct users of RubySMB will need a similar configuration change. Or we will need to wait for a solution similar to WinRb/rubyntlm#53 to land


require 'simplecov'

SimpleCov.start unless SimpleCov.running
SimpleCov.add_filter '/spec/'

require 'coveralls'
require 'ruby_smb'

if ENV['CI'] == 'true'
# don't generate local report as it is inaccessible on travis-ci, which is
# why coveralls is being used.
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
else
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
end
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter

Dir['./spec/support/**/*.rb'].sort.each { |f| require f }

Expand Down
14 changes: 14 additions & 0 deletions spec/support/openssl.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
openssl_conf = openssl_init

[openssl_init]
providers = provider_sect

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1