Eszközök/Biztonság és megfelelés

Semgrep: statikus elemzés, amely belefér egy pull requestbe

A Semgrep 30 nyelvet parse-ol, és YAML-mintákat illeszt másodpercek alatt; az engine LGPL-2.1 alatt ingyenes. A cross-file elemzés, a szabálykészletek és az AI-triage fizetős csomagban van.

Típus
Static analysis with AI rules
Ár
Free · from $30 per seat

··10 perc olvasás

  • SAST
  • Static analysis
  • CI security
  • Rule authoring
  • AppSec
A Semgrep szkennelési pipeline diagramja: forráskódok fájlokon, parse-on és szabályillesztésen át a jelentett találatokig

A lényeg röviden

  • A Semgrep engine LGPL-2.1 alatt áll, és offline több mint 30 nyelvet szkennel; a cross-file elemzéshez proprietáris bináris és fiók kell.
  • Az ingyenes csomag 10 közreműködőt és 10 privát repót fed le, a közreműködőket pedig gördülő 90 napos git logból számolja.
  • 2024. december 13. óta a Semgrep által karbantartott szabályokon a Semgrep Rules License v1.0 érvényes, amely tiltja a továbbterjesztést és a szolgáltatásként használatot; az OpenGrep az LGPL fork, amely erre válaszol.
  • A cross-file elemzés 5 GB memória vagy három óra után csendben fájlalapúra esik vissza, így egy nagy repó bukás nélkül veszít mélységből.
  • Az AI Autofix találatonként 20 kreditet kér, miközben a Teams közreműködője havonta 20 kreditet kap, így az autofix a csomag legdrágább művelete.

A Semgrep mintaillesztésre épülő statikus elemző: a forráskódot szintaktikai fává parse-olja, majd minden helyet jelent, ahol egy YAML-szabály mintája erre a fára illeszkedik. Az engine LGPL-2.1 alatt nyílt forráskódú, hálózat nélkül fut a laptopon, és egy tipikus repót másodpercek alatt befejez. Az itt képviselt álláspont: ez a legolcsóbb hihető első SAST-eszköz, amelyet egy kis csapat CI-be tehet, az ingyenes csomag pedig jól megépített rámpa, nem kész termék, mert a zajt leginkább megszűnő elemzés, a mellékelt szabálykészletek és az AI-triage is belépés mögött ül.

A meglévő linterek és a security mérnököt igénylő nehéz szkennerek közé ül. Gyakorlatban a CodeQL-lel versenyez mélységben, a SonarQube-dzal a pull request kapujáért, a Snyk Code-dzal a fejlesztői élményért; a nyílt forráskódú OpenGrep fork a licencért versenyez. Leggyakrabban egy félig karbantartott grep-minták mappát vált le.

Mi ez

Parancssori szkenner plusz hosztolt platform. A parancssor végzi a munkát: megadod a célmappát és egy vagy több szabálykészletet, cserébe találatokat kapsz szabályazonosítóval, súlyossággal, üzenettel és a találat tartományával. A platform, Semgrep AppSec Platform néven, vezérlőpultot, szabályzatot, pull request kommenteket, Supply Chaint, titokkeresést és az AI-funkciókat ad hozzá. A platform alatti minden a Community Edition.

  • Engine-licenc: LGPL-2.1; legújabb kiadás 1.179.0, 2026. október 1.
  • Több mint 30 nyelv a Community Editionben, több mint 35 a Semgrep Codehoz
  • Több mint 3 000 közösségi szabály, továbbá előtaggal hívható készletek, például p/python
  • Ingyenes csomag: 10 közreműködő, 10 privát repo, havonta 60 AI-kredit
  • Teams 30 dollártól közreműködőnként havonta, a Secrets 15 dollár
  • A közreműködőket gördülő 90 napos ablakból, a git logból számolják
  • A cross-file elemzéshez proprietáris bináris kell: semgrep install-semgrep-pro

