Samouczki

Audytuj kod i generuj raporty

Użyj IBM Bob, aby stworzyć wielokrotnego użytku umiejętność audytu bezpieczeństwa, przeskanować aplikację pod kątem wymagań OWASP ASVS i wygenerować raporty SARIF i OSCAL, na które mogą reagować deweloperzy i agenci AI.

IBM Bob to partner AI w cyklu życia rozwoju oprogramowania (SDLC), który wzmacnia twoje istniejące przepływy pracy. W tym tutorialu użyjesz Boba do:

  • Tworzenia umiejętności: Budowania zestawów instrukcji wielokrotnego użytku, które uczą Boba wyspecjalizowanych, powtarzalnych przepływów pracy
  • Określania uprawnień dla każdego zadania: Kontrolowania, co Bob może robić w każdym zadaniu
  • Używania wzmianek kontekstowych: Wskazywania Bobowi konkretnych plików za pomocą @, aby skupił analizę tam, gdzie to ważne
  • Wybierania trybów: Wybierania między trybami Agent, Ask i Plan, aby zoptymalizować styl rozumowania Boba

Używając tych funkcji Boba, przeskanujesz aplikację Galaxium Travels pod kątem podzbioru wymagań OWASP Application Security Verification Standard (ASVS) i utworzysz dwa ustrukturyzowane artefakty:

  • Plik SARIF (Static Analysis Results Interchange Format), który jest raportem wyników czytelnym maszynowo, kompatybilnym z IDE, GitHub Advanced Security i potokami CI/CD
  • Open Security Controls Assessment Language (OSCAL) Plan of Action and Milestones (POA&M), który jest ustrukturyzowaną mapą naprawczą, którą agent AI może wykorzystać do systematycznego przepracowywania poprawek

Jeśli nie znasz IBM Bob lub ogólnych koncepcji przepływów pracy wspomaganych przez AI, zapoznaj się z tutorialami wprowadzającymi IBM Bob.

Wymagania wstępne

Scenariusz

Aplikacja Galaxium Travels rozrosła się przez kilka lat w złożoną bazę kodu. Pełny ręczny przegląd bezpieczeństwa jest czasochłonny i niespójny między członkami zespołu. Potrzebujesz powtarzalnego procesu, który generuje ustrukturyzowane dane wyjściowe, na które deweloperzy mogą natychmiast zareagować i które można wprowadzić do zautomatyzowanego potoku naprawczego.

W tym tutorialu użyjesz IBM Bob do stworzenia umiejętności audytu bezpieczeństwa opartej na wymaganiach weryfikacji OWASP ASVS, uruchomisz ją na bazie kodu Galaxium Travels, wygenerujesz raport wyników SARIF i utworzysz OSCAL Plan of Action and Milestones, którego Bob może użyć do naprawy.

Ten tutorial przeprowadza audyt względem wymagań ASVS Level 1 dotyczących kontroli dostępu (V4), walidacji danych wejściowych (V5), bezpieczeństwa API (V13) i konfiguracji (V14). Ten skoncentrowany zakres pokazuje znaczące wyniki bez wymagania pełnego audytu zgodności. Ten sam wzorzec umiejętności działa z dowolnym standardem bezpieczeństwa: zastąp kontrole ASVS listą CWE Top 25, wewnętrzną listą kontrolną twojej organizacji lub dowolnym innym frameworkiem.

Skonfiguruj laboratorium

  1. Sklonuj repozytorium Galaxium Travels.

    git clone -b bob-learning-path-branch https://github.com/IBM/galaxium-travels
  2. Kliknij File, a następnie Open Folder.

  3. Przejdź do sklonowanego katalogu galaxium-travels i otwórz go.

  4. Otwórz interfejs czatu Boba, klikając ikonę Boba obok paska nawigacji lub użyj skrótu Option + Command + B (macOS) lub Ctrl + Alt + B (Windows).

  5. W polu wprowadzania czatu uruchom /init, aby zainicjować środowisko deweloperskie i utworzyć pliki AGENTS.md dla Boba. Kliknij Approve todo tools for task, jeśli zostaniesz o to poproszony.

