用GPT做静态代码扫描实现自动化漏洞挖掘思路分享
原创 Leiothrix 2023-03-20 17:54 浙江
静态代码扫描结合GPT,本文分享了一种利用GPT技术结合静态代码扫描的自动化漏洞挖掘思路,让人工智能工具能够实际应用在生活、工作中。
戳上面的蓝字关注我吧!

之前一直有一个想法,就是用GPT来做代码审计和反混淆的事情,愈是跟对抗相关的事情愈有训练的意义。
还是用之前介绍过的工具Cursor来做
话术如下:
请将下面的字节码用Java代码重写,要求:- 逻辑与原代码保持一致- 使用更友好的变量名- 不存在的函数不需要生成- 不需要生成类,只要生成函数即可。- 不要求代码能编译通过- 不要删除或者省略任何代码- 添加中文注释

嗯?混淆?我看不懂机器还看不懂吗!(手动狗头
)
从推上看到一个提出使用Embeddings的方式将项目喂给GPT的构思图

!pip install llama-index!pip install langchain
装好之后编写如下代码进行查询
from llama_index import SimpleDirectoryReader, GPTListIndex, readers, GPTSimpleVectorIndex, LLMPredictor, PromptHelperfrom langchain import OpenAIimport sysimport osfrom IPython.display import Markdown, displaydef construct_index(directory_path):# set maximum input sizemax_input_size = 4096# set number of output tokensnum_outputs = 2000# set maximum chunk overlapmax_chunk_overlap = 20# set chunk size limitchunk_size_limit = 600# define LLMllm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="text-davinci-003", max_tokens=num_outputs))prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)documents = SimpleDirectoryReader(directory_path).load_data()index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper)index.save_to_disk('index.json')return indexdef ask_ai():index = GPTSimpleVectorIndex.load_from_disk('index.json')while True:query = input("What do you want to ask? ")response = index.query(query, response_mode="compact")display(Markdown(f"Response: <b>{response.response}</b>"))if __name__=='__main__':os.environ["OPENAI_API_KEY"] = "sk-xxxxxxxx"construct_index("context_data/src")ask_ai()
其中construct_index的参数就是当前目录下需要审计的代码路径,"sk-xxxxxxxx"就是在OpenAI官网申请到的Token

执行进行查询





周一来公司上班后还是恋恋不忘,一直想将GPT结合在自动化漏洞发现上,但是不管怎么测试总感觉蠢蠢的。于是中午休息时间再看了下代码,直到我发现我模型选错了之后...

更换模型为code-davinci-002

终于成功了,虽然给出的demo中确实没有安全漏洞存在,于是乎我找一个存在安全漏洞的靶场来做。
当我又问它,有什么漏洞的时候,API给我挤爆了????

问了师傅得知是要用英文提问和回答,不过效果不太好,我这套是jspxcms,是有后台ssrf漏洞的,但是换了英文提问后还是提示没有安全风险(就算给出入口方法也没用,唉,累了),只好继续换Demo试试,看看能不能测出来。
Please provide a detailed analysis of the source code for any vulnerabilities, and if any are found, please specify the file path and line number.
非常正确!!!!
如果把关键逻辑改成工具类呢,比如下图中的HttpClient.URLConnection方法

GPT一样可以测出来


