上週,GitHub 有個“安全問題”——CFOR(Cross Fork Object Reference)衝上了熱搜,該問題的表現是:
遠端倉庫的提交內容任何人可以訪問,即使已被刪除。只需要拿到 commit ID+源/Fork 的專案地址,任何人都能訪問之前提交到遠端倉庫的內容。下面有 3 個演示,可以復現該問題:
演示一:Fork 專案已刪除,之前的提交所有人可見,復現步驟如下:
- Fork 任意公開的開源專案(源專案)
- 在 Fork 專案中提交 commit 並推送到遠端倉庫(push)
- 記下 commit ID 後刪除 Fork 專案
- 訪問源專案,並在位址列拼接上 commit ID,即可檢視之前的提交內容
演示二:源(上游)專案已被刪除,但透過 Fork 專案地址和 commit ID,仍可訪問源專案的提交內容。
演示三:源專案是私有專案,被 Fork(私有)後,源專案設定為公開,此時 Fork 專案中的私有內容可被任何人訪問。
對此,GitHub 官方很早之前就回應過,這些不是 bug,而是故意為之的特性。既然如此,我們應該如何規避這些安全隱患呢?限於篇幅,詳細討論將在正文中展開。
說回本周的開源熱搜專案,第一個開源專案是推薦給 GitHub 產品經理的 refined-github,這是一個來自“民間”的最佳化 GitHub 使用體驗的瀏覽器外掛。一體化的令牌管理平臺 Infisical,能夠有效地防止令牌和金鑰資訊洩漏。友好的聯邦學習框架 Flower,開箱即用對新手友好。
最後,極簡的 GPT-4o 客戶端和用 AI 智慧批次重新命名檔案的工具 ai-renamer,都是能幫你提升效率的 LLM 應用神器。
- 本文目錄
- 1. 開源新聞
- 1.1 防範 CFOR 問題的建議
- 2. 開源熱搜專案
- 2.1 最佳化 GitHub 體驗的瀏覽器外掛:refined-github
- 2.2 一體化的令牌管理平臺:Infisical
- 2.3 Linux 核心模組程式設計指南:lkmpg
- 2.4 友好的聯邦學習框架:Flower
- 2.5 用 AI 批次重新命名檔案:ai-renamer
- 3. HelloGitHub 熱評
- 3.1 免費的視覺化 Web 頁面構建平臺:GrapesJS
- 3.2 極簡的 GPT-4o 客戶端:gpt-computer-assistant
- 4. 結尾
- 1. 開源新聞
1. 開源新聞
1.1 防範 CFOR 問題的建議
爆出這個問題的文章,原標題是《Anyone can Access Deleted and Private Repository Data on GitHub》,我認為有些誇張,因為必須滿足以下條件:
- 你需要推送改動到遠端倉庫
- 你必須知道特定的 commit ID
- 機密資訊本身就不應該推送到遠端倉庫
但刪除/私有內容能在公網訪問,這設計確實“反人類”。如果官方不改進,我們只能規範使用 GitHub 的流程來防止機密洩露,下面是我給出的建議:
- 不要在專案中放明文的金鑰和令牌等機密資訊,應該放在本地的環境變數中。
- 避免直接在 GitHub 網頁上進行敏感操作,因為會自動執行 push 操作。
- 在本地設定 git hook 自動進行洩密檢查,從源頭控制洩密風險。
- 在將私有專案開源之前,必須進行脫敏檢查。此外,即使開發私有的 Fork 專案,也應加上防止洩密的檢查流程。
最後,值得一提的是 git 懸空提交,它通常用於找回被誤刪和被 force 掉的提交。如果你曾經“有幸”用過:git fsck –lost-found
命令,當時的心情大概是劫後餘生,感謝這條神命令又救了你一命!
git push 命令不會推送懸空提交。
2. 開源熱搜專案
2.1 最佳化 GitHub 體驗的瀏覽器外掛:refined-github
主語言:TypeScript,Star:23.8k,周增長:200
這是一個簡化 GitHub 介面並新增實用功能的開源瀏覽器外掛,它透過移除頁面的多餘元素讓介面和互動更加簡潔,新增了空白字元可見、一鍵合併修復衝突和放棄 PR 中某個檔案的所有修改等實用功能,最佳化了 GitHub 使用體驗,支援 Chrome 和 Firefox 瀏覽器。
GitHub 地址→github.com/refined-github/refined-github
2.2 一體化的令牌管理平臺:Infisical
主語言:TypeScript,Star:13.3k,周增長:150
該專案可以幫助團隊集中管理應用配置和機密資訊,防止 API TOKEN、密碼和公鑰等資訊洩漏。它提供了簡單的介面、客戶端 SDK、命令列工具和 API 介面,方便集中管理並整合進現有的專案和 CI/CD 流程,同時還支援令牌掃描等功能,防止 git 提交時洩密。
GitHub 地址→github.com/Infisical/infisical
2.3 Linux 核心模組程式設計指南:lkmpg
主語言:Other,Star:7.3k,周增長:170
這是一本關於如何為 Linux 核心編寫模組的指南,包含了針對最新的 5.x 和 6.x 核心版本的示例。Linux 核心模組是為 Linux 核心新增新功能的一種方法,無需修改核心本身和重啟系統,編寫此類程式需要具有 C 程式語言基礎。
GitHub 地址→github.com/sysprog21/lkmpg
2.4 友好的聯邦學習框架:Flower
主語言:Python,Star:4.6k,周增長:200
聯邦學習是一種分散式的機器學習方法,可以在不共享資料的情況下訓練模型。該專案是一個簡單易用的聯邦學習框架,可與流行的機器學習框架(PyTorch、TensorFlow、JAX 和 scikit-learn 等)結合使用。它支援聯邦學習訓練、分析和評估,以及模擬客戶端執行等功能,包含豐富的示例,適用於需要保護隱私的機器學習模型開發場景,如醫療、政企和金融等。
import flwr as fl
import tensorflow as tf
# Load model and data (MobileNetV2, CIFAR-10)
model = tf.keras.applications.MobileNetV2((32, 32, 3), classes=10, weights=None)
model.compile("adam", "sparse_categorical_crossentropy", metrics=["accuracy"])
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()
# Define Flower client
class CifarClient(fl.client.NumPyClient):
def get_parameters(self, config):
return model.get_weights()
def fit(self, parameters, config):
model.set_weights(parameters)
model.fit(x_train, y_train, epochs=1, batch_size=32)
return model.get_weights(), len(x_train), {}
def evaluate(self, parameters, config):
model.set_weights(parameters)
loss, accuracy = model.evaluate(x_test, y_test)
return loss, len(x_test), {"accuracy": accuracy}
# Start Flower client
fl.client.start_numpy_client(server_address="127.0.0.1:8080", client=CifarClient())
GitHub 地址→github.com/adap/flower
2.5 用 AI 批次重新命名檔案:ai-renamer
主語言:JavaScript,Star:1.1,周增長:200
這是一個 Node.js 寫的命令列工具,基於 LLM(Llava、Gemma、Llama 等)實現智慧、自動化、批次重新命名本地檔案。它使用簡單、無需人為干預,可根據檔案的內容智慧重新命名檔案,支援影片、圖片和檔案。
GitHub 地址→github.com/ozgrozer/ai-renamer
3. HelloGitHub 熱評
在這個章節,將會分享下本週 HelloGitHub 網站上的熱門開源專案,歡迎與我們分享你上手這些開源專案後的使用體驗。
3.1 免費的視覺化 Web 頁面構建平臺:GrapesJS
主語言:TypeScript
該專案透過直觀的視覺化介面,讓使用者能夠透過拖拽的方式,快速設計和構建網站的 HTML 模板。它所見即所得、移動端適配,適用於官網、新聞和 CMS 等型別的網站。
專案詳情→hellogithub.com/repository/572e31f5fc7541efb19c16d331796edf
3.2 極簡的 GPT-4o 客戶端:gpt-computer-assistant
主語言:Python
該專案是適用於 Windows、macOS 和 Ubuntu 的 GPT-4o 客戶端,它擁有極簡的使用者介面,支援執行多種任務,包括讀取螢幕、開啟應用、系統音訊和文字輸入等。
專案詳情→hellogithub.com/repository/4688db1465d5437aab851a70ba39f1e2
4. 結尾
以上就是本期「GitHub 熱點速覽」的全部內容,希望你能夠在這裡找到自己感興趣的開源專案,如果你有其他好玩、有趣的 GitHub 開源專案想要分享,歡迎來 HelloGitHub 與我們交流和討論。
往期回顧
- 英偉達又向開源邁了一步
- 將傳統應用帶入瀏覽器的開源先鋒