Newsgroup: it.comp.os.dibattiti
Titolo: Vista : ennesimo post

Ho installato Vista su VmWare allo scopo di testare a fondo la compatibilità 
del ns software su Vista, maschera per maschera, funzionalità per 
funzionalità.
Non ho dovuto sforzarmi piu' di tanto nel cercare qualcosa che non 
funzionasse, visto che le cose che non andavano erano così immediate e 
grossolane da lasciarmi sbalordito. Dopo un attimo di assoluto smarrimento 
ho cercato di trovare un denominatore comune ai problemi di incompatibilità, 
soprattutto googlando in cerca di qualcuno che avesse già riscontrato gli 
stessi problemi.
Ne ho dedotto che, in nome della sicurezza, molte cose sono cambiate, 
facendomi smadonnare, pero' mi chiedo :
Perchè se ho diritti di amministratore non ho pieni diritti di 
amministratore ? Il buon senso direbbe che basterebbe creare un utente senza 
privilegi di amministrazione, invece, benchè amministratore, mi trovo 
impossibilitato a registrare un activex, tanto per fare un esempio ?
Ma c'e' una cosa che mi ha lasciato davvero a bocca aperta : un nostro 
piccolo installer si cura di aggiornare i vari files, compresa la 
registrazione di Activex/dll. Quel piccolo programmino esegue un 
aggiornamento generale del software. Ce lo siamo scritto noi, per avere un 
maggior controllo di tutto, ed ha funzionato benissimo per anni. Ora, per i 
problemi di cui sopra, mi accorgo che fatica a scrivere i files qualora la 
cartella di destinazione sia una cartella di sistema, anche se viene 
eseguito da un utente con privilegi di amministrazione, ma ciò che mi ha 
scosso è stato questo : ho rinominato quel programmino e l'ho chiamato 
"SETUP.EXE", ed ha magicamente installato tutto, copiando e registrando i 
files nelle cartelle di sistema.
Ora so che casomai volessi scrivere un virus devastante lo chiamerò 
SETUP.EXE.
Ditemi che ho sognato.
-- 
Starlight

 registrando i files nelle cartelle di sistema.
il che significherebbe che hanno cercato di implementare un mac e tanto 
per cambiare non gli e' venuto tanto bene :-)
attendo lumi anche io, non ho mai visto vista :-P

 SETUP.EXE.
Anche gli eseguibili riconosciuti come installer dall'euristica *richiedono*
l'elevazione attraverso UAC. I virus c'entrano poco, soprattutto se entrasse
nel sentire comune dei programmatori Windows l'idea che un programma, una
volta installato, debba funzionare con i semplici privilegi utente.
SALUTONI,
WindoM 

 per cambiare non gli e' venuto tanto bene :-)
Bada che non c'è alcun privilege escalation automatico. L'installer viene 
automaticamente marcato in modo che venga eseguito richiedendo i diritti di 
Administrator (è un "Run as Administrator" automatizzato). Ma poi quei 
diritti può ottenerli oppure no, come al solito, passando per UAC.
SALUTONI,
WindoM 

 vista e' stato implementato un modello mandatory access control???
