【发布时间】:2014-12-12 15:32:15
【问题描述】:
我目前正在使用 MongoDB 来存储我的数据的项目。这两个集合具有以下格式:
CVE
{
"Modified" : "2014-09-27T06:55:04.867-04:00",
"Published" : "2014-09-27T06:55:04.867-04:00",
"_id" : ObjectId("542923711bb35a10e3053986"),
"cvss" : "9.3",
"cwe" : "Unknown",
"id" : "CVE-2014-3062",
"last-modified" : "2014-09-29T09:00:35.803-04:00",
"references" : [
"http://xforce.iss.net/xforce/xfdb/93540",
"http://www-01.ibm.com/support/docview.wss?uid=swg21683609"
],
"summary" : "Unspecified vulnerability in IBM Security QRadar SIEM 7.1 MR2 and 7.2 MR2 allows remote attackers to execute arbitrary code via unknown vectors.",
"vulnerable_configuration" : [
"cpe:/a:ibm:qradar_security_information_and_event_manager:7.1.0",
"cpe:/a:ibm:qradar_security_information_and_event_manager:7.2.0"
]
}
mgmt_whitelist
{
"_id" : ObjectId("548855641bb35a2dc5675244"),
"id" : "cpe:/a:ibm:qradar_security_information_and_event_manager:7.2.0"
}
我想在 mgmt_whitelist 中找到 CVE 中具有易受攻击配置的所有项目,我可以通过以下方式轻松实现:
db.cves.find(
{'vulnerable_configuration':
{'$in': db.mgmt_whitelist.distinct('id')}
}
).sort({Modified: -1}).limit(10)
但是,白名单中也包含类似
的记录{
"_id" : ObjectId("54885ff41bb35a2f57a7c567"),
"id" : "cpe:/a:7-zip:7-zip"
}
这是一种没有版本的 CPE 格式。我希望能够进行类似正则表达式的搜索,以便在搜索中也能找到这些列入白名单的项目。
我试过了
db.cves.find(
{'vulnerable_configuration':
{'$in':
{'$regex':db.mgmt_whitelist.distinct('id')
}
}
).sort({Modified: -1}).limit(10)
但这不起作用...我应该怎么做?
提前致谢,
皮吉
【问题讨论】:
-
对于每个不同的
whitelistid,您需要组合一个regex对象,具体取决于您需要如何匹配。然后你可以执行它:({ vulnerable_configuration: { $in: [ RegexOne, RegexTwo,...] } })