Code Velocity
AI sauga

AI pagrįsta sauga: „GitHub“ atvirojo kodo pažeidžiamumų skenavimo sistema

·7 min skaitymo·GitHub·Originalus šaltinis
Dalintis
Diagrama, iliustruojanti „GitHub Security Lab“ AI pagrįsto pažeidžiamumų skenavimo „Taskflow Agent“ darbo eigą

Pažeidžiamumų skenavimo revoliucija su AI pagrįstais užduočių srautais

Nuolat kintančioje programinės įrangos kūrimo srityje saugumas išlieka svarbiausiu prioritetu. Tradiciniai pažeidžiamumų skenavimo metodai, nors ir būtini, dažnai susiduria su dideliu kodo kiekiu ir niuansuotu šiuolaikinių išnaudojimų pobūdžiu. Siekdama spręsti šį iššūkį, „GitHub Security Lab“ pristatė savo atvirojo kodo, dirbtiniu intelektu pagrįstą sistemą: „Taskflow Agent“. Jau kelis mėnesius ši inovatyvi sistema padėjo atrasti didelio poveikio saugumo pažeidžiamumus įvairiuose atvirojo kodo projektuose, žymėdama reikšmingą šuolį AI pagrįstos saugos srityje.

„Taskflow Agent“, kartu su specializuotais audito užduočių srautais, leido saugumo tyrėjams perkelti dėmesį nuo daug laiko reikalaujančio pažeidžiamumų atradimo prie efektyvaus patvirtinimo ir ataskaitų teikimo. Sistema nuolat nustato kritines problemas, tokias kaip autorizacijos apėjimai ir informacijos atskleidimas, leidžiantys neteisėtą prieigą arba slaptų duomenų atskleidimą. Iki šiol naudojant šią sistemą buvo pranešta apie daugiau nei 80 pažeidžiamumų, daugelis jų jau viešai atskleisti. Šis straipsnis gilinasi į tai, kaip veikia ši novatoriška atvirojo kodo sistema, jos praktinį pritaikymą ir kaip galite ją panaudoti savo projektuose, siekdami sustiprinti programinės įrangos saugumą.

„GitHub“ AI pažeidžiamumų skenerio diegimas jūsų projektuose

Pradėti naudotis „GitHub Security Lab Taskflow Agent“ yra paprasta, tai leidžia kūrėjams ir saugumo specialistams integruoti šį galingą AI saugos įrankį į savo darbo eigą. Svarbus reikalavimas norint paleisti užduočių srautus yra aktyvi GitHub Copilot licencija, nes pagrindinės užklausos naudoja aukščiausios klasės modelių užklausas iš sudėtingų LLM, tokių kaip openai-gpt-5-2-codex ir claude-opus-4-6.

Štai trumpas vadovas, kaip inicijuoti skenavimą:

  1. Pasiekite saugyklą: Eikite į seclab-taskflows „GitHub“ saugyklą.
  2. Paleiskite „Codespace“: Paleiskite „Codespace“ tiesiai iš saugyklos. Tai suteikia iš anksto sukonfigūruotą aplinką, paruoštą vykdymui.
  3. Inicijuokite aplinką: Palaukite kelias minutes, kol „Codespace“ visiškai inicijuosis.
  4. Vykdykite auditą: Terminale paleiskite komandą: ./scripts/audit/run_audit.sh myorg/myrepo. Pakeiskite myorg/myrepo konkrečia „GitHub“ organizacija ir saugykla, kurią norite audituoti.

Įprastas vidutinio dydžio saugyklos skenavimas gali užtrukti 1–2 valandas. Baigus darbą, atsidarys „SQLite“ peržiūros programa, rodanti rezultatus audit_results lentelėje. Ieškokite eilučių, pažymėtų varnelėmis has_vulnerability stulpelyje, kad nustatytumėte galimas problemas.

Profesionalų patarimas: Dėl nedeterministinio didelių kalbos modelių (LLM) pobūdžio, atliekant audito užduočių srautus kelis kartus toje pačioje kodų bazėje, galima gauti skirtingus, vertingus rezultatus. Apsvarstykite galimybę naudoti skirtingus modelius nuosekliems paleidimams, pvz., gpt-52-in-chatgpt arba claude-and-codex-now-available-for-copilot-business-pro-users, kad padidintumėte aptikimo aprėptį.

Sistema taip pat palaiko privačias saugyklas, nors tam reikia modifikuoti „Codespace“ konfigūraciją, kad būtų suteiktos reikalingos prieigos teisės.

