ADR 004: Steam Trade Library Security (Accepted Risk)
Status
Accepted - 2026-02-16
Context
Dependency Analysis
Current Steam trade dependencies:
steam-tradeoffer-managerv2.12.2 (actively maintained by DoctorMcKay)steamcommunityv3.49.0 (actively maintained by DoctorMcKay)steam-userv5.0.0 (actively maintained by DoctorMcKay)
Identified Vulnerabilities
Transitive dependencies via deprecated request@2.88.2:
form-data- CRITICAL (RCE vulnerability)nth-check- HIGH (ReDoS vulnerability)lodash.pick- HIGH (Prototype pollution)
All three vulnerabilities originate from the deprecated request package (unmaintained since 2020).
Investigation Results
Evaluated migration options:
-
✅ Current state verified:
- All Steam libraries (steam-tradeoffer-manager, steamcommunity, steam-user) are ACTIVELY MAINTAINED by original author (DoctorMcKay)
- Latest updates: August 2025 (steam-tradeoffer-manager v2.12.2)
- GitHub releases: November 2024 (v2.11.7)
-
❌ Migration to fork:
- No maintained forks exist (e.g.,
@doctormckay/steam-tradeoffer-managerdoes NOT exist in npm) - All Steam libraries depend on
request@2.88.2(ecosystem-wide issue)
- No maintained forks exist (e.g.,
-
❌ Rewrite trade system:
- Requires complete reimplementation of Steam trade protocol
- Estimated effort: 3-4 weeks
- Risk: High (Steam API complexity, undocumented behaviors)
Decision
Accept security vulnerabilities as calculated risk.
Rationale:
- Libraries are actively maintained (last update 6 months ago)
- Vulnerabilities are transitive (not in direct dependencies)
- No viable migration path exists (ecosystem-wide
requestdependency) - Attack surface is mitigated by architectural controls
Consequences
Positive
- ✅ Zero migration effort (already on maintained versions)
- ✅ Libraries receive compatibility updates for Steam API changes
- ✅ Positioned for future security fixes when maintainer rewrites libraries
Negative
- ⚠️ CRITICAL/HIGH vulnerabilities remain in dependency tree
- ⚠️
pnpm auditwill continue reporting vulnerabilities - ⚠️ Requires ongoing monitoring for new CVEs
Mitigation Controls
Architectural:
- Steam bot runs in isolated Docker container
- No direct user input to trade manager (controlled server-side)
- Trade offers validated before creation
- Rate limiting on trade operations
Operational:
- Weekly
pnpm auditreview - Monitoring for new CVEs in
requestecosystem - Alert on CRITICAL exploits (active exploitation)
- Immediate re-evaluation if public exploit published
Future Path:
- Monitor
steam-tradeoffer-managerreleases forrequestremoval - Re-evaluate when DoctorMcKay migrates to modern HTTP client
- Timeline: Unknown (community effort)
Monitoring Plan
Weekly Review
cd backend
pnpm audit | grep -E "CRITICAL|HIGH"
Alert Triggers
- New CRITICAL vulnerability in
requestor transitive deps - Public exploit code published (CVE with PoC)
- Steam bot unexpected errors/crashes
- Trade offers failing to create
Re-evaluation Criteria
- Active exploitation detected in wild
- Public PoC for RCE vulnerability
- Steam API breaking changes requiring library update
- DoctorMcKay releases version without
requestdependency
Alternatives Considered
| Option | Effort | Risk | Decision |
|---|---|---|---|
| Accept current risk | None | Medium | ✅ ACCEPTED |
| Migrate to fork | Low | Low | ❌ No fork exists |
| Rewrite trade system | 3-4 weeks | High | ❌ Not justified |
| Remove Steam trade | N/A | N/A | ❌ Core feature |
References
- npm: steam-tradeoffer-manager v2.12.2
- GitHub: DoctorMcKay/node-steam-tradeoffer-manager
- Last update: 2025-08-18 (6 months ago)
- Vulnerability audit: 2026-02-16