Το εργαλείο Microsoft Source Code Analyzer για εισαγωγή SQL είναι διαθέσιμο για την εύρεση θεμάτων ευπάθειας εισαγωγής SQL σε κώδικα ASP

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 954476 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

ΕΙΣΑΓΩΓΗ

Αυτό το άρθρο περιγράφει το εργαλείο ανάλυσης Microsoft Source Code Analyzer για εισαγωγή SQL. Μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο ανάλυσης στατικού κώδικα για να βρείτε θέματα ευπάθειας εισαγωγής SQL σε κώδικα ASP.

Περισσότερες πληροφορίες

Το εργαλείο Microsoft Source Code Analyzer για εισαγωγή SQL είναι ένα εργαλείο ανάλυσης στατικού κώδικα, το οποίο σας βοηθά να εντοπίσετε θέματα ευπάθειας εισαγωγής SQL σε κώδικα ASP (Active Server Pages). Αυτό το άρθρο περιγράφει τον τρόπο χρήσης του εργαλείου, τις προειδοποιήσεις που δημιουργούνται από το εργαλείο και τους περιορισμούς του εργαλείου. Ανατρέξτε στο έγγραφο Readme του εργαλείου για περισσότερες πληροφορίες.

Προϋποθέσεις

Αυτό το εργαλείο γραμμής εντολών απαιτεί το ακόλουθο λογισμικό:
  • Το .NET Framework 3.0

Ζητήματα εισαγωγής SQL σε κώδικα ASP

Εάν τα δεδομένα που παρέχονται από το χρήστη από τις συλλογές Request.Form ή Request.Querystring σε κώδικα ASP χρησιμοποιούνται για τη δόμηση δυναμικών προτάσεων SQL χωρίς οποιαδήποτε επικύρωση δεδομένων, ένας εισβολέας έχει τη δυνατότητα να εισαγάγει εντολές SQL μέσα σε μια πρόταση SQL και, στη συνέχεια, να κάνει εσφαλμένη χρήση τους. Αυτό είναι γενικά γνωστό ως Ζήτημα ευπάθειας εισαγωγής SQL πρώτης τάξης (First Order SQL injection vulnerability).

Εάν η εισαγωγή στοιχείων του χρήστη αποθηκεύεται σε μια βάση δεδομένων χρησιμοποιώντας μια σελίδα ASP και, στη συνέχεια, ανακτάται από τη βάση δεδομένων και χρησιμοποιείται για τη δόμηση δυναμικών προτάσεων SQL σε μια διαφορετική σελίδα ASP, ένας εισβολέας μπορεί να εισαγάγει εντολές SQL μέσα σε μια πρόταση SQL και, στη συνέχεια, να την χρησιμοποιήσει με εσφαλμένο τρόπο. Αυτό είναι γενικά γνωστό ως Ζήτημα ευπάθειας εισαγωγής SQL δεύτερης τάξης (Second Order SQL injection vulnerability).

Για να μειώσετε την πιθανότητα εμφάνισης αυτών των θεμάτων ευπάθειας, είναι καλύτερα να χρησιμοποιήσετε αιτήματα με παραμέτρους SQL. Για περισσότερες πληροφορίες σχετικά με θέματα ευπάθειας εισαγωγής SQL σε κώδικα ASP και για τις μεθόδους μείωσης αυτών των θεμάτων ευπάθειας, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (στα αγγλικά):
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Το εργαλείο Microsoft Source Code Analyzer για εισαγωγή SQL σας βοηθά να εντοπίσετε ορισμένα από αυτά τα ζητήματα αυτόματα.

Χρήση

Αυτή η ενότητα περιγράφει τον τρόπο χρήσης του εργαλείου.

Σύνταξη

Το εργαλείο χρησιμοποιεί την εξής σύνταξη:
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

Περιγραφή

Το εργαλείο αναλύει τον κώδικα ASP για θέματα ευπάθειας εισαγωγής SQL.