Užduočių srautų išardymas: AI pagrįstas audito mechanizmas

„GitHub“ AI pagrįstos saugos sistemos pagrindas yra užduočių srautai (Taskflows) – YAML failai, kurie orkestruoja užduočių seriją LLM. Šis struktūrizuotas požiūris leidžia atlikti sudėtingas, daugiapakopes operacijas, kurios būtų nepatogios ar neįmanomos naudojant vieną didelę užklausą. seclab-taskflow-agent valdo nuoseklų šių užduočių vykdymą, užtikrindamas, kad vienos užduoties rezultatas sklandžiai pereitų į kitą.

Apsvarstykite tipinį kodo auditą: sistema pirmiausia suskaido saugyklą į funkcinius komponentus. Kiekvienam komponentui surenkama kritinė informacija, pvz., įėjimo taškai, numatyti privilegijų lygiai ir bendras tikslas. Šie duomenys vėliau saugomi repo_context.db duomenų bazėje, tarnaujantys kaip gyvybiškai svarbus kontekstas tolesnėms audito užduotims.

Šis modulinis dizainas yra labai svarbus, nes LLM turi būdingų konteksto lango apribojimų. Nors naujesni modeliai pasižymi didesniais langais, užduočių suskaidymas į mažesnius, tarpusavyje susijusius žingsnius žymiai pagerina patikimumą, derinimo galimybes ir gebėjimą spręsti platesnius kodo audito projektus. seclab-taskflow-agent dar labiau padidina efektyvumą, asinchroniškai vykdydamas šablonines užduotis per kelis komponentus, dinamiškai pakeisdamas komponentams būdingą informaciją, kai reikia.

Evoliucija nuo konkrečių perspėjimų prie bendrųjų saugumo auditų

Iš pradžių seclab-taskflow-agent pasirodė esąs labai efektyvus fokusinėms užduotims, tokioms kaip „CodeQL“ perspėjimų rūšiavimas, kur instrukcijos buvo griežtos, o kriterijai gerai apibrėžti. Išplėsti jo naudingumą platesniems saugumo tyrimams ir auditui buvo iššūkis: kaip suteikti LLM laisvę tyrinėti įvairius pažeidžiamumų tipus, nepasiduodant haliucinacijoms ir padidėjusiam klaidingų teigiamų rezultatų skaičiui.

Šios plėtros raktas slypi sudėtingame užduočių srautų dizaine ir užklausų inžinerijoje. Vietoj plačių, neaiškių instrukcijų, sistema naudoja kruopščiai sukurtą procesą, kad nukreiptų LLM. Šis požiūris leidžia agentui nustatyti platesnį pažeidžiamumų spektrą, išlaikant aukštą tikrą teigiamą rodiklį, imituojant patyrusio žmogaus saugumo analitiko niuansuotą sprendimų priėmimą.

Strateginis dizainas patobulintam pažeidžiamumų aptikimui

Siekiant sumažinti LLM polinkį į haliucinacijas ir klaidingus teigiamus rezultatus, „Taskflow Agent“ integruoja patikimą grėsmių modeliavimo etapą. Šis kritinis pradinis žingsnis užtikrina, kad LLM veikia gerai apibrėžtame saugumo kontekste, kuris yra dažnas daugelio automatizuotų statinės analizės įrankių trūkumas.

Grėsmių modeliavimo etapo užduotys