Hogyan működik

Minden nyelvhez van parser, túlnyomórészt tree-sitter alapú, amely a fájlt szintaktikai fává alakítja. A szabály egy ilyen fára írt minta, $X és $F metaváltozókkal, továbbá opcionális feltételekkel a patterns, pattern-not, metavariable-regex és a taint mode kulcsokban. Az illesztés szerkezeti, nem szöveges: a szóköz, az átnevezett változók és a sorba rendezett utasítások nem rejtik el a találatot, ezért a téves pozitív arány elég alacsony marad egy pull request kapuhoz.

Semgrep: how a scan turns source into findingsSource files are parsed into a syntax tree, matched against rule patterns, and reported as findings. Rulesets from the registry and the optional Pro engine feed the matching step, and findings leave as terminal output, JSON or SARIF.Semgrep: source in, findings outsemgrep.devEVERY SCANSource filessrc, gitParsertree-sitter ASTRule matchpatterns, taintFindingsid, severityReportjson, SARIFWHAT FEEDS THE MATCHRegistry rulesetsauto, p/pythonPro enginecross-file, login
A szabály dönti el, mi számít találatnak; az engine csak azt dönti el, hol illeszkedik egy minta.

A találatok szabályazonosítót, súlyosságot és üzenetet hordoznak, és soronként egy nosemgrep kommenttel, illetve szabályonként egy ignore bejegyzéssel elnémíthatók. A kimenet a terminálra, JSON-ba vagy SARIF-be kerül, ezt olvassák be a vezérlőpultok.

A döntő határ a kiterjedés. A Community Edition elemzése intraprocedurális: egyetlen függvényen belül gondolkodik. A függvények közötti és a fájlokon átívelő elemzés a Pro engine-en fut, amely külön bináris, és csak semgrep login, majd semgrep install-semgrep-pro után aktiválódik.

Első lépések

A CLI pip, pipx, uv vagy brew segíthetővel telepíthető; közösségi szabályokkal szkennelni nem kell fiók. A szabályfájl elég kicsi ahhoz, hogy a védett kód mellett lakjon.

# rules/no-pickle.yaml
rules:
  - id: avoid-pickle-load
    languages: [python]
    severity: WARNING
    message: |
      pickle.load executes whatever is in the stream. Only feed it
      bytes that never left this machine; use json.loads otherwise.
    pattern: pickle.load($STREAM)

Futtasd a semgrep scan --config rules/no-pickle.yaml src/ parancsot egy készlethez, a semgrep scan --config p/python src/-t registry előtaghoz, vagy a semgrep --config auto-t, hogy az eszköz a felismert nyelvekhez válasszon készletet. Tedd hozzá a --json vagy --sarif kapcsolót gépi olvasatú kimenethez, és a semgrep ci-t, amint a repo össze van kötve egy deployyal.

Árazás és a szabályok licence

Az engine ingyenes, az érdekes pénz körülötte van. Az október 2026-i árlista három csomagot sorol fel, az ingyenes pedig úgy van korlátozva, hogy a határ csak a tizenegyedik közreműködőnél látszik.

CsomagÁrKorlátokMit nyit meg
Free$010 közreműködő, 10 privát repoCode és Supply Chain, havonta 60 AI-kredit
Teams30 dollártól közreműködőnként havonta500 privát repoSSO, szerepalapú hozzáférés, Secrets 15 dollárért, fejenként 20 AI-kredit
EnterpriseEgyediKorlátlan repo és közreműködőHelyben futó forráskódkezelés, saját CI, 50 AI-kredit, kapcsolattartó

