Como adicionar regras personalizadas na Horusec-CLI?
Nesta seção, você encontra o tutorial para adicionar regras personalizadas ao Horusec-CLI.
	Você pode utilizar o Horusec para adicionar regras personalizadas dinamicamente, para serem executadas nos motores.
Como fazer?
Siga os passos abaixo para configurar as regras personalizadas e adicioná-las ao Horusec:
Passo 1. Crie um arquivo JSON de regras personalizadas
Crie um arquivo .json contendo o seguinte código:
[
  {
     "ID": "0d6c505a-4986-4771-91db-ec4f4ebface7",
     "Name": "Vulnerability name",
     "Description": "Description of the vulnerability",
     "Severity": "Vulnerability severity",
     "Confidence": "Confidence of the vulnerability",
     "Type": "Regex type",
     "Tool": "HorusecCsharp",
     "Expressions": [
        "Regex to respective vulnerability"
     ]
  },
  {
     "ID": "837c504d-38b4-4ea6-987b-d91e92ac86a2",
     "Name": "Cookie Without HttpOnly Flag",
     "Description": "It is recommended to specify the HttpOnly flag to new cookie. For more information access: (https://security-code-scan.github.io#SCS0009) or (https://cwe.mitre.org/data/definitions/1004.html).",
     "Severity": "LOW",
     "Confidence": "LOW",
     "Type": "OrMatch",
     "Tool": "HorusecCsharp",
     "Expressions": [
        "httpOnlyCookies\\s*=\\s*['|\"]false['|\"]",
        "(new\\sHttpCookie\\(.*\\))(.*|\n)*(\\.HttpOnly\\s*=\\s*false)",
        "(new\\sHttpCookie)(([^H]|H[^t]|Ht[^t]|Htt[^p]|Http[^O]|HttpO[^n]|HttpOn[^l]|HttpOnl[^y])*)(})"
     ]
  }
]
Passo 2. Defina os atributos do JSON
Veja abaixo a tabela com os atributos que você pode escolher:
| Campo | Tipo | Descrição | 
|---|---|---|
| ID | UUID randômico usado para identificar a vulnerabilidade. Suas regras não devem duplicar esse ID. | |
| Name | String | Nome da vulnerabilidade. | 
| Description | String | Descrição da vulnerabilidade. | 
| Severity | String | Mostra a severidade da vulnerabilidade de acordo com os possíveis valores: INFO, AUDIT, LOW, MEDIUM e HIGH. | 
| Confidence | String | Mostra a confiabilidade do relatório de vulnerabilidade de acordo com os possíveis valores: LOW, MEDIUM e HIGH. | 
| Type | String | Contém o tipo de Regex de acordo com os possíveis valores: Regular, OrMatch e AndMatch. | 
| Tool | String | Ferramenta para as regras serem executadas contendo os possíveis valores: HorusecCsharp, HorusecKotlin, HorusecKubernetes, HorusecLeaks e HorusecNodejs. | 
| Expressions | Array | Contém todos os RegExps que detectarão a vulnerabilidade. | 
Passo 3. Estabeleça os tipos de RegExps
O motor do Horusec trabalha com três tipos de RegExps (Expressões Regulares), veja quais são e escolha uma delas:
| Tipo | Descrição | 
|---|---|
| OrMatch | São regras mais abrangentes que podem ter mais de um padrão para se manifestar, por isso o nome, já que a engine do Horusec irá realizar a operação lógica ou para cada uma das RegExps cadastradas. | 
| Regular | É bem similar ao OrMatch, porém a ideia é que contenha múltiplas formas de se detectar o mesmo padrão. | 
| AndMatch | São regras que precisam que o arquivo manifeste múltiplos padrões e com isso ser considerado como algo a ser reportado. Portanto, a engine realiza a operação lógica em cada uma das RegExps cadastradas para garantir que todas as condições foram encontradas. | 
Passo 4. Aplique uma flag de regras personalizadas
Aplique a flag -c para passar o caminho direto ao seu arquivo .json e depois disso você pode começar a utilizar as regras que criou. Veja o exemplo:
horusec start -c="{path to your horusec custom rules json file}"
horusec start -p="./" -c="./custom-rules.json"
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
  Última modificação 20.05.2021: Fix version 1.0.0 with new links (a868f86)