另行設立修改全站 CSS/JS 之用戶組

This page is a translated version of the page Creation of separate user group for editing sitewide CSS/JS and the translation is 100% complete.
Tracked in Phabricator:
Task T190015

擬解決問題

管理員手握極度高危權力︰就是可以透過修改Common.js就可以於擁有過萬讀者及過千編者之伺服器上即時執行代碼。(其餘擁有類似權限之用戶組,諸如介面編輯者亦同。)然而,眾所周知濫用會產生問題,但只有少數人明白情況可以何其惡劣︰

  • 透過發送惡意代碼予讀者或編者,基本上可以做到很多事情,例如︰實行「釣魚式攻擊」以取得密碼或信用卡號碼、將捐款者導向其他網站、公開編者個人識別資料、修改編輯紀錄以致編輯歸於他人名下、誘使他人安裝惡意程式、發送垃圾郵件、對其他網站實施DDoS攻擊……
  • 其他高危權限(諸如用戶核查)尚且無法用以牟利,此權限可以用以牟利,對攻擊者以言,可謂極為吸引。最近就有用戶濫用權限,利用來訪者設備來踩挖加密貨幣。而比起吸引攻擊者來賺快錢,更差的是︰
  • 毀損並不止於某個站點︰因為維基媒體各站點是採取全域統一帳戶系統,只要有一個維基形成此漏洞,就可以用以奪取其他維基站點的管理員帳號,以致攻擊範圍不斷擴大。

所以,濫權管理員以及黑客盜取管理員帳戶都足以構成嚴重威脅。實在我們應盡己所能,防範威脅。雖然經常都有管理員帳號被盜,但至今都未曾有重大事件發生過,可謂幸運之極。然而,實在應該居安思危,防患於未然。

與此同時,維基媒體社群應該繼續有能力保持自治,就站務作出決策。此可謂彌足珍貴。編者用小工具可以大大增強生產力,而便利讀者的修改則可以幫助過百個維基媒體站點解決無數問題及滿足不同需要。此等發展是按個別站點需要而進行,不一而足。本地社群有能力解決自身問題,不假外求,才可以令維基社群保持自治及有幹勁。是故,站點 CSS/JS 應該留予本地社群治理。

解決方案

其實大部分管理員並非真正有需要修改CSS及JavaScript,甚至乎根本不欲去修改。首先,修改代碼需要對該等編程語言相當熟識,而大部分管理員其實並不熟習。過往曾修改站點JavaScript及CSS者或有意為之者應該可以繼續。而對此不太關注者,則不應再有權限修改。如此,攻擊者就算奪得其帳號,亦得物無所用,無法做成修害。另外,如有社群希望對JS編者作更仔細審核及有更多限制(對比管理員而言),wiki軟件應當予以支援。

是故,將會建立新用戶組「介面管理員」,以後只有此用戶組成員可以編修站點CSS/JS頁面。預設,行政員及監管員可以一如授予管理員般授予此權限給用戶。至於如何任命新技術管理員將會留予各站點社群決定(如全域社群經恆常途徑設立相關全域方針,則交由全域社群決定如何任命。)

此方案有以下數個好處︰

  • 可用以攻擊站點的帳戶數目將會大幅減少。[1]就算有其他網站密碼數據庫發生洩漏,那越少帳戶可以用作攻擊,亦會越少帳戶值得攻破。(這亦代表普通管理員可以少一點擔心成為盜號目標。)當帳戶少一點時,遇有異常登入,亦更易察覺。
  • 除了少數帳戶,大部分帳戶因為無法用作攻擊,將會變得不值攻破。而用戶如果懂得編寫CSS/JS代碼,一般而言都會有夠豐富電腦知識,故而會設定較佳密碼及有更好系統保安操守。
  • 將來則可以對CSS/JS編者制定更高保安要求(例如要求雙重認證),而不會對其他管理員引起不便,即使此等管理員帳戶被盜亦不會引起重大危機。

技術層面而言,將會向MediaWiki引入新權限(editsitecsseditsitejs)。如欲修改MediaWiki名字空間下.css.js頁面,則將會需要原權限editinterface及對應權限editsiteXXX。管理員及其他現時擁有editinterface之用戶組將會於過渡期內獲得新權限(以免過渡期內引起混亂),不過最終會失去此權限,而隨軟體更新,之後亦會確保只有技術管理員擁有相關權限,而其他用戶組沒有。

