API 安全問題探討

2017/09/09

Web 2.0興起10個年頭,AJAX應用程式快速成長,與其配合的後端語言也隨之蓬勃發展。另外在行動裝置推波助瀾的情況下,各種APP應用程式大量出現,呈現方式與傳統Web相比更具彈性,更多資源放置在用戶端,程式反應更快、使用者體驗更好。開發人員亦大量開發API (Application Programming Interface) 應用在市場上蓬勃發展的行動裝置APP,但這樣的轉換是否會帶來新的風險?

API基於 HTTP 通訊協定之上,所以在身分驗證的特性與一般網頁相同,也就是所謂的「無狀態」(Stateless),也就是每一次的連線都是唯一、獨立的,沒有維持(retain)連線的狀態的意思。使用Cookie、WWW-Authenticate、Authorization表頭處理認證問題。

editor_1505201742.jpg

而功能實作方面,如以一般開源的程式語言遵循Rest API 開發,可以直觀的以HTTP Method 加上URI,帶上以JSON封裝的資料,抽象而直觀的表達,以POST或是PUT代表Create、GET表達Read、PUT表示Update、DELETE等於Delete四個動作。在微軟的.Net Framework中的Web API則以GET和POST對API操作。

editor_1505201763.jpg

. 使用Node.js中常用的身分驗證middleware套件 " passport ",讓我們來看官網中身分驗證教學範例的程式碼:

editor_1505201788.jpg

我們可以看到基本的身分驗證判斷流程如下

editor_1505201814.jpg

在這裡犯了實作Authentication中很常見的錯誤:不正確的錯誤訊息回應。由OWASP的Authentication Cheat Sheet中的Authentication and Error Message(https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Incorrect_Response_Examples)可以得知過於詳細的錯誤訊息回應可以讓攻擊者得知部分資訊,可以直接猜測程式流程,進一步做後續的攻擊動作。
以上圖來看,當錯誤訊息回應"帳號錯誤"時,可以得知檢查帳號的環節出錯,也就是輸入的帳號並不在資料庫內。若利用程式撰寫大量對伺服器發送封包的腳本程式,將可得知資料庫裡的使用者帳號,也就是所謂的帳號列舉問題。
所以這部分的程式碼邏輯應該被修改為這樣,將帳號或密碼輸入錯誤的問題做一次判斷並輸出:

editor_1505201841.jpg

當然,開發網站的你可能會認為帳號被猜出來沒什麼大不了,但是現今駭客手中都有所謂的"社工庫",也就是社交工程資料庫,駭客從攻擊中所獲取的資料庫、或是從暗網黑市中所購買的資料庫,經過破解雜湊值後,整理出自己的一套帳號密碼資料庫。若駭客得知使用者的帳號後,可從手中的社工庫中找尋該使用者習慣使用的密碼,嘗試登入該網路服務。

此類問題於API問題中常出現,因API於開發的設計架構上較偏好在回應訊息的詳細程度上做詳細的敘述,並直接將訊息回應至使用者前端,讓整體使用者體驗更好、讓使用者覺得方便,但安全總是與方便牴觸的,在這方面還是不得不注意一些小細節上的問題!

這部分也是絕大多數討論API安全問題時,一定會提到的問題,我們先來看一段express.js官網中的範例程式碼:

editor_1505705438.png

express 中提供了一個相當方便的回傳方法,針對 response 物件可以直接引用 JSON 函式將資料回傳。
另外,我們設計一個使用者資料的schema如下:

editor_1505201913.jpg

express 中提供了一個相當方便的回傳方法,針對 response 物件可以直接引用 JSON 函式將資料回傳。
我們現在將情境限縮在針對使用者資料讀寫的情況下做探討。
一般遇到需要回傳資料的情況下,開發者可以很直觀的將物件直接以物件回傳至前端,就算多傳了資料,對於前端運作並無影響。
但是在此情境下,如果將整個gary回傳至前端,也就是將整個使用者資料全部、連帶前端不必顯示的資料一並回傳,在這種情況下,雖然前端用不到但是駭客全部都用的到呢!
在現今要求開發速度快速、開發者時間不夠的情形下,如果開發者不小心,在沒有確認資料內容的情況下,直接將整個使用者資料物件回傳,若是遇到有心人士,將造成使用者個資大量外洩之問題!

此類情形在許多的APP或是前後端分離的網站中,若存在查詢其他使用者的功能中經常出現。是開發者不得不注意的課題!

除了使用者個資上的問題,在實際的滲透測試專案中,也曾經出現簡訊的二階段認證功能,於資料傳輸過程中將認證碼外洩的問題,也是開發者未確認物件資料內容就將功能撰寫完畢的案例。


其他訊息
嚇!手遊資安危機 數小時恐喪失上億營收