Λίστα παραμέτρων

Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
Παράμετρος Επιλογή Περιγραφή
/GlobalAsaPathpathΕμφανίζει τη διαδρομή του αρχείου Global.asa.
/IncludePathspathsΕμφανίζει διαδρομές που διαχωρίζονται από ερωτηματικό για την επίλυση αρχείων τα οποία περιλαμβάνονται με τη χρήση εικονικών διαδρομών.
/inputαρχείο aspΕμφανίζει την απόλυτη διαδρομή του αρχείου ASP η οποία πρέπει να αναλυθεί.
/suppress warnings Οι προειδοποιήσεις δεν αναφέρονται.
/nologo Το λογότυπο του εργαλείου δεν εμφανίζεται.
/quietΤα σφάλματα ανάλυσης δεν εμφανίζονται. Όταν χρησιμοποιείτε τους διακόπτες /nologo και /quiet, εμφανίζονται μόνο τα προειδοποιητικά μηνύματα.

Παραδείγματα

MSSCASI_ASP /input="c:\source\logon.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp" /IncludePaths="C:\virtualdirectory1;C:\virtualdirectory2"
MSSCASI_ASP /input="c:\source\webitems\display.asp" /suppress="80406;80407"

Αναθεώρηση του αποτελέσματος

Το εργαλείο δημιουργεί τις ακόλουθες προειδοποιήσεις:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
ΠροειδοποίησηΠεριγραφή
80400Πιθανό θέμα ευπάθειας εισαγωγής SQL μέσω δεδομένων τα οποία διαβάζονται από το αντικείμενο Request χωρίς οποιαδήποτε επικύρωση εισαγωγής. Αυτές οι προειδοποιήσεις είναι πιθανά σφάλματα που πρέπει να επιδιορθωθούν.
80406Πιθανό θέμα ευπάθειας εισαγωγής SQL μέσω δεδομένων τα οποία διαβάζονται από το αντικείμενο Request όπου η εισαγωγή μεταβιβάζεται μέσω ορισμένων άγνωστων κλήσεων λειτουργίας, οι οποίες ενδέχεται να εκτελέσουν επικύρωση δεδομένων. Εάν δεν πραγματοποιηθεί επικύρωση δεδομένων μέσα στην κλήση λειτουργίας, τότε είναι πολύ πιθανόν να πρόκειται για σφάλματα. Διαφορετικά, πρόκειται για εσφαλμένες θετικές αναγνωρίσεις.
80403Πιθανό θέμα ευπάθειας εισαγωγής SQL μέσω δεδομένων τα οποία προέρχονται από διακομιστή υποστήριξης. Στην περίτπωση που τα δεδομένα ελέγχονται από έναν τελικό χρήστη μέσω μιας άλλης τοποθεσίας Web, τότε είναι πολύ πιθανόν να πρόκειται για σφάλματα. Ωστόσο, στην περίπτωση που τα δεδομένα είναι αξιόπιστα, τότε ενδέχεται να μην πρόκειται για σφάλματα. Μια καλή πρακτική είναι να παραμετροποιήσετε αυτά τα ερωτήματα ως μέρος μιας στρατηγικής προστασίας σε βάθος.
80407Πιθανό θέμα ευπάθειας εισαγωγής SQL μέσω δεδομένων τα οποία προέρχονται από διακομιστή υποστήριξης και διαβιβάζονται μέσω ορισμένων άγνωστων κλήσεων λειτουργίας. Στην περίτπωση που τα δεδομένα ελέγχονται από έναν τελικό χρήστη μέσω άλλων τοποθεσιών Web, τότε είναι πολύ πιθανόν να πρόκειται για σφάλματα
80420Πιθανό θέμα ευπάθειας εισαγωγής SQL μέσω παραμέτρων λειτουργίας. Αυτές οι προειδοποιήσεις δημιουργούνται στην περιοχή λειτουργιών. Κατά συνέπεια, στην περίπτωση που οι τιμές των παραμέτρων της λειτουργίας προέρχονται από αξιόπιστες πηγές, τότε πρόκειται για εσφαλμένες θετικές αναγνωρίσεις. Εάν οι τιμές ελέγχονται από τελικούς χρήστες, τότε είναι πολύ πιθανόν να πρόκειται για σφάλματα. Μπορείτε να χρησιμοποιήσετε το σχολιασμό __sql_pre_validated στις παραμέτρους λειτουργίας για να εντοπίσετε αν οι τελικοί χρήστες μπορούν να φθάσουν σε αυτόν τον κώδικα.
80421Πιθανό θέμα ευπάθειας εισαγωγής SQL μέσω παραμέτρων λειτουργίας και οι παράμετροι λειτουργίας διαβιβάζονται μέσω ορισμένων άγνωστων κλήσεων λειτουργίας, οι οποίες ενδέχεται να εκτελέσουν επικύρωση δεδομένων. Μπορείτε να χρησιμοποιήσετε το σχολιασμό __sql_pre_validated στις παραμέτρους λειτουργίας και το σχολιασμό __sql_validate στη λειτουργία επικύρωσης για να εντοπίσετε αν οι τελικοί χρήστες μπορούν να φθάσουν σε αυτόν τον κώδικα.
Από όλες τις προειδοποιήσεις που δημιουργεί το εργαλείο, η προειδοποίηση 80400 υπάρχει μεγαλύτερη πιθανότητα να υποδεικνύει πραγματικά σφάλματα. Οι προγραμματιστές ASP στο Web πρέπει να διορθώνουν αυτά τα σφάλματα χρησιμοποιώντας ερωτήματα με παραμέτρους. Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης ερωτημάτων με παραμέτρους SQL σε κώδικα ASP, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (στα αγγλικά):
http://msdn.microsoft.com/en-us/library/cc676512.aspx

