tumblr page counter

June, 2011

  • Italian Premier Center for SQL Server

    Il primo Security Bug per il Database Engine di SQL 2008 ?

    • 1 Comments

    Salve, sicuramente sarete al corrente del Security Bulletin “MS11-049” , uscito circa due settimane fa, e sono altrettanto sicuro che Vi sarete detti: “Anche SQL Server 2008, dopo ben 3 anni di assoluta immunità dai bug di sicurezza, ha avuto la sua prima vulnerabilità”.

    Mi dispiace per gli amici di Oracle, IBM DB2 e MySQL, ma dovranno aspettare ancora prima di pronunciare una frase del genere, dato che il Security Bulletin in oggetto non riguarda il “Database Engine” di SQL, bensì una sola DLL che fornisce la funzionalità di editing XML ad alcune delle console della famiglia dei prodotti SQL Server che Vi potreste trovare ad installare.

    Ma andiamo con ordine partendo dall’articolo di riferimento per il Security Bulletin “MS11-049”:

    MS11-049: Vulnerability in the Microsoft XML Editor could allow information disclosure: June 14, 2011

    http://support.microsoft.com/kb/2543893/en-us

    Microsoft Security Bulletin MS11-049 - Important

    Vulnerability in the Microsoft XML Editor Could Allow Information Disclosure (2543893)

    http://www.microsoft.com/technet/security/bulletin/MS11-049.mspx

    Il file/dll coinvolta è la "Microsoft.xmlEditor.dll", originariamente la vulnerabilità è stata scoperta nella versione 2008 di Visual Studio: tramite questa vulnerabilità, è in teoria possibile copiare un file locale verso una destinazione remota, nel caso si riesca a far aprire all'utente un vile XML appositamente costruito.

    Questo problema di sicurezza, quindi, non riguarda il database engine di SQL Server (SQLSERVR.EXE), quindi la Vostra installazione è ancora “sicura”, a meno che non abbiate installato, in locale al/ai server, una delle console dei prodotti della famiglia “SQL Server” che si basano su Visual Studio: è bene ricordare che, in genere, è sconsigliato installare qualsivoglia tipo di console sui server di produzione SQL, ivi inclusi il Management Studio e/o Il Business Intelligence Development Studio (BIDS per gli amici). Questo Security Bulletin è un ulteriore buon motivo per seguire questa best practice, quindi, ma è anche un avvertimento affinchè la relativa hotfix sia installata non solo sui server di produzione/test/svilluppo, ma anche sui desktop degli Amministratori SQL dove è normale prassi installare le console di gestione di SQL Server.

    Un semplice consiglio: se non siete sicuri di avere o meno una delle console di SQL Server affette dal problema di sicurezza specifico, fate una semplice “File Search” per la DLL coinvolta e verificate in maniera inoppugnabile; fate anche attenzione al nome del file, ci sono varie DLL dal nome simile, ma quella che a Voi interessa è solamente “Microsoft.xmlEditor.dll”.

    Forse perché è il primo “Security Bulletin” in 3 anni per SQL 2008, ed il terzo per SQL 2005 in 6 anni, e quindi i Clienti SQL non ci sono abituati, ma il rilascio di questo “Bulletin” ha generato alcune domande che riassumo qui di seguito, unitamente alle relative risposte, in modo che tutti possano beneficiarne:

    -   Q1: Come faccio a sapere quale fix installare per una certa “build number” di SQL Server ?

    • A1: Stranamente, la usuale tabella con la lista delle versioni SQL e delle corrispondenti hotfix non è stata inserita direttamente negli articoli di KB, ma nella sezione FAQ del link internet corrispondente al “Security Bulletin” in oggetto:

     http://www.microsoft.com/technet/security/bulletin/MS11-049.mspx

     

    -          Q2: Cosa significano GDR e QFE ?

    • A2: Questi due acronimi stanno per “General Distribution Release” (GDR) e “Quick Fix Engineering” (QFE) e la spiegazione ufficiale è contenuta nel seguente link:

    Description of the standard terminology that is used to describe Microsoft software updates

    http://support.microsoft.com/kb/824684/en-us

    • In genere i clienti non capiscono i termini “ufficiali” contenuti in questo articolo, ricorrerò quindi a due esempi per chiarificare il concetto: 
      • Se, sulla specifica istanza SQL, installate solo “Service Pack” e le “GDR” quando  e se disponibili, allora vuol dire che Vi siete mantenuti, come da raccomandazione Microsoft, nel “branch” (catena) di aggiornamenti denominata “GDR” e lì dovete cercare eventuali update;
      • Se, sulla specifica istanza SQL, oltre ad installare eventuali “Service Pack” ogni tanto, e comunque almeno una prima volta, installate una “Cumulative Update” (CU), o una delle hotfix ivi contenute, allora Vi trovate nel “branch” (catena) di aggiornamenti denominata “QFE” e lì dovete cercare eventuali update;

    -          Q3: Se l’unico file impattato dal bug di sicurezza è la DLL “Microsoft.xmlEditor.dll” ed è poco più di 1MB, perché sia i pacchetti GDR che QFE sono diverse centinaia (a seconda della versione) di MB ?

    • A3: Le ragioni sono essenzialmente tre:
      • Sia le GDR che le QFE sono cumulative e contengono anche precedenti aggiornamenti;
        • IMPORTANTE: Questa specifica GDR non contiene versioni aggiornate dell'eseguibile SQLSERVR.EXE perchè non afflitto dal bug e non esiste nessuna GDR precedente, mentre per quanto riguarda la QFE, l'eseguibile principale di SQL Server è incluso perchè esistono aggiornamenti precedenti (CU) e anche questo aggiornamento, essendo cumulativo, deve portarselo dietro;
      • Sebbene il file da fissare sia uno solo, ci sono molteplici e complesse dipendenze tra molte componenti interne, per cui tutte devono essere aggiornate;
      • Per poter eseguire il setup, comunque servono dei file di "supporto", a questo aggiungete il fatto che sia le GDR che le QFE sono multi-lingua e quindi i MB aumentano;

    Anche per questo post è tutto, per il primo articolo su un security bug di SQL 2008 dovrete attendere ancora ! :-)

    Buon lavoro a tutti.

    --Igor Pagliai--

  • Italian Premier Center for SQL Server

    Database corrotto o DBA impazzito ?

    • 0 Comments

    Durante una recente attività da un Cliente, mi è stata presentata una problematica con un (ahimè !) ben noto preambolo: “SQL Server ha un bug !”. E’ vero, questo può accadere, ma l’esperienza insegna che spesso le conclusioni sono tratte in maniera affrettata, tanto più che è necessaria una conferma “ufficiale” da una persona Microsoft in grado di verificare la porzione di codice sorgente interessata. Perché questo cliente era così convinto ? Bè, ascoltando i sintomi riscontrati devo dire che tutti i torti non li aveva, giudicate Voi:

    •  Senza nessuna regolarità temporale, almeno in apparenza, il seguente messaggio di errore veniva loggato nell’ERRORLOG di SQL Server:
    •  

    Error: 605, Severity: 21, State: 3.

    Attempt to fetch logical page %S_PGID in database 2 failed.

    It belongs to allocation unit %I64d not to %I64d.

    • Dopo qualche minuto (questo è importante !), ricevuto il relativo “alert”, Il DBA eseguiva una DBCC di “emergenza”, ma nessun errore era rilevato, l’output del tool era completamente pulito;

    Errore 605 ? Molto brutto come tutti i DBA, che hanno avuto almeno un caso di corruzione di database nella vita, sanno bene ! Effettivamente non si può dare torto ad un DBA se la parola bug viene pronunciata, ma ad un esame più attento del messaggio di errore, il DBA doveva subito insospettirsi del fatto che la corruzione riguarda il database con ID = 2 e cioè il TEMPDB; pensateci bene:

    • Il database TEMPDB è il database “temporaneo” dell’istanza SQL Server;
    •  L’ERRORLOG registra un messaggio di errore relativo ad una possibile corruzione, ma il successivo (di qualche minuto !) controllo non trova nulla di anomalo;

    Se sommate queste due cose insieme, quello che siete autorizzati a pensare è che la corruzione sia, per così dire, svanita perché l’oggetto in TEMPDB non esiste più…. In questo caso ci avete azzeccato, complimenti !

    Quindi, direte Voi, è un bug !

    Mi dispiace, so che tutte le persone Microsoft sono estremamente riluttanti ad ammetterlo, ed io non faccio eccezione, ma non è proprio così :-); dunque, il problema in oggetto è ben noto, si tratta effettivamente di un bug di SQL Server 2008 ma non di SQL Server 2008 R2 (la versione nel nostro caso), quindi tecnicamente:

    • E’ un bug di SQL Server 2008 perché c’è un articolo della Knowledge Base Microsoft che lo dice e che conferma che il problema è risolto con la “Cumulative Update 3” di SQL Server 2008 RTM:

    FIX: You receive error 605 and error 824 when you run a query that inserts data into a temporary table in SQL Server http://support.microsoft.com/kb/960770/en-us

    • Non è un bug di SQL Server 2008 R2 perché il codice non è affetto dal problema in quanto versione successiva a quella in cui il problema è’ stato per la prima volta riscontrato e quindi fissato; faccio notare infatti che ai tempi del rilascio della CU3 per SQL Server 2008, la versione R2 ancora non era stata rilasciata !
    • 

    La spiegazione di tutto è nella strategia adottata da Microsoft per “attivare” alcune fix che, sebbene risolvano effettivamente una certa classe di problemi, potrebbero impattare la compatibilità applicativa introducendo delle modifiche a come il “Query Optmizer” di SQL Server lavora: per non generare questo tipo di problemi, per una particolare e ristretta categoria di hotfix,  oltre ad installare una certa patch è anche necessario abilitare un particolare “trace flag” per rendere operativa la modifica già presente nel codice:

    Trace flag 4199 is added to control multiple query optimizer changes previously made under multiple trace flags http://support.microsoft.com/kb/974006/en-us

    Quindi, nel nostro caso con SQL Server 2008 R2 (versione RTM), la fix al problema era già inclusa nel codice del prodotto, ma non era attiva perché richiedeva l’attivazione mediante “trace flag”: dopo aver abilitato il trace flag “-T4135” (???) il problema non si è più ripresentato, evviva !

    E’ stato un piacere, si è fatto tardi…. arrivederci e buon lavoro !

    Ehi, un momento, frena: Microsoft, tu mi hai detto che la fix è già inclusa in SQL 2008 R2, che basta attivarla con il trace flag “-T4199” come dici nell’articolo, e poi usi un trace flag differente ? Ci devi una spiegazione !

    Ci ho provato, ma mi è andata male ! :-)

    Nel suddetto articolo, c’è una piccola nota, del tipo delle postille nei contratti di assicurazione o delle banche:

    * Note In SQL Server 2008 R2 release version, the trace flag 4135 was inadvertently omitted from the list of trace flags that can be controlled by -T4199. But this has been fixed in Cumulative Update 1 for SQL Server 2008 R2. So, for this build and for SQL Server 2005 and SQL Server 2008 supported editions, -T4199 will suffice to enable this and other trace flags that are listed in this article.

    A causa di un bug (ehm !), l’attivazione della fix per il problema doveva avvenire tramite trace flag “-T4199” ma non è stato così per cui nella versione “RTM” (pre CU1 per SQL Server 2008 R2), è necessario utilizzare un trace flag differente, cioè il “-T4135”. Se avete una versione eguale o successiva alla CU1 (per SQL Server 2008 R2) allora state tranquilli ed utilizzate il trace flag “-T4199”.

    Stavolta, veramente, Vi auguro buon lavoro e mi congedo da Voi. Alla prossima !

    - Igor Pagliai -

    Le Opinioni espresse in questo blog sono strettamente personali e riflettono il punto di vista dell’autore/degli autori in base alla propria esperienza e conoscenza.

    I contenuti di questo blog inoltre non rappresentano (necessariamente) le opinioni di Microsoft e non costituiscono alcuna garanzia ne’ conferiscono alcun diritto.

  • Italian Premier Center for SQL Server

    Italian Premier Center for SQL Server - Workshop e Servizi a Valore

    • 0 Comments

    Approfittiamo di questo blog per condividere (e pubblicizzare :-)) alcuni tra i Workshop e i Servizi a Valore di cui si occupa il nostro team. 

    Il nostro catalogo è in continuo aggiornamento. Ogni anno, o meglio ogni mese, nuovi contenuti vengono aggiunti e altrettanti vengono eliminati, in uno sforzo costante di rimanere al passo con le versioni (e le features incluse in ogni versione) di SQL Server.

    Il nostro catalogo include due tipologie di attività che possiamo erogare presso i nostri clienti, in particolare Workshop e Servizi a Valore.

    Ad oggi è formato complessivamente da.:

    16 Workshop dedicati al Database Engine.:

    • SQL Server 2008: for Administrators
    • SQL Server 2008 Failover Clustering
    • SQL Server 2005/2008: Performance Tuning and Optimization
    • SQL Server 2005 Disaster Recovery
    • SQL Server 2005-2008 High availability
    • SQl Server 2008 New Features Overview
    • SQL Server 2008 New Features in Depth
    • SQl Server 2008 How to write Good Queries
    • SQL Server 2008 Upgrade Workshop
    • SQL Server 2008 Security Hardening Workshop
    • SQL Server 2008 ‐ Replication for Administrators
    • SQL Server 2008: SQL Server for Non-SQL Administrators
    • SQL for SharePoint Administrators
    • SQL Server 2005 Integration with CLR
    • SQL Server 2005 Service Broker
    • Log Parser - SQL based Log Analysis and Data Mining

    5 Workshop dedicati alla Business Intelligence.:

    • SQL Server  ‐ Introduction Reporting Services
    • SQL Server  ‐ Reporting Services
    • SQL Server  ‐ Analysis Services Administration
    • SQL Server  ‐ Integration Services 
    • PowerPivot Workshop (New, Available)

    4 Servizi a Valore dedicati al Database Engine.:

    • SQL Server Risk Assessment Program (SQL RAP)
    • SQL Server 2008 Security Hardening Review
    • SQL Server Dashboard
    • SQL Auditing

    1 Servizio a Valore dedicato ad Analysis Services.:

    • SQL Server Analysis Services HealthCheck

    Nel nuovo tag di questo blog (Tag.: "Catalogo"), a partire da oggi, più o meno settimanalmente, vogliamo approfondire  i singoli contenuti del nostro catalogo, entrando nel merito di ogni contenuto descrivendone i temi trattati, sperando di potervi essere di aiuto nel capire se una o più di queste attività vi possa risultare utile e chiedendovi in cambio i vostri feedback rispetto agli argomenti inclusi nel catalogo, ad esempio nel caso in cui riteniate che alcuni argomenti siano mancanti.

    Buona lettura!

    - Beatrice Nicolini -

  • Italian Premier Center for SQL Server

    Workshop e Servizi a Valore - Per non SQL Administrators

    • 0 Comments

    Come promesso, eccoci al primo appuntamento dedicato ai Workshop e ai Servizi a Valore di cui si occupa il nostro gruppo.

    Ne approfittiamo subito per parlare di un corso appena introdotto nel nostro catalogo.:

    SQL Server 2008 for Relational Database Developers

    Si tratta di un corso (3giorni base + 1 giorno di corso avanzato opzionale) dedicato agli sviluppatori T-SQL,  che fornirà ai partecipanti le conoscenze necessarie per programmare con SQL Server 2008.:  i toolset, best practices di sviluppo, le nuove  features a disposizione. Il corso comprende presentazioni, dimostrazioni e sezioni hands-on-lab che aiuteranno i partecipanti a rinforzare i concetti appresi e a sviluppare le conoscenze acquisite.

    Oltre a questo nuovo corso dedicato agli sviluppatori T-SQL, il nostro catalogo include altri due workshop dedicati a chi non copre direttamente il ruolo di Database Administrator, ma che in qualche modo deve interfacciarsi con l'engine per svolgere le proprie attività.

    SQL Server 2008 for Non-SQL Administrators

    Si tratta di un corso di 2 giorni dedicato alle organizzazioni che non hanno risorse dedicate all'amministrazione di SQL Server, ma che devono supportare istanze di SQL Server critiche, come backend di applicazioni come Microsoft Sharepoint, Microsoft System Center Configuration Manager (SCCM), Microsoft System Center Operations Manager (SCOM), Microsoft BizTalk Server.

    Il corso fornisce un introduzione al SQL ServerDatabase Engine (configurazioni base, maintenance plans, performances) ed include hands-on-lab per fornire ai partecipanti la confidenza necessaria per gestire un istanza SQL Server 2008.

    SQL Server for SharePoint Administrators

    Questo workshop è dedicato agli amministratori di Microsoft Windows Sharepoint Services 3.0, Microsoft Office Sharepoint Server 2007, Sharepoint Foundation 2010 e Sharepoint Server 2010 e fornisce le conoscenze e le competenze necessarie per configurare correttamente e gestire (monitoraggio e piani di manutenzione) le istanze di SQL Server implementate come backend. Il corso include anche una sezione dedicata al performance troubleshooting, e discute le opzioni disponibili per l'implementazione di scenari di High Availability e Disaster Recovery.

    Se siete interessati, o desiderate ricevere maggiorni informazioni,vi consigliamo di contattare il vostro riferimento Microsoft Premier.  

    A presto!

    - Beatrice Nicolini -

Page 1 of 1 (4 items)