
Piattaforma interattiva che collega standard e linee guida di sicurezza per progettare, sviluppare, testare e acquisire software sicuro. Fornisce un catalogo unificato di Common Requirements (CREs) con riferimenti incrociati agli standard di settore.
Vai su https://www.opencre.org per vedere OpenCRE in funzione e ulteriori spiegazioni. OpenCRE sta per Open Common Requirement enumeration. È una piattaforma interattiva di collegamento dei contenuti per unire standard e linee guida di sicurezza. Offre un accesso facile e affidabile alle informazioni rilevanti in fase di progettazione, sviluppo, test e acquisto di software sicuro.
OpenCRE è composta da:
Per vedere come puoi contribuire all'applicazione o ai dati (catalogo o mappature degli standard), consulta Contributing. Ti diamo il benvenuto!
/rest/v1/openapi.yaml quando è in esecuzione)Per una roadmap, consulta le issues.
Sei libero di utilizzare l'applicazione pubblica opencre su opencre.org. Inoltre, puoi eseguire la tua se vuoi includere, ad esempio, i tuoi standard e le tue linee guida di sicurezza. La chiamiamo myOpenCRE.
Il modo più semplice per eseguire OpenCRE localmente è tramite il container Docker pubblicato. Puoi farlo eseguendo:
docker run -p 5000:5000 ghcr.io/owasp/opencre/opencre:latest
Dopo che il container ha terminato di scaricare le informazioni remote, puoi accedervi su http://127.0.0.1:5000.
Se vuoi sviluppare su OpenCRE o se docker non è disponibile nel tuo ambiente, puoi eseguirlo in alternativa tramite CLI.
Per eseguire OpenCRE al di fuori di Docker è necessario installarla. Per installare questa applicazione servono python3, yarn e virtualenv.
Clona il repository:
git clone https://github.com/OWASP/OpenCRE
(Consigliato) Crea e attiva un ambiente virtuale Python:
python3 -m venv venv
source venv/bin/activate
Installa le dipendenze:
make install
Scarica l'ultimo grafo CRE da upstream eseguendo:
make upstream-sync
Puoi precalcolare la cache locale di gap-analysis dopo le importazioni con:
make backfill-gap-analysis
Per eseguire CRE localmente, puoi quindi eseguire:
make dev-flask
Per eseguire l'applicazione CLI, puoi eseguire:
python cre.py --help
Per esportare la tassonomia di CRE + standard in CSV (adatto alla CI), esegui:
python cre.py --export --csv <path/to/output.csv>
Esempio:
python cre.py --export --csv artifacts/cres_and_standards.csv
Note:
--export è una modalità di esportazione dedicata e termina dopo aver scritto il CSV.--csv è obbligatorio quando si usa --export.Per scaricare localmente un foglio di calcolo CRE remoto, puoi eseguire:
python cre.py --review --from_spreadsheet <google sheets url>
Per aggiungere un foglio di calcolo remoto al tuo database locale, puoi eseguire:
python cre.py --add --from_spreadsheet <google sheets url>
Per eseguire l'applicazione web per lo sviluppo, puoi usare:
make start-containers
make start-worker
# in a separate shell
make dev-flask
In alternativa, puoi usare il dockerfile con:
make docker && make docker-run
Alcune funzionalità come Gap Analysis richiedono un DB neo4j in esecuzione; puoi avviarlo con:
make docker-neo4j
Per eseguire solo il backfill delle coppie di gap-analysis mancanti (senza avviare Flask), usa:
RUN_COUNT=8 bash scripts/backfill_gap_analysis.sh
Preferisci gli script dedicati in scripts/db/ per le operazioni di produzione. Questi script applicano misure di sicurezza e creano sempre un backup aggiornato prima delle modifiche al DB.
APP_NAME=opencreorg scripts/db/backup-opencreorg.shAPP_NAME=opencreorg SOURCE_DB_URL="postgresql://cre:[email protected]:5432/cre" scripts/db/sync-local-to-opencreorg.shAPP_NAME=opencreorg scripts/db/surgery-opencreorg.sh --sql-file ./tmp/change.sqlPer interventi distruttivi (DELETE, DROP, TRUNCATE, ALTER irreversibile), usa:
APP_NAME=opencreorg \
CONFIRM_DESTRUCTIVE=I_UNDERSTAND_OPENCREORG_PROD_DB_DESTRUCTIVE_ACTION \
scripts/db/surgery-opencreorg.sh --sql-file ./tmp/destructive-change.sql --destructive
Runbook:
docs/runbooks/opencreorg-db-sync-and-surgery.mddocs/runbooks/opencreorg-db-destructive-ops-checklist.mdVariabili d'ambiente per la connessione dell'app a neo4jDB (predefinite):
NEO4J_URL (neo4j//neo4j:password@localhost:7687)Per eseguire l'applicazione web in produzione è necessario gunicorn e puoi eseguirla dalla directory cre_sync:
make prod-run
OpenCRE è completamente supportata su macOS. Le note seguenti sono facoltative e pensate per aiutare i contributori che eseguono OpenCRE localmente su sistemi macOS.
Installa gli strumenti richiesti usando Homebrew:
brew install [email protected] yarn make
Nota: Python 3.11 è consigliato. Versioni più recenti di Python potrebbero causare incompatibilità di dipendenze.
Verifica la versione di Python:
python3 --version
Crea e attiva esplicitamente un ambiente virtuale usando Python 3:
python3 -m venv venv
source venv/bin/activate
Aggiorna pip:
pip install --upgrade pip
Installa le dipendenze usando il flusso di lavoro standard:
make install
Se incontri problemi di build, assicurati che gli Xcode Command Line Tools siano installati:
xcode-select --install
Sincronizza i dati CRE upstream (richiede accesso a Internet):
make upstream-sync
Quindi avvia il server locale:
make dev-flask
L'applicazione sarà disponibile all'indirizzo:
http://127.0.0.1:5000
Suggerimento: per la maggior parte degli utenti macOS, eseguire tramite Docker è l'approccio più semplice e affidabile.
Consulta la guida utente myOpenCRE sull'utilizzo dell'API OpenCRE per, ad esempio, aggiungere le tue linee guida e i tuoi standard di sicurezza.
Puoi creare le immagini Docker di produzione o di sviluppo con:
make docker-prod
make docker-dev
Le variabili d'ambiente usate da OpenCRE sono:
Copia il file di configurazione di esempio:
cp .env.example .env
Poi modifica .env e inserisci valori appropriati per il tuo ambiente.
DEV_DATABASE_URLNEO4J_URLREDIS_HOST, REDIS_PORT, REDIS_URL, REDIS_NO_SSLFLASK_CONFIG, INSECURE_REQUESTSNO_GEN_EMBEDDINGS, CRE_EMBED_MODEL, CRE_EMBED_EXPECTED_DIM, CRE_VALIDATE_EMBED_DIM_ON_INITCRE_LLM_CHAT_MODEL, CRE_EMBED_ALIGN_MODEL, , Vedi .env.example per l'elenco completo e i valori predefiniti.
OpenCRE usa LiteLLM per le chiamate LLM. Configura modelli e credenziali del provider tramite variabili d'ambiente.
Esempio minimo consigliato:
# Chat / completion models (LiteLLM model strings)
CRE_LLM_CHAT_MODEL=gemini/gemini-2.5-flash
CRE_EMBED_ALIGN_MODEL=gemini/gemini-2.5-flash
# Embedding model used for persisted vectors
CRE_EMBED_MODEL=gemini/gemini-embedding-001
CRE_EMBED_EXPECTED_DIM=3072
CRE_VALIDATE_EMBED_DIM_ON_INIT=1
# Retry policy
CRE_LLM_MAX_RETRIES=2
CRE_LLM_RETRY_SLEEP_SECONDS=15
# Provider credential (example for Gemini)
GEMINI_API_KEY=your-key
Note:
CRE_EMBED_MODEL o CRE_EMBED_EXPECTED_DIM come un evento di migrazione dei dati (di solito richiede un re-embedding).CRE_EMBED_EXPECTED_DIM è una salvaguardia: le scritture falliscono rapidamente in caso di mancata corrispondenza delle dimensioni.Puoi eseguire i container con:
make docker-prod-run
make docker-dev-run
Puoi eseguire i test del backend con:
make test
Puoi ottenere un report di copertura con:
make cover
Cerca di mantenere la copertura sopra il 70%.
CRE_LLM_MAX_RETRIESCRE_LLM_RETRY_SLEEP_SECONDSOPENAI_API_KEY, GEMINI_API_KEY, GCP_NATIVEGOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_SECRET_JSON, LOGIN_ALLOWED_DOMAINSGCP_NATIVEOpenCRE_gspread_AuthCRE_ENABLE_HEALTH (abilita la sonda deploy/uptime GET /rest/v1/health; disattivato per impostazione predefinita, restituisce 404 se non impostato), CRE_ENABLE_MYOPENCRE (espone MyOpenCRE in GET /api/capabilities; disattivato per impostazione predefinita), CRE_ENABLE_LOGIN (espone l'interfaccia Login/Logout tramite capabilities.login; disattivato per impostazione predefinita)