A licenc más kérdés, mint az ár. Az engine megmarad LGPL-2.1-nek, de 2024. december 13. óta a Semgrep által karbantartott szabályok a Semgrep Rules License v1.0 szerint érkeznek: belső, versenyt nem sértő használat megengedett, a továbbterjesztés és a szabályok szolgáltatásként kínálása nem. A tanácsadók és a belső használó cégek ezen belül maradnak, az ebből versengő SAST-terméket építő szállító nem. Ez a változás hozta létre az OpenGrepet, egy LGPL-2.1 forkot, amelyet az Aikido, az Endor Labs, a Jit és az Orca Security biztonsági cégekből álló konzorcium karbantart.

Az AI-funkciókat külön kreditben mérik, a költségek pedig nyilvánosak. A pull requesten lévő komment ingyenes, a triage találatonként egy kredit, az Autofix, amely javító pull requestet nyit, pedig húsz.

AI-műveletKreditMit csinál
AI-komment a pull requesten0Útmutatás a PR-n
AI-elemzés találatonként1 találatonkéntTriage, javítási útmutatás, komponens-címkézés
AI Autofix20 találatonkéntPull requestet nyit a javítással
AI-alapú detekciós szkennelésVáltozóA szkennelés méretétől és összetettségétől függ
Agentic Workflow futtatásVáltozóTöbblépéses elemzés, több token, mint egy detekciós szkennelés

CI-ben futtatva

A Semgrep abban szokatlan, hogy az ingyenes csomag valóban gyors, és ez megváltoztatja, mi éri meg a kaput. A nagy repókban a hibák a mélységről és a memóriáról szólnak, nem magáról a szkennelésről.

  • A diff-aware szkennelés csak azt vizsgálja, amit a pull request érintett; a cross-file elemzés teljes szkennelésen fut, pull request szkennelésen soha.
  • A cross-file elemzés egyszerű fájlalapúra esik vissza, ha a szkennelés átlépi a 5 GB memóriát vagy a három órát, így egy nagy repó csendben veszít a mélységből, ahelyett hogy elbukna.
  • A monorepo-támogatás minden csomagban darabokra bontja a repót; a több gépes elosztott szkennelés a Teams-től indul.
  • A join mode, az open engine egyetlen eszköze a szabályokon átívelő találat-összekapcsolásra, a dokumentáció szerint kísérleti, és nem gondozzák aktívan.
  • A szabályok a registry-n keresztül oszthatók meg; a belső logikát a szervezetben tartó privát szabályokhoz Teams kell.

Hol csikorog

A plafon hamarabb jön, mint ahogy az árlista sejteti. A Community Edition csak egy függvényen belül gondolkodik, egy helperen átmenő szennyezett érték láthatatlan, amíg valaki nem fizet a Pro engine-ért, és a típusinferencia valamint a konstanspropagáció ugyanígy jár. A második határ a szabályminőség: meta változós feltétel nélküli általános minták elég zajt termelnek, hogy egy csapat megtanulja figyelmen kívül hagyni az eszközt, a szoros szabályok megírása pedig készség, amit a csapatnak meg kell szereznie. A harmadik a számtan: 30 dollár közreműködőnként havonta, egy gördülő 90 napos számlálóból a git logból, és mindenki számlázva van, aki abban az ablakban privát repóba commitolt, akár még a projekten van, akár nem.

EszközElemzés mélységeSzabályírásMennyibe kerül
Semgrep CEIntraprocedurális, egyszerre egy függvényOlvasható YAML-mintákIngyenes engine, a Semgrep-szabályok csak belső használatra
CodeQLAdatfolyam az egész adatbázison átQL, valódi tanulási görbével rendelkező lekérdezésnyelvNyilvános repókhoz ingyenes, máshogy GitHub Code Security
SonarQubeMinőség plusz alapszintű security, taint csak fizetős csomagbanEgyéni szabályokhoz Java plugin kellCommunity Build ingyenes, a fizetős csomagok gépenként
Snyk CodeAdatfolyam hosztolt engine-benSzállítói szabályok, kevés saját írnivalóFizetős, fejlesztőnként árazva