Veramente e` implementato almeno dai tempi di Windows 2000, e da quello che
ho potuto vedere e` fatto con i contromarroni
Enrico

 che ho potuto vedere e` fatto con i contromarroni
Il problema è che, fino a Vista, l'utente comune sostanzialmente lo
bypassava usando account con pieni privilegi. Ora almeno un passo nella
direzione giusta è stato fatto.
Comunque si, pare fatto molto bene anche a me.
SALUTONI,
WindoM

 molti diritti, ma non tutti.
[megacut]
Ti ringrazio moltissimo, mi hai dato delle dritte che mi tolgono parecchie 
castagne dal fuoco !
Grazie ancora :-)
-- 
Starlight 

 Windows Integrity Control è grosso modo basato sul modello MAC.
ripeto, non conosco Vista ma Microsoft non e' mai nominata quando si 
parla di implementazioni MAC.
http://en.wikipedia.org/wiki/Mandatory_access_control#Implementations
stando poi a questa discussione MIC e MAC sembrano parecchio differenti:
http://blogs.technet.com/steriley/archive/2006/07/21/442870.aspx
in ogni caso mi confermi che e' una novita' di vista e che non esisteva 
nulla di simile in windows 2000?

 nulla di simile in windows 2000?
Sicuramente in Vista c'e' stata un'evoluzione e un hardening generale
di alcune basi che essenzialmente c'erano gia', come le ACL, che pero'
prima erano essenzialmente discrezionali. Pero' non e' raro trovare
idee ispirate al MAC in alcuni pezzi di Windows dal 2000 in poi.
Mancavano comunque, almeno system-wide, gli integrity levels
caratteristici del MIC, quindi in questo senso si, il MIC e' una
novita' di Vista e Server 2008.
SALUTONI,
WindoM

 idee ispirate al MAC in alcuni pezzi di Windows dal 2000 in poi.
Mi rispondo da solo per puntualizzare che da Windows 2000 in poi, con
l'introduzione di Active Directory, molti concetti di DAC e MAC si
fondono in un approccio essenzialmente role-based (RBAC), quindi in
certi frangenti si ha a che fare con comportamenti tipici di un
sistema DAC, in altri con quelli caratteristici di un modello MAC.
SALUTONI,
WindoM

 Grazie ancora :-)
Figurati, felice di esserti stato d'aiuto. :-)
SALUTONI,
WindoM 

 nella transizione al nuovo modello di sicurezza).
Euristica programmata da un genio se si basa sul NOME del file. Ah, la 
retrocompatibilità, che fardello.

Enrico 'Henryx' Bianchi ha scritto:

Oddio, c'erano implementazioni di merda della cosa nel pre-Vista, tipo 
l'impossibilità di modificare, per un utente normale, le associazioni 
mime-type/programma dello *stesso* utente (non i default di sistema). 
Questa e altre cosette rendevano praticamente obbligatorio lavorare come 
admin sempre e comunque (almeno in un ambiente non strettamente 
controllato).

 Euristica programmata da un genio se si basa sul NOME del file.
Analogamente se affermassi che bionda=stupida, alle accuse di maschilismo
potrei rispondere che non sono maschilista ma euristico :-)
-- 
Starlight

 Administrator (quello vero).
Approfitto della tua gentilezza per farti un'altra domanda, anche se stiamo
andando nello specifico del sistema operativo, e quindi un po' ot :
ho creato il file .manifest per quel nostro installer, seguendo le tue
specifiche. Ora mi chiede la password di amministratore prima di procedere,
e puo' andarmi bene. Vorrei però che, nel caso l'utente sia un
amministratore ma non sia l'utente "Administrator", il programma venisse
eseguito senza problemi e senza richieste. E' possibile dare queste
disposizioni nel file manifest ?
So che potrei risolvere il problema chiamando il programma "SETUP.EXE", ma
ora è diventata una questione di principio, oltre che un'occasione per
capirci qualcosa di piu' :-)
Se poi fosse possibile far si che questo programma possa essere eseguito con
privilegi di amministratore (ad esempio all'avvio di Windows) anche da
utenti normali, salvando magari la password da qualche parte, sarebbe
davvero il massimo. A naso credo di conoscere già la risposta : il programma
dovrebbe essere un vero e proprio servizio, e non un eseguibile standard.
-- 
Starlight

 dovrebbe essere un vero e proprio servizio, e non un eseguibile standard.
La vera risposta e' un'altra: dovete riscrivere quelle parti di codice
che fanno chiamate per cui servono privilegi elevati (al di la'
dell'installer). Se il programma fosse scritto per essere eseguito da
semplici account utente, una volta completata l'installazione, per
avviarlo allo start-up di qualsiasi utente senza alcun passaggio per
UAC ti basterebbe mettere il link all'eseguibile in Esecuzione
Automatica.
SALUTONI,
WindoM

 retrocompatibilità, che fardello.
Non solo sul nome del file.
Installer Detection only applies to:
1. 32 bit executables
2. Applications without a requestedExecutionLevel
3. Interactive processes running as a Standard User with LUA enabled
Before a 32 bit process is created, the following attributes are
checked to determine whether it is an installer:
* Filename includes keywords like "install," "setup," "update," etc.
* Keywords in the following Versioning Resource fields: Vendor,
Company Name, Product Name, File Description, Original Filename,
Internal Name, and Export Name.
* Keywords in the side-by-side manifest embedded in the executable.
* Keywords in specific StringTable entries linked in the executable.
* Key attributes in the RC data linked in the executable.
* Targeted sequences of bytes within the executable.
Comunque si, la retrocompatibilita' e' un bel fardello, ma come vedi
gli sviluppatori si lamentano anche quando c'e', figurati
altrimenti... :-)
SALUTONI,
WindoM

 Non solo sul nome del file.
Nel caso citato dal OP, e non ho motivo per non credergli, sì. Tanto mi
basta.
Tra l'altro anche nella lista che hai copincollato il nome è il *primo*
controllo ad essere elencato.
-- 
Vide

 basta.
Posso starci ma non capisco le controindicazioni visto che UAC e'
sempre li'.
SALUTONI,
WindoM

 sempre li'.
Ma nessuno sta criticando UAC, si sta criticando l'euristica utilizzata per
determinare se è un eseguibile di un setup o meno. Nel caso dell'installer
sviluppato dall'OP, l'euristica NON funziona se non si chiama "setup.exe".
Se poi sia o meno un condizione necessaria ma non sufficente, questo non lo
so. Comunque il solo fatto che in questo caso sia necessaria, fa sorridere.
-- 
Vide

Automatica.
Il problema è che quel programmino è scritto in VB, e non credo che, a meno
di utilizzare Api strane, sia possibile scrivere del codice mirato.
Essendo un programmino piccolo piccolo, potrei anche valutare l'ipotesi di
riscriverlo completamente in un linguaggio che mi consenta di fare ciò che
dici.
Ti ringrazio ancora per le info :-)
-- 
Starlight

 l'euristica NON funziona se non si chiama "setup.exe".
veramente li indica anche install e update. 
Poi se uno chiama un installer asdrubale.exe non sono completamente
certo che dimostri buon senso lui in prima persona.
Posse anzi dire che quasi tutti gli installatori che ho visto si
chiamano proprio setup.exe.
Ti confesso inoltre che non mi viene in mente un sistema di euristica
più furbo. E penso che rompere il sistema tout court potrebbe non essere
un eccellente idea. Tu a cosa avevi pensato di migliore?
-- 
cc = callcc {|cc| cc.call cc}; cc.call cc

 un eccellente idea. Tu a cosa avevi pensato di migliore?
Come funziona "file" in *nix? Ecco, allo stesso modo. Generalmente gli 
eseguibili di setup creati da InstallShield o simili hanno metedati che 
danno più dettagli sull'installatore.

 danno più dettagli sull'installatore.
Ma hai letto il posto di WindoM?
Se no, leggilo. Se si, ripensa a quello che suggerisci congiuntamente a
quello che hai letto.


 certo che dimostri buon senso lui in prima persona.
Pero' un nome del tipo "MyInst.exe" non č privo di buon senso. Nel mio caso 
il nome dell'eseguibile č di questo tipo.
Comunque,per la cronaca, ho risolto prima associando un file manifest, ed in 
secondo luogo includendo il manifest nell'eseguibile stesso. Mi pareva piu' 
pulito.
Quindi ora Vista *sa* per certo che quel programma va eseguito con privilegi 
di amministratore. Problema risolto. Grazie a chi mi ha dato una mano :-)
-- 
Starlight 

 quello che hai letto.
L'ho letto e anche risposto, ma visto (ripeto, visto che sembri essere 
tu quello che non legge i post altrui) che il nome file *è* una 
variabile che influisce direttamente sull'entrata o meno in funzione di 
UAC, gli altri metodi passano in secondo piano.

 UAC, gli altri metodi passano in secondo piano.
Cioč sarebbe stata meglio un euristica *piů* stupida che non prende in
considerazione il nome del file? 


 considerazione il nome del file? 
Il problema è che se chiami un trojan "setup.exe" ti chiederà la tua 
password e te lo farà installare come se fossi admin. Ovviamente gli 
scrittori di trojan ti possono anche crearti un .msi perfettamente in 
regola (o almeno a vista d'occhio), ma se in più gli basta chiamarlo 
"setup.exe" per far si che l'utonto possa facilmente installarlo...
Ok, contro l'utente sprovveduto non c'è nulla che una sistema operativo, 
qualunque sia, possa fare, verissimo, ma se gli dai meno mezzi per 
essere sprovveduto, meglio è.

 installarlo...
Attenzione, dimostri di non aver capito né lo scopo né il funzionamento del 
meccanismo. Gli scrittori di trojan in caso setteranno il 
requestedExecutionLevel a "requireAdministrator" nel manifesto 
dell'eseguibile... così verrebbe eseguito comunque richiedendo i privilegi 
di amministratore senza affidarsi all'euristica di riconoscimento.
Il succo della faccenda è che un eseguibile Windows puo' richiedere il 
livello di diritti con cui deve essere eseguito. I setup.exe dei vecchi 
installer non lo facevano. Per garantire la retrocompatibilità, dato lo 
switch del default di Windows da account administrator a LUA, l'euristica 
cerca di capire se si tratta di un installer e in quel caso lo esegue come 
se avesse settato il requestedExecutionLevel a "requireAdministrator".
Checché tu ne dica, in tutto questo non c'è alcuna facilitazione per i virus 
writer.
SALUTONI,
WindoM