muaddib-scanner 2.10.13 → 2.10.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/iocs/builtin.yaml +2 -0
- package/package.json +1 -1
- package/src/response/playbooks.js +8 -0
- package/src/rules/index.js +12 -0
- package/src/scanner/ast-detectors.js +11 -0
- package/src/scanner/dataflow.js +2 -1
package/iocs/builtin.yaml
CHANGED
package/package.json
CHANGED
|
@@ -690,6 +690,14 @@ const PLAYBOOKS = {
|
|
|
690
690
|
'pour reecrire le malware a chaque execution, evitant la detection par signature. Moteur polymorphe. ' +
|
|
691
691
|
'Verifier si Ollama est installe: curl http://localhost:11434/api/tags. ' +
|
|
692
692
|
'Aucun package npm legitime n\'appelle un LLM local. Supprimer le package.',
|
|
693
|
+
|
|
694
|
+
pth_persistence:
|
|
695
|
+
'CRITIQUE: Ecriture d\'un fichier .pth detectee. Les fichiers .pth dans site-packages/ sont executes ' +
|
|
696
|
+
'automatiquement par Python au demarrage — c\'est un vecteur de persistence invisible. ' +
|
|
697
|
+
'Technique LiteLLM/Checkmarx (mars 2026): litellm_init.pth contient du code base64 qui installe un stealer ' +
|
|
698
|
+
'dans ~/.config/sysmon/ et exfiltre vers checkmarx.zone. ' +
|
|
699
|
+
'Verifier: find $(python -c "import site; print(site.getsitepackages()[0])") -name "*.pth" -exec cat {} \\; ' +
|
|
700
|
+
'Supprimer tout fichier .pth non standard. Rotation des credentials.',
|
|
693
701
|
};
|
|
694
702
|
|
|
695
703
|
function getPlaybook(threatType) {
|
package/src/rules/index.js
CHANGED
|
@@ -1667,6 +1667,18 @@ const RULES = {
|
|
|
1667
1667
|
],
|
|
1668
1668
|
mitre: 'T1543.002'
|
|
1669
1669
|
},
|
|
1670
|
+
pth_persistence: {
|
|
1671
|
+
id: 'MUADDIB-AST-061',
|
|
1672
|
+
name: 'Python .pth Auto-Exec Persistence',
|
|
1673
|
+
severity: 'CRITICAL',
|
|
1674
|
+
confidence: 'high',
|
|
1675
|
+
description: 'Ecriture d\'un fichier .pth detectee. Les fichiers .pth dans site-packages/ sont executes automatiquement par l\'interpreteur Python au demarrage, sans import explicite. Technique de persistence LiteLLM/Checkmarx (litellm_init.pth) : le .pth contient du code Python base64-encode qui installe un stealer.',
|
|
1676
|
+
references: [
|
|
1677
|
+
'https://blog.pypi.org/posts/2026-03-24-litellm-compromise/',
|
|
1678
|
+
'https://attack.mitre.org/techniques/T1546/004/'
|
|
1679
|
+
],
|
|
1680
|
+
mitre: 'T1546.004'
|
|
1681
|
+
},
|
|
1670
1682
|
npm_token_steal: {
|
|
1671
1683
|
id: 'MUADDIB-AST-060',
|
|
1672
1684
|
name: 'NPM Token Extraction via CLI',
|
|
@@ -1201,6 +1201,17 @@ function handleCallExpression(node, ctx) {
|
|
|
1201
1201
|
file: ctx.relFile
|
|
1202
1202
|
});
|
|
1203
1203
|
}
|
|
1204
|
+
// Detect writes to .pth files — Python auto-exec persistence (LiteLLM/Checkmarx T1546.004)
|
|
1205
|
+
// .pth files in site-packages/ are executed automatically by the Python interpreter at startup.
|
|
1206
|
+
// No legitimate npm package creates .pth files.
|
|
1207
|
+
if (sdPathStr && /\.pth$/i.test(sdPathStr)) {
|
|
1208
|
+
ctx.threats.push({
|
|
1209
|
+
type: 'pth_persistence',
|
|
1210
|
+
severity: 'CRITICAL',
|
|
1211
|
+
message: `${sdWriteMethod}() writes to Python .pth file: "${sdPathStr.substring(0, 80)}" — auto-exec persistence technique (LiteLLM/Checkmarx).`,
|
|
1212
|
+
file: ctx.relFile
|
|
1213
|
+
});
|
|
1214
|
+
}
|
|
1204
1215
|
}
|
|
1205
1216
|
}
|
|
1206
1217
|
|
package/src/scanner/dataflow.js
CHANGED
|
@@ -1000,7 +1000,8 @@ const SENSITIVE_PATH_PATTERNS = [
|
|
|
1000
1000
|
'_cacache', '.cache/yarn', '.cache/pip',
|
|
1001
1001
|
// P6: Removed discord, leveldb — data directories, not credential paths.
|
|
1002
1002
|
// _cacache/.cache kept — real cache poisoning vectors (T1195.002).
|
|
1003
|
-
'/proc/mem', '/proc/self' // v2.10.11: runner secret extraction from process memory (TeamPCP Trivy stealer)
|
|
1003
|
+
'/proc/mem', '/proc/self', // v2.10.11: runner secret extraction from process memory (TeamPCP Trivy stealer)
|
|
1004
|
+
'.config/sysmon' // v2.10.13: LiteLLM/Checkmarx credential stealer staging path
|
|
1004
1005
|
];
|
|
1005
1006
|
|
|
1006
1007
|
function isSensitivePath(val) {
|