Desenvolvendo meu primeiro Custom GPT para modelagem de ameaças

Michelle Mesquita
6 min readSep 22, 2024

--

Oi pessoal, tudo bem? 😊

Hoje quero compartilhar com vocês o STRIDE-GPT, um custom GPT que desenvolvi para facilitar a análise de ameaças em sistemas usando metodologia STRIDE. Se você é da área de AppSec, segurança da informação ou apenas está curioso sobre como usar inteligência artificial para melhorar suas práticas, continue lendo ✨

O que é um Custom GPT?

Custom GPTs são versões personalizadas do modelo de linguagem da OpenAI, que podem ser ajustadas para atender a necessidades específicas. Isso significa que você pode adaptar o comportamento do modelo e adicionar funcionalidades para torná-lo ainda mais útil para sua área.

Esse foi um ponto chave, pois eu tinha muita dúvida em como explorar a melhor capacidade do chatgpt, sem apenas torná-lo um buscador de respostas ou que fosse apenas aprendendo com meus inputs. No entanto, quando você cria seu custom gpt, as possibilidades se tornam exponenciais! É possível automatizar muitos assuntos, conforme explicarei sobre o GitHub abaixo.

Um ponto que eu tinha muita dúvida de como treinar uma IA, mas com o chat-gpt, você recebe um feedback na própria interação.

Além disso, você pode pedir para trocar o modelo de IA. Caso faça isso, lembre-se de copiar suas instruções em um bloco de texto, pois você pode acabar perdendo todas as instruções que criou.

➡️ Para usar essa abordagem do Custom GPT, é necessário pagar 20 dólares por mês.

Como Criar um Custom GPT

Para criar seu próprio custom GPT, siga estes passos:

1. Defina o Propósito: O que você quer que seu modelo faça? No meu caso, o objeto é: Realizar modelagem de ameaças com STRIDE, gera imagens de fluxo de ameaças do cenário e enviar ao GitHub o report.

2. Use a Interface da OpenAI: Acesse a plataforma e comece a configurar seu GPT.

3. Adicione exemplos e instruções: Isso ajuda o modelo a entender melhor suas expectativas. Inicie explicando um contexto. No meu caso, expliquei que era um especialista de AppSec.

4. Integre APIs: Por exemplo, você pode usar a OpenAPI do GitHub para interagir com repositórios e enviá-los para um específico. Ao você utilizar essas actions, isso permite que você possa automatizar qualquer coisa e o seu custom gpt, pode integrar com qualquer ferramenta através de APIs!

Você pode realizar as integrações através de actions! Isso é extremamente poderoso.

Para usar APIs de maneira autenticada, é necessário passar a API Key.

Aqui está um exemplo de como você pode integrar a OpenAPI do GitHub. Após diversos testes, esse foi o exemplo que funcionou com o chatGPT 4-o:

openapi: 3.1.0
info:
title: GitHub Commit API
description: API for creating or updating files in a GitHub repository.
version: 1.0.0
servers:
- url: https://api.github.com
description: GitHub API base URL
paths:
/repos/{owner}/{repo}/contents/{path}:
put:
summary: Create or update a file in a GitHub repository
operationId: createOrUpdateFile
parameters:
- name: owner
in: path
required: true
description: The GitHub username or organization name.
schema:
type: string
- name: repo
in: path
required: true
description: The repository name where the file will be committed.
schema:
type: string
- name: path
in: path
required: true
description: The full file path, including the file name (e.g., `docs/file.md`).
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CommitContent'
responses:
'200':
description: Successful file update
content:
application/json:
schema:
$ref: '#/components/schemas/CommitResponse'
'201':
description: File created successfully
'400':
description: Bad request
'401':
description: Authentication failed
'404':
description: Repository or file path not found
security:
- bearerAuth: []
components:
schemas:
CommitContent:
type: object
properties:
message:
type: string
description: The commit message.
content:
type: string
description: The file content, encoded in Base64.
sha:
type: string
description: SHA of the file being updated, if applicable.
branch:
type: string
description: Branch to commit to (defaults to the default branch).
required:
- message
- content

CommitResponse:
type: object
properties:
commit:
type: object
properties:
sha:
type: string
description: The SHA of the commit.
html_url:
type: string
description: The URL of the commit on GitHub.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT

Você pode interagir com a tela e é importante colocar um tempo de espera da ação

Não se esqueça de passar nas instruções os parâmetros obrigatórios que são pedidas pela API:

variáveis:
owner:, repo:, path:,branch:,message:

Debugging e Testes

Uma outra dúvida que eu tinha era como realizar o debug e treinar a IA. Isso pode ser realizado pela interação da tela abaixo.

Assim, você pode escrever um texto, enviar uma imagem e analisar a ação que a IA está apresentando. A partir disso, crie o seu padrão esperado através de um template. Isso ajuda muito para que você não precise adicionar tudo através das instruções, pois existe um limite de 8000 caracteres.

Outro ponto importante, ao você utilizar o template e habilitar a opção de code interpreter (pois no meu caso, só seria possível baixar um arquivo, com essa opção habilitada — atrás ela está zipando com algoritmo em python), você deve ter cuidado com os arquivos que você for passar.

Cuidado para não ter nada sensível, pois esses arquivos podem ser baixados pelo chat gpt.

A tela de teste é uma parte essencial para garantir que tudo esteja funcionando corretamente.

Nessa tela, você pode:

- Interagir com o modelo: Pergunte e veja como ele responde.

- Identificar Problemas: Se algo não estiver certo, revise as saídas e faça ajustes.

- Verificar Funcionalidades: Teste a integração com a OpenAPI do GitHub e a criação de templates para garantir que tudo esteja rodando liso.

Apresentando o STRIDE-GPT

O STRIDE-GPT é a minha solução para automatizar e melhorar a análise de ameaças. Aqui estão algumas funcionalidades incríveis que ele oferece:

Funcionalidades do STRIDE-gtp

  • Digitar um cenário específico e realizar perguntas sobre ele
  • A partir do upload de arquivo gerar uma tabela STRIDE
  • Gerar fluxograma com as possíveis ameaças
  • Enviar report completo e enviar para o repositório específico do GitHub

Resultado:

Deixei o projeto privado, pois faço a integração com o meu GitHub, mas aqui fica um exemplo claro de como podemos explorar essa ferramenta. Podemos melhorar o contexto e treiná-lo para o que precisarmos.

Um ponto importante é que não existe IA perfeita. Ela serve como um complemento, nesse caso, para especialistas de AppSec analisarem o resultado e ajudarem mais proativamente os desenvolvedores e arquitetos na solução, pensando em SDLC.

Espero que tenham gostado 💜

--

--