Mới đây, trong chuyến làm việc tại Mát- xcơ- va, chuyên gia an toàn thông tin Steve Lipner đã chia sẻ với tác giả bài báo nhiều vấn đề xung quanh chủ đề đang được đề cập đến ở đây. Steve Lipner là con người kỳ lạ, những ghi chép của ông về vấn đề các lỗ hổng (vulnerability) trong phần mềm đã được thực hiện từ 40 năm về trước. Giờ đây, ông đang làm việc cho Microsoft và chịu trách nhiệm về chiến lược an toàn trong phát triển phần mềm, mà nòng cốt của nó là chính sách Security “Phát triển chu kỳ sống an toàn của phần mềm” (Development Lifecycle SDL) được hãng này phê duyệt vào năm 2004.
Xét về bản chất, SDL là tập hợp những kinh nghiệm thực tế, những cách thức tiếp cận đã được kiểm nghiệm và những công cụ giúp lập trình viên viết nên những đoạn mã an toàn. Có lẽ điều thú vị nhất khi mới tiếp cận với SDL là bộ công cụ giúp viết mã an toàn và để kiểm tra (test) ứng dụng nhằm tìm ra các lỗ hổng. Một số công cụ trước đây chỉ được dùng trong nội bộ hãng Microsoft, nay đã được công bố rộng rãi cho những người quan tâm sử dụng. Phần lớn các công cụ này không chỉ hữu ích đối với những chuyên gia xây dựng phần mềm mà còn đối với tất cả những người làm việc trong lĩnh vực an toàn thông tin. Trong vòng hai năm gần đây, số lượng các công cụ đã tăng lên đáng kê và chức năng của chúng được giới thiệu sau đây.
BinScope Binary Analyzer
Chẳng phải ngẫu nhiên mà chúng ta bỏ nhiều thời gian vào việc tìm cách vượt qua cơ chế bảo mật Data Execution Prevention (DEP) và Address Space Layout Randomization (ASLR) - những công nghệ được sử dụng trong hệ điều hành nhằm ngăn chặn việc khai thác một số lỗ hổng bảo mật, ví dụ như lỗi tràn bộ đệm. Chúng thực sự là rào cản đáng kể đối với những người viết exploit. Khả năng khai thác các lỗ hổng bảo mật phụ thuộc rất nhiều vào việc có vượt qua được rào cản này hay không.
Để hình dung được các yêu cầu của SDL trong vấn đề này, hãy xem xét một trường hợp: “Bất kỳ ứng dụng nào cũng phải được bảo vệ bắt buộc bởi DEP và ASLR”. Để đáp ứng yêu cầu này, mã nguồn bắt buộc phải được biên dịch với các thông số tương ứng là /NXCOMPAT và /DYNAMICBASE. Đó chỉ là một trong số các yêu cầu. Với sự trợ giúp của Binscope SDL người ta có thể biết được ứng dụng có tuân thủ hết các khuyến cáo và yêu cầu SDL hay không. Bên cạnh đó, Binscope cũng thông báo về việc sử dụng các cấu trúc bị cấm dùng hay không nên dùng, ví dụ như sử dụng con trỏ dẫn tới hàm toàn cục.
AppVerifier
AppVerifier cũng là một công cụ phân tích, nhưng chức năng của nó là để phân tích động mã máy (native code) và phát hiện các lỗi của lập trình viên, những lỗi khó có thể bắt được trong quá trình kiểm tra thông thường. Phân tích động có nghĩa là chương trình sẽ được phân tích ngay trong quá trình hoạt động của nó (runtime test). AppVerifier theo dõi hoạt động của chương trình và kiểm tra xem nó có thực hiện những hành động nguy hiểm nào không. Ví dụ, nếu chương trình thực hiện tạo ra một đối tượng mà không có mô tả an toàn (security descriptor), hay truyền tham số vào hàm API theo cách không an toàn... thì AppVerifier sẽ đưa ra những cảnh báo thích hợp.
Attack Surface Analyzer Beta
Nhiệm vụ của Attack Surface Analyzer, như tên gọi của nó, là xác định bề mặt tấn công. Đây là một trong những công cụ mới nhất từ phòng thí nghiệm Microsoft. Công cụ phân tích này cho phép theo dõi những sự thay đổi trong hệ thống, xảy ra sau một tập hợp các hành động nhất định. Ví dụ, bằng cách “chụp hình” hệ thống trước và sau khi cài đặt phần mềm, rồi so sánh chúng, có thể xác định được mọi sự thay đổi: xuất hiện các file mới, bản ghi mới trong registry, các dịch vụ (service) mới, các thành phần ActiveX mới, các cổng mới được mở, thay đổi trong danh sách ACL .v.v.
Code Analysis for C/C++
Việc phân tích tự động mã nguồn để tìm ra các dấu hiệu có lỗ hổng được gọi là kiểm tra tĩnh (static test). Code Analysis for C/C++ là một công cụ phân tích mã tĩnh tiêu chuẩn (standard static code analyzer) và được cài đặt ngầm định vào một số phiên bản Visual Studio. Nó hỗ trợ tự động tìm kiếm trong mã máy (native code) các khả năng rò rỉ bộ nhớ, các ngoại lệ (exclusion) không bị bẫy, các vấn đề liên quan đến hiệu năng và các lỗ hổng an toàn.
Microsoft Code Analysis Tool .NET (CAT .NET)
Đây cũng là công cụ để thực hiện việc kiểm tra tĩnh, nhưng là dành để phân tích mã quản lý được (managed code) như C#, Visual Basic .NET, J#, và hướng tới đối tượng chính là các ứng dụng web. CAT .NET cho phép tìm ra các điểm yếu tiềm ẩn mà có thể về sau mới bị khai thác thông qua các chuỗi tấn công như Cross-Site Scripting (XSS), SQL Injection và XPath Injection. Trước khi được công bố rộng rãi thì công cụ này chỉ được sử dụng trong phạm vi hãng Microsoft.
FxCop
Đây cũng là một công cụ kiểm tra tĩnh để phân tích mã có thể quản lý (managed code). Thực ra, nó không kiểm tra mã nguồn mà kiểm tra mã đối tượng đã được biên dịch. Về bản chất, FxCop kiểm tra các chương trình .NET xem có tuân thủ đúng các khuyến cáo về xây dựng thư viện .NET Framework hay không. FxCop phân tích mã CIL (Common Intermediate Language - ngôn ngữ trung gian được Microsoft phát triển cho nền tảng .NET) để xây dựng và duyệt đồ thị các lệnh gọi hàm trong nó nhằm kiểm tra xem có tồn tại các vấn đề sai sót hay không trong số hơn 200 vấn đề đã được biết.
Anti - Cross Site Scripting (Anti - XSS) Library
Rất nhiều lỗ hổng có thể được cảnh báo trước bằng cách cung cấp cho các nhà phát triển những công cụ thích hợp. Theo cách tiếp cận này, Anti - XSS ra đời nhằm mục đích giảm thiểu khả năng thực hiện tấn công XSS lên các ứng dụng web. Điểm đáng chú ý ở đây là trong Anti - XSS chứa Security Runtime Engine (SRE), mà về bản chất nó giống như là một bức tường lửa dành cho ứng dụng web - Web Application Firewall (WAF). Anti - XSS hoạt động dưới dạng một môđun HTTP và đảm bảo cho các ứng dụng web thêm một lớp bảo vệ mà không cần phải biên dịch lại.
SiteLock ATL Template
Nếu từng đọc các bài viết nói về tấn công lên thành phần ActiveX thì chúng ta sẽ biết lỗi trong thành phần ActiveX nguy hiểm như thế nào. Thư viện SiteLock Active Template không thể giúp loại trừ các lỗi có trong phần mã, nhưng có thể giảm đáng kể khả năng khai thác các lỗi này. Với sự trợ giúp của ATL ta có thể hạn chế việc thực thi các thành phần ActiveX bằng cách sử dụng một danh sách cho trước các tên miền, các vùng an toàn. Có thể thiết lập SiteLock ATL Template để các thành phần ActiveX chỉ thực thi trong phạm vi intranet (mạng nội bộ), chứ không thực thi trên các trang thuộc mạng internet. Rõ ràng, bằng cách hạn chế khả năng khai thác các lỗ hổng, ta có thể giảm đáng kể khả năng các cuộc tấn công tiềm tàng.
Banned.h
Nếu nói về phát triển ứng dụng trên C/C++ thì nguy cơ trong code có những lệnh cho phép thực thi tấn công kiểu tràn bộ đệm (buffer overflow) và tương tự là rất lớn. Danh sách các lệnh kiểu này cũng rất dài: đó là các hàm làm việc với chuỗi ký tự (xstrcpy(), strcat(), gets(), sprintf(), printf(), snprintf(), syslog()); các hàm hệ thống (access(), chown(), chgrp(), chmod(), tmpfile(), tmpnam(), tempnam, mktemp()), và cả các lệnh gọi hệ thống (exec(), system(), popen()). Để phân tích mã nguồn và tìm ra các lệnh nguy hiểm này, ta có thể dùng công cụ phân tích tĩnh Code Analysis for C/C++ như đã nói ở trên. Tuy nhiên, vẫn còn một lựa chọn khác, đó là sử dụng file tiêu đề (header file). Đặc biệt banned.h không cho phép dùng các hàm mà từ lâu đã không được khuyến khích sử dụng (và tất nhiên là bị cấm bởi SDL).
SDL Threat Modeling Tool
Mô hình hóa hiểm họa (threat modeling) là một phần quan trọng trong việc thiết kế một sản phẩm phần mềm. Kết quả của việc mô hình hóa là một sơ đồ các thành phần chính của hệ thống tương lai cùng với các đánh dấu giới hạn tin tưởng trên đó. SDL Threat Modeling Tool là công cụ cho phép xây dựng và phân tích mô hình hiểm họa, qua đó nhận biết được những nguy hiểm tiềm tàng và đưa ra biện pháp giảm nhẹ nó.
SDL Proccess Template
Đây là khuôn mẫu (template) được phát triển cho Visual Studio. Nó tự động tích hợp các thành phần của SDL vào môi trường Visual Studio, giúp cho việc tuân thủ các yêu cầu của SDL khi tạo một dự án mới được dễ dàng hơn.
MiniFuzz File Fuzzer
Chiếu theo chính sách SDL, một trong những công đoạn bắt buộc khi kiểm tra (test) ứng dụng là fuzzing, tức là kiểm tra bằng các dữ liệu đầu vào ngẫu nhiên. Minifuzz File Fuzzer là công cụ kiểm tra mờ (fuzzy testing) cơ bản, được phát triển nhằm cho phép các chuyên gia không thuộc lĩnh vực an toàn, không có kiến thức về kiểm tra mờ cũng có thể thực hiện được việc kiểm tra này. Công cụ này đưa tới đầu vào của ứng dụng được kiểm tra các giá trị khác nhau nhằm tìm ra những ngoại lệ chưa được xử lý.
SDL Regex Fuzzer
Là công cụ kiểm tra mờ các biểu thức chính quy (Regex). SDL Regex Fuzzer cho phép kiểm tra các biểu thức chính quy để phát hiện các lỗ hổng loại “từ chối dịch vụ”. Đây là nhiệm vụ không đơn giản bởi các biểu thức chính quy thường chứa các mệnh đề có độ phức tạp hàm mũ về thời gian. Các biểu thức dạng này có thể bị lợi dụng để thực hiện tấn công từ chối dịch vụ. Công cụ SDL Regex Fuzzer cho phép tìm kiếm và chỉ ra sự có mặt của các biểu thức nguy hiểm này ngay trong quá trình phát triển ứng dụng.
Các công cụ được nhắc đến trên đây có thể tải về từ địa chỉ: //www.microsoft.com/download/en/details.aspx?id=464. Như vậy, song song với quá trình phát triển các phần mềm ứng dụng, việc nghiên cứu các công cụ để có thể kiểm tra và tìm ra những lỗ hổng trong chương trình phần mềm là hết sức cần thiết và cần được sự quan tâm của các tổ chức hoạt động trong lĩnh vực CNTT.
07:00 | 23/10/2024
Những kẻ tấn công mạng đang nhắm mục tiêu vào Các Tiểu vương quốc Ả Rập Thống nhất (UAE), Ả Rập Xê Út và các quốc gia khác trong khu vực Hội đồng hợp tác vùng Vịnh (GCC). Khu vực này thường là mục tiêu ưa chuộng của các tin tặc bởi đây là trung tâm thương mại và buôn bán, có nhiều nền kinh tế giàu mạnh và vì lập trường của các quốc gia trong khu vực Trung Đông này về một số vấn đề địa chính trị.
14:00 | 18/10/2024
Cục An toàn thông tin (Bộ TT&TT) cho biết tình trạng lừa đảo mạo danh trực tuyến vẫn đang diễn ra phổ biến, người dân cần hết sức cảnh giác để tránh trở thành nạn nhân.
16:00 | 19/09/2024
Chỉ số an toàn thông tin mạng toàn cầu (Global Cybersecurity Index - GCI) 2024, được Liên minh Viễn thông quốc tế (ITU), cơ quan chuyên ngành của Liên hợp quốc công bố ngày 12/9/2024. Trong báo cáo, Việt Nam là 1 trong 46 quốc gia được xếp vào nhóm 1 về chỉ số an toàn thông tin toàn cầu của ITU năm 2024.
09:00 | 17/09/2024
Cục An toàn thông tin khuyến nghị, các cơ quan, tổ chức cần kiểm tra, rà soát hệ thống thông tin đang sử dụng có khả năng bị ảnh hưởng bởi chiến dịch tấn công mạng.
Khoảng giữa năm 1995, cơ quan An ninh Quốc gia Mỹ (National Security Agency - NSA) bắt đầu công bố hàng nghìn thông điệp được giải mật từ dự án VENONA. Đó là các thông điệp được truyền trong hoạt động ngoại giao và hoạt động tình báo của Liên Xô được trao đổi từ năm 1940. Trong đó, có chứa các thông tin liên quan đến Cơ quan tình báo trung ương Liên Xô (Komitet Gosudarstvennoy Bezopasnosti - KGB), Cơ quan Tình báo Quân đội Nga (Glavnoye Razvedyvatel’noye Upravleniye - GRU), Cơ quan Dân ủy Nội vụ (Narodnyy Komissariat Vnutrennikh Del - NKVD)…. Đây là kết quả hợp tác truyền thông tình báo của Mỹ, Anh và một số nước đồng minh. Bài viết dưới đây trình bày khái quát các kết quả chính và nguyên nhân thám mã thành công của dự án VENONA.
15:00 | 30/12/2018
Sáng ngày 23/10, tại Hà Nội, Học viện Kỹ thuật mật mã (Ban Cơ yếu Chính phủ) long trọng tổ chức Lễ khai giảng năm học 2024 - 2025. Thiếu tướng Nguyễn Hữu Hùng, Phó Trưởng ban Ban Cơ yếu Chính phủ dự và chỉ đạo buổi Lễ.
17:00 | 23/10/2024
Microsoft cho biết trong báo cáo thường niên ngày 15/10/2024 rằng Israel đã trở thành mục tiêu hàng đầu của các cuộc tấn công mạng của Iran kể từ khi cuộc chiến tranh ở Gaza bắt đầu vào năm ngoái.
10:00 | 25/10/2024
Cách mạng công nghiệp 4.0 đang trở thành hiện thực, một phần không nhỏ nhờ công nghệ Internet vạn vật công nghiệp (IIoT) và các mạng 5G dùng riêng. Đến năm 2029, thị trường cách mạng công nghiệp 4.0 dự kiến sẽ đạt giá trị 377,30 tỷ USD. Bà Marie Hattar, Phó Chủ tịch cấp cao Keysight Technologies (Hoa Kỳ), đã chia sẻ tầm quan trọng của 5G trong hành trình cách mạng công nghiệp 4.0.
13:00 | 22/10/2024