Thứ Ba, 10 tháng 1, 2012

SQL Injection

A SQL injection is often used to attack the security of a website by inputting SQL statements in a web form to get a badly designed website to perform operations on the database (often to dump the database content to the attacker) other than the usual operations as intended by the designer. SQL injection is a code injection technique that exploits a security vulnerability in a website's software. The vulnerability happens when user input is either incorrectly filtered for string literal escape characters embedded in SQL statements or user input is not strongly typed and unexpectedly executed. SQL commands are thus injected from the web form into the database of an application (like queries) to change the database content or dump the database information like credit card or passwords to the attacker. SQL injection is mostly known as an attack vector for websites but can be used to attack any type of SQL database.
Using well designed query language interpreters can prevent SQL injections. In the wild, it has been noted that applications experience, on average, 71 attempts an hour.[1] When under direct attack, some applications occasionally came under aggressive attacks and at their peak, were attacked 800-1300 times per hour.[1]

SQL Injection Attack (SQLIA) is considered one of the top 10 web application vulnerabilities of 2007 and 2010 by the Open Web Application Security Project.[2] The attacking vector contains five main sub-classes depending on the technical aspects of the attack's deployment:[citation needed]
Classic SQLIA
Inference SQL Injection
Intracting with SQL Injection
DBMS specific SQLIA
Compounded SQLIA
Some security researchers propose that Classic SQLIA is outdated[3] though many web applications are not hardened against them. Inference SQLIA is still a threat, because of its dynamic and flexible deployment as an attacking scenario. The DBMS specific SQLIA should be considered as supportive regardless of the utilization of Classic or Inference SQLIA. Compounded SQLIA is a new term derived from research on SQL Injection Attacking Vector in combination with other different web application attacks as:
SQL Injection + Insufficient authentication[4]
SQL Injection + DDos attacks[5]
SQL Injection + DNS Hijacking[6]
SQL Injection + XSS[7]
The Storm Worm is one representation of Compounded SQLIA.[8] A complete overview of the SQL Injection classification is presented in the next figure, Krassen Deltchev in 2010:


A Classification of SQL Injection Attacking Vector, till 2010.
This Classification represents the state of SQLIA, respecting its evolution till 2010; further refinement is underway.[9] m/2007/01/social-engineering-and-malware.html |title=Dancho Danchev's Blog
[edit]Technical Implementations

[edit]Incorrectly filtered escape characters
This form of SQL injection occurs when user input is not filtered for escape characters and is then passed into an SQL statement. This results in the potential manipulation of the statements performed on the database by the end-user of the application.
The following line of code illustrates this vulnerability
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
This SQL code is designed to pull up the records of the specified username from its table of users. However, if the "userName" variable is crafted in a specific way by a malicious user, the SQL statement may do more than the code author intended. For example, setting the "userName" variable as
' or '1'='1
Or using comments to even block the rest of the query (there are three types of SQL comments):[10]
' or '1'='1' -- '
' or '1'='1' ({ '
' or '1'='1' /* '
renders one of the following SQL statements by the parent language:
SELECT * FROM users WHERE name = '' OR '1'='1';
SELECT * FROM users WHERE name = '' OR '1'='1' -- ';
If this code were to be used in an authentication procedure then this example could be used to force the selection of a valid username because the evaluation of '1'='1' is always true.
The following value of "userName" in the statement below would cause the deletion of the "users" table as well as the selection of all data from the "userinfo" table (in essence revealing the information of every user), using an API that allows multiple statements:
a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't
This input renders the final SQL statement as follows:
SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';
While most SQL server implementations allow multiple statements to be executed with one call in this way, some SQL APIs such as PHP's mysql_query(); function do not allow this for security reasons. This prevents attackers from injecting entirely separate queries, but doesn't stop them from modifying queries.
[edit]Incorrect type handling
This form of SQL injection occurs when a user supplied field is not strongly typed or is not checked for type constraints. This could take place when a numeric field is to be used in a SQL statement, but the programmer makes no checks to validate that the user supplied input is numeric. For example:
statement := "SELECT * FROM userinfo WHERE id = " + a_variable + ";"
It is clear from this statement that the author intended a_variable to be a number correlating to the "id" field. However, if it is in fact a string then the end-user may manipulate the statement as they choose, thereby bypassing the need for escape characters. For example, setting a_variable to
1;DROP TABLE users
will drop (delete) the "users" table from the database, since the SQL would be rendered as follows:
SELECT * FROM userinfo WHERE id=1;DROP TABLE users;
[edit]Blind SQL injection
Blind SQL Injection is used when a web application is vulnerable to an SQL injection but the results of the injection are not visible to the attacker. The page with the vulnerability may not be one that displays data but will display differently depending on the results of a logical statement injected into the legitimate SQL statement called for that page. This type of attack can become time-intensive because a new statement must be crafted for each bit recovered. There are several tools that can automate these attacks once the location of the vulnerability and the target information has been established.[11]
[edit]Conditional responses
One type of blind SQL injection forces the database to evaluate a logical statement on an ordinary application screen.
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND '1'='1';
will result in a normal page while
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND '1'='2';
will likely give a different result if the page is vulnerable to a SQL injection. An injection like this may suggest to the attacker that a blind SQL injection is possible, leaving the attacker to devise statements that evaluate to true or false depending on the contents of another column or table outside of the SELECT statement's column list.[12]
SELECT 1/0 FROM users WHERE username='ooo';
Another type of blind SQL injection uses a conditional timing delay on which the attacker can learn whether the SQL statement resulted in a true or in a false condition [13]
[edit]Mitigation


