• 沒有找到結果。

Privacy Violation

Handling (SEH) frame FS:[0x18] 4 Thread Environment

V. Privacy Violation

錯誤地處理隱私資訊,像是客戶的密碼或是身分證字號等等隱私資訊,可 能會造成使用者隱私的危害,且此為違法的行為。

Private Violation 此種漏洞發生於以下兩種情形,其一是使用者的私人資訊 進入程式中,其二是隱私資料寫入一個外部位置,例如: 主控台(console)、檔案 系統或是網路。

pass = GetPassword();

...

dbmsLog.WriteLine(id+":"+pass+":"+type+":"+tstamp);

以上程式包含了一個登入的敍語(statement),其會藉由一個日誌檔(log file) 記錄之內容,來搜尋資料庫追蹤其記錄內容。在其他的被儲存之值當中,此 getPassword()函式回傳使用者提供且與帳號相關之純文字密碼。

在以上之範例程式中,此程式會把密碼以純文字的方式記錄在檔案系統中。

雖然許多的程式開發人員相信檔案系統為儲存資料的安全之儲存區,但是其不 應該如此的信任檔案系統,尤其是關於重要的隱私資料。

在以上敘述的漏洞發生條件中,隱私資料會經以下方式進入程式,其一是 直接來自於使用者產生的密碼或個人資訊,其二是從應用程式存取資料庫或是 其他儲存空間之資料,資料間接從合作人或是第三方。

有時候資料並未被標記成私人資料,但是在不同的上下文環境中可能會包 含隱私的含意。以下為例,學號通常不會被當成隱私資料,因為學號不明確且 未公開來對應到獨立的學生個人資訊,但是如果學校將學生的學號以身分證字

181

號為基礎來產生的話,則學號就應該被視為一個隱私資料。

安全與隱私的考量通常都會互相矛盾,以安全的觀點來說的話,應該記錄 所有重要的執行工作,如此的話,任何有異常的行為都能隨後馬上被確認。但 是,若隱私的資料也儲存於記錄的話,這樣的行為可能會產生很大的風險。

雖然有很多方法會將隱私資料以不安全的方法處理,但是普遍的風險是源 自於不適當的信任,程式設計者通常會信任程式執行的作業環境,而且相信此 作業環境很適合將隱私資訊儲存於檔案系統、登入檔或是其他局部控制的資源 中。即使已經限制存取重要的相關資源,這仍不保證有存取權限的人可以完全 信任。例如,在 2004 年一個 AOL 沒有道德的員工,將大約九千兩百萬的客戶私 人電子信箱地址販賣給賭博網站的垃圾郵件發送者(spammer)。

對於利用此種類型攻擊的反應,造成隱私資料的收集以及管理變得越來越 受規範,

對於隱私資訊的處理,因為通訊傳輸系統的進步而越來越受重視,也因為網路 應用系統的普遍,讓個人的隱私資料也越來越重要,若沒有完整的處理隱私資 料的話,可能造成系統內個人資訊被竊取,甚至造成此系統之公司龐大的損失。

所以對於其解決方法應該針對程式設計者以及使用者。程式設計者在撰寫程式 時,對於隱私資料之處理應該要與其他漏洞一起考慮,例如不要讓使用者之隱 私資料進入程式,以防有 Private Violation 之漏洞,可以儲存於資料庫,但必頇 防止 SQL Injection 此種漏洞,當要以隱私資訊來當標籤來存取某物件時,可以用 個亂數產生且系統能辨識之變數來當作標籤,但必頇考慮 Weak Encryption 的漏

182

洞問題。當使用者在使用此系統時,其個人資料必頇要能夠保密,不能不適當 的相信他人而給予其帳號密碼,可能造成此系統內的個人隱私資料因而被竊 取。

183

4.1.20 Time and State (VB.NET)