Utwórz umiejętność audytu

Utwórz umiejętność, która jest zestawem instrukcji wielokrotnego użytku, którego Bob używa do wykonania konkretnego zadania.

Następująca umiejętność audytuje bazę kodu Galaxium Travels względem wymagań OWASP ASVS Level 1.

Umiejętność sprawdza następujące kontrole:

KategoriaKontrolaOpis
V4.1 Ogólna kontrola dostępuV4.1.3Użytkownicy mogą uzyskać dostęp tylko do swoich zasobów; dane innych użytkowników nie są dostępne
V4.1.5Kontrola dostępu domyślnie odmawia — nieuwierzytelnione żądania są odrzucane
V4.2 Kontrola dostępu na poziomie operacjiV4.2.1Nie można uzyskać dostępu do wrażliwych zasobów poprzez manipulowanie przewidywalnym ID obiektu, chroniąc przed atakami insecure direct object reference (IDOR)
V5.1 Walidacja danych wejściowychV5.1.1Wszystkie dane wejściowe typu string mają zdefiniowane ograniczenia maksymalnej długości
V13.1 Ogólne bezpieczeństwo usług webowychV13.1.3Punkty końcowe API nie akceptują poświadczeń ani danych osobowych (PII) w parametrach zapytania URL
V14.4 Nagłówki bezpieczeństwa HTTPV14.4.1Odpowiedzi HTTP zawierają odpowiednie nagłówki bezpieczeństwa, takie jak Content-Security-Policy, X-Frame-Options i X-Content-Type-Options
V14.5 Walidacja nagłówków żądań HTTPV14.5.3Pochodzenie CORS jest walidowane względem jawnej listy dozwolonych — pochodzenia z symbolami wieloznacznymi nie są dozwolone
  1. Pod interfejsem czatu kliknij Bob - Settings, a następnie kliknij Bob Settings.

  2. Kliknij Skills na lewym pasku bocznym.

  3. Kliknij przycisk +, aby utworzyć nową umiejętność.

  4. Wprowadź asvs-audit w polu Skill Name. To jest nazwa używana do wywołania umiejętności za pomocą /asvs-audit w czacie.

  5. Wprowadź krótki opis w polu Description:

    Audits a codebase against OWASP ASVS Level 1 access control, input validation, API security, and configuration requirements.
  6. Upewnij się, że przełącznik Allow Bob to use this skill jest włączony.

    Gdy przełącznik jest włączony, Bob może aktywować umiejętność samodzielnie, gdy prompt lub plan tego wymaga. Plan audytu, który utworzysz później w tym tutorialu, robi dokładnie to.

  7. Zmień Scope & Location na galaxium-travels.

    To zapisuje umiejętność w katalogu .bob/skills/ projektu, więc jest dostępna tylko w tym projekcie, a twój zespół może ją wersjonować razem z bazą kodu. Lokalizacja globalna (~/.bob/skills/) udostępniłaby umiejętność w każdym projekcie na twoim komputerze.

  8. Wprowadź następującą umiejętność w polu tekstowym Skill Instructions.

    ---
    name: asvs-audit
    description: Audit a codebase against OWASP ASVS Level 1 access control, input validation, API security, and configuration requirements and produce structured findings ready for SARIF and OSCAL export.
    user-invocable: true
    ---
    
    Perform a structured security audit of this codebase. Work through the following phases in order. Do not skip phases or combine them.
    
    ## Phase 1: Discover
    
    Read and understand the application before auditing. Focus on:
    - Entry points: main files, route definitions, controllers
    - Authentication and session handling code
    - Input validation and sanitization code
    - Database query code
    - Any files flagged as high-risk in earlier analysis
    
    Summarize what you find before proceeding to Phase 2.
    
    ## Phase 2: Audit
    
    Check each control below. For each one record: PASS, FAIL, or N/A.
    For every FAIL, record the file path and line number.
    
    ### V4.1 General Access Control
    - V4.1.3 — Users can only access their own resources; other users' data is not accessible
    - V4.1.5 — Access control denies by default — unauthenticated requests are rejected
    
    ### V4.2 Operation Level Access Control
    - V4.2.1 — Sensitive resources cannot be accessed by manipulating a predictable object ID (IDOR protection)
    
    ### V5.1 Input Validation
    - V5.1.1 — All string inputs have defined maximum length constraints
    
    ### V13.1 Generic Web Service Security
    - V13.1.3 — API endpoints do not accept credentials or PII in URL query parameters
    
    ### V14.4 HTTP Security Headers
    - V14.4.1 — HTTP responses include appropriate security headers such as Content-Security-Policy, X-Frame-Options, and X-Content-Type-Options
    
    ### V14.5 HTTP Request Header Validation
    - V14.5.3 — CORS origin is validated against an explicit allowlist — wildcard origins are not permitted
    
    ## Phase 3: Generate Findings
    
    For each FAIL, produce a finding in this format:
    
    **Finding [N]:**
    - Rule: ASVS [control number]
    - Severity: Critical / High / Medium / Low
    - File: [path]
    - Line: [number or range, if identifiable]
    - Issue: [one sentence describing what was found]
    - Fix: [one sentence describing the recommended change]
    
    ## Phase 4: Summary
    
    Produce a short summary:
    - Total controls checked
    - Pass / Fail / N/A counts
    - Two-sentence overall security posture assessment
    
    Save the findings to the location specified by the plan or prompt that invoked this skill. Do not generate SARIF, OSCAL, or other report files — report generation is a separate task. Report that the audit is complete and wait for the next instruction.

    To jest kompletny zestaw instrukcji, których Bob przestrzega podczas audytu.

  9. Kliknij Create.

