Theo báo cáo an ninh mới nhất của Viện Kĩ nghệ phần mềm Carnegie Mellon, năm ngoái đã có hơn mười nghìn trường hợp tấn công máy tính, xâm nhập, và cấy mã độc từ “những người không biết” trên khắp thế giới.

Điều đó lên tới 86 phần trăm so với năm trước và 146 phần trăm so với hai năm trước. Việc tăng vụ tấn công máy tính đã nâng tầm quan trọng của quản lí rủi ro an ninh trong mọi công ti cũng như ở mức cá nhân. Mọi người đều có thể là mục tiêu của tấn công, từ giám đốc thông tin của một công ti lớn tới học sinh phổ thông trong một thành phố nhỏ, bất kì ai với máy tính cá nhân hay điện thoại thông minh đều có thể là nạn nhân.

Vài tuần trước, chủ tịch một ngân hàng lớn ở Mĩ đã thấy rằng máy tính của mình tự động gửi đi dữ liệu tài chính quan trọng cho các máy tính ở nhiều nước trên khắp thế giới. Nói cách khác, ông ấy đã là nạn nhân của “tấn công giả mạo” bởi hacker. Một lần chúng lọt vào bên trong máy tính của ông ấy, chúng có thể dùng máy tính cá nhân của ông ấy như công cụ để bắt lấy bất kì thông tin nào chúng muốn và truy nhập vào máy tính của những người làm việc cho ngân hàng của ông ấy, bởi vì sau rốt, ông ấy là ở mức quản lí cao nhất. Bao nhiêu tổn hại thế nào không được biết vào lúc này, điều hacker đang làm với thông tin cũng là chưa được xác định nhưng nó có thể là nghiêm trọng.

Có những vấn đề tương tự xảy ra cho các quan chức chính phủ trên khắp thế giới khi họ tới thăm những websites nào đó hay mở các email được tự gửi tới từ người không biết. Tất nhiên, các quan chức chính phủ không bao giờ phơi bày thông tin về điều đã xảy ra cho máy tính của họ nhưng đây là những vấn đề nghiêm trọng do bản chất của thông tin nhạy cảm được lưu trong máy tính của họ. Ngày nay, không còn chỉ là chuyện các hacker muốn chứng minh rằng họ có thể gây hại gì đó, hay những kẻ tội phạm muốn đánh cắp tài khoản ngân hàng cá nhân và buôn bán cổ phần, mà cả các cơ quan chính phủ của các quốc gia nước ngoài cũng muốn thu thập thông tin nhạy cảm nữa.

Theo báo cáo an ninh, mọi năm hàng nghìn hệ thông tin bị truy nhập bởi những người không có thẩm quyền bởi vì người phát triển phần mềm của họ đã tạo ra lỗi lập trình. Phần lớn các vấn đề an ninh đều là kết quả từ những khiếm khuyết được đưa vào một cách bất cẩn trong khi phát triển phần mềm. Để giảm bớt vấn đề an ninh, điều quan trọng là tổ chức phải giảm số lỗi trong phần mềm nhưng đào tạo hiện thời, đặc biệt trong chương trình khoa học máy tính lại chỉ hội tụ vào vòng đời phát triển phần mềm thay vì dựa vào kiểm thử sau khi phần mềm đã được xây dựng. Vấn đề khác là ngày nay, nhiều người phát triển phần mềm được đào tạo trong “trường huấn luyện” chứ KHÔNG ở đại học, các trường này thậm chí KHÔNG dạy cấu trúc lập trình cơ bản mà chỉ “cách viết mã” để đáp ứng nhu cầu thị trường. Sinh viên được dạy nhiều về “công cụ và thủ thuật” cho nên họ có thể viết mã mà không hiểu điều nền tảng.

Viện Kĩ nghệ phần mềm (SEI) đã phân tích hàng nghìn chương trình trên khắp thế giới và thấy rằng ngay cả những người phát triển có kinh nghiệm cũng vẫn đưa vào nhiều khiếm khuyết khi họ phát triển phần mềm. Về căn bản người phát triển phần mềm trung bình đưa vào một lỗi trong 10 dòng mã. Mặc dầu nhiều lỗi bị bắt và loại bỏ bởi trình biên dịch và kiểm thử nhưng một số vẫn còn lại. Nghiên cứu phần mềm của Carnegie Mellon tiến hành trên hàng nghìn dự án phần mềm chỉ ra rằng nội dung khiếm khuyết trung bình của phần mềm được đưa ra biến thiên từ 1 tới 7 khiếm khuyết trong một nghìn dòng mã. Sự kiện thú vị là trên 90% vấn đề an ninh phần mềm bị gây ra bởi các kiểu khiếm khuyết đã biết và mười nguyên nhân hàng đầu chiếm tới 75% của tất cả những điểm mong manh. Một số vấn đề bị gây ra bởi vấn đề thiết kế và kiến trúc phúc tạp như xác thực không thích hợp, thẩm quyền không hợp thức, dùng không đúng mật mã, không bảo vệ dữ liệu, và không phân hoạch cẩn thận các ứng dụng. Nhưng phần lớn bị gây ra bởi việc bỏ quên đơn giản dẫn tới các kiểu khiếm khuyết như lỗi khai báo, lỗi logic, lỗi kiểm soát chu trình, lỗi biểu thức điều kiện, lỗi hợp thức cái vào, lỗi đặc tả giao diện, lỗi cấu hình, và không hiểu vấn đề an ninh cơ sở. Rõ ràng là thực hành phát triển phần mềm ngày nay dẫn tới phần mềm khiếm khuyết cho nên điều quan trọng là người phát triển phải được đào tạo trong lập trình an ninh nhưng thay đổi trong đào tạo đại học lại rất chậm và đó là lí do tại sao an ninh vẫn là vấn đề chính.