UžduotisAprašymasNauda saugumo auditui
Identifikuoti programasNustato atskirus komponentus saugykloje, nes vienoje saugykloje gali būti kelios atskiros programos ar moduliai, kiekvienas su savo saugumo ribomis ir rūpesčiais. Ši užduotis padeda apibrėžti apimtį.Užtikrina, kad audito pastangos būtų sutelktos į loginius vienetus, užkertant kelią apimties išplėtimui ir leidžiant atlikti pritaikytą saugumo analizę, pagrįstą kiekvieno komponento unikaliomis funkcijomis ir potencialiu atakos paviršiumi.
Surinkti komponento kontekstąRenka esminę informaciją kiekvienam identifikuotam komponentui, įskaitant jo įėjimo taškus (kur jis gauna nepatikimus duomenis), numatytą privilegijų lygį ir bendrą tikslą.Suteikia LLM gilų supratimą apie kiekvieno komponento vaidmenį ir galimus pažeidžiamumus. Šis kontekstas yra labai svarbus norint atskirti numatytą funkcionalumą nuo teisėtų saugumo trūkumų, pavyzdžiui, nustatant, ar komandos įterpimas CLI įrankyje yra pažeidžiamumas, ar numatytas elgesys jo dizaine.
Apibrėžti saugumo ribąNustato saugumo perimetrą kiekvienam komponentui, remiantis surinktu kontekstu. Tai padeda nustatyti, kas yra saugumo problema, o kas – dizaino ypatybė. Pavyzdžiui, „pažeidžiamumas“ smėlio dėžės aplinkoje, kurioje nėra smėlio dėžės pabėgimo galimybės, gali nebūti saugumo rizika.Neleidžia LLM klaidingai žymėti nekaltų problemų kaip pažeidžiamumų, žymiai sumažinant klaidingų teigiamų rezultatų skaičių. Tai suderina auditą su realaus pasaulio grėsmių modeliu, užtikrinant, kad praneštos problemos yra iš tikrųjų išnaudojamos ir kelia riziką programos veikimo kontekste.
Pažeidžiamumo pasiūlymasPirmajame audito žingsnyje LLM analizuoja kiekvieną komponentą, panaudodamas jo kontekstą, kad pasiūlytų pažeidžiamumų tipus, kurie greičiausiai atsiras tame konkrečiame komponente (pvz., SQL įterpimas, XSS, autentifikavimo apėjimas).Siaurina tolesnės, detalesnės analizės apimtį. Jis veikia kaip intelektualus pirminis filtras, nukreipiantis LLM sutelkti dėmesį į paplitusias ar kontekstualiai svarbias pažeidžiamumų klases, gerindamas atradimų efektyvumą ir tinkamumą.
Griežtas auditas ir rūšiavimasAntrasis audito žingsnis paima pasiūlymus iš ankstesnio etapo ir taiko jiems griežtus kriterijus. Tada LLM, naudodamas naują kontekstą ir konkrečias užklausas, nustato, ar kiekvienas pasiūlymas atspindi galiojantį, išnaudojamą pažeidžiamumą. Šis etapas imituoja žmogaus saugumo tyrėjo rūšiavimo procesą.Veikia kaip itin svarbus patvirtinimo sluoksnis, žymiai padidinantis tikrą teigiamų rezultatų skaičių. Atskyrus pasiūlymą nuo griežto patvirtinimo, sumažinama LLM haliucinacijų tikimybė ir užtikrinama, kad tik patvirtintos, didelio poveikio problemos būtų perduotos žmogaus peržiūrai, taip optimizuojant bendrą pažeidžiamumų skenavimo darbo eigą.

Surinkti konteksto duomenys, įskaitant numatytą naudojimą ir saugumo ribą, yra tiesiogiai įterpiami į LLM užklausas. Tai užtikrina, kad agentas laikosi griežtų gairių, nustatydamas, ar problema atitinka tikro pažeidžiamumo statusą, kaip matyti užklausos ištraukoje:

        Turite atsižvelgti į komponento ketinimą ir grėsmių modelį komponento pastabose, kad nustatytumėte, ar problema
        yra pagrįsta saugumo problema, ar numatytas funkcionalumas. Galite gauti įėjimo taškus, žiniatinklio įėjimo taškus ir vartotojo veiksmus,
        kad padėtumėte nustatyti numatytą komponento naudojimą.

Šis dviejų žingsnių audito procesas – pirmiausia pasiūlant galimas problemas, o vėliau jas kruopščiai rūšiuojant – yra pagrindinis sistemos sėkmės veiksnys. Jis imituoja žmogaus eksperto darbo eigą, kai po pradinių plačių apžvalgų seka detali, į kontekstą orientuota analizė.

Realaus pasaulio poveikis: kritinių trūkumų atskleidimas naudojant AI

Praktinis „GitHub Security Lab Taskflow Agent“ pritaikymas yra reikšmingas. Jis sėkmingai nustatė rimtus saugumo trūkumus, kurie galėtų turėti niokojančių pasekmių. Pavyzdžiui, sistema aptiko pažeidžiamumą, leidžiantį pasiekti asmens identifikavimo informaciją (PII) elektroninės prekybos programų pirkinių krepšeliuose. Toks informacijos atskleidimas gali sukelti rimtų privatumo pažeidimų ir atitikties problemų.

Kitas žymus atradimas buvo kritinis trūkumas pokalbių programoje, kurioje vartotojai galėjo prisijungti su bet kokiu slaptažodžiu. Tai iš esmės padarė autentifikavimo mechanizmą nenaudingu, atveriant kelią visiškam paskyros perėmimui. Šie pavyzdžiai pabrėžia „Taskflow Agent“ gebėjimą peržengti paviršutiniškus patikrinimus ir nustatyti giliai įsišaknijusius logikos trūkumus bei autorizacijos silpnumus, kuriems dažnai reikia daug rankinio darbo, kad būtų aptikti.