Znajdź obszary wysokiego ryzyka do audytu

Aby zaoszczędzić tokeny, poproś Boba o zidentyfikowanie plików i folderów najbardziej istotnych dla bezpieczeństwa. Uruchomisz umiejętność audytu w tych obszarach.

  1. Jeśli panel czatu nie jest jeszcze otwarty, otwórz go za pomocą Option + Command + B (macOS) lub Ctrl + Alt + B (Windows).

  2. Wybierz Ask z selektora trybu.

    Każdy tryb ma różne możliwości i style rozumowania. Tryb Ask działa najlepiej w przypadku pytań i analiz, ale nie możesz pisać ani edytować plików w trybie Ask.

  3. W polu wprowadzania czatu wprowadź następujący prompt, aby zbadać bazę kodu i znaleźć obszary o najwyższym ryzyku bezpieczeństwa:

    Explore this codebase as a Senior Security Analyst. Give me a short summary covering:
    
    1. The primary tech stack and framework
    2. Identify the files and folders most relevant to security
    
    Make sure to also review:
    1. How authentication and session management are handled
    2. How user input is accepted and validated
    3. Where database queries are made
    4. Any API endpoints that accept external input
    
    I want to understand the highest security risk areas before running an audit.

    Bob odczytuje pliki i odpowiada podsumowaniem struktury aplikacji.

Utwórz plan audytu obszarów wysokiego ryzyka

Utwórz plan, którego Bob będzie przestrzegał podczas audytu obszarów wysokiego ryzyka.

  1. Przełącz się na tryb Plan.

  2. Poproś Boba o utworzenie planu audytu obszarów wysokiego ryzyka. Kliknij Approve todo tools for task, jeśli zostaniesz o to poproszony.

    Create a plan for auditing the high-risk areas found in the previous
    exploration.
    
    When auditing, use the asvs-audit skill to guide the process.
    
    When the plan runs, create the security/ directory if it does not exist and
    save the findings to security/audit-findings.md
    
    Save the plan to plan/audit-plan.md
  3. Bob może zadać pytania uzupełniające, aby wyjaśnić zakres audytu lub konkretne obszary, na których należy się skupić. Możesz na nie odpowiedzieć lub powiedzieć Bobowi use your recommendation.

  4. Otwórz plik planu, aby zrozumieć podejście do audytu i co Bob zrobi, gdy go uruchomisz.