This section does not cite any references or sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (April 2011)
[edit]Parameterized statements
Main article: Prepared statement
With most development platforms, parameterized statements can be used that work with parameters (sometimes called placeholders or bind variables) instead of embedding user input in the statement. In many cases, the SQL statement is fixed, and each parameter is a scalar, not a table. The user input is then assigned (bound) to a parameter.
[edit]Enforcement at the coding level
Using object-relational mapping libraries avoids the need to write SQL code. The ORM library in effect will generate parameterized SQL statements from object-oriented code.
[edit]Escaping
A straightforward, though error-prone, way to prevent injections is to escape characters that have a special meaning in SQL. The manual for an SQL DBMS explains which characters have a special meaning, which allows creating a comprehensive blacklist of characters that need translation. For instance, every occurrence of a single quote (') in a parameter must be replaced by two single quotes ('') to form a valid SQL string literal. For example, in PHP it is usual to escape parameters using the function mysql_real_escape_string(); before sending the SQL query:
$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'",
mysql_real_escape_string($Username),
mysql_real_escape_string($Password));
mysql_query($query);
This function, i.e. mysql_real_escape_string(), calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a. This function must always (with few exceptions) be used to make data safe before sending a query to MySQL.[14]
There are other functions for many database types in PHP such as pg_escape_string() for PostgreSQL. There is, however, one function that works for escaping characters, and used especially for injection in the databases that do not have escaping functions in PHP. This function is: addslashes(string $str ). It returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).[15]
Routinely passing escaped strings to SQL is error prone because it is easy to forget to escape a given string. Creating a transparent layer to secure the input can reduce this error-proneness, if not entirely eliminate it.[16]

Source: Wikipedia

Thứ Hai, 9 tháng 1, 2012

Đà Nẵng dồn sức cho công nghệ cao, công nghệ thông tin và công nghệ sinh học

(ĐNĐT) - Ngày 6-1, UBND thành phố Đà Nẵng tổ chức Hội nghị phối hợp phát triển khoa học và công nghệ (KH&CN) nhằm tổng kết chương trình phối hợp giữa Bộ KH&CN và UBND thành phố giai đoạn 2007-2011 và đề ra chương trình phối hợp giai đoạn 2012-2015.



Lãnh đạo Bộ KH&CN và UBND thành phố ký kết Chương trình phối hợp phát triển KH&CN giai đoạn 2012-2015.
Bộ trưởng KH&CN Nguyễn Quân, Bí thư Thành ủy Đà Nẵng Nguyễn Bá Thanh, Chủ tịch UBND thành phố Đà Nẵng Văn Hữu Chiến chủ trì hội nghị.

Báo cáo tại hội nghị cho biết, trong 5 năm thực hiện Chương trình phối hợp với Bộ KH&CN, thành phố đã có những bước đột phá quan trọng trong đào tạo, phát triển nguồn nhân lực chất lượng cao và chính sách thu hút nguồn nhân lực; tạo hành lang pháp lý ổn định và thông thoáng để sự nghiệp KH&CN phát triển đúng hướng và hiệu quả.

Nhờ sự hỗ trợ của Bộ KH&CN, thành phố đã xây dựng Trung tâm Công nghệ phần mềm, tạo cú hích cho xuất khẩu phần mềm, tăng từ 500 triệu đồng vào năm 2006 lên 1,798 tỷ đồng vào năm 2010. Từ đó, thành phố mạnh dạn xúc tiến xây dựng Khu công nghiệp CNTT tập trung và cũng đã đạt được một số khả quan trong việc ứng dụng công nghệ sinh học trong y dược, xử lý môi trường và sản xuất, chế biến nông lâm ngư nghiệp. Đây là những tiền đề quan trọng để thành phố đề nghị Bộ KH&CN hỗ trợ xây dựng Khu công nghệ cao…

