Kiểm thử khả năng bảo mật phần mềm
War Game được ra mắt công chúng vào năm 1983, David Lightman, người đã sử dụng máy tính IMSAI 8080 300 đơn vị âm thanh của modem để tấn công vào hệ thống máy tính NORAD của chính phủ. Làm thế nào để truy cập được? ...
War Game được ra mắt công chúng vào năm 1983, David Lightman, người đã sử dụng máy tính IMSAI 8080 300 đơn vị âm thanh của modem để tấn công vào hệ thống máy tính NORAD của chính phủ. Làm thế nào để truy cập được? Ông ta lập trình trên máy tính của mình để quay một chuỗi số liên tục từ 5550000 đến 5559999, và lắng nghe những modem máy tính khác để trả lời.
Hơn 20 năm sau, công nghệ đã thay đổi, nhưng các quy trình và kỹ thuật vẫn giữ nguyên. Phần mềm và hệ thống máy tính hiện nay đã có nhiều mối quan hệ nhưng lại có rất nhiều chi tiết tặc. War Game đã đưa ra một ý nghĩa mới thông qua những hacker đang chơi trò chơi và các ngành công nghiệp phần mềm là một cuộc chiến tranh để chống lại họ. Việc ra đời phần mềm bảo mật là một yếu tố quan trọng.
WAR DRIVING
Với sự phát triển của“WiFi” ,những hacker đã phát hiện ra rằng họ có thể tìm kiếm để mở nhiều mạng máy tính giống như nhân vật của David Lightman trong WarGame. Các kỹ thuật sau khi có tên trong war game được biết đến như là “war driving”. War Driving là kỹ thuật sử dụng modem để tự động quét một danh sách số điện thoại. Hacker đã sử dụng danh sách kết quả tìm được cho nhiều mục đích khác nhau và cho việc đoán mật khẩu
Trong war Game, các hacker có được động lực là do sự tò mò và mong muốn sử dụng máy tính với mục đích riêng của mình. Hiểu được mục đích đó sẽ giúp bạn trong suy nghĩ về nơi mà các lỗ hỏng bảo mật có thể có trong phần mềm mà bạn thử nghiệm.
Một sản phẩm an toàn là một sản phẩm được bảo vệ bởi:
- Confidentiality (giữ bí mật)
- Integrity (tình trạng còn nguyên vẹn)
- Availability (tính sẵn sàng)
- Tính khả dụng của thông tin khách hàng
- Sự tích hợp và chế biến sẵn có của các nguồn tài nguyên
Hacker: Là người có thông tin từ một chương trình hoặc bằng cách sử dụng máy vi tính. Là người sử dụng các kỹ thuật lập trình để đạt được sự truy cập bất hợp pháp vào mạng lưới máy tính hay tập tin
5 lý do hacker có thể có để đạt được quyền truy cập:
- Challenge/Prestige (Thách thức / Uy tín)
- Curiosity (sự tò mò)
- Use/Leverage
- War Game là một sự tấn công Use/Leverage
- Vandalize (Phá hoại)
- Vandalize (Phá hoại) quan tâm đến 3 yếu tố :
- Defacing (Làm mất vẻ đẹp)
- Destruction(sự phá hủy)
- Denial of Service (từ chối của dịch vụ)
Steal: nặng nhất của hình thức hacking là trộm cắp ngay,mục đích là một số thứ có giá trị có thể sử dụng được hoặc để bán, ví dụ: số thẻ tín dụng, thông tin cá nhân, tài sản, dịch vụ, thậm trí là cả quyền đăng nhập.
Chúng mô tả quá trình về̀ một đe dọa mẫu cho việc đánh giá một hệ thống phần mềm về các vấn đề bảo mật. Nó được xem xét để thiết lập lỗ hỏng bảo mật để giảm rủi ro. Với thông tin đó nhóm có thể được chọn để thay đổi sản phẩm , dành nhiều hơn cho việc nỗ lực thiết kế các tính năng, hoặc tập trung thử nghiệm trên những rắc rối tiềm năng. Cuối cùng với sự hiểu biết như vậy sẽ là kết quả trong một sản phẩm an toàn hơn. Thực hiện threat modeling (mối đe dọa mẫu) không phải là trách nhiệm của tester phần mềm. Trách nhiệm này nên thuộc về nhiệm vụ của người quản lý dự án và tất cả thành viên của nhóm dự án.
- Assemble the threat modeling team (Hình thành nhóm về mối đe dọa mẫu): Ngoài các tiêu chuẩn về thành viên trong nhóm, phải có 1 thành viên có nền tảng sâu rộng về các phần mềm an ninh. Đối với nhóm nhỏ thì hướng dẫn trong việc thiết kế giai đoạn. Trong một công ty lớn thì người này là một chuyên gia về vấn đề đó, có thể đến từ dự án khác. Đề xuất kiến thức và chuyên môn, đây là điều quan trọng cho đội ngũ nhân viên để hiểu rằng mục đích ban đầu của họ không phải là giải quyết vấn đề an ninh mà là nhận dạng
- Identify the Assets (Xác định tài sản): Xác định xem hệ thống có thông tin gì cho một kẻ đột nhập ?. Có thông tin cá nhân của khách hàng ? số thẻ tín dụng? Làm thế nào về các nguồn tài nguyên máy tính?
- Create an Architecture Overview (Tạo một kiến trúc tổng quát): Trong giai đoạn này sẽ xác định công nghệ kỹ thuật, kế hoạch để sử dụng phần mềm và mối quan hệ của chúng như thế nào. Nhóm sẽ tạo một sơ đồ kiến trúc cho thấy công nghệ và việc chúng giao tiếp với nhau như thế nào.
- Decompose the Application (Phân tích ứng dụng): Đây là quá trình xác định dữ liệu chảy tràn qua hệ thống như thế nào và ở đâu.
- Identify the Threats (Nhận biết Threats): Sau khi đã hiểu kỹ các thành phần(tài sản,kiến trúc , dữ liệu), nhóm sẽ di chuyển đến việc xác định mối đe dọa, mỗi phần nên được quan tâm tới mục tiêu của mối đe dọa, nên giả định rằng chúng sẽ bị tấn công.
- Rank the threats (Đánh giá về các mối đe dọa): Cuối cùng để hiểu rằng tất cả các mối đe dọa không phải được tạo ra như nhau
Dữ liệu trong hệ thống bị đe dọa ngay cả với mức độ bảo mật cao,nhóm bạn cần nhìn vào mỗi mối đe dọa và xác định về việc xếp hạng các mối đe dọa đó.
- Damage Potential (Khả năng hỏng): việc hư hỏng sẽ là bao nhiêu nếu vùng này bị hacked.
- Reproducibility (Sự sản sinh): nó là dễ dàng như thế nào để một hacker khai thác được vùng dễ bị tấn công một cách hợp lý, mọi sự cố gắng sẽ thành công, một trong một trăm sự cố gắng, một trong một triệu.
- Affected Users (sự ảnh hưởng của người sử dụng): nếu một hacker thành công có bao người sử dụng sẽ bị ảnh hưởng
- Discoverability (có thể phát hiện): khả năng gì mà hacker sẽ tìm ra vùng dễ bị tấn công, một sự đăng nhập “backdoor” mà không gây ra âm thanh để dễ phát hiện
Có lẽ hầu hết mọi người đều không muốn dữ liệu tài chính cá nhân của họ bị xâm nhập bởi một hacker nào đó. Họ luôn cho rằng phần mềm bảng biểu của họ có khả năng giữ thông tin riêng tư (như) một đặc tính cần thiết. Nếu phần mềm bị lỗi và cho phép hacker nhìn thấy những thông tin cá nhân và thông tin thẻ tín dụng, hầu hết người dùng sẽ xem đó là lỗi phần mềm.
Tổng kết định nghĩa của 1 lỗi từ “Kiểm thử bối cảnh”:
- Phần mềm không làm những gì như trong bản đặc tả yêu cầu.
- Phần mềm làm những gì như trong bản đặc tả yêu cầu.
- Phần mềm làm những gì mà bản đặc tả không nói đến.
- Phần mềm không làm những gì như bản đặc tả không nói đến nhưng nên làm.
- Phần mềm khó hiểu, khó sử dụng.
Khi bạn kiểm thử “test to pass”, bạn đảm bảo đã hoàn thành tối thiểu các yêu cầu công việc đặt ra. Bạn không loại bỏ khả năng bạn không nhìn thấy những gì bạn có thể làm sai lệch. Với những ứng dụng đơn giản nhất và thường thì các “test case” không mấy phức tạp. Sau khi bảo đảm rằng phần mềm không có gì xảy ra trong trường hợp bình thường, đây là lúc để đặt trên giả định của bạn, làm ngơ trước các lỗi, xoay vòng và cố gắng tìm thấy lỗi do sự cố nên ép chúng “outtest-to-fail”. Một Tester, bạn phải chịu trách nhiệm kiểm tra về sự an toàn của phần hoặc chịu trách nhiệm kiểm tra một vài tính năng được giao. Bạn không nhất thiết phải đề ra cho một sản phẩm đặc tả rõ ràng: định nghĩa như thế nào là phần mềm an toàn được đề cập trong phần mềm của bạn. Bạn sẽ cần phải đặt “test- to –fail” đối với các trường hợp phần mềm bị một hacker tấn công, và tất cả các tính năng bảo mật có khả năng bị tổn thương.
KẾT LUẬN: Kiểm thử tính năng bảo mật là kế hoạch kiểm tra trường hợp có thể không hoạt động và sẽ thường bao gồm các phần của các sản phẩm mà chưa được hiểu hoàn toàn hay chỉ định.
- Một bảng tính chia sẻ trên trang chủ của bạn trên mạng không dây là rất khác nhau, từ một hay nhiều trò chơi video phát trên các trang web hoặc một phân phối trên hệ thống máy tính của Bộ Truyền Thông.
- Các hệ điều hành và các công nghệ quan trọng đang là duy nhất và có sẽ nguy cơ gặp rủi ro an ninh khác nhau.
- Một trong những vấn đề thường gặp, đó là một vấn đề bảo mật do bị tràn bộ đệm trong bất kỳ sản phẩm phần mềm nào.
- Bạn tìm hiểu về các dữ liệu tham khảo Errorsbugs gây ra bằng cách sử dụng một biến cố định, mảng, chuỗi, hoặc tài liệu mà không được đúng tuyên bố hoặc khởi động như thế nào cho điều đó đang được sử dụng và tham chiếu. Tràn bộ đệm là một lỗi.
- Nó là kết quả của ngôn ngữ nghèo nàn, như ngôn ngữ như C và C + +, các hàm xử lý chuỗi thiếu an toàn.
Danh mục 13-1. Ví dụ đơn giản về tràn bộ đệm.
1: void myBufferCopy(char * pSourceStr) {
2: char pDestStr[100];
3: int nLocalVar1 = 123;
4: int nLocalVar2 = 456;
5: strcpy(pDestStr, pSourceStr);...
6: }
7: void myValidate()
8: {
9: /*
10: Assume this function's code validates a user password
11: and grants access to millions of private customer records
12:/*
- Nếu lớn hơn 100 bytes, nó sẽ điền vào chuỗi các điểm đến và sau đó tiếp tục Overwriting các giá trị được lưu trữ trong các biến địa phương.
- Tồi tệ hơn, nếu là nguồn chuỗi dài là đủ, nó cũng có thể trở lại đè lên các địa chỉ của chức năng myBufferCopy và các nội dung của mã thi hành trong chức năng myValidate.
- Trong ví dụ này, một cơ hacker có thể nhập một mật khẩu siêu dài , thay vì lắp ráp bằng văn bản của alphanumeric ký tự ASCII, và ghi đè lên nội dung mật khẩu xác nhận thực hiện trong myValidatepossibly được truy cập vào hệ thống.
Một hacker tấn công phần mềm của bạn bằng cách tìm những điểm yếu bảo mật dễ bị tấn công của phần mềm và khai thác chúng để truy cập vào dữ liệu hoặc để kiểm soát hệ thống. Ví dụ đầu tiên của vấn đề này là WebBrowser:
Lỗ hổng bảo mật trên webbrowser
Một ví dụ khác của dữ liệu tiềm năng là Thanh công cụ của Google có tính năng Autofill
Khi dữ liệu được ghi vào một đĩa, nó được ghi trong khối. Kích thước của các khối, gọi là các sector, các sector này khác nhau tùy thuộc vào hệ điều hành đang sử dụng. MSDOS / Windows sử dụng khối 512 byte. Tùy thuộc vào hệ thống tập tin được sử dụng, các sector được viết ra trong các nhóm gọi là clusters Windows FAT tập tin sử dụng các cluster của 2048 byte, gồm bốn cluster 512 byte. Tệp có chiều dài 2.200 byte và được hiển thị bởi vùng trắng trải rộng từ Sector 1 đến giữa của sector 5
clusters Windows FAT
Nếu file là có độ dài 2.200 byte, nó sẽ mất 4,3 khối mà mỗi khối là 512 byte (2200/512 = 4.3). Dữ liệu ở phần cuối của sector 5 được gọi là RAM “slack” vì những gì mà được chứa ở đó là thông tin xảy ra khi truy cập vào RAM của hệ thống khi fie được tạo. Nó có thể là không có gì, hoặc nó có thể được quản lý mật khẩu hay số thẻ tín dụng.
Không có cách nào để biết, nhưng những dữ liệu đó khác với những dữ liệu được ghi ở các file trong ổ đĩa máy tính của bạn. Mặc dù ví dụ này sử dụng một ổ đĩa để minh họa các khái niệm về dữ liệu tiềm tàng, các vấn đề bảo mật của RAM và đĩa slack cũng áp dụng để ghi đĩa CD, DVD, thẻ nhớ, và hầu như bất kỳ loại phương tiện lưu trữ.
Khi bạn đang kiểm thử một sản phẩm phần mềm, bạn sẽ cần phải làm việc với nhóm của bạn để quyết định nếu dữ liệu tiềm năng là một lỗ hổng bảo mật. Bạn và nhóm của bạn sẽ cần phải nghĩ ra cách để ngăn cản điều đó xảy ra.
Tổng kết
Không hệ thống máy tính nào là an toàn tuyệt đối. Trong việc thiết kế một hệ thống an toàn và bảo mật, bạn phải chú ý quan tâm đến vấn đề bảo mật ngay từ khi bắt đầu của quá trình thiết kế sản phẩm. Bạn có thể không chỉ "test in" bảo mật phần mềm. Việc này phải được quy hoạch, xem xét, thiết kế, và sau đó thử nghiệm.
Áp dụng cho một quá trình lặp của phát triển phần mềm như Spiral Model chi tiết trong Chương 2, "Quy trình phát triển phần mềm," sẽ bảo đảm rằng những chủ đề này sẽ được thăm lại trong suốt quá trình phát triển. Một trang web có rất nhiều thông tin sẽ giúp cho bạn cập nhật hằng ngày trên máy tính các vấn đề về an ninh là www.securityfocus.com.