Audytuj bazę kodu

  1. Kliknij przycisk +, aby rozpocząć nowe zadanie.

  2. Upewnij się, że jesteś w trybie Agent w interfejsie czatu.

    Tryb Agent daje Bobowi pełne możliwości, w tym pisanie i wykonywanie plików. Jest to konieczne dla faz audytu i generowania raportów.

  3. Kliknij selektor Permissions w interfejsie czatu i zaznacz pola wyboru Read, Edit, Execute i Skill. Pozostaw wszystkie inne przełączniki niezaznaczone dla tego zadania.

    UprawnienieStanDlaczego
    Read✅ WłączoneBob odczytuje bazę kodu, plan audytu i umiejętność
    Edit✅ WłączoneBob zapisuje wyniki do security/audit-findings.md
    Execute✅ WłączoneBob może uruchamiać polecenia powłoki, aby rozwiązać ścieżki lub potwierdzić strukturę plików
    Skill✅ WłączonePlan audytu wywołuje umiejętność asvs-audit
    MCP❌ WyłączoneNiepotrzebne do lokalnej analizy kodu
  4. Poproś Boba o wdrożenie planu audytu.

    Implement the @plan/audit-plan.md
  5. Przejrzyj wyniki w security/audit-findings.md.

    Plan mówi Bobowi, aby utworzył katalog security/, jeśli jeszcze nie istnieje, i zapisał wyniki do security/audit-findings.md.

    Zapisanie wyników pozwala rozpocząć nowy czat z modelem używającym świeżego okna kontekstowego. Możesz wskazać Bobowi plik wyników, aby wygenerować raporty bez ponownego odczytywania całej bazy kodu i instrukcji umiejętności, co zachowuje okno kontekstowe do generowania raportów.

    Uwaga dotycząca okna kontekstowego: Wszystkie modele mają ustawione okno kontekstowe. Podczas audytu dużej bazy kodu możesz przekroczyć okno kontekstowe modelu. W przypadku dużych baz kodu spróbuj audytować jedną kategorię ASVS na raz. Uruchom najpierw V4, potem V5, V13 i V14, a na końcu poproś Boba o skonsolidowanie wyników. To również dobry powód, aby utrzymywać SKILL.md zwięzłym i używać skoncentrowanych wzmianek kontekstowych @ zamiast kierować Boba na całe repozytorium naraz.

Generuj raporty bezpieczeństwa

SARIF to standardowy format wymiany wyników analizy statycznej. IDE, w tym Bob, GitHub Advanced Security i większość potoków CI/CD może bezpośrednio wykorzystywać pliki SARIF.

  1. Kliknij przycisk +, aby rozpocząć nowe zadanie.

  2. Upewnij się, że używasz trybu Agent.

  3. Kliknij Permissions w panelu czatu i zaznacz pola wyboru Read, Edit i Execute. Pozostaw wszystkie inne przełączniki niezaznaczone dla tego zadania.

    UprawnienieStanDlaczego
    Read✅ WłączoneBob odczytuje wyniki w security/audit-findings.md
    Edit✅ WłączoneBob zapisuje raport SARIF do katalogu security/
    Execute✅ WłączoneBob może uruchamiać polecenia powłoki, aby rozwiązać ścieżki lub potwierdzić strukturę plików
    Skill❌ WyłączoneNiepotrzebne do tworzenia raportów. Umiejętność już utworzyła wyniki potrzebne agentowi
    MCP❌ WyłączoneNiepotrzebne do lokalnej analizy kodu
  4. Poproś Boba o wygenerowanie raportu SARIF używając wzmianki kontekstowej @.

    @security/audit-findings.md
    
    Generate a SARIF 2.1.0 report from the audit findings.
    
    Save it to `security/audit-results.sarif`.
    
    Include:
    - Tool name: "ASVS Security Audit"
    - A rule entry for each ASVS control that was checked, with the control ID and description
    - A result entry for each finding, with severity level, file path, line number, and the fix recommendation in the message field

    Bob generuje plik i zapisuje go do security/audit-results.sarif. Potwierdź, że plik zawiera tablicę runs z wpisami results, po jednym na wynik z audytu.

    Bob również raportuje decyzje mapowania, które podjął w czacie:

    Przykładowe wyjście:

    Severity mapping used: Critical/High → SARIF error; Medium/Low → SARIF warning.
    The message.text for each result contains the full issue description and the fix
    recommendation in one field, so tooling that renders SARIF (GitHub Code
    Scanning, VS Code SARIF Viewer, etc.) will surface the remediation guidance
    inline.
  5. Otwórz security/audit-results.sarif w Bobie, aby przejrzeć wyniki. Możesz użyć tego pliku w innych narzędziach, takich jak GitHub Advanced Security lub potok CI/CD, aby pokazać wyniki audytu.

