Semgrep เป็นเครื่องมือวิเคราะห์แบบโอเพ่นซอร์สที่รวดเร็วและคงที่ ซึ่งจะค้นหาโค้ด ค้นหาจุดบกพร่อง และบังคับใช้รั้วที่ปลอดภัยและมาตรฐานการเข้ารหัส Semgrep รองรับมากกว่า 30 ภาษาและสามารถทำงานใน IDE เป็นการตรวจสอบล่วงหน้า และเป็นส่วนหนึ่งของเวิร์กโฟลว์ CI/CD
Semgrep เป็น grep ความหมายสำหรับโค้ด ในขณะที่รัน grep "2"
จะจับคู่เฉพาะสตริงที่แน่นอน 2 เท่านั้น Semgrep จะจับคู่ x = 1; y = x + 1
เมื่อค้นหา 2 กฎ Semgrep ดูเหมือนโค้ดที่คุณเขียนไปแล้ว ไม่มีแผนผังไวยากรณ์เชิงนามธรรม มวยปล้ำ regex หรือ DSL ที่เจ็บปวด
โปรดทราบว่าในบริบทด้านความปลอดภัย Semgrep OSS จะพลาดข้อดีที่แท้จริงหลายประการ เนื่องจากสามารถวิเคราะห์โค้ดได้ภายในขอบเขตของฟังก์ชันหรือไฟล์เดียวเท่านั้น หากคุณต้องการใช้ Semgrep เพื่อความปลอดภัย ( SAST , SCA หรือ การสแกนความลับ ) ขอแนะนำแพลตฟอร์ม Semgrep AppSec อย่างยิ่ง เนื่องจากจะเพิ่มความสามารถที่สำคัญต่อไปนี้:
แพลตฟอร์ม Semgrep AppSec ทำงานนอกกรอบด้วยกฎที่เป็นกรรมสิทธิ์มากกว่า 20,000 กฎสำหรับ SAST, SCA และความลับ กฎระดับมือโปรเขียนและดูแลรักษาโดยทีมวิจัยด้านความปลอดภัยของ Semgrep และมีความแม่นยำสูง หมายความว่าทีม AppSec รู้สึกมั่นใจในการนำสิ่งที่ค้นพบไปยังนักพัฒนาโดยตรงโดยไม่ทำให้ช้าลง
Semgrep วิเคราะห์โค้ดในเครื่องคอมพิวเตอร์ของคุณหรือในสภาพแวดล้อมการสร้างของคุณ โดยค่าเริ่มต้น โค้ดจะไม่ถูกอัปโหลด เริ่มต้น →.
รหัส Sembrep รองรับมากกว่า 30 ภาษา รวมถึง:
Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Go · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidity · Swift · Terraform · TypeScript · TSX · YAML · XML · ทั่วไป (ERB, Jinja ฯลฯ)
Semgrep Supply Chain รองรับ 12 ภาษาจากผู้จัดการแพ็คเกจ 15 ราย ได้แก่:
C# (NuGet) · Dart (Pub) · Go (Go modules, go mod
) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (ผู้แต่ง) · Python (pip, pip-tool, Pipenv, กวีนิพนธ์) · Ruby (RubyGems) · Rust (Cargo) · Scala (มาเวน) · สวิฟท์ (SwiftPM)
สำหรับข้อมูลเพิ่มเติม โปรดดูภาษาที่รองรับ
สำหรับผู้ใช้ใหม่ เราขอแนะนำให้เริ่มต้นด้วยแพลตฟอร์ม Semgrep AppSec เนื่องจากมีอินเทอร์เฟซแบบภาพ โปรเจ็กต์สาธิต เวิร์กโฟลว์การคัดแยกผลลัพธ์และการสำรวจ และทำให้การตั้งค่าใน CI/CD รวดเร็ว การสแกนยังคงอยู่ในเครื่องและไม่ได้อัปโหลดโค้ด หรือคุณสามารถเริ่มต้นด้วย CLI และนำทางเอาต์พุตเทอร์มินัลเพื่อดำเนินการค้นหาแบบครั้งเดียว
ลงทะเบียนบน semgrep.dev
สำรวจผลการสาธิตเพื่อเรียนรู้วิธีการทำงานของ Semgrep
สแกนโปรเจ็กต์ของคุณโดยไปที่ Projects > Scan New Project > Run scan in CI
เลือกระบบควบคุมเวอร์ชันของคุณและทำตามขั้นตอนการเริ่มต้นใช้งานเพื่อเพิ่มโปรเจ็กต์ของคุณ หลังจากการตั้งค่านี้ Semgrep จะสแกนโปรเจ็กต์ของคุณหลังจากคำขอดึงทุกครั้ง
[ไม่บังคับ] หากคุณต้องการเรียกใช้ Semgrep ในเครื่อง ให้ทำตามขั้นตอนในส่วน CLI
หากมีปัญหาใดๆ โปรดขอความช่วยเหลือใน Semgrep Slack
# For macOS
$ brew install semgrep
# For Ubuntu/WSL/Linux/macOS
$ python3 -m pip install semgrep
# To try Semgrep without installation run via Docker
$ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login
$ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
semgrep login
เพื่อสร้างบัญชีของคุณและเข้าสู่ระบบ Semgrepการเข้าสู่ระบบ Semgrep ทำให้คุณสามารถเข้าถึง:
ไปที่ไดเรกทอรีรากของแอปแล้วเรียกใช้ semgrep ci
การดำเนินการนี้จะสแกนโปรเจ็กต์ของคุณเพื่อตรวจสอบช่องโหว่ในซอร์สโค้ดและการขึ้นต่อกันของซอร์สโค้ด
ลองเขียนแบบสอบถามของคุณเองแบบโต้ตอบด้วย -e
ตัวอย่างเช่น การตรวจสอบ Python == โดยที่ด้านซ้ายและด้านขวามือเหมือนกัน (อาจเป็นข้อผิดพลาด): $ semgrep -e '$X == $X' --lang=py path/to/src
ระบบนิเวศของ Semgrep ประกอบด้วย:
Semgrep OSS - เครื่องมือวิเคราะห์โปรแกรมโอเพ่นซอร์สที่เป็นหัวใจของทุกสิ่ง เหมาะสำหรับกรณีใช้งานเฉพาะกิจที่มีความทนทานต่อผลบวกลวงสูง เช่น ที่ปรึกษา ผู้ตรวจสอบความปลอดภัย หรือผู้ทดสอบ
แพลตฟอร์ม Semgrep AppSec - เรียบเรียงและปรับขนาดการสแกน SAST, SCA และ Secrets ทั่วทั้งองค์กรได้อย่างง่ายดาย โดยไม่มีความเสี่ยงที่นักพัฒนาจะล้นหลาม ปรับแต่งการค้นพบที่นักพัฒนาเห็น ที่ที่พวกเขาเห็น และผสานรวมกับผู้ให้บริการ CI เช่น GitHub, GitLab, CircleCI และอื่นๆ รวมถึงระดับฟรีและจ่ายเงิน
Semgrep Code (SAST) - สร้างความคืบหน้าอย่างแท้จริงเกี่ยวกับช่องโหว่ที่ค้างอยู่ด้วย SAST ที่ลดสัญญาณรบกวนและช่วยให้นักพัฒนาสามารถแก้ไขปัญหาได้อย่างรวดเร็วด้วยตนเอง แม้ว่าพวกเขาจะไม่มีความรู้ด้านความปลอดภัยก็ตาม ง่ายต่อการปรับใช้ราวกั้นที่ปลอดภัยและคำแนะนำในการแก้ไขทีละขั้นตอนที่ได้รับการปรับแต่งโดยเฉพาะ หมายความว่านักพัฒนาสามารถแก้ไขปัญหาได้จริงเนื่องจากพวกเขาไม่รู้สึกว่าช้าลง
Semgrep Supply Chain (SSC) - เครื่องสแกนการพึ่งพาสัญญาณสูงที่ตรวจจับช่องโหว่ที่สามารถเข้าถึงได้ในไลบรารีและฟังก์ชันของบุคคลที่สามแบบโอเพ่นซอร์ส
Semgrep Secrets (การสแกนความลับ) - การตรวจจับความลับที่ใช้การวิเคราะห์เชิงความหมาย การวิเคราะห์เอนโทรปีที่ได้รับการปรับปรุง และการตรวจสอบความถูกต้องเพื่อแสดงข้อมูลรับรองที่มีความละเอียดอ่อนอย่างแม่นยำในขั้นตอนการทำงานของนักพัฒนา
Semgrep Assistant (AI) - Assistant เป็นวิศวกร AppSec ที่ขับเคลื่อนด้วย AI ซึ่งช่วยให้ทั้งนักพัฒนาและทีม AppSec จัดลำดับความสำคัญ คัดแยก และแก้ไขการค้นพบของ Semgrep ในวงกว้าง มนุษย์เห็นด้วยกับการตัดสินใจคัดแยกอัตโนมัติของ Assistant 97% และให้คะแนนคำแนะนำในการแก้ไขว่ามีประโยชน์ 80% ของทั้งหมด หากต้องการภาพรวมวิธีการทำงานของ Assistant โปรดอ่านภาพรวมนี้
แหล่งข้อมูลเพิ่มเติม:
เข้าร่วมกับนักพัฒนาและวิศวกรความปลอดภัยอื่นๆ นับแสนรายที่ใช้ Semgrep อยู่แล้วในบริษัทต่างๆ เช่น GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake และ Trail of Bits
Semgrep ได้รับการพัฒนาและสนับสนุนเชิงพาณิชย์โดย Semgrep, Inc. ซึ่งเป็นบริษัทรักษาความปลอดภัยซอฟต์แวร์
กฎ Semgrep ดูเหมือนโค้ดที่คุณเขียนอยู่แล้ว ไม่มีแผนผังไวยากรณ์เชิงนามธรรม มวยปล้ำ regex หรือ DSL ที่เจ็บปวด ต่อไปนี้เป็นกฎด่วนสำหรับการค้นหาคำสั่ง Python print()
เรียกใช้ทางออนไลน์ใน Semgrep's Playground โดยคลิกที่นี่
ไปที่เอกสาร > ตัวอย่างกฎเพื่อดูกรณีการใช้งานและแนวคิด
กรณีการใช้งาน | กฎเซมเกรป |
---|---|
ห้าม API ที่เป็นอันตราย | ป้องกันการใช้ exec |
ค้นหาเส้นทางและการรับรองความถูกต้อง | แยกเส้นทางสปริง |
บังคับใช้ค่าเริ่มต้นที่ปลอดภัย | ตั้งค่าคุกกี้ Flask อย่างปลอดภัย |
ข้อมูลปนเปื้อนไหลลงสู่อ่างล้างจาน | กระแสข้อมูล ExpressJS เข้าสู่ sandbox.run |
บังคับใช้แนวทางปฏิบัติที่ดีที่สุดของโครงการ | ใช้ assertEqual สำหรับ == การตรวจสอบ ตรวจสอบการเรียกกระบวนการย่อยเสมอ |
ประมวลความรู้เฉพาะโครงการ | ตรวจสอบธุรกรรมก่อนทำ |
ตรวจสอบฮอตสปอตการรักษาความปลอดภัย | ค้นหา XSS ใน Apache Airflow ข้อมูลประจำตัวแบบฮาร์ดโค้ด |
ตรวจสอบไฟล์การกำหนดค่า | ค้นหาการใช้ S3 ARN |
ย้ายข้อมูลจาก API ที่เลิกใช้งานแล้ว | DES เลิกใช้แล้ว, Flask API ที่เลิกใช้แล้ว, Bokeh API ที่เลิกใช้แล้ว |
ใช้การแก้ไขอัตโนมัติ | ใช้ ListenAndServeTLS |
ไปที่เอกสาร > ส่วนขยาย เพื่อเรียนรู้เกี่ยวกับการใช้ Semgrep ในตัวแก้ไขหรือคำสั่งล่วงหน้า เมื่อรวมเข้ากับ CI และกำหนดค่าให้สแกนคำขอดึงข้อมูล Semgrep จะรายงานเฉพาะปัญหาที่เกิดจากคำขอดึงนั้นเท่านั้น สิ่งนี้ช่วยให้คุณเริ่มใช้ Semgrep ได้โดยไม่ต้องแก้ไขหรือเพิกเฉยต่อปัญหาที่มีอยู่แล้ว!
เรียกดูเอกสาร Semgrep ฉบับเต็มได้บนเว็บไซต์ หากคุณยังใหม่กับ Semgrep โปรดดูเอกสาร > การเริ่มต้นใช้งาน หรือบทช่วยสอนแบบโต้ตอบ
การใช้การกำหนดค่าระยะไกลจาก Registry (เช่น --config=p/ci
) จะรายงานเมตริกกฎที่ใช้นามแฝงไปยัง semgrep.dev
การใช้การกำหนดค่าจากไฟล์ในเครื่อง (เช่น --config=xyz.yml
) ไม่ ได้เปิดใช้งานการวัด
หากต้องการปิดใช้งานเมทริกกฎรีจิสทรี ให้ใช้ --metrics=off
นโยบายความเป็นส่วนตัวของ Semgrep อธิบายหลักการที่เป็นแนวทางในการตัดสินใจในการรวบรวมข้อมูลและการแยกย่อยของข้อมูลที่รวบรวมและไม่ได้รวบรวมเมื่อเปิดใช้งานการวัด
หากต้องการอัปเกรด ให้รันคำสั่งด้านล่างที่เกี่ยวข้องกับวิธีที่คุณติดตั้ง Semgrep:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull semgrep/semgrep:latest