應用程序邏輯攻擊的危害
開發一個安全的和有效的網站應用程序可能是一項艱巨的任務。此外,無孔不入的黑客使得這樣的設計任務變得更加困難。在本次我們的“咨詢專家”板塊提供的小技巧中,網絡應用安全專家Michael Cobb講解了黑客們如何利用程序邏輯來達成攻擊,同時也提出了一些阻止攻擊行為的建議。
什么是應用程序邏輯?
應用程序邏輯描述了由應用程序開發者定義的必要步驟,以此來完成特定的任務。應用程序邏輯的一個例子是客戶在網上購物時,將商品添加到一個在線購物籃后,該客戶還需提供姓名,地址和付款等細節才能完成整個交易的流程。應用程序邏輯(也稱為商業邏輯)并非指一般功能的Web服務器,而是指應用程序某項具體操作的功能,如產品折扣,郵費定價規則等。應用程序邏輯攻擊一般利用應用程序的本身特點來回避或誤用預期的行為來實現攻擊。一般來說,這類攻擊是針對一個網站的,但他們也可以針對網站的訪客和訪客的私人數據。
應用程序邏輯攻擊是如何實現的
不同于常見的應用程序攻擊,例如SQL注入,每個應用程序邏輯攻擊通常是獨一無二的,因為它利用了應用程序特有的函數或特定功能。這使得自動漏洞測試工具更加難以檢測這種攻擊,因為它們是基于邏輯缺陷而非實際的代碼缺陷的。應用程序邏輯攻擊之所以成功,往往是因為開發者沒有將有效的過程驗證和控制機制引入到應用程序中。這種缺乏流程控制的機制使得攻擊者可以執行不正確或不合乎規程的操作。例如,網絡購物中若購買了商品A則可享受其相應的折扣,然而如果應用程序不能確保在付款時商品A仍在購物車中,則可能導致不正確的折扣產生,如惡意用戶可以通過添加商品A獲得折扣,然后刪除A,從而達到以A的折扣率購買產品B的目的。
應用程序邏輯攻擊的類型
當攻擊者反復利用應用程序的功能時便可能產生不同類型的應用程序邏輯攻擊,如能夠新建數千個新帳戶或在討論區張貼重復的郵件。這種類型的攻擊濫用了應用程序的功能但基本沒有或很少修改原來的應用程序。2005年8月,一個現實生活中的此類攻擊發生在天堂撲克(Paradise Poker)在線賭博網站。基于時間延遲,一些賭徒掌握如何預測莊家手中的底牌。這個安全漏洞使得他們合法地贏取了大量錢財!有些應用程序邏輯攻擊能夠導致拒絕服務或惡意放大傳播。惡意放大傳播指攻擊者將惡意的跨頁面的腳本代碼注入到如網頁聊天室之類的應用中,利用這類應用的傳播特性使這些惡意代碼傳播開來。
應用程序邏輯攻擊:防范措施
防止應用程序邏輯攻擊的關鍵是要執行完整性檢查及確認,并在應用程序開發周期的起始就完善設計需求。Web應用程序開發人員還需在應用程序開發伊始便建立起安全和流程控制。不幸的是,許多應用程序是在設計開發完成后才開始測試和安全檢測的工作。直到越來越多的開發者開始意識到規范編碼和代碼測試的重要性之前,應用程序邏輯攻擊仍將是攻擊者有效的攻擊手段。
【編輯推薦】