Generuj plan naprawczy OSCAL (POA&M)

OSCAL POA&M to dokument JSON czytelny maszynowo, który mapuje każdy wynik na ustrukturyzowane zadanie naprawcze z informacjami o ryzyku, wskazówkami implementacyjnymi i przypisaniami kamieni milowych. Bob może odczytać ten plik jako kolejkę pracy. Przepracowuje każdy element, stosuje poprawki i oznacza kamienie milowe jako ukończone w miarę postępów.

  1. Kliknij przycisk +, aby rozpocząć nowe zadanie.

  2. Kliknij menu trybu w panelu czatu i wybierz Agent.

  3. Kliknij Permissions w panelu czatu i zaznacz pola wyboru Read, Edit i Execute. Pozostaw wszystkie inne przełączniki niezaznaczone dla tego zadania.

    UprawnienieStanDlaczego
    Read✅ WłączoneBob odczytuje wyniki w security/audit-findings.md
    Edit✅ WłączoneBob zapisuje OSCAL POA&M do katalogu security/
    Execute✅ WłączoneBob może uruchamiać polecenia powłoki, aby rozwiązać ścieżki lub potwierdzić strukturę plików
    Skill❌ WyłączoneNiepotrzebne do tworzenia raportów. Umiejętność już utworzyła wyniki potrzebne agentowi
    MCP❌ WyłączoneNiepotrzebne do lokalnej analizy kodu
  4. Poproś Boba o wygenerowanie raportu OSCAL POA&M używając wzmianki kontekstowej @.

    @security/audit-findings.md
    
    Generate an OSCAL Plan of Action and Milestones (POA&M) from the audit findings.
    
    Save it to `security/poam.json`.
    
    For each finding include:
    - A unique UUID
    - The ASVS control ID as the finding reference
    - Severity and a one-sentence risk description
    - A concrete remediation task with enough detail for an AI agent to implement it without additional context — include file path, line reference, and the specific change required
    - A milestone label based on severity: Critical and High findings get "sprint-1", Medium and Low get "sprint-2"
    
    Use OSCAL version 1.1.2 structure.

    Bob generuje plik i zapisuje go do security/poam.json.

    Przykładowe wyjście:

    Each poam-item contains:
    
    props — severity, asvs-control, and milestone label
    risks[] — one risk with a uuid, title, one-sentence risk description, and status: "open"
    
    remediations[] — one remediation with a lifecycle: "planned" flag, a title, and a description
    that is specific enough for an AI agent to implement without additional context
    (includes exact file paths, line numbers, and the concrete code change required)
    
    tasks[] — one or more discrete action tasks under each remediation (e.g. the IDOR finding breaks
    out the short-term ownership check and the long-term UUID migration as separate tasks)

Masz teraz dwa artefakty w katalogu security/:

  • audit-results.sarif — ustrukturyzowane wyniki dla narzędzi deweloperskich i integracji CI/CD
  • poam.json — kolejka pracy naprawczej dla naprawy wspomaganej przez AI lub prowadzonej przez człowieka

