On 10/03/16 08:46, Federico "fox" Scrinzi wrote:

> Punterei a creare un sistema per cui avere la password o usare il
> programma e' esattamente la stessa cosa in termini di privilegi.

Rispondo da "programmatore" più che da esperto di sicurezza (che non sono,
nonostante l'interesse e l'averne a che fare comunque) solo per dare un punto
di vista in più, forse utile.

In generale è plausibile che la password permetta un accesso leggermente
migliore, verticale senza limiti. Mi spiego: se quell'utente deve solo poter
inserire dei dati e leggere i suoi (quelli creati da quella postazione se,
come mi pare di capire, si parla di un ambito in cui conta la postazione e non
l'utente fisico) probabilmente nel programma c'è la logica che gli permette di
vedere sono determinati record. Questa potrebbe essere aggirata avendo la
password. Non potrebbe, però, chi ottenesse quella password leggere
campi/tabelle il cui accesso è negato a quella passwpord (quindi sicurezza
orizzontale ma non verticale).

[Aneddoto, saltabile: anni (troppi, mio figlio nato poco dopo ora è
abbondantemente maggiorenne) fa manutenevo assieme ad altre persone i server
fra cui ce n'era uno dove girava un'applicazione di gestione paghe: i client
erano identificati da un token senza il quale l'applicazione non partiva e che
veniva fissato al PC stesso e dava quindi permessi ai diversi operatori, i
quali dovevano pensare a controllare l'accesso al proprio PC, anche
fisicamente (il direttore del personale chiudeva la porta a chiave, per
capirci). Però io ero l'amministratore del server e a un certo punto il
ghiribizzo di vedere alcuni dati c'è stato e nulla, avendo le password di
admin del DB stesso, mi ha impedito di farlo - ovviamente essendo una proof of
concept estrassi i dati (il lordo annuo) miei e di un paio di colleghi che mi
avevano dato l'ok, e dell'amministratore delegato, che aveva l'abitudine di
far vedere la propria busta paga in giro per "trasparenza". Questo convinse il
responsabile IT a chiudere a chiave la stanza dei server... che fu comunque
una piccola vittoria vista la leggerezza dell'epoca su queste questioni!!!]

L'approccio corretto dal punto di vista della progettazione è diverso:
l'accesso (riconoscendo la postazione) non dovrebbe essere fatto usando logica
di business locale ma remota. Mi spiego: il programma non dovrebbe avere
accesso al database (che è "stupido" o "agnostico" dal punto di vista della
logica di business e può solo limitare come scritto sopra) ma tramite dei
servizi (*) che implementino in remoto, sul server o su un proxy (in senso di
design pattern) comunque non accessibile fisicamente a questi utenti, le
relative logiche di business. Questo non significa non riconoscere la
postazione ma questo compito sarebbe diverso (occhio, probabilmente una
password o un identificatore hardcoded nel programma avrebbe comunque senso -
o forse anche un identificatore basato su cpuid e simili numeri di serie
hardware).

(*) webservice SOAP o REST, oggetti EJB/Corba, server con protocolli dedicati,
etc. - le opzioni sono millemila.

Ciao!
-- 
---8<----------------------------------------------fnord------
Piermaria Maraziti [email protected] piermaria.maraziti.it
 eridia.it fandom.it giocofollia.it wildboar.it hovistocose.it
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List

Rispondere a