Phát biểu tại hội nghị, Bí thư Thành ủy Nguyễn Bá Thanh nhấn mạnh, trong 10 năm qua, thành phố Đà Nẵng luôn quan tâm và tập trung đầu tư cho nghiên cứu khoa học và KHCN. Trong thời gian tới, thành phố sẽ dồn sức đầu tư cho 3 lĩnh vực trọng tâm, đó là công nghệ cao, công nghệ thông tin, công nghệ sinh học.

Ông Nguyễn Bá Thanh đề nghị Bộ KH&CN hỗ trợ, giúp đỡ về đội ngũ cán bộ, nguồn nhân lực chất lượng cao, đồng thời giới thiệu, tiến cử các chuyên gia hàng đầu, các nhà doanh nghiệp lớn có uy tín đầu tư vào 3 lĩnh vực trên. Thành phố sẽ có chính sách ưu tiên đặc biệt đối với cán bộ giỏi đến công tác và làm việc tại Đà Nẵng.

Bộ trưởng Bộ KH&CN Nguyễn Quân đánh giá cao sự quan tâm của lãnh đạo thành phố trong việc đầu tư và hỗ trợ cho các hoạt động của KH&CN trong thời gian qua, đặc biệt là chính sách trọng dụng cán bộ, chăm lo cho người tài. Bộ trưởng tin tưởng rằng, với kinh nghiệm trong việc giải phóng mặt bằng nhanh, Đà Nẵng sẽ triển khai Khu công nghệ cao sớm hơn so với Hà Nội và TP Hồ Chí Minh.

CNTT Việt Nam chưa được quan tâm đúng mức

Đây là một trong những báo cáo được công bố tại Hội thảo quốc gia về Công nghệ thông tin và Truyền thông Việt Nam với chủ đề “Đề án đưa Việt Nam sớm trở thành nước mạnh về công nghệ thông tin-truyền thông: Một năm nhìn lại và Chương trình máy tính nối mạng tri thức", được tổ chức tại khách sạn Melia, Hà Nội ngày 7/1 vừa qua.


ICT Skill Index là một chỉ số con của ICT Development Index trong báo cáo Measuring the Information Society, dùng đánh giá nguồn nhân lực của một quốc gia dựa trên các tiêu chí tỷ lệ biết chữ, tỷ lệ vào học trung học và tỷ lệ học sau trung học.


Phó Thủ tướng nhấn mạnh: Thanh niên là lực lượng nòng cốt trong quá trình triển khai đề án "Đưa Việt Nam sớm trở thành nước mạnh về CNTT-Truyền thông".
Phát biểu chỉ đạo, Phó Thủ tướng Nguyễn Thiện Nhân, Trưởng Ban chỉ đạo Quốc gia về CNTT cho biết sau một năm triển khai đề án "Đưa Việt Nam sớm trở thành nước mạnh về CNTT-Truyền thông" chưa đạt hiệu quả như mong muốn vì nhiều khi lãnh đạo không đủ thông tin cần thiết về tiềm năng, cách thức phát triển và ứng dụng CNTT-TT.

Phó Thủ tướng cũng đã yêu cầu Bộ TT&TT phối hợp với các cơ quan liên quan xây dựng bộ tài liệu khẳng định khả năng đóng góp của CNTT đối với đời sống, hoạt động sản xuất kinh doanh, cũng như hoạt động quản lý Nhà nước.

Để nâng cao nhận thức về CNTT-TT nói chung và tầm quan trọng của Đề án, theo Phó Thủ tướng, các cơ quan truyền thông đại chúng như Đài Truyền hình Việt Nam, Báo Thanh niên cần mở chuyên mục "Cửa sổ Nước mạnh về CNTT-TT" để thường xuyên nhắc nhở rằng Đề án vẫn đang được triển khai và cập nhật kịp thời những vướng mắc, khó khăn trong quá trình triển khai để có giải pháp tháo gỡ, khắc phục.

"Thanh niên sẽ là lực lượng nòng cốt, xung kích triển khai Đề án, Các Bộ, ngành liên quan cần chú trọng", Phó Thủ tướng đề nghị.