Padarydama šią AI pagrįstą saugos sistemą atvirojo kodo, „GitHub“ skatina bendradarbiavimo aplinką, kurioje saugumo bendruomenė gali bendrai tobulinti ir naudoti šiuos įrankius. Kuo daugiau komandų priims ir prisidės prie šios sistemos, tuo greičiau augs kolektyvinė geba identifikuoti ir pašalinti pažeidžiamumus, padarant skaitmeninę ekosistemą saugesnę visiems. Tai atspindi bendradarbiavimo etosą, matomą kitose iniciatyvose, tokiose kaip github-agentic-workflows, skatinančias nuolatines inovacijas AI saugos įrankiuose.

Dažniausiai užduodami klausimai

What is the GitHub Security Lab Taskflow Agent and how does it enhance vulnerability scanning?
The GitHub Security Lab Taskflow Agent is an open-source, AI-powered framework designed to automate and improve the process of identifying security vulnerabilities in software projects. It leverages Large Language Models (LLMs) to perform structured security audits by breaking down complex tasks into manageable steps, enabling more precise analysis. This framework significantly enhances traditional vulnerability scanning by reducing false positives and focusing on high-impact issues, such as authorization bypasses and information disclosure. By integrating threat modeling and prompt engineering, it guides LLMs to understand context and intended functionality, leading to more accurate and actionable vulnerability reports, allowing security researchers to spend more time on verification rather than initial discovery.
What are the core components of the Taskflow Agent's design for accurate vulnerability detection?
The core design of the Taskflow Agent emphasizes minimizing hallucinations and increasing true positive rates through a multi-stage approach. It begins with a comprehensive threat modeling stage where a repository is divided into components, and crucial information like entry points, intended privilege, and purpose is gathered. This context is then used to define security boundaries and inform subsequent tasks. The auditing process itself is bifurcated: first, the LLM suggests potential vulnerability types for each component, and then a second, more rigorous task audits these suggestions against strict criteria. This two-step validation, combined with meticulous prompt engineering, ensures a high level of accuracy, simulating a human-like triage process for identified issues.
What specific types of vulnerabilities has the Taskflow Agent been successful in identifying?
The Taskflow Agent has proven exceptionally effective at identifying high-impact vulnerabilities that often elude traditional scanning methods. Examples include authorization bypasses, which allow unauthorized users to gain access to restricted functionalities, and information disclosure vulnerabilities, enabling access to private or sensitive data. Specifically, it has uncovered cases like accessing personally identifiable information (PII) in e-commerce shopping carts and critical weaknesses allowing users to sign in with arbitrary passwords in chat applications. These findings highlight the framework's capability to pinpoint subtle yet severe security flaws that could have significant real-world consequences for affected projects and their users.
What are the prerequisites for running GitHub Security Lab's Taskflow Agent on a project?
To utilize the GitHub Security Lab Taskflow Agent for vulnerability scanning on your own projects, there is a primary prerequisite: a GitHub Copilot license. The underlying LLM prompts and advanced capabilities of the framework rely on GitHub Copilot's infrastructure, specifically utilizing premium model requests. Users also need a GitHub account to access and initialize a Codespace from the `seclab-taskflows` repository. While the framework is designed to be user-friendly, familiarity with command-line operations and basic understanding of repository structures will be beneficial for effective deployment and interpretation of audit results, especially when dealing with private repositories requiring additional Codespace configuration.
How does the Taskflow Agent address the limitations of Large Language Models (LLMs) in security auditing?
The Taskflow Agent addresses inherent LLM limitations, such as restricted context windows and susceptibility to hallucinations, through an intelligent taskflow design and prompt engineering. Instead of using one large prompt, it breaks down complex auditing into a series of smaller, interdependent tasks described in YAML files. This modular approach allows for better control, debugging, and sequential execution, passing results from one task to the next. Threat modeling helps provide strict context and guidelines to the LLM, enabling it to differentiate between true security vulnerabilities and intended functionalities, significantly reducing false positives. By iterating through components and applying templated prompts, the agent maximizes LLM efficiency and accuracy even for extensive codebases, overcoming challenges related to LLM's non-deterministic nature through multiple runs.

Būkite informuoti

Gaukite naujausias AI naujienas el. paštu.

Dalintis