嚇!手遊資安危機 數小時恐喪失上億營收

2016/08/10
Pokemon Go越紅公司損失越大! 歷時兩年開發,上市不到72小時就被駭

Pokemon Go越紅公司損失越大! 歷時兩年開發,上市不到72小時就被駭

2016/07/20
注意!金融業已成為駭客攻擊目標,4個防範手機App的資安威脅!

注意!金融業已成為駭客攻擊目標,4個防範手機App的資安威脅!

2016/07/15
準行政團隊Line國事作法急轉彎,準經長受命客製臺版即時通

準行政團隊Line國事作法急轉彎,準經長受命客製臺版即時通

2016/04/29
從Google Play下載App保證安全!? 資安業者:超過100款惡意程式會偷資料、點擊詐騙

從Google Play下載App保證安全!? 資安業者:超過100款惡意程式會偷資料、點擊詐騙

2016/04/27
網銀App漏洞 金管會關注

網銀App漏洞 金管會關注

2016/04/07
Google釋出Nexus Android 4月份更新,一次修補近40項漏洞

Google釋出Nexus Android 4月份更新,一次修補近40項漏洞

2016/04/07
Android逆向之旅---靜態分析技術來破解Apk

Android逆向之旅---靜態分析技術來破解Apk

2015/11/28
Xcode Ghost事件說明及處理建議

Xcode Ghost事件說明及處理建議

2015/09/22
NEW-【第一季資安報告】加密勒索軟體感染翻兩倍;行動惡意威脅App突破500萬大關!

NEW-【第一季資安報告】加密勒索軟體感染翻兩倍;行動惡意威脅App突破500萬大關!

2015/06/01
Critical GHOST vulnerability affects most Linux Systems

Critical GHOST vulnerability affects most Linux Systems

2015/01/30
會員、個人資料外洩怎麼辦?4個預防資料外洩方法一次看懂!

會員、個人資料外洩怎麼辦?4個預防資料外洩方法一次看懂!

2017/03/10
駭客工具的氾濫VS企業所面對的資安威脅

駭客工具的氾濫VS企業所面對的資安威脅

2017/05/26
API 安全問題探討

API 安全問題探討

2017/09/09
JAVA世界中不安全的反序列化風險

JAVA世界中不安全的反序列化風險

2018/01/05
來自外部的威脅 - XXE漏洞攻擊成因

來自外部的威脅 - XXE漏洞攻擊成因

2018/06/15
網路詐騙手法!釣魚信件、釣魚網站的社交工程駭客常見3手法!

網路詐騙手法!釣魚信件、釣魚網站的社交工程駭客常見3手法!

2019/06/04
要如何預防駭客攻擊?6步驟教你如何提升網路資安的安全性!

要如何預防駭客攻擊?6步驟教你如何提升網路資安的安全性!

2020/01/22
注意!行動裝置App資安檢測最需要注意「防記憶體偵測」技術!

注意!行動裝置App資安檢測最需要注意「防記憶體偵測」技術!

2021/06/22
什麼是Web Cache?3分鐘快速帶你瞭解Web Cache的功能及使用方式!

什麼是Web Cache?3分鐘快速帶你瞭解Web Cache的功能及使用方式!

2021/07/13
如何防範網站速度的延遲及停機?看國外在特賣期間是如何做到的!

如何防範網站速度的延遲及停機?看國外在特賣期間是如何做到的!

2021/07/13
常見手機APP駭客工具-FRIDA,預防你的網站遭受駭客攻擊!

常見手機APP駭客工具-FRIDA,預防你的網站遭受駭客攻擊!

2021/07/13
App手機行動裝置的Xposed軟件攻擊模式,該如何防禦網路資安?

App手機行動裝置的Xposed軟件攻擊模式,該如何防禦網路資安?

2021/07/22
手機被駭怎麼辦?5分鐘一次教你破解Mobile App駭客攻擊手法!

手機被駭怎麼辦?5分鐘一次教你破解Mobile App駭客攻擊手法!

2021/07/30
支付、網銀金融App安全嗎?你必知的白帽App資安漏洞分析!

支付、網銀金融App安全嗎?你必知的白帽App資安漏洞分析!

2021/08/09
預防駭客行動詐騙!看懂App網路資訊安全「原始碼加密」技術!

預防駭客行動詐騙!看懂App網路資訊安全「原始碼加密」技術!

2021/08/13
什麼是ApkCrack?3步驟瞭解駭客工具並完美預防駭客攻擊!

什麼是ApkCrack?3步驟瞭解駭客工具並完美預防駭客攻擊!

2021/08/20
新型Android安卓駭客破解工具Mhook出現!當心被手機駭客攻擊!

