Patch dependency CVEs, add CI, and attribute the upstream fork - #4
Merged
Conversation
Closes the four open Dependabot advisories, and adds the CI and Dependabot configuration the repository had none of. Package bumps: - log4net 2.0.15 -> 3.3.0 in all three projects that reference it (CVE-2026-40021). Dependabot's own PR covered two of the three and left TDSProtocolTests behind; this covers all of them. - Microsoft.Data.SqlClient 5.1.2 -> 5.1.3 (CVE-2024-0056). Neither advisory is exploitable here, and that is worth recording so the urgency is not misremembered later. The log4net issue is in XmlLayout and XmlLayoutSchemaLog4J; src/TDSProxy/log4net.config configures PatternLayout exclusively. SqlClient is referenced only by TestConnection, a manual smoke test, and the Dockerfile publishes TDSProxy.csproj alone -- so it never ships. The log4net major bump is a real API risk rather than a version change, so it was verified by building and running the tests on net6.0, not assumed: the surface used is LogManager.GetLogger, ILog and XmlConfigurator.ConfigureAndWatch, all unchanged in 3.x. TestConnection carried a hardcoded connection string inherited from upstream, naming an internal host, a domain user and a password, in a public repository. It now reads TDSPROXY_TEST_CONNECTION_STRING from the environment and explains what to point it at. CI runs the pin check first and every other job needs it: running it alongside them would be too late, since a parallel job has already executed its own uses: before the check could fail. Actions are pinned to commit SHAs with the release named in a comment, and scripts/check-action-pins.sh verifies the two agree so a hash swapped for one taken from a fork stops looking like a routine bump. The README now says this is a fork of tech-software/TDSProxy and what this fork changed. LICENSE already retained the original copyright, which is what MIT requires; the repository simply read as original work. The licensing section also records why there is no third-party notice file -- attribution clauses attach on distribution, and nothing here publishes an image -- and what would have to change if one were ever pushed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X9JVxmeMMFL7bRGq4vbbgf
This was referenced Aug 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes all four open Dependabot advisories and adds the CI and Dependabot configuration this repository had none of. Supersedes #2 and #3.
Why this rather than merging #2 and #3
Dependabot's PRs between them cover three of the four alerts — #3 bumps log4net in
TDSProtocolandTDSProxybut not inTDSProtocolTests, leaving one advisory open. This bumps all three, and carries the rest of the work alongside it.Security
log4net2.0.15 → 3.3.0Microsoft.Data.SqlClient5.1.2 → 5.1.3Neither is exploitable here, which is worth stating so the urgency isn't misremembered later:
XmlLayout/XmlLayoutSchemaLog4J.src/TDSProxy/log4net.configconfiguresPatternLayout, three times, and nothing else.Microsoft.Data.SqlClientis referenced only byTestConnection, a manual smoke test. The Dockerfile publishesTDSProxy.csprojalone, so it never ships in the image.The log4net bump crosses a major version, so it was verified rather than assumed — built and tested on net6.0 (0 warnings, 0 errors, 25/25 tests). The API surface used is
LogManager.GetLogger,ILogandXmlConfigurator.ConfigureAndWatch, all unchanged in 3.x.Hardcoded credential removed
TestConnection/Program.cscarried a connection string inherited from upstream, naming an internal host, a domain user and a password, in a public repo. It now readsTDSPROXY_TEST_CONNECTION_STRINGfrom the environment.CI and Dependabot
ci.ymladdspinsandbuild.pinsruns first andbuildneeds it — running it alongside would be too late, since a parallel job has already executed its ownuses:before the check could fail. Actions are SHA-pinned with the release in a comment, andscripts/check-action-pins.shverifies the two agree, so a hash swapped for one taken from a fork stops looking like a routine bump.dependabot.ymlcovers NuGet, Actions and Docker, with version and security updates in separate groups — a group covers version updates only unless it says so, which is why four advisories arrived as separate PRs.Attribution
The README now states this is a fork of tech-software/TDSProxy and what this fork changed.
LICENSEalready retained the original copyright — which is what MIT requires — but the repo read as original work.The licensing section also records why there is no third-party notice file: those attribution clauses attach on distribution, and nothing here publishes an image. It says what would have to change if one were ever pushed.
Follow-up
maincurrently has 0 required status checks, because requiring a context before its workflow has ever run blocks every PR. Once this merges and CI runs, addAction pinsandbuildto the required list.