精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Semgrep代碼靜態分析工具:使用Docker進行簡單查詢

開發 開發工具
本文我們介紹一個開源的快速高效的多語言靜態分析工具Semgrep,通過在Docker中設置基本Semgrep環境,并用一些簡單的例子說明其用法。

靜態分析是一個非常有用的工具,使用它可以幫助開發者或者安全人員在開發階段就能發現代碼中存在的bug和安全問題。靜態分析是一個綜合性和系統性的工程,對于每一個開發者和安全人員來說了解其原理,并能使用工具進行初步的分析很有必要。本文我們介紹一個開源的快速高效的多語言靜態分析工具Semgrep,通過在Docker中設置基本Semgrep環境,并用一些簡單的例子說明其用法。 


概述

諸如pylint的Python或eslint的JavaScript之類的linter非常適合通用的廣泛語言標準。但是代碼審查中的常見問題呢,例如使用打印語句而不是記錄程序,或者在for循環(特定于Go)中使用defer語句,或者多層嵌套循環等。

大多數開發人員沒有使用語言解析的經驗。因此,在中小型團隊中看到自定義Lint規則并不常見。盡管沒有哪一種Linter或語言比其他Linter復雜得多(全都是AST操作),但是學習每種語言Linter的AST和框架要付出很小的代價。

semgrep規則的一個優點是,可以學習semgrep模式匹配語法(這非常簡單),然后可以為想要為其編寫規則的任何語言編寫規則。

Semgrep使用代碼的標準表達進行模式匹配,而無需復雜的查詢或者正則。可用于在DevSecOps各個階段:代碼編寫,代碼提交或者CI運行時發現Bug和漏洞。其精確的規則看起來就像要搜索的代碼,無需遍歷抽象語法樹或與正則表達式死扛。與傳統的正則表達式(和傳統的grep)不同,它可以找到遞歸模式。這使其特別有用,可以作為學習查找任何語言模式的工具。

Semgrep還支持容器化方式部署和運行,由emgrep官方注冊表中,有Semgrep社區維護的包安全性,正確性,性能,代碼質量和Bug等各方面的1000多規則可直接拿來使用。

Semgrep軟件安全公司r2c開發并提供商業支持。目前已經有大量的企業用于生產環境中,也有很多工具比如NodeJsScan之類底層支持引擎。

基本準備

本文中我們所有的例子都需要運行docker,并基于semgrep基本鏡像returntocorp/semgrep。docker安裝和配置過程我們不在介紹,首先從docker官方拉一個最新的鏡像備用:

  1. docker pull returntocorp/semgrep:latest 

semgrep有應在線工具(semgrep.dev/editor/),如果沒有docker環境的同學,可以通過在線工具嘗試例子。

在PHP中發現eval語句

假如希望腳本在PHP中使用eval函數時候告警:

php/test.php

  1. <?php 
  2. $var = "var"
  3. if (isset($_GET["arg"])) 
  4. $arg = $_GET["arg"]; 
  5. eval("\$var = $arg;"); 
  6. echo "\$var =".$var 
  7. eval( 
  8. bar 
  9. ); 
  10. # eval(foo) 
  11. echo(eval("\$var = $arg;")); 

semgrep所有運行依賴于一個yml的配置文件config.yml,基本規則如下:

rules:

  1. - id: cc-1 
  2. pattern: | 
  3. exec(...) 
  4. message: | 
  5. severity: WARNING 
  6. 我們可以在message部分增加警告的內容: 
  7. rules: 
  8. - id: cc-1 
  9. pattern: | 
  10. exec(...) 
  11. message: | 
  12. 使用了不安全的exec函數 
  13. severity: WARNING 

配置部分還要增加兩個規則對象中包括兩個鍵:mode和languages。

  1. rules: 
  2. - id: my_pattern_id 
  3. pattern: | 
  4. exec(...) 
  5. message: | 
  6. severity: WARNING 
  7. mode: search 
  8. languages: ["generic"] 

languages部分可以設置具體語言比如php或者用generic。如果設置了具體語言會對其做語法簡單,如果語法檢查不通過則不會執行搜索。我們通過以下語句運行semgrep Docker映像:

  1. docker run -v "${PWD}:/src" returntocorp/semgrep --config=config.yml php 

發現4個語句中使用了eval,也包括我們注釋掉的語句。

對比language設置為php時候的運行:

Semgrep代碼靜態分析初步:docker部署,查詢和掃描