Przejrzyj wyniki

Po wygenerowaniu POA&M przejrzyj wyniki i ustal priorytety, które należy naprawić w pierwszej kolejności.

  1. Kliknij przycisk +, aby rozpocząć nowe zadanie.

  2. Kliknij menu trybu w panelu czatu i wybierz Ask.

  3. Poproś Boba o wyróżnienie najważniejszych elementów z POA&M używając wzmianki kontekstowej @.

    @security/poam.json
    
    Review this remediation plan and identify the 3 most critical items to fix first.
    
    For each one include:
    - What the vulnerability is and why it is the highest priority
    - Which file and line to look at
    - What the fix involves and roughly how long it would take a developer to implement

    Bob odczytuje plik i zwraca podsumowanie z priorytetami:

    Przykładowe wyjście:

    #1 — No Authentication on Any Endpoint (Finding 1 · ASVS V4.1.5 · critical)
    Why it's the highest priority:
    This is the foundational flaw that makes every other vulnerability worse. With
    zero authentication in place, any anonymous caller on the network can execute
    all booking operations — book flights, read all user records, cancel any
    booking, register accounts. Until this is fixed, findings 2 and 3 also have no
    meaningful barrier.
    
    ...snip...
    
    #3 — PII in URL Query Parameters on GET /user (Finding 5 · ASVS V13.1.3 · high)
    Why it's third:
    Email addresses (PII) appearing in GET /user query strings are passively and
    silently leaked into server access logs, reverse-proxy logs, CDN caches, and
    browser history — a persistent, silent data breach that can violate GDPR. Unlike
    findings 2 and 3, this is an architectural leak that accumulates over time;
    every request compounds the exposure.
    
    Sprint-1 Fix Order Summary
    
    Priority    Finding Severity        Effort  Dependency
    1   Auth on all endpoints (V4.1.5)  Critical        2–4 h   None — fix first
    2   Wildcard CORS (V14.5.3) High    30 min  Independent — fix in parallel
    3   PII in query string (V13.1.3)   High    1–2 h   Independent — fix in parallel
    
    Findings 2 and 3 are blockers in the ownership-check fixes (Findings 2 and 3 in
    the POAM) that come afterward, since those require a known caller identity —
    which only exists once authentication (Finding 1) is in place.

    Możesz również zintegrować serwer Model Context Protocol (MCP) z przepływami pracy audytu i poprosić Boba o utworzenie zgłoszeń dla każdego wyniku, łącząc je z odpowiednim kodem i dołączając wskazówki naprawcze z POA&M.

Czyszczenie

Aby usunąć pliki utworzone w tym tutorialu:

  1. W Bob Settings kliknij Skills i usuń umiejętność asvs-audit.
  2. Usuń katalog galaxium-travels sklonowany w Skonfiguruj laboratorium.

Następne kroki

W tym tutorialu użyłeś IBM Bob do:

  • Zbadania bazy kodu Galaxium Travels w celu zidentyfikowania obszarów wysokiego ryzyka przed audytem
  • Utworzenia umiejętności asvs-audit wielokrotnego użytku, którą twój zespół może wersjonować i uruchamiać w dowolnym projekcie
  • Audytu bazy kodu względem wymagań OWASP ASVS dotyczących kontroli dostępu, walidacji danych wejściowych, bezpieczeństwa API i konfiguracji przy użyciu przełączników możliwości o zakresie zadania
  • Wygenerowania raportu SARIF dla narzędzi deweloperskich i integracji CI/CD
  • Wygenerowania OSCAL POA&M, którego agent AI może użyć do naprawy
  • Przejrzenia i ustalenia priorytetów trzech najważniejszych wyników

Kontynuuj z Generuj bezpieczny kod za pomocą przepływu pracy actor-critic, aby budować nowe funkcje bez ponownego wprowadzania klas problemów znalezionych w tym audycie.

Dodatkowe zasoby

Jak oceniasz ten temat?