Để quản lí các rủi ro an ninh này, người quản lí hệ thông tin phải tiến hành các cuộc kiểm điển an ninh thường xuyên. Họ phải biết cách thiết lập bảo vệ nào đó chống lại các mối đe doạ của người ngoài và đảm bảo rằng người của họ có hiểu biết về thực hành an ninh. Sai lầm thông thường nhất của người dùng là mở email được tự nhiên gửi tới không có quan hệ hay bấm vào thông tin quảng cáo không biết cho nên điều bản chất là người quản lí hệ thông tin tiến hành đào tạo để nhắc nhở người dùng về nguy hiểm của những kiểu sai lầm này. Cách khác tốt hơn là cải tiến qui trình phát triển phần mềm và xây dựng phần mềm tốt hơn và an ninh hơn, bởi vì nó sẽ tạo ra phần mềm với ít khiếm khuyết hơn và ít mong manh cho hacker tấn công. Điều cũng quan trọng là nhận diện bất kì cấu phần phần mềm cốt yếu nào kiểm soát các chức năng liên kết với an ninh. Những cấu phần đó phải được giám sát chặt chẽ qua phát triển và kiểm thử.

Hơn bao giờ hết, đào tạo “lập trình an ninh” cho mọi nhân viên và có người quản lí hệ thông tin có hiểu biết về an ninh có thể là đầu tư tốt nhất mà công ti có thể làm.

—-English version—-

IT security

According to the latest Carnegie Mellon’s Software Engineering Institute security report, last year there were more than ten thousand cases of computer attacks, intrusions, and plantings of malicious code from “unknown people” around the world. That’s up 86 percent from the previous year and 146 percent from two years ago. The increase of computer attack has raised the importance of managing security risk in every company as well as at the individual level. Everybody could be the target of attack, from the Chief Information Officer (CIO) of a large company to a highschool student in a small city, anyone with a personal computer or a smart-phone could be victim.

Few weeks ago, a president of a large bank in the U.S found that his computer was automatically sending important financial data to computers located in several countries around the world. In other word, he had been the victim of a “phishing attack” by hackers. Once they got inside his computer, they can use his personal computer as an instrument to capture any information they wanted and access to computers of people who work for his bank, because after all, he is at the highest level of management. How much damage is not known at this time, what hackers are doing with the information is also not determined yet but it could be severe.

There were similar problems happened to government officials around the world when they visited certain websites or opened an unsolicited emails from unknown persons. Of course, government officers never disclosed information about what happened to their computers but theses were all serious problems due to the nature of sensitive information stored in their computers. Today, it is no longer just hackers want to prove that they can do some damages, or criminals who want to steal personal bank and stock trading accounts, but also government agencies of foreign nationals who want to collect sensitive information too.

According to the security reports, every year thousands of information systems are accessed by unauthorized persons because their software developers have made programming errors. Most security issues are resulting from defects that are unintentionally introduced during software development. To reduce security problems, it is important that organization must reduce number of defects in software but current training, especially in computer science program is only focusing on teaching programming not “secured programming” where security is integrated into the software development life cycle rather than rely on testing after software already being built. Another problem is today, many software developers are trained in “training school” NOT university, these schools do NOT even teach basic programming structure but only on “how to code” to meet market demand. Students are taught a lot of “Tools and tricks” so they can code without any understanding of the fundamental.

The Software Engineering Institute (SEI) have analyzed thousands of programs all over the world and found that even experienced developers still inject many defects as they develop software. Typically an average developer injects one defect for every 10 lines of code. Although many are caught and removed by compilers and tests but some are still remain. Carnegie Mellon’s software studies conducted on thousands of software projects show that the average defect content of released software varies from about 1 to 7 defects per thousand lines of code. The interesting fact is over 90% of software security issues are caused by known defect types and the top ten causes account for about 75% of all vulnerabilities. Some problems are caused by sophisticated architectural and design issues such as inadequate authentication, invalid authorization, incorrect use of cryptography, failure to protect data, and failure to carefully partition applications. But most are caused by simple oversight that leads to defect types such as declaration errors, logic errors, loop control errors, conditional expressions errors, failure to validate input, interface specification errors, configuration errors, and failure to understand basic security issues. It is clear that software development practices today lead to defective software so it is important that developers must be trained in security programming but change in university training is very slow and that is why security is still a major issue.

To manage these security risks, information system manager must conduct security reviews often. They must know how to set up certain protection against threats by outsiders and ensure that their people is knowledgeable about security practices. The most common mistake of users is opening of unsolicited emails or click into unknown advertising information so it is essential that information system managers conduct trainings to remind users about the dangerous of these mistakes. The other better ways are improving the software development process and building better and more secured software, because it will produce software with fewer defects and less vulnerable to hackers attack. It is also important to identify any critical software components that control functions associated with security. Those components must be monitored closely throughout development and testing.

More than ever, “secured programming” training for all employees and having a security knowledgeable Information System Manager could be the best investment a company could make.