這篇文章算是一個資安問題的討論文章,作者透過一系列的手法成功地獲取了大量使用者的電腦資訊,由於這次的實驗只是要證明資安問題,因此作者的程式只有獲取如 IP, Hostname 等簡單資訊,若是惡意的話是可以執行更多危險程式碼的。
作者開門見山表示,現在的程式語言有太多的豐富的第三方函式庫,譬如 NodeJs(NPM), Ruby(RubyGem), Python(PyPI),豐富的第三方實作讓開發者可以更快速的完成任務。
開發者在使用這些套件函式庫時,大部分情況都不會去檢查太多,而是直接信賴般的去使用這些函式庫,而這種盲點般的信任是否有可能讓攻擊者有跡可循?
作者基於這個想法進行了一系列研究,發現 PayPal 公開專案(NodeJs) 內的 package.json 內交互使用了公開與內部的 packages。 公開部分勢必來自 npm 而那些內部的應該是來自於 PayPal 內部系統,同時也注意到這些內部的 package name 目前於 npm 上也不存在。
針對這個情境,作者提出一些問題
1) 如果有人上傳跟 PayPal 內部 package 相同名稱的套件到 npm 服務器上,有沒有可能 PayPal 內部某些專案會預設使用 npm 上的套件而非內部自架的伺服器?
2) 開發者或是其他自動化系統有沒有可能運行這些 packages 內的程式碼,這樣有沒有機會造成一個漏洞的可能性?
3) 其他的公司是否也會有類似的問題?
為了證實這個問題,作者設計了一系列的實驗與準備來測試上述問題,譬如更有系統的去尋找這種有跡可循的 package.json(Tesla, Apple, Yelp 等公司都被到可以利用的 package names)。
作者將自己這系列的攻擊行為稱為 depdendency confusion 來呼應本文標題。
結果來看是令人非常震驚的,作者打造同名的npm的確被大量下載與執行,也讓作者收集到大量運行的內部服務器IP與名稱。
與 Apple 合作通報相關報告後, Apple 也於兩週內修復相關問題。
原文滿長的,非常推薦閱讀
我個人認為資安這概念就是不出問題不被重視,但是一但出問題可能造成的影響卻非常巨大的。團隊內每個人都要培養基本的資安理念,同時與相關的安全團隊合作逐漸地提高整個產品的安全性,永遠不要想一聲令下明天就可以反轉一切。
https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
同時也有1部Youtube影片,追蹤數超過12萬的網紅prasertcbs,也在其Youtube影片中提到,การติดตั้ง Node.js package ด้วย npm (Node Package Manager) การสร้าง package.json ด้วย npm init เข้าใจ package dependencies เชิญสมัครเป็นสมาชิกของช่องน...
npm nodejs 在 軟體開發學習資訊分享 Facebook 的精選貼文
--早鳥特價中--
從零開始帶你深入了解新手必備的運作邏輯與原理,學會職場上能實際運用的 5 大關鍵實作,包含「單元測試」、「上傳自己的 npm 模組」、「 異常狀況處理、事件迴圈以及非同步執行的功能」、「體驗本機部署簡易的網站」以及運用 Node 模組與 npm 實作爬蟲專案,並初步了解兩種高實用度的框架-Express、koa
https://softnshare.com/nodejs-fullstack-chinese-course/
npm nodejs 在 卡斯伯 Facebook 的最佳貼文
部分同學詢問到 Vue Cli2 及 Cli3 如何同時並存
以及 Node.js 如果需要多個版本該怎麼辦?
Nodejs 我會推薦使用 nvm 來安裝
主要原因如下:
- 可以安裝多個版本
- 不怕安裝一堆 npm 導致整個 Node 壞掉
- 可以切換成伺服器運行的 Node 版本
- 可以批改許多同學的作業(誒!?
而課程中沒有介紹到這段
主要原因是不同作業系統在安裝 nvm 方法會有些不同
這裡附上 nvm 安裝教學,有興趣的同學可以試試看:
https://ithelp.ithome.com.tw/articles/10207177
npm nodejs 在 prasertcbs Youtube 的最讚貼文
การติดตั้ง Node.js package ด้วย npm (Node Package Manager)
การสร้าง package.json ด้วย npm init
เข้าใจ package dependencies
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription_center?add_user=prasertcbs
สอน Node.js ► https://www.youtube.com/playlist?list=PLoTScYm9O0GERtEdsPHK5Q-cdor5ADnyM
สอน PostgreSQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGi_NqmIu43B-PsxA0wtnyH
สอน MySQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GFmJDsZipFCrY6L-0RrBYLT
สอน Microsoft SQL Server 2012, 2014, 2016, 2017 ► https://www.youtube.com/playlist?list=PLoTScYm9O0GH8gYuxpp-jqu5Blc7KbQVn
สอน SQLite ► https://www.youtube.com/playlist?list=PLoTScYm9O0GHjYJA4pfG38M5BcrWKf5s2
สอน SQL สำหรับ Data Science ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGq8M6HO8xrpkaRhvEBsQhw
การเชื่อมต่อกับฐานข้อมูล (SQL Server, MySQL, SQLite) ด้วย Python ► https://www.youtube.com/playlist?list=PLoTScYm9O0GEdZtHwU3t9k3dBAlxYoq59
การใช้ Excel ในการทำงานร่วมกับกับฐานข้อมูล (SQL Server, MySQL, Access) ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGA2sSqNRSXlw0OYuCfDwYk
#prasertcbs_nodejs #prasertcbs
npm nodejs 在 Node.js NPM Tutorial | What Is NPM And How It Works? 的美食出口停車場
... <看更多>