新型Android安卓駭客破解工具Mhook出現!當心被手機駭客攻擊!

2021/08/26
從零基礎學破解的駭客工具     Magisk Root,     看懂駭客攻擊如何操作!

從零基礎學破解的駭客工具 Magisk Root, 看懂駭客攻擊如何操作!

2021/09/06
什麼是幸運破解器Lucky Patcher?不得不正視的APP資安問題!

什麼是幸運破解器Lucky Patcher?不得不正視的APP資安問題!

2021/09/15
飛馬間諜軟體讓駭客監控你的手機!不點連結就能自動感染

飛馬間諜軟體讓駭客監控你的手機!不點連結就能自動感染

2021/09/16
什麼是DDoS攻擊?一次教你如何做好DDoS防護,保護你的網站!

什麼是DDoS攻擊?一次教你如何做好DDoS防護,保護你的網站!

2021/09/28
APP資安防禦不可輕忽!最新手遊作弊修改器GameGuardian!

APP資安防禦不可輕忽!最新手遊作弊修改器GameGuardian!

2021/10/04
什麼是滲透測試?從網路資安看Client-Side Template Injection

什麼是滲透測試?從網路資安看Client-Side Template Injection

2021/10/07
手機更新後銀行帳密全被盜!小心Flubot惡意軟體入侵

手機更新後銀行帳密全被盜!小心Flubot惡意軟體入侵

2021/10/07
如何提升網站速度及效能?推薦先搞懂動態v.s靜態網站的差 異!

如何提升網站速度及效能?推薦先搞懂動態v.s靜態網站的差 異!

2021/10/25
網站在中國速度很慢?中國網站加速的CDN內容傳遞最佳實務!

網站在中國速度很慢?中國網站加速的CDN內容傳遞最佳實務!

2021/10/25
如何提升網站效能優化?推薦5個改善網站速度的方法一次看!

如何提升網站效能優化?推薦5個改善網站速度的方法一次看!

2021/11/23
線上學習網站速度太慢怎麼辦?透過CDN達到網站加速!

線上學習網站速度太慢怎麼辦?透過CDN達到網站加速!

2021/12/13
遇到DDoS駭客攻擊怎麼辦?一站式的雲端安全管理有用嗎?

遇到DDoS駭客攻擊怎麼辦?一站式的雲端安全管理有用嗎?

2021/12/13
企業安全合規5式,做好DDOS防護提升您的網絡安全策略!

企業安全合規5式,做好DDOS防護提升您的網絡安全策略!

2021/12/27
「負載平衡」是什麼意思?網站加速與負載平衡也有關嗎?

「負載平衡」是什麼意思?網站加速與負載平衡也有關嗎?

2022/01/03
2021最大資安漏洞!修補方式一次完整揭露

2021最大資安漏洞!修補方式一次完整揭露

2022/01/05
SSTI惡意指令注入防不勝防,面對駭客惡意攻擊,要如何戒備與防範?

SSTI惡意指令注入防不勝防,面對駭客惡意攻擊,要如何戒備與防範?

2022/01/14
內容傳遞網路(CDN)提供哪些服務?Alibaba Cloud CDN如何?

內容傳遞網路(CDN)提供哪些服務?Alibaba Cloud CDN如何?

2022/01/18
網站速度太慢怎麼辦,速度也會影響到網站的轉換率嗎?

網站速度太慢怎麼辦,速度也會影響到網站的轉換率嗎?

2022/01/24
OWASP Top 10 2021 十大常見的弱點與風險,如何做好企業資安防護?

OWASP Top 10 2021 十大常見的弱點與風險,如何做好企業資安防護?

2022/02/22
源碼檢測是什麼?動態&靜態的弱點掃描測試有什麼不同?

源碼檢測是什麼?動態&靜態的弱點掃描測試有什麼不同?

2022/04/06
Hack Talk駭客論壇,深度剖析ICS攻擊與Windows提權威脅!

Hack Talk駭客論壇,深度剖析ICS攻擊與Windows提權威脅!

2022/04/11
2021年OWASP Top 10新規範,有效補強企業資安機制缺陷!

2021年OWASP Top 10新規範,有效補強企業資安機制缺陷!

2022/04/20
【企業案例】《今日新聞》融合CDN技術,網站流量成長 50%

【企業案例】《今日新聞》融合CDN技術,網站流量成長 50%

2022/05/04
2021 OWASP Top 10 A02加密機制失效的問題

2021 OWASP Top 10 A02加密機制失效的問題

2022/05/12
多層式安全防護機制教學!運用 Anti-DDoS、WAF、CDN 和 Cloud Firewall 鞏固線上業務

多層式安全防護機制教學!運用 Anti-DDoS、WAF、CDN 和 Cloud Firewall 鞏固線上業務

2022/06/09