Cosa posso fare per aumentare la sicurezza di una piccola applicazione open source [chiusa]

0

Ho sviluppato una piccola applicazione CRUDish Ruby on Rails nel mio tempo libero per un'organizzazione non-profit. L'app è già in esecuzione su piccola scala in Heroku.

Ultimamente ho pensato all'open sourcing dell'applicazione. Ci sono molti professionisti per questo, ad es. Conosco già un paio di possibili contributori e anche il mio datore di lavoro ha mostrato interesse a sostenere il progetto in un paio di modi, se fosse open source.

Normalmente non esiterei con questo tipo di possibilità, ma il problema qui è che l'applicazione memorizza almeno in qualche modo informazioni sensibili sulle persone che la usano. Ho paura che, dato che il progetto è piccolo, e dopo tutto avrà sempre una quantità limitata di tempo e risorse per gli sviluppatori, l'open sourcing attirerebbe più hacker malintenzionati rispetto ai contributori effettivi. Non voglio fare del male a nessuno, e soprattutto non agli utenti target dell'app, quindi anche il leggero aumento di probabilità di perdita di dati mi preoccupa.

Quando penso in modo ragionevole, capisco che

  • Dato che l'app è molto piccola, c'è una possibilità molto limitata che qualcuno possa effettivamente tentare di attaccarlo
  • RoR mi offre un ambiente abbastanza buono e testato dalla vita reale da costruire sopra
  • La sicurezza attraverso l'oscurità è per lo più considerata come non senso
  • I professionisti IMHO di open sourcing sovrappesano gli svantaggi

Non voglio che diventi un'altra discussione su Open Source vs Closed Sistemi di origine . Tuttavia, per alleviare la mia mente, mi piacerebbe sapere cosa posso realisticamente fare per minimizzare la possibilità di un attacco . Finora almeno queste cose mi sono venute in mente:

  • Utilizza la versione più recente di Rails e applica tutte le correzioni per la sicurezza il più rapidamente possibile
  • Acquista un certificato SSL e applica le connessioni HTTPS in modo che tutti i dati inseriti dagli utenti vengano trasferiti crittografati
  • Crittografa i dati nel database con una chiave memorizzata in Heroku config vars. Comunque non sono così sicuro di questo, perché dopotutto, devo fidarmi di Heroku, e per quanto ho capito, questo sarebbe d'aiuto solo nei casi in cui il vero database sarebbe stato compromesso. O mi sbaglio qui?
  • Invita alcune società di sicurezza a effettuare gratuitamente un controllo sull'applicazione (in quanto non è coinvolto $ $$)

Che altro potrei / dovrei fare?

    
posta cido 14.04.2014 - 20:39
fonte

3 risposte

1
  • Cifra il database con una chiave e memorizza solo la chiave in memoria
  • Aggiungi intestazioni di sicurezza comuni. Puoi vedere quali altri siti usano (per esempio kraken.com) e usare gli stessi header HTTP dopo averli letti (short list: HSTS, nosniff, XSS, XFO, CSP)
  • Prova per XSS
  • Assicurati che la protezione RoR XSRF funzioni
  • Cerca di trovare una società pentita per fare una revisione pro-bono della sicurezza. Molte aziende fanno, per esempio cure53.de
risposta data 24.07.2014 - 21:51
fonte
1

Cerca OWASP Top 10 (che è la risorsa più pertinente per la tua domanda) proposta da edvinas.me e l'elenco degli attacchi orientati al Web coperti da fel1x.

Non ho buoni consigli per la sicurezza del server Web perché non l'ho fatto da tempo, ma assicurati di mantenere i tuoi server aggiornati e che vengano eseguiti con i soli privilegi di cui hanno bisogno (account OS separato, no accesso in scrittura al di fuori delle proprie cartelle temporanee, e tutti gli altri servizi sulla macchina dovrebbero avere un account privato, la directory / tmp e così via). Utilizza le connessioni crittografate per tutti gli utenti che hanno eseguito l'accesso ovunque sul tuo sito e archivia le password correttamente!

Puoi migliorare la qualità del tuo codice assicurandoti che :

  1. Convalida dell'input: verifica il dominio di tutti i possibili input dell'utente. Devi verificare lunghezza, tipo e struttura, ad es. per le stringhe che intendi analizzare in seguito. Diffidare in particolare delle iniezioni SQL e degli attacchi XSS! Vedi questa pagina per un consiglio. Assicurati di utilizzare query parametrizzate per il tuo database.

  2. Controllo degli accessi: verifichi che ogni volta che viene utilizzata una qualche forma di input utente per accedere ai dati, sono presenti dei ganci di controllo dell'accesso per verificare che questi dati siano nell'ambito dei privilegi dell'utente . Gran parte di questo viene fatto implicitamente (cioè il tuo utente ha un ID associato alla loro sessione corrente e quell'ID è usato per recuperare le voci in un database) quindi non è sempre ovvio vedere cosa potrebbe andare storto. Pensa in termini di come gli utenti possono creare i loro input per accedere a diversi rami di dati / codice e come puoi assicurarti che ciò non avvenga.

  3. Caccia agli insetti: provi attivamente a danneggiare il tuo server, usando test fuzz . Dovresti cercare generici fuzzer HTTP e fare entrambi ingenui fuzzing (il fuzzer inietterà casualmente errori nelle sue richieste) e una fuzzing più strutturata (il fuzzer sa quali pacchetti dovrebbero apparire nella tua app e istanzia i parametri ad esempio la dimensione pubblicizzata di un pacchetto , alcuni parametri POST, ecc.)

  4. Recensioni del codice: dovresti avere un pentesting di terze parti, ma capisco che non hai il budget per farlo. Potresti chiedere a potenziali contributori e utenti di esaminare sezioni specifiche del codice e tenere traccia di quale codice non è stato ancora esaminato nel tuo progetto. Le persone che gestiscono le estensioni della shell GNOME potrebbero avere una buona esperienza da condividere con te. Tieni presente che le recensioni non risolvono problemi di installazione e server e probabilmente non risolvono problemi, di solito solo bug ovvi ...

  5. Documentazione: dal momento che stai fornendo un'app come FOSS, descrivi come configurarlo in modo sicuro in alcuni documenti e distribuirlo insieme alle tue fonti. Siate aperti alle critiche e aiutate da altri amministratori di sistema e sviluppatori che pensano che state facendo qualcosa di sbagliato o non dando il miglior consiglio.

risposta data 23.08.2014 - 22:58
fonte
-2

Per lo più puoi seguire le linee guida per i test OWASP. Esistono molte aziende che aiutano i test di sicurezza open source. Uno degli esempi di SecureLayer7, prova il programma Pentest open source gratuito.

    
risposta data 21.05.2016 - 11:59
fonte

Leggi altre domande sui tag