Đến nay, cả nước có 31 địa phương phê duyệt kế hoạch triển khai Đề án tại địa phương mình. Hoạt động thông tin tuyên truyền về Đề án được đẩy mạnh góp phần nâng cao nhận thức của toàn xã hội về vai trò của CNTT-TT, đồng thời quảng bá hình ảnh, thương hiệu CNTT-TT Việt Nam đến với bạn bè quốc tế, từ đó tạo lòng tin và thu hút các tập đoàn lớn, công ty đa quốc gia đầu tư vào lĩnh vực này tại Việt Nam.

Tại Hội thảo, Phó Hiệu trưởng ĐH FPT Nguyễn Xuân Phong đã tham gia trình bày tham luận "Giải pháp cung cấp nội dung cho học sinh phổ thông qua kinh nghiệm của chương trình giải Toán qua mạng Internet - ViOlympic".

Với mục tiêu vừa trở thành phương tiện học tập, vừa tạo ra một sân chơi trí tuệ hấp dẫn, hiệu quả cho hàng triệu học sinh tiểu học và trung học cơ sở, ViOlympic đã góp phần không nhỏ trong việc xóa bỏ các tiêu cực xã hội (nạn nghiện game online…) và nâng cao chất lượng học tập các bộ môn trong nhà trường phổ thông.

Đây là một giải pháp ứng dụng CNTT hỗ trợ đổi mới phương pháp giảng dạy và học. Cuộc thi vì thế đã nhận được sự tham gia của đông đảo học sinh, sự đồng tình của cán bộ, giáo viên và sự ủng hộ của phụ huynh.

Năm nay, Violympic sẽ mở rộng đối tượng tham gia sang khối THPT trong cả nước với nhiều kiểu thi hấp dẫn tạo niềm say mê cho học sinh rèn luyện môn Toán. Theo anh Phong, cuộc thi cũng là bước đầu tiên cho việc triển khai các dịch vụ CNTT trong giáo dục: e-learning, khảo thí, kho ứng dụng trực tuyến…

Bên cạnh đó, anh Phong cũng đặt kỳ vọng trong năm 2012, số lượng user đăng ký mới trung bình sẽ là 50.000 người/ngày; nâng tổng số thành viên đăng ký lên 9 triệu người và trung bình một ngày có khoảng 45.000 lượt thi thành công.

Phiên thảo luận cuối hội thảo cũng đã đề cập đến vấn đề nâng cao trình độ ngoại ngữ cho đội ngũ nhân lực trẻ CNTT Việt Nam đạt con số 70% sinh viên tốt nghiệp có khả năng làm việc trong môi trường quốc tế. Phó Hiệu trưởng ĐH FPT cho biết: "ĐH FPT ngay từ đầu đã đề cao đưa vấn đề ngoại ngữ vào giảng dạy ĐH. Từ năm đầu tiên, sinh viên tại trường đã được học một khóa trù bị tiếng Anh. Năm 2011, khóa sinh viên đầu tiên của trường đã tốt nghiệp và trên 10% đã có cơ hội làm việc tại nhiều quốc gia trên thế giới".

Cũng như hầu hết các trường ĐH hiện nay, khó khăn của ĐH FPT là đội ngũ giảng viên giảng dạy trực tiếp bằng Tiếng Anh chưa đáp ứng được nhu cầu đào tạo. Tuy nhiên, theo anh Phong, vấn đề này đang được nhà trường cải thiện dần vào các năm sau. Theo kinh nghiệm của ĐH FPT, nếu trang bị cho các em có nền tảng ngoại ngữ tốt, nhuần nhuyễn kỹ năng đọc và nghiên cứu tài liệu chuyên ngành bằng tiếng Anh, thì sau khi ra trường chỉ cần vào môi trường thuận lợi, khả năng giao tiếp tiếng Anh của các em cũng sẽ được nâng cao.

Cũng tại Hội thảo, nhiều tham luận của các Tập đoàn CNTT lớn được trình bày nhằm đưa các giải pháp đưa Việt Nam sớm trở thành nước mạnh về CNTT-TT như: Các giải pháp phát triển hạ tầng viễn thông băng rộng tại Việt Nam (VNPT), Giải pháp phát triển internet băng rộng cho mọi người và gia đình đóng góp cho chuyên đề “Chương trình máy tính nối mạng Tri thức” (Viettel); Hiện trạng và đề xuất chính sách, giải pháp hỗ trợ sản xuất nội dung cho thanh thiếu niên (VTC); Phát triển sản phẩm phần cứng và chương trình máy tính nối mạng tri thức (Hội doanh nghiệp điện tử Việt Nam VEIA).