有錯誤,我們增加參數—verbose,以獲得更詳細的錯誤信息:

Semgrep代碼靜態分析初步:docker部署,查詢和掃描

應該我們第7行少了個分號,導致語法錯誤。我們修改此語法錯誤,再運行:

發現了三個語句,注釋部分自動給去除了。

發現三重嵌套循環

下一個例子,我們使用一個稍微負載點,在golang代碼查找一個三重嵌套的循環,代碼(golang/test1.go):

  1. package main 
  2. import "log" 
  3. func main() { 
  4. for i :0; i < 10; i++ { 
  5. log.Print(i) 
  6. for j :0; j < 100; j++ { 
  7. :i * j 
  8. going :true 
  9. :0 
  10. for going { 
  11. if k == c { 
  12. break 
  13. k++ 
  14. log.Print(k) 

如果要查找嵌套for循環,則需要搜索由任意語法包圍的循環。Semgrep的...語法,非常適合,該操作使。我們修改golang搜索配置go-config.yml為:

rules:

  1. - id: triple-nest-loop 
  2. pattern: | 
  3. for ... { 
  4. ... 
  5. for ... { 
  6. ... 
  7.  
  8. for ... { 
  9. ... 
  10. ... 
  11. ... 
  12. message: | 
  13. 使用了三層嵌套for循環 
  14. severity: WARNING 
  15. mode: search 
  16. languages: ["generic"] 

運行semgrep:

  1. docker run -v "${PWD}:/src" returntocorp/semgrep --config=go-config.yml golang 
Semgrep代碼靜態分析初步:docker部署,查詢和掃描

靜態分析的局限性

我們將循環部分重構為函數調用,再試試(golang/loopy.go

):

  1. package main 
  2. import "log" 
  3. func inner(i, j int) { 
  4. :i * j 
  5. going :true 
  6. :0 
  7. for going { 
  8. if k == c { 
  9. break 
  10. k++ 
  11. log.Print(k) 
  12.  
  13. func main() { 
  14. for i :0; i < 10; i++ { 
  15. log.Print(i) 
  16. for j :0; j < 100; j++ { 
  17. inner(i, j) 

并再次運行semgrep:

  1. docker run -v "${PWD}:/src" returntocorp/semgrep --config=go-config.yml golang 
Semgrep代碼靜態分析初步:docker部署,查詢和掃描

結果還跟上面的一樣,由于函數打包,語法上不再顯示為三層循環,所以semgrep匹配不了模式。

使用現有規則進行xss漏洞掃描

我們前面也提到,除了一般掃描外semgrep官方注冊表維護了大量的規則,包括基本語法、安全加強、代碼質量的規則,這樣規則可以直接下載加載,使用方法:

  1. semgrep --config "規則" 

比如,我們上面第一部分的eval語句,在官方就有一個對應的規則r/php.lang.security.eval-use.eval-use

我們可以直接運行:

  1. docker run --rm -v "${PWD}:/src" returntocorp/semgrep:latest --config=" r/php.lang.security.eval-use.eval-use 

" php,其結果和第一步分的一樣:

Semgrep代碼靜態分析初步:docker部署,查詢和掃描

對Web開發中,最常見的一個漏洞就是xss漏洞,semgrep也有個專門xss漏洞掃描的規則集合p/xss,包括多個語言的60條規則。

xss集合的掃碼可以用

  1. semgrep --config "p/xss" 

我們可以直接在docker中使用:

  1. docker run --rm -v "${PWD}:/src" returntocorp/semgrep:latest --config="p/xss" golang 
Semgrep代碼靜態分析初步:docker部署,查詢和掃描

直接會從官方注冊表下載規則,并按使用規則進行掃描,結果發現一個問題,同樣方法,可以利用現有規則對自己的代碼進行掃描。

總結

學習一種語言以高層編寫語法規則以強制執行代碼行為仍然非常有用。semgrep使用通用的語法匹配器可幫助輕松編寫規則,可以用現有規則來對自己代碼進行掃描。總之,基于Docker運行,可以讓你項目的靜態分析變得非常容易,小伙伴們,路過不要錯過,都可以嘗試一下。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2021-06-08 13:56:34

工具靜態代碼

2021-11-04 05:43:38

GoKartGo代碼靜態安全分析

2017-05-10 14:27:29

靜態代碼漏洞安全

2012-05-22 00:28:21

JavaJava開源開源工具

2009-09-15 16:09:12

LINQ進行查詢

2009-09-07 17:05:10

LINQ進行查詢

2024-01-08 13:47:00

代碼分析工具

2013-04-08 10:47:42

Xcode靜態代碼分析

2011-05-05 09:54:05

靜態代碼

2023-09-14 22:57:52

2009-08-27 10:44:21

C#靜態變量

2020-12-25 15:24:24

人工智能

2009-09-15 14:58:26

Linq查詢本質

2020-12-07 14:46:07

程序員代碼分析工具

2021-03-29 23:05:36

程序員工具靜態分析

2009-12-09 10:07:22

配置靜態路由

2016-05-17 13:54:05

2021-07-29 06:37:55

KubernetesKubeLinter工具

2011-08-29 14:40:58

QTWebkit

2010-07-12 10:12:39

ibmdwXML
點贊
收藏

51CTO技術棧公眾號

欧美老妇交乱视频| 91麻豆精品久久久久蜜臀| 九九热久久66| 337p粉嫩色噜噜噜大肥臀| 成人羞羞视频播放网站| 8x8x8国产精品| 国产午夜大地久久| 自拍视频在线网| 国产成人欧美日韩在线电影| 欧美重口另类videos人妖| 成人精品一二三区| 另类尿喷潮videofree| 欧美日韩在线直播| www.av毛片| 午夜激情视频在线| 91农村精品一区二区在线| 国产欧美日韩免费| 成年人午夜视频| 久久久久久久久久久9不雅视频| 精品国产乱码久久久久久牛牛| 天天操天天摸天天爽| av成人福利| 亚洲三级在线播放| 日本一区二区三区精品视频| www.色呦呦| 毛片av一区二区| 欧美在线观看网址综合| 国产高潮国产高潮久久久91 | 免费在线毛片网站| 99精品久久只有精品| 91在线视频导航| www.久久视频| 国产精品嫩草99av在线| 欧美激情手机在线视频 | 日韩精品水蜜桃| 亚洲国产日韩欧美在线图片| √天堂资源在线| 日韩毛片在线| 在线视频你懂得一区| 男女超爽视频免费播放| 牛牛精品在线| 一区二区三区在线看| 一道本在线观看视频| h视频在线播放| 久久久久久久性| 久久亚洲综合网| 深爱五月激情五月| av亚洲精华国产精华| 91成人伦理在线电影| 国产绿帽一区二区三区| 精品中文字幕一区二区小辣椒| 国产精品久久网| 嫩草影院一区二区三区| 视频一区二区三区在线| 国产精品吹潮在线观看| 波多野结衣大片| 日韩高清电影一区| 国产精品入口日韩视频大尺度| 在线免费一区二区| 蜜臀久久99精品久久久久久9| 97久久国产精品| 极品久久久久久| 在线成人直播| 欧美国产日韩精品| 顶臀精品视频www| 婷婷综合伊人| 欧美乱妇高清无乱码| 精品99在线观看| 亚洲精华国产欧美| 91超碰中文字幕久久精品| 国产成人精品网| 日韩1区2区日韩1区2区| 成人写真福利网| 亚洲a视频在线观看| a美女胸又www黄视频久久| 久久精品日产第一区二区三区精品版 | 日韩电影一二三区| 成人高h视频在线| 精品人妻一区二区三区四区不卡| 国产69精品一区二区亚洲孕妇| 国产精品视频免费一区| 天堂中文资源在线| 久久综合国产精品| 爱爱爱视频网站| 国产探花视频在线观看| 91国偷自产一区二区使用方法| 亚洲欧美日韩一级| www.国产精品一区| 亚洲人永久免费| av免费播放网站| 亚洲精品网址| 欧美一级高清免费播放| 国产女优在线播放| 国产999精品久久久久久| 久久久久免费网| 日本欧美在线视频免费观看| 亚洲一区二区av电影| 人妻丰满熟妇av无码区app| 四虎视频在线精品免费网址| 亚洲精品电影网| 在线视频这里只有精品| 99亚洲一区二区| 成人激情综合网| 涩涩视频在线观看免费| 亚洲免费观看高清完整版在线观看 | 五月天一区二区| 国产视频1区2区3区| 国产伦乱精品| 色偷偷av一区二区三区乱| 福利一区二区三区四区| 久久成人精品无人区| 九九久久99| 四季久久免费一区二区三区四区| 在线日韩av片| 亚洲国产第一区| 欧美在线看片| 国产精品亚洲精品| 免费看男男www网站入口在线| 亚洲欧美日韩国产中文在线| 嫩草av久久伊人妇女超级a| 国产精品xxxav免费视频| 日韩一级裸体免费视频| 奴色虐av一区二区三区| 97成人超碰视| 国产一区二区三区小说| 免费一级欧美在线大片| 色哟哟亚洲精品一区二区| 国产亚洲欧美在线精品| 99久久99久久免费精品蜜臀| 日本天堂免费a| **欧美日韩在线| 中文字幕欧美国内| 91午夜精品亚洲一区二区三区| 成人动漫一区二区三区| 无码熟妇人妻av在线电影| 国产精品xnxxcom| 一区二区三区国产视频| 日本免费在线观看视频| 不卡一区中文字幕| 亚洲人成无码网站久久99热国产| 欧美成年网站| 九九视频直播综合网| 国产情侣自拍小视频| 亚洲欧洲性图库| xxxx在线免费观看| 忘忧草精品久久久久久久高清| 国产精品人成电影| aaa日本高清在线播放免费观看| 欧美日韩一区二区在线 | 久久精品凹凸全集| 久久久久久久影院| 少妇高潮久久久| 精品福利一区二区| 亚洲欧美色图视频| 久久综合婷婷| 亚洲国内在线| www.久久久久爱免| 欧美成人一区在线| 日韩一级在线播放| 欧美日韩一区二区三区| 国产小视频自拍| 麻豆成人在线观看| 最新视频 - x88av| 高清欧美性猛交xxxx黑人猛| 欧美一级片久久久久久久| 高清日韩av电影| 在线播放91灌醉迷j高跟美女| 99精品中文字幕| 国产乱码精品一区二区三区av| 日本aa在线观看| 欧美一级一片| 国产精品福利小视频| 黄色av免费在线| 亚洲精品一区二区三区99| 欧美一级片免费在线观看| 国产午夜精品福利| 999这里有精品| 亚洲视频高清| 日本午夜精品一区二区| 国产一区二区高清在线| 久久免费精品视频| 成人高清在线| 日韩欧美国产高清| 久久久久久在线观看| 中文字幕人成不卡一区| 成人免费看片载| 久久一综合视频| 穿情趣内衣被c到高潮视频| 日韩有码一区| 成人精品在线视频| av电影在线地址| 色多多国产成人永久免费网站| 在线播放精品视频| 亚洲国产aⅴ天堂久久| 国产精品成人无码免费| 国产高清久久久| 黄色一级二级三级| 影音先锋久久精品| 亚洲成人午夜在线| 欧美成人基地| 亚洲wwwav| 亚洲第一二三四区| 欧美劲爆第一页| 91大神xh98hx在线播放| 亚洲国产精品一区二区久| 国产女主播喷水视频在线观看| 一区二区三区欧美亚洲| 国产三级在线观看完整版| 99久久99久久免费精品蜜臀| 久久久福利影院| 麻豆精品网站| 成人黄色大片网站| 亚洲91视频| 亚洲欧美久久234| 日韩极品在线| av成人在线电影| 日本午夜免费一区二区| 日本亚洲欧美成人| av毛片午夜不卡高**水| 超碰91人人草人人干| av在线免费观看网站| 亚洲精品网址在线观看| 黄色一级a毛片| 日韩视频一区二区在线观看| 真实新婚偷拍xxxxx| 色婷婷精品大视频在线蜜桃视频| 日本熟伦人妇xxxx| 亚洲在线中文字幕| 少妇人妻丰满做爰xxx| 国产精品久久三| 微拍福利一区二区| 26uuu精品一区二区| 在线观看av中文字幕| 成人午夜精品在线| japan高清日本乱xxxxx| 国内不卡的二区三区中文字幕| 一区二区三区韩国| 日韩福利电影在线| 日韩a在线播放| 国产精品久久久久久久久久妞妞| 欧美一级视频在线播放| 黄色成人在线网站| 成年女人18级毛片毛片免费 | 国产极品粉嫩福利姬萌白酱| 亚洲二区视频| 欧美成人高潮一二区在线看| 在线观看视频免费一区二区三区| 人妻激情另类乱人伦人妻| 国产一区欧美| 欧美午夜性视频| 日韩午夜高潮| av天堂永久资源网| 久久久久久久高潮| 手机在线看福利| 狠狠色丁香久久婷婷综| 精品国产乱码久久久久久1区二区| 国模少妇一区二区三区| 永久看看免费大片| 成人国产精品视频| 国产黄色网址在线观看| 国产午夜精品美女毛片视频| 亚洲熟女少妇一区二区| 亚洲情趣在线观看| 18精品爽视频在线观看| 精品福利在线视频| 日韩在线 中文字幕| 欧美综合亚洲图片综合区| ,亚洲人成毛片在线播放| 欧美一区二区精美| 手机在线精品视频| 亚洲精品影视在线观看| 午夜伦全在线观看| 欧美疯狂做受xxxx高潮| 美女av在线免费看| 国产精品免费在线免费 | 美国黄色片视频| 亚洲综合图片区| youjizz在线视频| 欧美日韩一级二级三级| 亚洲美女性生活| 日韩精品在线免费观看视频| 91精彩视频在线观看| 九色精品美女在线| 欧洲一级精品| 99国产在线观看| 久久av超碰| 日韩精品福利片午夜免费观看| 一区二区91| 五月天开心婷婷| 久久午夜老司机| 中文字幕在线观看2018| 欧美日韩激情视频8区| 91 中文字幕| 日韩av在线免费播放| 99精品一级欧美片免费播放| 黄色av一区二区三区| 亚洲国产成人在线视频| 九色在线观看| 欧美成人黄色小视频| 正在播放日韩精品| 成人免费网站在线| 天天躁日日躁狠狠躁欧美巨大小说| 少妇免费毛片久久久久久久久| 欧美二区不卡| 日韩一级片播放| 成人免费视频视频在线观看免费| 波多野在线播放| 亚洲丶国产丶欧美一区二区三区| 最近中文字幕在线观看| 亚洲精品国产精品乱码不99按摩 | 亚洲美女av黄| 色屁屁www国产馆在线观看| 情事1991在线| 综合视频一区| 在线精品日韩| 老司机精品久久| 亚洲精品国产成人av在线| 国产精品国产三级国产三级人妇 | 五月婷婷视频在线观看| 国产精品视频自拍| 蜜桃a∨噜噜一区二区三区| 国产黄色激情视频| 狠狠色综合日日| 黄免费在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲风情第一页| 久久这里只有精品99| av成人在线观看| 欧美在线一二三区| 亚洲在线电影| 亚洲综合自拍网| 亚洲一区二区三区四区的| 国产视频一区二区三| 精品国产一区二区三区久久狼黑人| 精品3atv在线视频| 欧美日韩综合网| 亚洲欧美日韩国产| 国产激情视频网站| 天天色图综合网| 亚洲国产精品一| 欧美—级a级欧美特级ar全黄 | 欧美成人一区二区三区在线观看| 免费av网站在线看| 国产在线视频2019最新视频| 青青草国产免费一区二区下载| 免费av网址在线| 久久精品亚洲麻豆av一区二区| 亚洲天堂一区在线| 亚洲毛片在线看| 视频一区在线免费看| 亚洲成人在线视频网站| 久久97超碰国产精品超碰| 亚洲国产精品一区二区久久hs| 欧美日本在线看| 国产成人在线视频免费观看| 91热精品视频| 极品少妇一区二区三区| 插我舔内射18免费视频| 岛国av一区二区三区| 免费人成在线观看网站| 国产精品久久二区| 久久一区91| 日本女人黄色片| 亚洲18女电影在线观看| 五月天婷婷在线播放| 国产ts人妖一区二区三区| 欧美影院三区| 成人性生交视频免费观看| 夜夜嗨av一区二区三区中文字幕 | 欧美大片网站| 久久天天东北熟女毛茸茸| 成人免费观看视频| 无码人妻aⅴ一区二区三区有奶水| 一区二区三区四区视频| 成人免费91| 黄页网站在线观看视频| 日本一区二区三区视频视频| 国产理论片在线观看| 久久99国产精品自在自在app | 粉嫩av一区二区三区在线播放 | 国产精品久久亚洲7777| 先锋影音国产一区| 成人做爰视频网站| 亚洲电影在线看| 69堂免费精品视频在线播放| xxxxxx在线观看| 91年精品国产| 国产熟女一区二区三区四区| 97在线视频免费| 久久看人人摘| 中文字幕在线播放视频| 欧美性高清videossexo| 国产乱码在线| 亚洲精品一区二区三区av| 国产1区2区3区精品美女| 超碰在线免费97| 国内精品美女av在线播放| 色欧美自拍视频| 久久久精品人妻无码专区| 欧美一区二区三区婷婷月色|