需幫忙事項

  • 本諮詢完結之後,將會進入過渡期(約莫兩星期)。期間,將會有技術管理員用戶組,而其他管理員仍然會能夠編輯CSS/JS頁面。請確保閣下社群知悉此事,並在期內制度任命程序及決定好任命何人為技術管理員。(如何過渡將交由各本地社群決定;可以簡單如凡有管理員要求就授予權限。)
  • 另外,請確保閣下社群於過渡期內就新用戶組制定適量文件及選舉過程。重申,任命過程可以簡單如詢問新當選管理員是否想成為技術管理員以及是否熟識JavaScript及基本保安操守。無論如何,都不建議技術管理員門檻低於管理員(於信任門檻及行為操守方面而言),甚至應該高於管理員(請見用戶組頁面以取得更多建議)。
  • 告知開發人員CSS/JavaScript編程之中需要什麼額外權限(如此可以幫助決定技術管理員用戶組應該預設有什麼權限)。譬如︰技術管理員是否需要有能力刪除頁面呢?又或者更改頁面模式呢?
  • 提議更佳用戶組名稱!「Technical administrators」(技術管理員)並不良好。構思時請考慮︰不應令人將用戶組成員與維護維基外原始碼的開發人員搞混(例如MediaWiki開發人員、Toolforge工具維護者等);亦不應令人將該用戶組成員與Lua編者搞混(模組名字空間);介面編輯用戶組仍會繼續設立(以便編輯MediaWiki訊息);最理想而言,該用戶組名稱應該能夠反映出該該用戶組信任門檻要求至少要等同管理員。
  • 如認為此文件有所缺漏,思慮未周,仍有問題未曾交代清楚,或者有其他額外變改可令此次變革更有裨益或減少引起不必要麻煩,請告知開發人員。

請使用討論頁反饋,包括︰發表意見、提問或提議。你可以使用任何語言撰寫。

常见问题

本文件由誰撰寫?
本頁及相應編碼更改均由User:Tgr(以義工身份)依據T190015wikitech-l上之討論結果撰寫。個人相信此乃MediaWiki開發人員社群共識。
此文件是否意見諮詢(RFC)?
此次修改或不修改並非依據社群共識而行。亦非投票。軟件保安決策是依MediaWiki開發人員社群共識而治理,而非編者共識。最終決定通常會透過代碼審查作出。話雖如此,仍然亟需閣下給予意見!經過討論,或者會找到其他實行方法及其原因,又或者決定重要詳細資料,例如該新用戶組應該獲得什麼額外權限。討論亦可以幫助各社群就此項軟件變革制訂其政策及程序。
此次變革是否對近期事件的應對方案?
不是。雖然該次事件能夠反映此變革極其重要,但此構思其實已經討論經年,而與本次諮詢相關之修補程式早於三月已經完成。
就算此次變革落實執行之後,仍然會有方法供管理員部署站點JS。
這個(困難的)技術問題,最終仍會得以處理。然而,限制管理員JS編輯權限,以減少受到少量黑客暗地攻擊,將可大大縮減攻擊面,亦可令潛在目標帳號更易受到監察。
何以CSS編輯會與JS編輯同等看待?
雖然CSS並不如JS般高危,但情況其實仍然是相當糟糕︰
  • 圖檔相關CSS屬性可用以知悉編者個人識別資料。
  • 在個別舊版瀏覽器之中,JavaScript代碼可以嵌入至CSS。
  • CSS可用以盜取編輯令牌(於是可以令編輯歸於其他編輯名下及以其權限作出編輯),雖然目前礙於缺乏瀏覽器支援仍未可實行。
  • 基於CSS的點擊劫持可被用於進行網絡釣魚攻擊。
數據[2]顯示大部分管理員會經常同時編輯JS及CSS,是故並無理由將兩個問題分別處置。
將來,管理員將會重新有權限修改已篩選之CSS安全子集;見模板樣式計劃以知悉此方面進度如何。
這也影響到模板樣式的.css頁面嗎?
沒影響。只有在MediaWiki名字空間下之CSS頁面才會受影響。模板樣式CSS代碼會經過篩選以確保不能用作高危動作。
為什麼反而不自動阻止具有編輯JavaScript權限的用戶做壞事呢?
雖然這方面有所進展(例如内容安全策略及其他形式編輯覆審),但實在不可能完全阻截攻擊——正如不可能完全淨化一個編程語言。而且,如此方向,將要投入更多力氣,難度亦會更高。短期內,減少可編輯JavaScript之帳戶數量可謂目前最可行過渡策略;長期而言,此策略仍然應該維持,並配以其他措施。
對於editusercss/edituserjs權限的影響?
此二權限(甚少為人知曉或使用)容許編輯其他用戶個人CSS/JS。因為這會容許盜取目標用戶帳戶,有同等安全考慮,故此二權限將會作出同樣限制。(遠期目標,見T197087
如此,editsitejson 新權限有受影響嗎?
此權限供用戶編修MediaWiki名字空間下之.json頁面(近期系統學會特別地處理的東西,以作為小工具及機械人設定頁)。JSON是數據,而非代碼,編輯並不會構成風險,是故管理員會繼續有權限去修改。而小工具應該修整成就算攻擊者可以控制.json頁面,亦不應該能夠用以發動攻擊。

參考資料

  1. 縱觀頭五大維基,75%管理員未曾編輯過CSS/JS;92%管理員則幾乎未曾做過。
  2. https://phabricator.wikimedia.org/T190015#4193983