Περιορισμοί

Το εργαλείο έχει τους ακόλουθους γνωστούς περιορισμούς:
  • Το εργαλείο αντιλαμβάνεται μόνο τον κώδικα ASP που είναι γραμμένος σε VBScript. Προς το παρόν δεν αναλύει κώδικα διακομιστή που είναι γραμμένος σε οποιεσδήποτε άλλες γλώσσες, όπως τη Jscript.
  • Μια νέα μονάδα ανάλυσης ASP έχει αναπτυχθεί ως μέρος αυτής της διαδικασίας ανάπτυξης του εργαλείου. Ωστόσο, αυτή η μονάδα ανάλυσης δεν καλύπτει όλες τις κατασκευές ASP. Επομένως, ενδέχεται να παρατηρήσετε ορισμένα σφάλματα ανάλυσης.

Αναφορές

Για να κάνετε λήψη του εργαλείου Microsoft Source Code Analyzer για εισαγωγή SQL, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (στα αγγλικά):
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
Για πρόσθετες πληροφορίες σχετικά με την τεκμηρίωση των διάφορων βέλτιστων πρακτικών, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (στα αγγλικά):
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
Για περισσότερες πληροφορίες σχετικά με την αποτροπή εισαγωγών SQL σε κώδικα ASP, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (στα αγγλικά):
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Για περισσότερες πληροφορίες σχετικά με τις επιθέσεις εισαγωγής SQL, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (στα αγγλικά):
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
Για περισσότερες πληροφορίες σχετικά με το εργαλείο, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (στα αγγλικά):
http://blogs.msdn.com/sqlsecurity
Επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web για να συζητήσετε για το εργαλείο στο φόρουμ ασφαλείας SQL του MSDN (στα αγγλικά):
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

Ιδιότητες

Αναγν. άρθρου: 954476 - Τελευταία αναθεώρηση: Τετάρτη, 25 Ιουνίου 2008 - Αναθεώρηση: 1.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ASP.NET 2.0
Λέξεις-κλειδιά: 
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com