This audit of DVTA produced 35 findings (1 critical, 3 high, 8 medium, 12 low, 11 info). Evidence grade: 3 proven by IL/dynamic analysis; 12 confirmed; 18 to verify manually. Most significant: Update flow present; NO signature-verification primitives in first-party code; Hardcoded credential in .NET config appSettings (+1 more affected); High-entropy base64 token in DVTA.exe.config.
ApplicationDVTA
Version1.0.0.0
PublisherMicrosoft
Architecturex86
TypeWin32 application
Main exeDVTA.exe
RuntimeNative (C/C++)
PrivilegeasInvoker
InstallC:\ProgramData\DVTA
SigningNotSigned
UIunknown / custom
Networknot determined
Updatenone detected
3DLLs
2EXEs
0Drivers
2Endpoints
0Ports
0COM
0Pipes
0Services
0Handlers
0File-assoc
LLM: ollama / qwen2.5-coder:7b (available; pass -EnableLlm or pipe to Invoke-TcpkLlmCodeJudgment) · Time: scan 33s · Coverage: Coverage: 89 ran, 11 gated (no process), 0 need elevation, 21 quick-skip, 0 not implemented, 0 failed (of 121 checks)
RISK INDEX
SEVERITY (35)
Critical 1High 3Medium 8Low 12Info 11
Proven (IL/dynamic)3
Confirmed12
Inferred -- verify18
Likely-FP / Uncertain2
▾Standards coverage (OWASP Desktop App Top 10 + MITRE ATT&CK)
OWASP Desktop App Top 10 (2021) -- categories the findings map to (green = clear)
6
DA1
Injections
1
DA2
Broken Authentication
8
DA3
Sensitive Data Exposure
0
DA4
Improper Cryptography
0
DA5
Improper Authorization
1
DA6
Security Misconfiguration
4
DA7
Insecure Communication
7
DA8
Poor Code Quality
0
DA9
Components With Known Vulnerabilities
0
DA10
Insufficient Logging
by MITRE ATT&CK technique
T1059 Command and Scripting Interpreter7
T1553.002 Code Signing5
T1552.001 Credentials In Files4
T1027.002 Software Packing1
T1574 Hijack Execution Flow1
T1048 Exfiltration Over Alternative Protocol1
▾Remediation plan (20 prioritized fixes)
De-duplicated, highest risk first -- one row per fix. P1 = critical, P2 = high, P3 = medium/low.
P1
Sign update manifests with an offline-keyed RSA signature; sign each downloaded payload (Authenticode or detached PKCS#7); verify before any extract/exec.
Do not store credentials/API keys in appSettings. Use DPAPI, Windows Credential Manager, or a key vault and inject at runtime; rotate the exposed secret.
Never ship a symmetric or private key in config. Derive a per-user key (DPAPI) or fetch from a key vault; rotate the exposed key. With key+IV+ciphertext all present, the protected value is trivially decryptable.
Sign the assembly during build (csc.exe /keyfile, or <SignAssembly>true</SignAssembly> in csproj).
strongname.unsigned
LOW1 finding
P3
Set ClearPageFileAtShutdown=1 in the registry (or via Local Security Policy: Shutdown: Clear virtual memory pagefile).
pagefile.no-clear-at-shutdown · CWE-316
LOW1 finding
P3
For password and token handling, use SecureString and Marshal.SecureStringToGlobalAllocUnicode / ZeroFreeGlobalAllocUnicode, or wrap in ProtectedMemory blocks.
mem.hygiene-absent · CWE-316
LOW1 finding
P3
If the logic/IP or any client-side check matters, apply an obfuscator AND move trust decisions server-side. Never rely on obfuscation to hide secrets.
Never persist raw credentials to the registry. Protect them with DPAPI (ProtectedData) scoped to the current user, or use the Windows Credential Manager; store only non-reversible tokens where possible.
For sensitive backends, pin the leaf or root cert thumbprint via ServerCertificateCustomValidationCallback (and confirm the callback actually pins, not just returns true).
tls.pinning-absent · CWE-295
LOW1 finding
P3
Prefix any cell that starts with = + - @ (tab, CR) with a single quote, or enable the library's injection sanitisation (e.g. CsvHelper SanitizeForInjection).
csv.formula-injection-risk · CWE-1236
LOW1 finding
▾Reconnaissance -- Network & Attack Surface
Network endpoints (backend hosts)
Host
Sample URL / auth markers
First seen in
code.google.com
http://code.google.com/p/excellibrary/ | auth markers in same PE: (none in nearby PE) [first-party; cleartext]
ExcelLibrary.dll
msdn.com
http://msdn.com/data/ef | auth markers in same PE: (none in nearby PE) [first-party; cleartext]
EntityFramework.dll
Listening ports (live process)
No listening ports observed. (Live-port scan only runs when a ProcessName is supplied AND the app is running.)
Transport security posture
certificate pinning: ABSENT
Findings grouped by rule (click a row to filter)
Max severity
Rule
Count
CRITICAL
update.no-signature-verification
1
HIGH
entropy.high-entropy-token
1
HIGH
secrets.config-hardcoded-secret
1
HIGH
secrets.config-hardcoded-crypto-key
1
MEDIUM
callsites.sql-command-construction
2
MEDIUM
authenticode.pe-not-signed
1
MEDIUM
authflags.client-side-gate
1
MEDIUM
devartifact.debug-symbols
1
MEDIUM
scheme.cleartext-http
1
MEDIUM
scheme.cleartext-ftp
1
MEDIUM
secrets.config-hardcoded-iv
1
MEDIUM
authenticode.weak-cert-hash
1
LOW
obfuscation.absent
1
LOW
callsites.ssrf-request-build
1
LOW
strongname.unsigned
1
LOW
csv.formula-injection-risk
1
LOW
tls.pinning-absent
1
LOW
callsites.env-var-path-use
1
LOW
storage.registry-credential
1
LOW
deser.xmlserializer
1
LOW
mem.hygiene-absent
1
LOW
pagefile.no-clear-at-shutdown
1
LOW
callsites.base64-as-encryption
1
LOW
callsites.insecure-temp
1
INFO
attacksurface.summary
1
INFO
integrity.self-check-markers
1
INFO
backend.endpoint
1
INFO
deser.binaryformatter
1
INFO
strings.summary
1
INFO
authenticode.signer-expired
1
INFO
codeintegrity.no-cat
1
INFO
alpc.enumerated-clean
1
INFO
sxs.manifest
1
INFO
ui.no-screen-capture-protection
1
All (35)CRITICAL (1)HIGH (3)MEDIUM (8)LOW (12)INFO (11)
▾CRITICAL (1)
#001CRITICALInferredUpdate flow present; NO signature-verification primitives in first-party codeupdate.no-signature-verification
CWE-494CWE-345CWE-347TASVS-NETWORK Network Communication
If downloaded update content is not signature-verified before execution, anyone who can write to the update origin (or MITM the channel) achieves persistent RCE on every client. Confirm in ILSpy that DownloadUpdate / CheckForUpdate methods do not call any cryptographic verification path.
Impact
Direct compromise: code execution, privilege escalation, or exposure of live credentials with little/no precondition.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\EntityFramework.dll
Evidence
update keywords: CheckForUpdate,UpdateAvailable,UpdateUrl,UpdateManifest,DownloadUpdate,LatestVersion,update-manifest,/firmware | sig keywords absent
Verify
verify
# WHAT THIS CHECKS: Inspects the app's update/download flow for missing integrity checks.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkUpdateFlow -Path 'C:\ProgramData\DVTA'# STEP 2 - READ THE OUTPUT:# VULNERABLE if it applies a downloaded update with NO signature or hash check (remote code execution via a poisoned update server).# OK if it verifies a signature or hash before extracting or running the payload.# NOTE: decompile the update method to confirm the check actually runs.# TOOL: PowerShell + a .NET decompiler
Fix
Sign update manifests with an offline-keyed RSA signature; sign each downloaded payload (Authenticode or detached PKCS#7); verify before any extract/exec.
Audit notes [TCPK correlation: a CRITICAL/HIGH secret was also found in this audit -- combining a leaked credential with an unverified update flow is a supply-chain primitive against all customers.]
▾HIGH (3)
#002HIGHInferredHigh-entropy base64 token in DVTA.exe.configentropy.high-entropy-token
CWE-798CWE-312T1552.001 Credentials In FilesTASVS-STORAGE Sensitive Data StorageDA3 Sensitive Data Exposure
A high-entropy string was found in a shipped text/config file. Such tokens are frequently API keys, bearer tokens, or symmetric keys that prefix-based rules miss. Confirm whether it is a live credential.
Impact
Serious exposure: an attacker meeting a modest precondition can steal secrets, escalate, or bypass a security control.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\DVTA.exe.config
Evidence
J8gLXc...v8k8 (len=32, H=4.539)
Verify
verify
# WHAT THIS CHECKS: Surfaces long high-entropy strings in the file that might be embedded secrets.# STEP 1 - RUN THIS IN POWERSHELL:Select-String -Path 'C:\ProgramData\DVTA\DVTA.exe.config' -Pattern '[A-Za-z0-9+/_-]{24,}' -AllMatches | ForEach-Object { $_.Matches.Value }# STEP 2 - READ THE OUTPUT:# VULNERABLE if a printed high-entropy string turns out to be a live key or secret.# OK if the strings are hashes, cache-busters, or asset IDs.# TOOL: PowerShell
Fix
Do not ship secrets in files. Load them from a protected store (DPAPI / OS keychain / server-issued token) at runtime and rotate any exposed value.
#003HIGHInferredHardcoded cryptographic key in .NET config appSettings (+1 more affected)secrets.config-hardcoded-crypto-key
CWE-798CWE-321T1552.001 Credentials In FilesTASVS-STORAGE Sensitive Data StorageDA3 Sensitive Data Exposure
# WHAT THIS CHECKS: Scans the file's text for things that look like LIVE secrets - Azure storage keys, connection strings, PEM private keys, AWS access keys, or JWT tokens.# STEP 1 - RUN THIS IN POWERSHELL:([regex]::Matches([Text.Encoding]::Unicode.GetString([IO.File]::ReadAllBytes('C:\ProgramData\DVTA\DVTA.exe.config')),'DefaultEndpointsProtocol=https?;[A-Za-z0-9=;._/+\-]{0,300}AccountKey=[A-Za-z0-9+/=]{20,}|AccountKey=[A-Za-z0-9+/=]{20,}|-----BEGIN [A-Z ]+KEY|AKIA[A-Z0-9]{16}|eyJ[A-Za-z0-9_-]{10,}')).Value# STEP 2 - READ THE OUTPUT:# VULNERABLE if it prints a real secret - e.g. AccountKey=..., a DefaultEndpointsProtocol=... connection string, an AKIA... AWS key, an eyJ... JWT, or a -----BEGIN ... KEY----- block.# OK if it prints nothing (only placeholders, or there are no secrets in the file).# NOTE: this reads the file as UTF-16 (Unicode) text. If the secret is stored as plain ASCII, change ::Unicode to ::UTF8 and run it again. To dump EVERY readable string instead: strings.exe -u 'C:\ProgramData\DVTA\DVTA.exe.config'# TOOL: PowerShell built-in (alternative: Sysinternals strings.exe)
Fix
Never ship a symmetric or private key in config. Derive a per-user key (DPAPI) or fetch from a key vault; rotate the exposed key. With key+IV+ciphertext all present, the protected value is trivially decryptable.
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
#004HIGHInferredHardcoded credential in .NET config appSettings (+1 more affected)secrets.config-hardcoded-secret
CWE-798CWE-260T1552.001 Credentials In FilesTASVS-STORAGE Sensitive Data StorageDA3 Sensitive Data Exposure
# WHAT THIS CHECKS: Scans the file's text for things that look like LIVE secrets - Azure storage keys, connection strings, PEM private keys, AWS access keys, or JWT tokens.# STEP 1 - RUN THIS IN POWERSHELL:([regex]::Matches([Text.Encoding]::Unicode.GetString([IO.File]::ReadAllBytes('C:\ProgramData\DVTA\DVTA.exe.config')),'DefaultEndpointsProtocol=https?;[A-Za-z0-9=;._/+\-]{0,300}AccountKey=[A-Za-z0-9+/=]{20,}|AccountKey=[A-Za-z0-9+/=]{20,}|-----BEGIN [A-Z ]+KEY|AKIA[A-Z0-9]{16}|eyJ[A-Za-z0-9_-]{10,}')).Value# STEP 2 - READ THE OUTPUT:# VULNERABLE if it prints a real secret - e.g. AccountKey=..., a DefaultEndpointsProtocol=... connection string, an AKIA... AWS key, an eyJ... JWT, or a -----BEGIN ... KEY----- block.# OK if it prints nothing (only placeholders, or there are no secrets in the file).# NOTE: this reads the file as UTF-16 (Unicode) text. If the secret is stored as plain ASCII, change ::Unicode to ::UTF8 and run it again. To dump EVERY readable string instead: strings.exe -u 'C:\ProgramData\DVTA\DVTA.exe.config'# TOOL: PowerShell built-in (alternative: Sysinternals strings.exe)
Fix
Do not store credentials/API keys in appSettings. Use DPAPI, Windows Credential Manager, or a key vault and inject at runtime; rotate the exposed secret.
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
▾MEDIUM (8)
#005MEDIUMConfirmed (IL)Raw ADO.NET command construction (verify SQL is parameterized) in DBAccess.dllcallsites.sql-command-construction
CWE-89T1059 Command and Scripting InterpreterTASVS-CODE Code QualityDA1 Injections
CVSS v4.0
Not auto-scored (mixed class) -- assign per finding
What
Presence of a raw command object is not itself a bug. Decompile the call site: if the CommandText is built by string concatenation/interpolation with external input, this is SQL injection. Parameterized queries are safe.
Impact
Meaningful weakness that aids an attack chain or leaks sensitive information under some conditions.
Why here
Proven by IL analysis: the flagged sink is reachable and, where applicable, reached by tainted/external input.
File
C:\ProgramData\DVTA\DBAccess.dll
Evidence
SqlCommand
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\DBAccess.dll'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Fix
Decompile the method (ILSpy / dnSpy) to confirm whether this is a real bug or a safe context.
Audit notes [TCPK IL: reachable call where external input reaches the sink (9 call site(s)) -- the method reads an external source (file/registry/network/IPC/HTTP request) or a caller parameter flows into the argument. Treat as a real injectable path and review.]
#006MEDIUMConfirmedDBAccess.dll is not Authenticode-signed (+2 more affected)authenticode.pe-not-signed
# WHAT THIS CHECKS: Checks the file's Authenticode digital signature.# STEP 1 - RUN THIS IN POWERSHELL:Get-AuthenticodeSignature -FilePath 'C:\ProgramData\DVTA\DBAccess.dll' | Format-List Status,StatusMessage,SignerCertificate# STEP 2 - READ THE OUTPUT:# VULNERABLE if Status is NotSigned, HashMismatch, or Unknown (the file is unsigned, tampered, or untrusted).# OK if Status is Valid.# TOOL: PowerShell
Fix
Sign every shipped EXE/DLL with the company code-signing certificate.
Audit notes [TCPK: 3 occurrences of this rule aggregated into one finding; see the affected list.]
#007MEDIUMConfirmedDVTA.vshost.exe signing certificate uses a weak hash (sha1RSA) (+1 more affected)authenticode.weak-cert-hash
# WHAT THIS CHECKS: Checks the file's Authenticode digital signature.# STEP 1 - RUN THIS IN POWERSHELL:Get-AuthenticodeSignature -FilePath 'C:\ProgramData\DVTA\DVTA.vshost.exe' | Format-List Status,StatusMessage,SignerCertificate# STEP 2 - READ THE OUTPUT:# VULNERABLE if Status is NotSigned, HashMismatch, or Unknown (the file is unsigned, tampered, or untrusted).# OK if Status is Valid.# TOOL: PowerShell
Fix
Obtain a SHA-256 (or stronger) code-signing certificate and re-sign.
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
Debug symbol files (.pdb/.map) are present. They expose source file paths, type/method names, and line numbers - a reverse-engineering aid - and indicate debug metadata was not stripped from the release.
Impact
Meaningful weakness that aids an attack chain or leaks sensitive information under some conditions.
Why here
Deterministically confirmed by the check (no heuristic).
File
2 files
Affected (2)
DBAccess.pdb
DVTA.pdb
Evidence
2 affected: DBAccess.pdb; DVTA.pdb
Verify
verify
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'devartifact.debug-symbols'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
Fix
Exclude .pdb/.map from the shipped artifact (publish without symbols, or strip them).
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
#009MEDIUMInferredEntityFramework.dll has client-side license/auth gate(s): IsProauthflags.client-side-gate
CWE-602CWE-603T1078 Valid AccountsT1211 Exploitation for Defense EvasionTASVS-AUTH Authentication & SessionDA2 Broken Authentication and Session Management
These boolean gates appear to run on the client. Decompile to confirm the feature/license is enforced LOCALLY -- if so, it is bypassable by patching the binary, flipping the value in memory, or returning true from the check.
Impact
Meaningful weakness that aids an attack chain or leaks sensitive information under some conditions.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\EntityFramework.dll
Evidence
IsPro
Verify
verify
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'authflags.client-side-gate'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
Fix
Move authorization / licensing decisions server-side; never trust a client-side boolean for access control.
Non-TLS FTP reference in first-party code. FTP transmits commands, file contents, and any credentials in cleartext -- trivially intercepted or MITM-able. Confirm whether it is a live transfer, and check for hardcoded FTP credentials nearby.
Impact
Meaningful weakness that aids an attack chain or leaks sensitive information under some conditions.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\DVTA.exe
Evidence
ftp://192.168.56.110
Verify
verify
# WHAT THIS CHECKS: Confirms whether a backend host the app talks to is reachable, and how the connection is secured.# STEP 1 - RUN THIS IN POWERSHELL:Test-NetConnection <host> -Port 443# STEP 2 - READ THE OUTPUT:# VULNERABLE if the host is contacted over http:// (credentials sent in cleartext) or it accepts a forged/invalid certificate.# OK if it uses https with a valid, properly-validated certificate.# NOTE: to see the real traffic, capture it with Burp or Fiddler while using the app.# TOOL: PowerShell + an intercepting proxy (Burp / Fiddler)
Fix
Use FTPS (FTP over TLS) or SFTP (SSH-based). Never send data or credentials over plain FTP, and never embed credentials in the URL.
Non-TLS http:// reference in first-party code. If this host is contacted at runtime, traffic (and any credentials/tokens) is exposed to network attackers and is trivially MITM-able. Confirm whether it is a live call or a documentation link.
Impact
Meaningful weakness that aids an attack chain or leaks sensitive information under some conditions.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
2 files
Affected (2)
msdn.com
code.google.com
Evidence
2 affected: msdn.com; code.google.com
Verify
verify
# WHAT THIS CHECKS: Confirms whether a backend host the app talks to is reachable, and how the connection is secured.# STEP 1 - RUN THIS IN POWERSHELL:Test-NetConnection <host> -Port 443# STEP 2 - READ THE OUTPUT:# VULNERABLE if the host is contacted over http:// (credentials sent in cleartext) or it accepts a forged/invalid certificate.# OK if it uses https with a valid, properly-validated certificate.# NOTE: to see the real traffic, capture it with Burp or Fiddler while using the app.# TOOL: PowerShell + an intercepting proxy (Burp / Fiddler)
Fix
Use https:// with certificate validation. If the host is HTTP-only, proxy it through an authenticated TLS endpoint.
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
#012MEDIUMInferredHardcoded AES/CBC initialization vector in config (+1 more affected)secrets.config-hardcoded-iv
CWE-329CWE-798T1552.001 Credentials In FilesTASVS-STORAGE Sensitive Data StorageDA3 Sensitive Data Exposure
# WHAT THIS CHECKS: Scans the file's text for things that look like LIVE secrets - Azure storage keys, connection strings, PEM private keys, AWS access keys, or JWT tokens.# STEP 1 - RUN THIS IN POWERSHELL:([regex]::Matches([Text.Encoding]::Unicode.GetString([IO.File]::ReadAllBytes('C:\ProgramData\DVTA\DVTA.exe.config')),'DefaultEndpointsProtocol=https?;[A-Za-z0-9=;._/+\-]{0,300}AccountKey=[A-Za-z0-9+/=]{20,}|AccountKey=[A-Za-z0-9+/=]{20,}|-----BEGIN [A-Z ]+KEY|AKIA[A-Z0-9]{16}|eyJ[A-Za-z0-9_-]{10,}')).Value# STEP 2 - READ THE OUTPUT:# VULNERABLE if it prints a real secret - e.g. AccountKey=..., a DefaultEndpointsProtocol=... connection string, an AKIA... AWS key, an eyJ... JWT, or a -----BEGIN ... KEY----- block.# OK if it prints nothing (only placeholders, or there are no secrets in the file).# NOTE: this reads the file as UTF-16 (Unicode) text. If the secret is stored as plain ASCII, change ::Unicode to ::UTF8 and run it again. To dump EVERY readable string instead: strings.exe -u 'C:\ProgramData\DVTA\DVTA.exe.config'# TOOL: PowerShell built-in (alternative: Sysinternals strings.exe)
Fix
Do not hardcode the IV. Generate a fresh random IV per encryption and store or transmit it alongside the ciphertext.
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
▾LOW (12)
#013LOWConfirmed (IL)Outbound HTTP request API (verify the target URL is not attacker-controlled) in DVTA.execallsites.ssrf-request-build
CWE-918T1059 Command and Scripting InterpreterTASVS-CODE Code QualityDA1 Injections
CVSS v4.0
Not auto-scored (mixed class) -- assign per finding
What
Triage: if the request URL or host is built from external input (config, IPC, file, a prior server response) without an allowlist, this is SSRF / open-redirect surface. Decompile the call site to confirm the URL is constant or validated. (Backend-side SSRF is tested dynamically against the API.)
Impact
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Proven by IL analysis: the flagged sink is reachable and, where applicable, reached by tainted/external input.
File
C:\ProgramData\DVTA\DVTA.exe
Evidence
WebClient
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\DVTA.exe'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Fix
Decompile the method (ILSpy / dnSpy) to confirm whether this is a real bug or a safe context.
Audit notes [TCPK IL: reachable call where external input reaches the sink (3 call site(s)) -- the method reads an external source (file/registry/network/IPC/HTTP request) or a caller parameter flows into the argument. Treat as a real injectable path and review.]
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Proven by IL analysis: the flagged sink is reachable and, where applicable, reached by tainted/external input.
File
C:\ProgramData\DVTA\ExcelLibrary.dll
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\ExcelLibrary.dll'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Audit notes [TCPK IL: the deserializer's Deserialize()/ReadObject() is actually invoked (4 call site(s), reachable=True) -- confirm whether the input can be attacker-controlled.]
#015LOWConfirmed5 first-party .NET assemblies are NOT obfuscated (source recoverable)obfuscation.absent
These managed assemblies have no packer and no obfuscator, so a decompiler (ILSpy/dnSpy) recovers near-original source: business logic, license checks, hardcoded values, and any embedded secrets are fully readable.
Impact
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Deterministically confirmed by the check (no heuristic).
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'obfuscation.absent'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
Fix
If the logic/IP or any client-side check matters, apply an obfuscator AND move trust decisions server-side. Never rely on obfuscation to hide secrets.
#016LOWConfirmedPagefile is NOT cleared at shutdownpagefile.no-clear-at-shutdown
# WHAT THIS CHECKS: Checks crash-dump and pagefile settings that could leak secrets to disk.# STEP 1 - RUN THIS IN POWERSHELL:reg query "HKLM\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting"# STEP 2 - READ THE OUTPUT:# VULNERABLE if full crash dumps are enabled, or the pagefile is not cleared at shutdown (in-memory secrets can reach disk).# OK if crash dumps are minidump-only AND ClearPageFileAtShutdown = 1.# TOOL: reg.exe / PowerShell
Fix
Set ClearPageFileAtShutdown=1 in the registry (or via Local Security Policy: Shutdown: Clear virtual memory pagefile).
#017LOWConfirmedDBAccess.dll has no strong-name public key token (+2 more affected)strongname.unsigned
# WHAT THIS CHECKS: Checks whether a .NET assembly is strong-named (which makes it harder to silently replace).# STEP 1 - RUN THIS IN POWERSHELL:[Reflection.AssemblyName]::GetAssemblyName('C:\ProgramData\DVTA\DBAccess.dll').GetPublicKeyToken()# STEP 2 - READ THE OUTPUT:# VULNERABLE if the output is EMPTY - the assembly is not strong-named and can be modified or swapped out.# OK if a public-key token (a row of bytes) is printed.# TOOL: PowerShell
Fix
Sign the assembly during build (csc.exe /keyfile, or <SignAssembly>true</SignAssembly> in csproj).
Audit notes [TCPK: 3 occurrences of this rule aggregated into one finding; see the affected list.]
#018LOWInferredBase64 encoding (verify it is not used in place of encryption) in EntityFramework.dllcallsites.base64-as-encryption
CWE-326T1059 Command and Scripting InterpreterTASVS-CODE Code QualityTASVS-CRYPTO Cryptography
CVSS v4.0
Not auto-scored (mixed class) -- assign per finding
What
Base64 is encoding, not encryption. If a credential / token / PII field is base64-encoded and then stored or transmitted as if protected, the data is effectively cleartext. Confirm sensitive values are encrypted (DPAPI / AES-GCM), not merely base64-encoded.
Impact
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\EntityFramework.dll
Evidence
ToBase64String
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\EntityFramework.dll'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Fix
Decompile the method (ILSpy / dnSpy) to confirm whether this is a real bug or a safe context.
Audit notes [TCPK IL: API is actually invoked (7 call site(s), reachable=True).]
#019LOWInferredEnvironment-variable lookup (verify not used for DLL/exe/config paths) in DVTA.execallsites.env-var-path-use
CWE-426CWE-15T1059 Command and Scripting InterpreterTASVS-CODE Code Quality
CVSS v4.0
Not auto-scored (mixed class) -- assign per finding
What
If an environment variable a standard user controls is used to build a DLL/EXE/config path that the app then loads or executes, a user can redirect it (DLL planting / path hijack). Decompile to see what the value feeds.
Impact
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\DVTA.exe
Evidence
GetEnvironmentVariable
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\DVTA.exe'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Fix
Decompile the method (ILSpy / dnSpy) to confirm whether this is a real bug or a safe context.
Audit notes [TCPK IL: API is actually invoked (1 call site(s), reachable=True).]
#020LOWInferredInsecure-temp-file pattern reference in EntityFramework.dllcallsites.insecure-temp
CWE-377T1059 Command and Scripting InterpreterTASVS-CODE Code Quality
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\EntityFramework.dll
Evidence
GetTempFileName
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\EntityFramework.dll'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Fix
Decompile the method (ILSpy / dnSpy) to confirm whether this is a real bug or a safe context.
#021LOWInferredCSV/Excel export without formula-injection neutralizationcsv.formula-injection-risk
CWE-1236T1059 Command and Scripting InterpreterT1048 Exfiltration Over Alternative ProtocolTASVS-CODE Code QualityDA1 Injections
CVSS v4.0
Not auto-scored (mixed class) -- assign per finding
What
The app exports data to CSV/Excel but no formula-character neutralization was seen. If any exported field can be user-controlled and starts with = + - @ (or tab/CR), a spreadsheet will execute it as a formula (=WEBSERVICE / =HYPERLINK for data exfiltration; =cmd|... for command execution in older Excel). Confirm the export path: are the fields user-influenced, and are leading formula characters escaped?
Impact
If an exported field is user-influenced and starts with a formula character, opening the file lets an attacker exfiltrate data (=WEBSERVICE / =HYPERLINK) or, in older Excel with DDE enabled, run commands on the reviewer machine. Risk depends on whether the exported fields are attacker-controlled.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
DVTA.exe
Evidence
export sink present (1 file(s)); no formula-neutralization marker found
Verify
verify
# WHAT THIS CHECKS: Checks whether data the app exports to CSV/Excel could be interpreted as a spreadsheet FORMULA (CSV/formula injection).# STEP 1 - DO THIS MANUALLY:# - In the app, put a value that STARTS WITH = into a field that later gets exported -- e.g. type =1+1 (or =HYPERLINK('http://attacker/x','click') ) into a name/comment/description field.# - Use the app's normal Export-to-CSV / Export-to-Excel feature to export that data.# - Open the exported .csv / .xlsx in Microsoft Excel and look at the cell you controlled.# STEP 2 - READ THE OUTPUT:# VULNERABLE if Excel shows '2' (the formula ran) or a clickable hyperlink -- the leading '=' was NOT escaped, so =WEBSERVICE(...)/=HYPERLINK(...) can exfiltrate data and (older Excel) =cmd|... can run commands.# OK if Excel shows the literal text =1+1 (the cell was prefixed with a single quote or the formula characters were neutralized).# NOTE: Also try leading + - @ tab and carriage-return; all are treated as formula starters by spreadsheet apps.# TOOL: the app + Microsoft Excel
Fix
Prefix any cell that starts with = + - @ (tab, CR) with a single quote, or enable the library's injection sanitisation (e.g. CsvHelper SanitizeForInjection).
#022LOWInferredNo SecureString / ProtectedData markers in any first-party PEmem.hygiene-absent
Triage hint -- if this app handles passwords / tokens at runtime, those values may live in plain managed strings (GC-tracked, may persist in memory).
Impact
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
Verify
verify
# WHAT THIS CHECKS: Checks crash-dump and pagefile settings that could leak secrets to disk.# STEP 1 - RUN THIS IN POWERSHELL:reg query "HKLM\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting"# STEP 2 - READ THE OUTPUT:# VULNERABLE if full crash dumps are enabled, or the pagefile is not cleared at shutdown (in-memory secrets can reach disk).# OK if crash dumps are minidump-only AND ClearPageFileAtShutdown = 1.# TOOL: reg.exe / PowerShell
Fix
For password and token handling, use SecureString and Marshal.SecureStringToGlobalAllocUnicode / ZeroFreeGlobalAllocUnicode, or wrap in ProtectedMemory blocks.
#023LOWInferredDVTA.exe writes to the registry and references credential fields (verify not stored in cleartext)storage.registry-credential
CWE-312CWE-522
CVSS v4.0
Not auto-scored (mixed class) -- assign per finding
What
First-party code both writes to the Windows registry (RegistryKey.SetValue / CreateSubKey) and references credential fields (password / token / secret). Thick clients frequently persist login credentials to HKCU in cleartext. Decompile the SetValue call sites: if a password / token is written without DPAPI (ProtectedData / CryptProtectData) it is recoverable by any process running as that user. Runtime confirmation: run the app, then Test-TcpkRegistryValues scans the live keys for the stored secret.
Impact
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'storage.registry-credential'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
Fix
Never persist raw credentials to the registry. Protect them with DPAPI (ProtectedData) scoped to the current user, or use the Windows Credential Manager; store only non-reversible tokens where possible.
#024LOWInferredHTTP client used; no cert-pinning markers foundtls.pinning-absent
CWE-295TASVS-NETWORK Network CommunicationDA7 Insecure Communication
App trusts the system root store. Acceptable for most consumer apps; raise to HIGH for high-value targets where corporate-CA MITM is in-threat-model.
Impact
Minor hardening gap / information useful to an attacker; low standalone risk.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
C:\ProgramData\DVTA\DVTA.exe
Evidence
uses WebClient; no pinning keywords
Verify
verify
# WHAT THIS CHECKS: Tests whether the app pins or validates its TLS server certificates.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkTlsPinning -Path 'C:\ProgramData\DVTA'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the app's HTTPS calls SUCCEED when routed through your forged-certificate proxy (no pinning / no validation).# OK if those calls FAIL through the proxy (pinning or validation is working).# NOTE: to test live, MITM the running app with mitmproxy or Burp using a self-signed CA.# TOOL: PowerShell + mitmproxy / Burp
Fix
For sensitive backends, pin the leaf or root cert thumbprint via ServerCertificateCustomValidationCallback (and confirm the callback actually pins, not just returns true).
▾INFO (11)
#025INFOConfirmedALPC ports enumerated; none matched the targetalpc.enumerated-clean
What
ALPC enumeration succeeded; no port name matched this application. Informational.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
Deterministically confirmed by the check (no heuristic).
Evidence
0 ALPC port(s) in \RPC Control; none matched the identity terms.
Verify
verify
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'alpc.enumerated-clean'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
#026INFOConfirmedAttack surface: 2 entry point(s) across 2 categoriesattacksurface.summary
What
Synthesized map of how the app can be reached (protocols, IPC, listeners, exports, web bridges). See attack-surface.json.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
Deterministically confirmed by the check (no heuristic).
# WHAT THIS CHECKS: A map of the entry points TCPK found - protocols, pipes, COM, RPC, ports, listeners.# STEP 1 - DO THIS MANUALLY:# - Open attack-surface.json in the output folder.# - Triage each entry point for authentication and input validation.# STEP 2 - WHAT IT MEANS:# Informational map, not a vulnerability by itself. Use it to decide what to test next.# TOOL: TCPK
#027INFOConfirmedDVTA.vshost.exe signing certificate expired, but signature is timestamped (still valid) (+1 more affected)authenticode.signer-expired
The signing certificate is past its validity period, but the signature carries a trusted RFC3161 timestamp dated within that period, so it still establishes valid provenance. Informational only.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
Deterministically confirmed by the check (no heuristic).
# WHAT THIS CHECKS: Checks the file's Authenticode digital signature.# STEP 1 - RUN THIS IN POWERSHELL:Get-AuthenticodeSignature -FilePath 'C:\ProgramData\DVTA\DVTA.vshost.exe' | Format-List Status,StatusMessage,SignerCertificate# STEP 2 - READ THE OUTPUT:# VULNERABLE if Status is NotSigned, HashMismatch, or Unknown (the file is unsigned, tampered, or untrusted).# OK if Status is Valid.# TOOL: PowerShell
Fix
No immediate action. Re-sign at the next release to keep the chain current.
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
Informational - triage context, not a vulnerability on its own.
Why here
Deterministically confirmed by the check (no heuristic).
File
C:\ProgramData\DVTA
Verify
verify
# WHAT THIS CHECKS: Checks the file's Authenticode digital signature.# STEP 1 - RUN THIS IN POWERSHELL:Get-AuthenticodeSignature -FilePath 'C:\ProgramData\DVTA' | Format-List Status,StatusMessage,SignerCertificate# STEP 2 - READ THE OUTPUT:# VULNERABLE if Status is NotSigned, HashMismatch, or Unknown (the file is unsigned, tampered, or untrusted).# OK if Status is Valid.# TOOL: PowerShell
#029INFOConfirmedDBAccess.dll contains URLs/paths/IPs (urls=0, paths=0, ips=4) (+4 more affected)strings.summary
DA3 Sensitive Data Exposure
What
Triage aid. See Test-TcpkEndpoints for non-prod classification and Test-TcpkSecrets for token-shaped strings.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
Deterministically confirmed by the check (no heuristic).
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'strings.summary'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
Audit notes [TCPK: 5 occurrences of this rule aggregated into one finding; see the affected list.]
Interacts with the DLL search order. Cross-reference against the DLL-hijack analysis (Test-TcpkPInvokeSurface + Test-TcpkPeImports).
Impact
Informational - triage context, not a vulnerability on its own.
Why here
Deterministically confirmed by the check (no heuristic).
File
C:\ProgramData\DVTA\DVTA.vshost.exe.manifest
Verify
verify
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'sxs.manifest'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
# WHAT THIS CHECKS: Confirms whether a backend host the app talks to is reachable, and how the connection is secured.# STEP 1 - RUN THIS IN POWERSHELL:Test-NetConnection <host> -Port 443# STEP 2 - READ THE OUTPUT:# VULNERABLE if the host is contacted over http:// (credentials sent in cleartext) or it accepts a forged/invalid certificate.# OK if it uses https with a valid, properly-validated certificate.# NOTE: to see the real traffic, capture it with Burp or Fiddler while using the app.# TOOL: PowerShell + an intercepting proxy (Burp / Fiddler)
Audit notes [TCPK: 2 occurrences of this rule aggregated into one finding; see the affected list.]
Confirm in ILSpy that the hash/signature is actually compared and the path acts on the result.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
EntityFramework.dll
Evidence
ComputeHash
Verify
verify
# WHAT THIS CHECKS: These are anti-tamper / hardening signals, not vulnerabilities by themselves.# STEP 1 - DO THIS MANUALLY:# - Decompile the flagged routine in a .NET or native decompiler.# - Check whether the anti-debug / integrity check actually gates execution.# STEP 2 - WHAT IT MEANS:# Informational. It is GOOD if the check genuinely stops execution when triggered; it is WEAK (but still not a vuln) if the check is present but never enforced.# TOOL: a .NET / native decompiler
#033INFOInferredSensitive-input UI with no screen-capture protectionui.no-screen-capture-protection
CWE-200
What
The app collects secret input (password box / SecureString / masked field) but no window calls SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE). Screenshots, screen recorders, and remote-desktop / screen-share tools can capture the sensitive screen.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
Pattern/heuristic match in a first-party binary; not proven by IL or dynamic analysis -- verify manually.
File
DVTA.exe
Evidence
password / secret-input markers present; SetWindowDisplayAffinity not referenced
Verify
verify
# WHAT THIS CHECKS: Re-validate this finding using its reported File and Evidence values.# STEP 1 - DO THIS MANUALLY:# - Re-run the TCPK check for rule 'ui.no-screen-capture-protection'.# - Inspect the reported File and Evidence; use the Evidence value as a search term.# STEP 2 - READ THE OUTPUT:# VULNERABLE if the Evidence value is real, reachable, and does what the finding describes.# OK if the Evidence is a false positive (a placeholder, dead code, or unreachable).# TOOL: TCPK / PowerShell
Fix
Call SetWindowDisplayAffinity(hwnd, WDA_EXCLUDEFROMCAPTURE) on windows that display secrets so they render blank to screen capture.
#034INFOLikely-FP (IL)Raw ADO.NET command construction (verify SQL is parameterized) in EntityFramework.dllcallsites.sql-command-construction
CWE-89T1059 Command and Scripting InterpreterTASVS-CODE Code QualityDA1 Injections
What
Presence of a raw command object is not itself a bug. Decompile the call site: if the CommandText is built by string concatenation/interpolation with external input, this is SQL injection. Parameterized queries are safe.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
A verifier judged this a likely false positive; kept for transparency at reduced confidence.
File
C:\ProgramData\DVTA\EntityFramework.dll
Evidence
SqlCommand
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\EntityFramework.dll'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Fix
Decompile the method (ILSpy / dnSpy) to confirm whether this is a real bug or a safe context.
Audit notes [TCPK IL: the flagged API is not actually invoked in EntityFramework.dll (call/newobj absent) -- the rule matched a string/type reference, not a call site.]
BinaryFormatter is unsafe and obsolete (CWE-502). Confirm runtimeconfig EnableUnsafeBinaryFormatterSerialization=false.
Impact
Informational - triage context, not a vulnerability on its own.
Why here
A verifier judged this a likely false positive; kept for transparency at reduced confidence.
File
C:\ProgramData\DVTA\ExcelLibrary.dll
Verify
verify
# WHAT THIS CHECKS: Finds the exact code locations TCPK flagged so you can read the real logic in a decompiler.# STEP 1 - RUN THIS IN POWERSHELL:Test-TcpkCallsites -Path 'C:\ProgramData\DVTA\ExcelLibrary.dll'# STEP 2 - READ THE OUTPUT:# VULNERABLE if the flagged method returns a constant 'true' for certificate validation, or it deserializes/parses untrusted input with no checks.# OK if it builds an X509Chain, compares a certificate thumbprint, or validates the input before using it.# NOTE: open the flagged method in a .NET decompiler (ILSpy or dnSpy) to read the method body.# TOOL: PowerShell + a .NET decompiler (ILSpy / dnSpy)
Audit notes [TCPK IL: the deserializer type is referenced but its Deserialize()/ReadObject() is never invoked in ExcelLibrary.dll -- the rule matched a type/string reference, not a call.]
▾DLL signing matrix (signed / not signed) (5 binaries · 2 signed · 3 unsigned)
Hover a row for the full subject, issuer, serial and EKU. The complete certificate for every binary is also in signing.json and the Excel "DLL Signing" sheet.
DLL
Signed
Status
Signer
Issuer
Algorithm
Key bits
Valid From
Expires
Thumbprint
Type
DBAccess.dll
NO
UNSIGNED
None
DVTA.exe
NO
UNSIGNED
None
ExcelLibrary.dll
NO
UNSIGNED
None
DVTA.vshost.exe
YES
EXPIRED-TS
Microsoft Corporation
Microsoft Code Signing PCA
sha1RSA
2048
2011-10-11
2013-01-11
19F8F76F4655074509769C20349FFAECCECD217D
Authenticode
EntityFramework.dll
YES
EXPIRED-TS
Microsoft Corporation
Microsoft Code Signing PCA
sha1RSA
2048
2011-10-11
2013-01-11
19F8F76F4655074509769C20349FFAECCECD217D
Authenticode
▾Software bill of materials (SBOM) (5 components · 0 native · 5 managed)