feat: 调整了prompt,分析信息泄漏CVE
This commit is contained in:
@@ -26,14 +26,14 @@ def process_result(data: Any) -> str:
|
||||
|
||||
def analyze_with_ai(data: str) -> str:
|
||||
prompt = """
|
||||
你是一个计算机安全领域的专家,能够根据CVE描述分析出CVE产生于哪个程序、有何影响后果等信息。
|
||||
你是一个计算机容器安全领域的专家,能够根据CVE描述分析出CVE产生于哪个程序、有何影响后果等信息。
|
||||
下面我会发给你一段文本,第一行是CVE的编号与文件位置信息,后续是这个CVE的详细描述。
|
||||
请分析我发送给你的CVE详细描述内容,并进行分析,我有如下要求:
|
||||
1. 分析这个CVE信息是否与namespace、cgroup、container或者容器、隔离相关;
|
||||
2. 告诉我这是什么程序的漏洞,是内核Kernel,还是容器实现Docker,还是容器内部运行的应用,同时告诉我这个漏洞如何发生,它有何效果;
|
||||
3. 如果这个CVE和namespace、cgroup、container或者容器、隔离无关,你只需返回"N/A"即可,无需任何多余信息;
|
||||
4. 如果这个CVE和namespace、cgroup、container或者容器、隔离相关,那么你需要直接返回一个json,这个json样例如下:
|
||||
{"ProgramType":"Linux 内核 (Kernel)漏洞","VulnerabilityLocation":"SCTP 套接字的实现中的.....","VulnerabilityReason":"......","VulnerabilityConsequence":"......"}
|
||||
1. 分析这个CVE信息是否和这个CVE描述示例是相同的成因,即信息在构建时被写入镜像,所有用户共用同一份信息;
|
||||
2. 如果不满足条件1,你只需返回"N/A"即可,无需任何多余信息;
|
||||
3. 如果这个CVE满足条件1,那么你只需要直接返回一个json,这个json样例如下:
|
||||
{"Conatiner":"[存在CVE的容器镜像]","CVE_Reason":"[容器泄漏或未妥善保护的文件、密钥等敏感信息类型]","CVE_Consequence":"[该CVE的后果,以及严重程度]"}
|
||||
请牢记,你必须只返回json内容,并且尽量使用中文。
|
||||
"""
|
||||
|
||||
client = OpenAI(
|
||||
@@ -63,11 +63,11 @@ if __name__ == "__main__":
|
||||
pattern = r"\./data/.*x/CVE.*?\.json"
|
||||
regex = re.compile(pattern)
|
||||
|
||||
with open("keyword_filter_21-25.log", "r", encoding="utf-8") as file:
|
||||
with open("keyword_filter_11-20.log", "r", encoding="utf-8") as file:
|
||||
text = file.read()
|
||||
matches = list(regex.finditer(text))
|
||||
|
||||
log = open("./info_reveal_result/analysis_result.log", "w", encoding="utf-8")
|
||||
log = open("./info_reveal_result/analysis_result_11-20.log", "w", encoding="utf-8")
|
||||
|
||||
# 如果没有找到任何匹配项
|
||||
if not matches:
|
||||
|
||||
Reference in New Issue
Block a user