精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲大胆美女视频| 国产婷婷色一区二区三区| 日韩视频―中文字幕| 免费高清视频在线观看| 久久香蕉一区| 最近中文字幕av| 韩国成人免费视频| 久久久青草青青国产亚洲免观| 国产精品91久久久久久| 国产成人久久久久| 校园春色另类视频| 91精品国产综合久久精品app| 成年人网站国产| 国产小视频福利在线| 国内不卡的二区三区中文字幕| 久久久久久噜噜噜久久久精品| 久久成人激情视频| 日本在线成人| 欧美视频你懂的| 国产成人在线小视频| a√资源在线| 成人avav在线| 亚洲自拍偷拍福利| 成年人av网站| 在线观看亚洲| 久久精品国产成人| 亚洲精品国产精品国自产网站| 7m精品国产导航在线| 欧美日韩综合不卡| 欧美色图另类小说| 免费在线播放电影| 亚洲欧美日韩在线| 欧美高清一级片在线观看| 欧美精品做受xxx性少妇| 国产人妻大战黑人20p| 粉嫩久久久久久久极品| 在线综合亚洲欧美在线视频| 狠狠热免费视频| 亚洲天堂av影院| 亚洲国产人成综合网站| 在线观看欧美激情| av资源种子在线观看| 久久夜色精品国产噜噜av| 国产精品国产精品国产专区蜜臀ah| 亚洲综合免费视频| 美国欧美日韩国产在线播放| 日韩av片永久免费网站| 国产成人精品网| 99精品国产99久久久久久福利| 欧美伦理91i| 日日骚一区二区三区| 久久精品国产99久久| 亚洲人高潮女人毛茸茸| 亚洲综合网在线观看| 美女一区二区在线观看| 亚洲成人精品视频在线观看| 丰满熟女人妻一区二区三区| 精品欧美视频| 日韩欧美国产精品一区| 国产精品久久久久野外| 试看120秒一区二区三区| 日韩一级完整毛片| 又色又爽又黄18网站| gogo久久日韩裸体艺术| 亚洲成人在线视频播放| 中文字幕 亚洲一区| 欧美午夜18电影| 亚洲欧美福利视频| a天堂中文字幕| 欧美限制电影| 日韩在线播放一区| 久久视频免费观看| www.污污视频| 人人爱人人干婷婷丁香亚洲| 日韩一级片网站| 高清中文字幕mv的电影| 美女av一区| 伊人久久男人天堂| 小早川怜子一区二区的演员表| 欧美伊人久久| 57pao国产成人免费| 国产一区免费看| 黄一区二区三区| 国产成人免费观看| 日韩大胆人体| 国产精品超碰97尤物18| 4444在线观看| 午夜伦理福利在线| 欧美调教femdomvk| 成人做爰69片免费| 免费黄色成人| 超碰97人人做人人爱少妇| 国产在线视频99| 天堂av在线一区| 91久久精品在线| 性感美女福利视频| 中文字幕在线不卡一区| 国产一区二区四区| 日本一区二区电影| 日韩欧美的一区| 人妻少妇无码精品视频区| 欧美va天堂在线| 日韩免费av在线| 精品国产无码一区二区| 久久久精品免费免费| 亚洲成人动漫在线| 一区二区三区电影大全| 欧美一区中文字幕| a级大片在线观看| 欧美国产精品| 国产精品爽爽爽| 性感美女一级片| 亚洲欧美日韩国产综合| 精品www久久久久奶水| 人人爱人人干婷婷丁香亚洲| 精品一区av| 精品国产91久久久久久久妲己 | 爱啪啪综合导航| 欧美日韩亚洲综合在线 | 黄色av免费在线播放| 欧美黄色一级| 在线电影欧美日韩一区二区私密| 久久久一区二区三区四区| 免费高清在线视频一区·| 国内一区二区在线视频观看| av在线影院| 欧美日韩午夜精品| 亚洲a v网站| 亚洲在线视频| 国产乱人伦精品一区二区| 国产丝袜在线| 欧美日韩精品福利| 中文字幕人妻一区二区三区在线视频| 欧美视频在线观看| 91亚洲精品一区二区| 天堂资源在线中文| 色8久久人人97超碰香蕉987| 欧类av怡春院| 亚洲国产黄色| 国产精品夜夜夜一区二区三区尤| 中文字幕在线三区| 国产精品久久久久久久久久久久久| 久久午夜夜伦鲁鲁片| 欧美99在线视频观看| 国产免费亚洲高清| 在线看黄色av| 欧美日韩一区二区在线观看| 国产又粗又猛又爽视频| 亚洲自拍另类| 免费av在线一区二区| 天堂√中文最新版在线| 亚洲国产精品资源| 91香蕉在线视频| 99精品久久免费看蜜臀剧情介绍| 日本精品久久久久久久久久| 粉嫩av一区二区| 51色欧美片视频在线观看| 天天综合网在线| 午夜成人在线视频| 特级西西人体wwwww| 亚洲欧美高清| 中文字幕日韩在线观看| 国产精品免费看久久久香蕉| 五月婷婷丁香花| 欧美日韩久久久久| 精品无码国产污污污免费网站| 天堂一区二区在线| 亚洲巨乳在线观看| 久久9999免费视频| 欧美激情免费视频| 色婷婷av一区二区三| 欧美日韩国产精品一区| 亚洲精品午夜视频| 精品无人区卡一卡二卡三乱码免费卡| 亚洲 欧洲 日韩| 97视频一区| 人人爽久久涩噜噜噜网站| lutube成人福利在线观看| 在线播放中文字幕一区| 欧美日韩国产精品综合| 97精品久久久久中文字幕| 日本在线观看a| 久久一区二区中文字幕| 成人免费91在线看| gay欧美网站| 精品国产一区二区三区久久| 亚洲精品一区二区三区新线路| 欧美日韩国产丝袜美女| 国产123在线| 国产精品88888| av动漫免费看| 欧美激情91| 麻豆亚洲一区| 精品国产亚洲一区二区三区| 2024亚洲男人天堂| 快射av在线播放一区| 欧美精品一区二区精品网| 丁香社区五月天| 爱福利在线视频| 在线观看视频一区二区欧美日韩| 日本免费网站视频| www.亚洲精品| 国产aⅴ爽av久久久久| 亚洲精品美女91| 伊人久久婷婷色综合98网| 国产色噜噜噜91在线精品| 国产精品一二三在线| 鲁鲁在线中文| 欧美大成色www永久网站婷| 亚欧在线观看视频| 欧美一级高清片| 国产成人a v| 午夜伊人狠狠久久| 亚洲一级二级片| 久久久久亚洲蜜桃| 亚洲午夜久久久久久久久| 青青草97国产精品免费观看| www国产精品内射老熟女| 亚洲精品一二三区区别| 欧美高清性xxxxhd| eeuss国产一区二区三区四区| 成人乱人伦精品视频在线观看| 黄色成人免费网| 国内精品久久久久久影视8| 日本在线视频网| 亚洲午夜女主播在线直播| 五月激情丁香婷婷| 日韩欧美久久一区| 怡红院男人的天堂| 一本久久a久久精品亚洲| 在线看成人av| 亚洲国产wwwccc36天堂| 在线免费日韩av| 51xtv成人影院| 精品视频999| 波多野结衣午夜| 一本在线高清不卡dvd| 日本网站免费观看| 亚洲一区二区三区视频在线| www.av视频| 亚洲视频小说图片| 三级黄色在线观看| 国产精品国产三级国产普通话99| 欧洲av一区二区三区| 国产三级久久久| 欧美成人国产精品一区二区| 久久久噜噜噜久久人人看 | 日本一区二区三区在线不卡| 法国伦理少妇愉情| 26uuu精品一区二区三区四区在线| 国产视频精品视频| 成人av电影免费观看| 男人的天堂影院| 99久久99久久综合| 日本黄色动态图| 91麻豆蜜桃一区二区三区| 国产ts丝袜人妖系列视频| 99久久婷婷国产综合精品| 国产精品久久无码| 91社区在线播放| a天堂中文字幕| 中文字幕亚洲一区二区av在线| 色哟哟一一国产精品| 亚洲女人小视频在线观看| 亚洲成人生活片| 亚洲福利电影网| 五月婷婷色丁香| 欧美日韩免费观看一区三区| 亚洲图片视频小说| 欧美一区二区三区男人的天堂| 精品欧美在线观看| 日韩成人av在线| 爱久久·www| 欧美成人免费全部| a级片在线免费观看| 日韩美女视频中文字幕| 亚洲综合资源| 韩国一区二区三区美女美女秀| 尤物tv在线精品| 中文字幕免费在线不卡| 亚洲天堂激情| 天堂社区在线视频| 国模少妇一区二区三区 | 欧美国产日本韩| 希岛爱理中文字幕| 五月激情六月综合| 中文字幕乱码中文字幕| 日韩欧美第一区| 搞黄视频免费在线观看| 欧美大胆在线视频| 天堂在线中文网官网| 成人精品一区二区三区| 国产欧美自拍一区| 亚洲高清乱码| 日韩视频一区| 一区二区三区网址| 成人午夜电影网站| 男人天堂资源网| 亚洲国产aⅴ成人精品无吗| 这里只有久久精品视频| 日韩亚洲欧美在线| 精品美女视频在线观看免费软件 | 欧美视频www| 狠狠做深爱婷婷久久综合一区 | 国产精品资源网| 欧美熟妇精品黑人巨大一二三区| 亚洲欧美综合在线精品| 国产精品视频免费播放| 欧美一区2区视频在线观看| 毛片免费在线观看| 欧美激情一级二级| 香蕉成人在线| 日韩理论片在线观看| 亚洲国产激情| 亚洲 自拍 另类 欧美 丝袜| 国产日本欧洲亚洲| 青青草av在线播放| 日韩亚洲电影在线| 亚洲xxxxxx| 国产成人综合精品在线| 久久悠悠精品综合网| 国产精品igao激情视频 | 国产精品爽爽ⅴa在线观看| 欧美a级网站| 美女扒开大腿让男人桶| 国产一区二区三区免费观看| 人成免费在线视频| 色噜噜夜夜夜综合网| 香蕉视频黄在线观看| 国外色69视频在线观看| 欧美久久一区二区三区| 一区二区三区四区国产| 青青草精品视频| 亚洲国内精品视频| 天天综合永久入口| 欧美福利视频网站| 欧美9999| 欧美日韩午夜爽爽| 国内精品久久久久影院色| 精品人伦一区二区| 在线区一区二视频| 国产精品视频一区二区久久| 91a在线视频| 精品女人视频| 日本中文字幕网址| 99久久婷婷国产| 色屁屁影院www国产高清麻豆| 亚洲激情视频在线| 久久影院午夜精品| 久久99精品国产一区二区三区| 亚洲精品综合| 国产在线观看无码免费视频| 精品国产精品自拍| 牛牛影视精品影视| 国产成人高清激情视频在线观看 | 日韩成人在线免费视频| 精品电影一区二区三区| 第一中文字幕在线| 九九九久久久| 老色鬼久久亚洲一区二区| 久久精品无码一区| 欧美美女一区二区三区| 国产成人无吗| 国产伦精品一区二区三区照片91 | 国产日产一区 | 亚洲色图综合久久| 免费一级欧美在线观看视频| 在线不卡视频一区二区| 日韩伦理av| 中文字幕久久精品| 高清一区二区| 日韩日韩日韩日韩日韩| 久久综合999| 中文字幕一区二区三区波野结| 久久视频国产精品免费视频在线| 一区二区三区免费在线看| 久久久久久久午夜| 亚洲国产激情av| 国产超碰人人模人人爽人人添| 国内精品久久久久久| 激情五月色综合国产精品| 欧美午夜精品理论片| 亚洲成人av中文| 啊v视频在线| 国产区一区二区三区| 日韩电影免费在线看| 欧美成人综合色| 亚洲欧美日韩国产中文| 国产aⅴ精品一区二区四区| 草b视频在线观看| 国产女人18毛片水真多成人如厕 | 国产精品500部| 在线日韩日本国产亚洲| 69精品国产久热在线观看| 18岁视频在线观看| 亚洲精品国产高清久久伦理二区| 日本天堂在线| 91在线免费看网站| 久色成人在线| 久草国产在线观看|