Az erősebb változat: egy nyolc fős csapatnál a mélység kevésbé számít, mint az, hogy elolvassák. Egy olyan szabálykészletet, amit egy fejlesztő ért és YAML-ban bővíteni tud, alkalmazni fognak; egy olyan adatbázis-lekérdezési nyelvet, amire senkinek nincs ideje, nem. Amint a fenyegetési modell a szolgáltatáshatáron átívelő adatfolyam, a Semgrep CE nem tud választ adni, és a 30 dolláros csomag olcsóbb, mint a szabályok QL-re költöztetése.

Ítélet

Vidd alapértelmezett első szkennernek, nyitott szemmel arra nézve, hol ül a fizetős plafon.

  1. Az ingyenes Community Editiont használd, ha a cél egy működő security kapu a CI-ben egy héten belül, és a csapatban senki sem ír lekérdezésnyelvet.
  2. Fizess a Teamsért, ha az egyetlen függvényes elemzés olyan találatokat ad, amiken a fejlesztők vitatkoznak, és az SSO, a vezérlőpult és a privát szabályok követelménnyé váltak.
  3. Ne kezeld 30 dollárnak az árat: 30 dollár közreműködőnként havonta, gördülő 90 napos számlálón, a korlátlan repo, a helyben futó forráskódkezelés és a saját CI-integráció pedig az Enterpriseban van.
  4. Válaszd a CodeQL-t, ha arról van szó, hogyan ér el az adat egy sinket lefordított kódban, a SonarQube-ot pedig, ha a kapu a karbantarthatóságról is szól, nem csak a biztonságról.
  5. Ha a szabályokat tovább kell adni vagy szolgáltatásként kínálni, csak a Semgrep-szabálykészletek nélküli engine vagy az OpenGrep olyan megoldás, amelyhez nem kell egyeztetni a szállítóval.

Források

  1. Semgrep pricing: Free, Teams and Enterprise
  2. Semgrep Community Edition
  3. Semgrep documentation: cross-file analysis
  4. Semgrep documentation: usage and billing
  5. Semgrep releases: v1.179.0
  6. Semgrep Rules License v1.0
  7. Important updates to Semgrep OSS, 13 December 2024
  8. OpenGrep repository

Gyakori kérdések

A Semgrep ingyenesen használható produkcióban?

Az engine LGPL-2.1 alatt ingyenes, a CLI pedig fiók nélkül fut. A hosztolt ingyenes csomag 10 közreműködőig és 10 privát repóig terjed, afölött a Teams 30 dollártól indul közreműködőnként havonta. A Semgrep által karbantartott szabályok csak belső, versenyt nem sértő használatra ingyenesek.

Mi a különbség a Community Edition és a Pro engine között?

A Community Edition elemzése intraprocedurális, vagyis egyetlen függvényen belül gondolkodik. A Pro engine hozzáadja a függvények közötti elemzést, amit a Semgrep Code alapból futtat, és az opcionális fájlokon átívelő elemzést. Külön bináris, amely a semgrep login után semgrep install-semgrep-pro segítségével települ.

Mennyire pontos a Semgrep?

Nincs közzétett pontossági szám, ezért a becsületes válasz szerkezeti: az illesztés szintaktikai fán történik, így egy találat vagy pontos mintailleszkedés, vagy túl lazán írt szabály. A gyakorlati zaj legnagyobb része a meta változós feltétel nélküli szabályokból jön, nem az engine-ből.

A Semgrep felküldi a forráskódot a felhőbe?

Helyben vagy teljesen a saját CI-ben futtatva a forráskód marad; a szolgáltatásba csak szkennelési metaadatok mennek. Az AI-funkciók a találatot tartalmazó fájlt adják át egy modellnek, a Managed Scan pedig a szkennelés idejére klónozza a repót, és utána törli a klónt.

Pont erre van szükséged?

Írj a projektedről vagy a pozícióról – szívesen hallok felőled.