???? 這段時(shí)間研究AI平臺的能力。 今天我把庫博檢測工具發(fā)現(xiàn)的一個Java安全漏洞相關(guān)代碼傳到幾款A(yù)I工具上進(jìn)行分析,看看這幾款工具反饋的結(jié)果。這些工具包括ChatGPT-3.5、Forefront Claude、AIChat(組合)和清華ChatGlm。
?????? 首先我們看看庫博檢測出的這個漏洞是否存在。先在代碼。
protected?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
????????//?TODO?Auto-generated?method?stub
????????/**
?????????*?文件下載
?????????*?有目錄遍歷攻擊漏洞的代碼
?????????*/
????????????request.setCharacterEncoding("UTF-8");
????????????response.setContentType("text/html;charset=utf-8");
????????????response.setCharacterEncoding("utf-8");
????????????OutputStream?out?=?null;
????????????//獲取項(xiàng)目部署絕對路徑下的upload文件夾路徑,下載upload目錄下面的文件
????????????String?root?=?request.getServletContext().getRealPath("/upload");
????????????//獲取文件名
????????????String?filename?=?request.getParameter("filename");
????????????File?file?=?new?File(root?+?"/"?+?filename);
????????????//根據(jù)文件路徑創(chuàng)建輸入流
????????????FileInputStream?fis?=?new?FileInputStream(file);
????????????out=response.getOutputStream();
????????????//設(shè)置響應(yīng)頭,彈出下載框
???????????System.out.println(root?+?"/"?+?filename);
????????????//response.setContentType("application/x-msdownload");
???????????//?response.addHeader("Content-Disposition",?"attachment;filename="?+?new?String(filename.getBytes()));
????????????
????????????String?agent?=?request.getHeader("USER-AGENT").toLowerCase();
????????????String?name?=?new?String(filename.getBytes(agent.indexOf("msie")?!=?-1???"GBK"?:?CharEncoding.UTF_8),?CharEncoding.ISO_8859_1);
????????????response.setContentType("application/octet-stream");
????????????response.setHeader("Content-Length",?""?+?file.length());
????????????response.setHeader("Pragma",?"NO-cache");
????????????response.setHeader("Cache-Control",?"No-cache");
????????????response.setCharacterEncoding("UTF-8");
????????????response.setContentType("text/html");
????????????response.setDateHeader("Expires",?-1);
????????????
????????????response.setHeader("Content-disposition",?"attachment;filename="?+?name);
????????????//response.addHeader("Content-Length",?""?+?file.length());
????????????//byte[]?b?=?new?byte[fis.available()];
????????????byte[]?b?=?new?byte[1024];
????????????int?len=0;
????????????while?((len=fis.read(b))!=-1)
????????????????out.write(b,0,len);
????????????
????????????if(len==-1)
????????????{
????????????????fis.close();
????????????????request.getSession().setAttribute("message2","下載完成!");
????????????????request.getRequestDispatcher("/filetraversal.jsp").forward(request,?response);
????????????}
? ?????}
庫博檢測是以安全漏洞維度展示的,所以點(diǎn)擊某個漏洞類型,可以看到該安全漏洞對應(yīng)的代碼位置。當(dāng)前這個版本沒有以文件形式展示漏洞方式了(國內(nèi)工具基本上都沒有該功能,庫博之前版本是有的)。
首先我們測試一下邊界AICHAT,我們使用推薦模型組合,輸入代碼后,給出分析結(jié)果如下。
可以看到,AI引擎給找出來了多個缺陷,其中第一條就是我們最關(guān)注的路徑遍歷,能夠給出來。第2條代碼中不存在,但是3、5、6還的確是存在的問題。這樣看,分析還是比較全面的。
使用國外AI工具Forefront Chat進(jìn)行分析,該工具也是集成Chatgpt、Claude 1.2,該引擎是需要在互聯(lián)網(wǎng)進(jìn)行搜索,大概1分鐘沒有反饋出結(jié)果。
我們看Chatgpt官方網(wǎng)站上,使用Chatgpt-3.5引擎的分析結(jié)果。
分析上面的結(jié)果,可以看到發(fā)現(xiàn)了3個安全問題,第1個事路徑遍歷,第2個問題,國產(chǎn)AI工具也給出了類似結(jié)果。而第3個問題感覺是一個誤報(bào),因?yàn)樵诖a中進(jìn)行流資源釋放,但是是在一個分支進(jìn)行了釋放,應(yīng)該算是一個誤報(bào)。
我們再看看在清華大學(xué)的ChatGlm平臺上的分析結(jié)果。
……………省略中間代碼,見下面。
為了方便,我貼出所有返回的代碼。
protected? void? doPost(HttpServletRequest? request,? HttpServletResponse? response)? throws? ServletException,? IOException? {
???? //? TODO? Auto-generated? method? stub
???? /**
?????? *? 文件下載
?????? *? 修復(fù)了目錄遍歷攻擊漏洞的代碼
?????? */
???? request.setCharacterEncoding("UTF-8");
???? response.setContentType("text/html;charset=utf-8");
???? response.setCharacterEncoding("utf-8");
???? OutputStream? out? =? null;
???? //? 獲取項(xiàng)目部署絕對路徑下的upload文件夾路徑,下載upload目錄下面的文件
???? String? root? =? request.getServletContext().getRealPath("/upload");
???? //? 獲取文件名
???? String? filename? =? request.getParameter("filename");
???? //? 檢查文件名是否符合預(yù)期
???? if? (filename? ==? null? ||? filename.trim().isEmpty())? {
???????? response.sendError(HttpServletResponse.SC_BAD_REQUEST,? "Invalid? file? name");
???????? return;
???? }
???? //? 限制用戶可以下載的文件類型
???? String? allowedExtensions? =? "txt,jpg,png,gif";
???? String? fileExtension? =? filename.substring(filename.lastIndexOf('.')? +? 1).toLowerCase();
???? if? (!allowedExtensions.contains(fileExtension))? {
???????? response.sendError(HttpServletResponse.SC_BAD_REQUEST,? "Invalid? file? extension");
???????? return;
???? }
???? File? file? =? new? File(root? +? "/"? +? filename);
???? //? 使用ServletContext.getResourceAsStream()代替FileInputStream
????? try? (InputStream? is? =? request.getServletContext().getResourceAsStream("/upload/"? +? filename))? {
???????? if? (is? ==? null)? {
???????????? response.sendError(HttpServletResponse.SC_NOT_FOUND,? "File? not? found");
???????????? return;
???????? }
???????? response.setContentType("application/octet-stream");
???????? response.setHeader("Content-Length",? String.valueOf(is.available()));
???????? response.setHeader("Pragma",? "NO-cache");
???????? response.setHeader("Cache-Control",? "No-cache");
???????? response.setCharacterEncoding("UTF-8");
???????? response.setContentType("text/html");
???????? response.setDateHeader("Expires",? -1);
???????? response.setHeader("Content-disposition",? "attachment;filename="? +? filename);
???????? byte[]? buffer? =? new? byte[1024];
???????? int? bytesRead;
???????? while? ((bytesRead? =? is.read(buffer))? !=? -1)? {
???????????? out.write(buffer,? 0,? bytesRead);
???????? }
???? }? catch? (IOException? e)? {
???????? //? 處理異常,例如記錄日志、返回錯誤信息等
???????? e.printStackTrace();
???? }
???? if? (out? !=? null)? {
????????? try? {
???????????? out.flush();
???????????? out.close();
???????? }? catch? (IOException? e)? {
???????????? //? 處理異常,例如記錄日志、返回錯誤信息等
???????????? e.printStackTrace();
???????? }
???? }
}
突然感覺清華大學(xué)的這個AI引擎功能強(qiáng)大,不但給出了4個問題,最亮眼的給出的修復(fù)后的代碼,這段代碼我還沒有時(shí)間去替換原來代碼去編譯看看是否存在問題,但是這個功能足于領(lǐng)先了。為了驗(yàn)證引擎,我把返回的代碼又貼了回去,讓引擎分析分析是否存在漏洞。其反饋結(jié)果如下:
在其提供的修復(fù)代碼的基礎(chǔ)上又檢測出的問題,其提供的修復(fù)代碼中,增加了對于文件類型的限制。
通過這個例子說明,國內(nèi)AI引擎有自己創(chuàng)新之處,但是在一些細(xì)節(jié)上還是存在瑕疵,需在在引擎或訓(xùn)練數(shù)據(jù)上做的更精細(xì)。文章來源:http://www.zghlxwxcb.cn/news/detail-765672.html
(結(jié)束)文章來源地址http://www.zghlxwxcb.cn/news/detail-765672.html
到了這里,關(guān)于幾款A(yù)I工具代碼安全漏洞分析能力對比的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!