Semgrep
Quét mã nguồn với tốc độ phi thường.
Semgrep là một công cụ phân tích tĩnh mã nguồn nhanh chóng, mã nguồn mở để tìm lỗi, phát hiện lỗ hổng trong các phụ thuộc bên thứ ba và áp dụng quy chuẩn mã nguồn. Semgrep phân tích mã nguồn trực tiếp trên máy tính của bạn hoặc trong môi trường xây dựng của bạn: không bao giờ tải lên mã nguồn. Bắt đầu ngay →.
Hỗ trợ ngôn ngữ
Semgrep hỗ trợ hơn 30 ngôn ngữ.
Danh mục | Ngôn ngữ |
---|---|
GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
Beta | Kotlin · Rust |
Thử nghiệm | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · Lua · OCaml · R · Scheme · Solidity · Swift · YAML · XML · Generic (ERB, Jinja, vv.) |
Bắt đầu 🚀
. Từ dòng lệnh
. Từ Nền tảng Đám mây Semgrep
Đối với người mới bắt đầu, chúng tôi đề xuất bắt đầu từ Nền tảng Đám mây Semgrep vì nó cung cấp giao diện trực quan, dự án minh họa, quy trình làm việc và khám phá kết quả, và giúp cài đặt trong CI/CD nhanh chóng. Các quét vẫn diễn ra ở máy cục bộ và mã nguồn không được tải lên. Hoặc bạn cũng có thể bắt đầu từ dòng lệnh mà không cần đăng nhập và điều hướng đầu ra của bảng điều khiển để chạy tìm kiếm một lần.
Tùy chọn 1: Bắt đầu từ dòng lệnh
. Cài đặt Semgrep CLI
# 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 --rm -v "${PWD}:/src" returntocorp/semgrep semgrep
Điều này sẽ quét dự án của bạn với cài đặt mặc định.
[Tùy chọn, nhưng được đề nghị] Chạy semgrep login
để lấy URL đăng nhập cho Nền tảng Đám mây Semgrep. Mở URL đăng nhập trong trình duyệt và đăng nhập.
Tùy chọn 2: Bắt đầu từ Nền tảng Đám mây Semgrep (Được đề nghị)
Đăng ký tại semgrep.dev
Khám phá ứng dụng minh họa
Quét dự án của bạn bằng cách điều hướng đến Dự án > Quét Dự án Mới > Chạy quét trong CI
Chọn hệ thống quản lý phiên bản của bạn và làm theo hướng dẫn để thêm dự án của bạn. Sau cài đặt này, Semgrep sẽ quét dự án của bạn sau mỗi yêu cầu kéo (pull request).
[Tùy chọn nhưng được đề nghị] Nếu bạn muốn chạy Semgrep ở cục bộ, làm theo các bước trong phần CLI.
Ghi chú:
Truy cập Docs > Running rules để tìm hiểu thêm về cấu hình auto
và các quy tắc khác.
Nếu có bất kỳ vấn đề gì, vui lòng hỏi trong nhóm Slack của Smegrep tại https://go.semgrep.dev/slack
Để chạy Semgrep Supply Chain, contact the Semgrep team. Truy cập full documentation để tìm hiểu thêm.
Hệ sinh thái Semgrep
Hệ sinh thái Semgrep bao gồm các sản phẩm sau:
- Semgrep OSS Engine – Bộ máy mã nguồn mở nằm ở trái tim của mọi thứ (dự án này).
- Semgrep Cloud Platform (SCP) – Triển khai, quản lý và giám sát SAST và SCA ở quy mô sử dụng Semgrep, với free and paid tiers. Tích hợp với các nhà cung cấp tích hợp liên tục (CI) như GitHub, GitLab, CircleCI và nhiều hơn nữa.
- Semgrep Code – Quét mã của bạn với các quy tắc Semgrep Pro và Semgrep Pro Engine để tìm lỗ hổng OWASP Top 10 và bảo vệ khỏi các rủi ro bảo mật quan trọng cụ thể cho tổ chức của bạn. Semgrep Code có sẵn trên cả hai free and paid tiers.
- Semgrep Supply Chain (SSC) – Một công cụ quét phụ thuộc có tín hiệu mạnh phát hiện lỗ hổng có thể tiếp cận trong các thư viện mã nguồn mở bên thứ ba và các chức năng trong suốt vòng đời phát triển phần mềm (SDLC). Semgrep Supply Chain có sẵn trên cả hai free and paid tiers.
và:
- Semgrep Playground – Một công cụ tương tác trực tuyến để viết và chia sẻ các quy tắc.
- Semgrep Registry – Hơn 2,000 quy tắc do cộng đồng động viên, bao gồm bảo mật, đúng đắn và lỗ hổng phụ thuộc.
Tham gia hàng trăm nghìn nhà phát triển và kỹ sư bảo mật khác đã sử dụng Semgrep tại các công ty như GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake và Trail of Bits.
Semgrep được phát triển và được hỗ trợ thương mại bởi Semgrep, Inc., a software security company.
Quy tắc Semgrep
Quy tắc Semgrep giống như mã bạn đã viết; không có cây cú pháp trừu tượng, không có việc tìm kiếm regex, hoặc ngôn ngữ miêu tả đau đớn. Dưới đây là một quy tắc nhanh chóng để tìm lệnh Python print()
.
Chạy nó trực tuyến trong Playground của Semgrep tại clicking here.
Ví dụ
Truy cập Docs > Rule examples để biết thêm về các trường hợp sử dụng và ý tưởng.
Trường hợp sử dụng | Quy tắc Semgrep |
---|---|
Cấm các API nguy hiểm | Prevent use of exec |
Tìm kiếm các tuyến đường và xác thực | Extract Spring routes |
Áp dụng các thiết lập an toàn mặc định | Securely set Flask cookies |
Dữ liệu bị nhiễm vào các nơi tiêu thụ | ExpressJS dataflow into sandbox.run |
Áp dụng quy chuẩn tốt nhất cho dự án | Use assertEqual for == checks, Always check subprocess calls |
Biểu diễn kiến thức cụ thể cho dự án | Verify transactions before making them |
Kiểm tra các điểm nóng về bảo mật | Finding XSS in Apache Airflow, Hardcoded credentials |
Kiểm tra tệp cấu hình | Find S3 ARN uses |
Di chuyển từ các API đã lỗi thời | DES is deprecated, Deprecated Flask APIs, Deprecated Bokeh APIs |
Áp dụng sửa chữa tự động | Use listenAndServeTLS |
Tiện ích mở rộng
Truy cập Docs > Extensions để tìm hiểu cách sử dụng Semgrep trong trình soạn thảo hoặc trước khi commit. Khi tích hợp vào CI và cấu hình để quét yêu cầu kéo (pull request), Semgrep sẽ chỉ báo cáo về các vấn đề được giới thiệu bởi yêu cầu kéo đó; điều này cho phép bạn bắt đầu sử dụng Semgrep mà không cần sửa chữa hoặc bỏ qua các vấn đề tồn tại từ trước!
Tài liệu
Duyệt toàn bộ tài liệu Semgrep tại documentation on the website. Nếu bạn mới làm quen với Semgrep, hãy xem Docs > Getting started hoặc interactive tutorial.
Thống kê
Sử dụng cấu hình từ xa từ Registry (như --config=p/ci
) báo cáo các thống kê quy tắc ẩn danh đến semgrep.dev.
Sử dụng cấu hình từ các tệp cục bộ (như --config=xyz.yml
) không kích hoạt các số liệu thống kê.
Để tắt số liệu thống kê quy tắc Registry, sử dụng --metrics=off
.
Semgrep privacy policy mô tả những nguyên tắc hướng dẫn quyết định về việc thu thập dữ liệu và sự phân rã của dữ liệu được thu thập và không được thu thập khi số liệu thống kê được kích hoạt.
Thêm
- Frequently asked questions (FAQs)
- Contributing
- Hướng dẫn xây dựng cho các nhà phát triển
- Ask questions in the Semgrep community Slack
- CLI reference and exit codes
- Semgrep YouTube channel
- Giấy phép (LGPL-2.1)
Nâng cấp
Để nâng cấp, chạy lệnh dưới đây liên quan đến cách bạn đã cài đặt Semgrep:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull returntocorp/semgrep:latest
Chi tiết Tải về:
Tác giả: Returntocorp
Mã nguồn: https://github.com/returntocorp/semgrep
Giấy phép: LGPL-2.1 license