2024年7月2日 星期二

Linux 開發維護 - OpenSSH Server 資安漏洞補強,資安事件代號:CVE-2024-6387 @ Ubuntu 22.04

2024.07.02 一早就看到了 OpenSSH Server 漏洞,到處都在講,可參考 iThome 的文章:

iThome 2024.07.02 - OpenSSH含有可遠端攻陷伺服器的回歸漏洞

其中文章最後有提到:

OpenSSH團隊亦於本周一釋出了OpenSSH 9.8/9.8p1, 以修補CVE-2024-6387及另一個邏輯漏洞。該團隊亦說明,在實驗室環境下,要攻陷CVE-2024-6387需要不斷建立連結並持續6~8小時,直至達到伺服器極限,目前已於具備ASLR的32位元Linux系統上成功展現。

因此,除了修正外,也可以安裝一些阻擋 retry ssh 登入的行為,以前學生時代裝 denyhosts ,現在問 ChatGPT 得到 fail2ban 套件,在 Ubuntu 22.04 快速上手:

$ sudo apt-get update
$ sudo apt-get install fail2ban
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
$ sudo systemctl restart fail2ban

建議還是要去看一下 /etc/fail2ban/jail.local 設定,像是 sshd retry 幾次會阻擋,以此評估是不是適合自己(常打錯密碼擋到自己也很無奈的)。裝完就可以用以下指令得知資訊:

$ sudo fail2ban-client status sshd 
Distributor ID: Ubuntu 
Description: Ubuntu 22.04.4 LTS 
Release: 22.04 
Codename: jammy 
Status for the jail: sshd 
|- Filter 
| |- Currently failed: 4 
| |- Total failed: 13 
| `- File list: /var/log/auth.log 
`- Actions 
|- Currently banned: 0 
|- Total banned: 0 
`- Banned IP list: 

不過,回到 CVE-2024-6387 資安事件,其實只要單純把 Ubuntu 系統更新,Ubuntu TLS 都給你傳便便:


Ubuntu 24.04
openssh-client - 1:9.6p1-3ubuntu13.3
openssh-server - 1:9.6p1-3ubuntu13.3

Ubuntu 23.10
openssh-client - 1:9.3p1-1ubuntu3.6
openssh-server - 1:9.3p1-1ubuntu3.6

Ubuntu 22.04
openssh-client - 1:8.9p1-3ubuntu0.10
openssh-server - 1:8.9p1-3ubuntu0.10

例如 Ubuntu 22.04 openssh 1:8.9p1-3ubuntu0.10 內容:


openssh 1:8.9p1-3ubuntu0.10 source package in Ubuntu
Changelog
openssh (1:8.9p1-3ubuntu0.10) jammy-security; urgency=medium

  * SECURITY UPDATE: remote code execution via signal handler race
    condition (LP: #2070497)
    - debian/patches/CVE-2024-6387.patch: don't log in sshsigdie() in log.c.
    - CVE-2024-6387

 -- Marc Deslauriers <email address hidden>  Wed, 26 Jun 2024 09:11:55 -0400

而自己的系統就只要查一下是否有更新至此版即可:

$ sudo apt upgrade && sudo apt upgrade && lsb_release -a && sudo apt policy openssh-server && ssh -V
...
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy

openssh-server:
  Installed: 1:8.9p1-3ubuntu0.10
  Candidate: 1:8.9p1-3ubuntu0.10
  Version table:
 *** 1:8.9p1-3ubuntu0.10 500
        500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
        100 /var/lib/dpkg/status
     1:8.9p1-3 500
        500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages

OpenSSH_8.9p1 Ubuntu-3ubuntu0.10, OpenSSL 3.0.2 15 Mar 2022

2024年6月29日 星期六

ThinkPad E15 開機無法偵測到 SSD 排除 - 2101: Detection error on Storage Device0 (M.2 Main Slot)

這台是 ThinkPad E15 2020年版,是疫情期間買給長輩用的平價筆電,在 2024.06 開機讀不到硬碟,由於已經沒有保固,再加上想要送回廠修理的方式,全台只有四個點且週末、假日不營業,實在不太方便,就乾脆自己修吧!


給原廠修的主因是想保有正版 Windows,省去煩惱一些資安問題,而自己處理則是可以加強隱私保護,確保沒人可以存取硬碟內的資訊,像是自己物理破壞掉也行。

研究了一下,據說 Windows 8 以後的筆電,會把 Windows 序號已經綁定在韌體上(BIOS?),因此筆電外殼也不會再貼序號貼紙,就這樣,只需看看能不能取得正版 Windows ISO 即可重新安裝:

首先,先研究一下如何拆筆電後蓋殼子,隨意找一下,發現有個 Youtube 影片教學快速看一下,剛好家裡也有個塑膠墊片就拿來開了!第一次沒經驗也把塑膠墊片弄得變形 XD 整體上需要一點點技巧的,可直接看官網 Support 教學影片:Lenovo Support 拆解與更換影片 > 底蓋拆卸

先買了一個 SSD 外接盒(非必要)想試試看救資料,結果失敗 Orz 看來 SSD 真的一壞了就難靠個人救了,要也得交給專業的來。回過頭來,也買一個特價中 MSI M371 1TB NVMe M.2 SSD 來使用,接著使用微軟官網下載的 ISO 檔,實際測試安裝都是失敗告收 XD 使用 Windows 10 或 11 的 x64 ISO 製成的 USB 安裝碟,永遠卡在要指定驅動程式的步驟:


原先還誤以為 SSD 沒抓到,跑去研究更新 BIOS 等事情,最終回想起 Lenovo USB Recovery Creator 工具,透過 Lenovo USB Recovery Creator 工具可以找到符合自己筆電的還原檔案(總共約11GB)並製作成還原隨身碟,必須找另一台 Windows 環境來運行該程式。整體上花 10分鐘下載資料,製作 USB 開機碟還要花個 20 分鐘。



終於,可以用 USB 還原隨身碟安裝 Windows 10 了:


以上步驟筆記:
經過了上述流程,終於筆電開起來是一個 Windows 10 Home 環境,接著就是一連串的 Windows 更新(數小時),預計最後要升級到 Windows 11 才收工,努力了 Orz 這時記得要先調整電源方案,調整成使用電源供電中不休眠。

當 Windows 10 安全更新至最新後,一直沒法收到 Windows 11 通知,只有一些 Windows 11 的簡介,像是跳轉到微軟官網看。後來透過以下方式可以更主動升級到 Windows 11:

2024年6月20日 星期四

AI開發筆記 - 使用 OpenAI API 對文字抽特徵向量 (embedding) 並使用 FacebookResearch Faiss library 作向量搜尋

之前公司已經訓練出簡單的 AI Model 做一些應用,想要使用 Retrieval Augmented Generation (RAG) 架構進行加強,現在就先想到靠 OpenAI API with text-embedding-3-small model 來對文字抽特徵向量,接著把它存起來,再透過 FacebookResearch Faiss library 建立搜尋架構(尋找相似的向量),就可以完成簡易的向量搜尋。

整體流程:
  1. 整理一份 FAQ csv 格式,並把問題的文字,使用 text-embedding-3-small 模型抽特徵向量
  2. 使用 python pandas 用 csv 結構存起來
  3. 從 csv 建構出 python pandas 結構,再轉成 Facebook Faiss 結構
  4. 把 query strings 使用 text-embedding-3-small 模型對文字抽特徵向量
  5. 再拿 query strings 特徵向量去搜尋相似向量,印出五筆資料

% python3 -m venv venv
% source venv/bin/activate
(venv) % python3 -V
Python 3.12.2
(venv) % sw_vers 
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79
(venv) % pip install -r requirements.txt 

輸入資料:

% cat .env 
OPENAI_API_KEY=sk-proj-XXXXXXXXXXXXXXXXXXXXXX

% tree data 
data
├── all_with_embeddings.csv
└── raw.csv

1 directory, 2 files

% head -n 1 data/raw.csv 
ID,Product,Question,Answer

% head -n 2 data/all_with_embeddings.csv 
ID,Product,Question,Answer,embedding
1,產品,如何安裝設備,1. 首先依照...,"[0.02327146753668785, -0.05237892270088196, ..., -0.001935890642926097]"

運行查詢:

% bash script_query.sh "我的設備沒有訊號,該怎樣處理"

2024年6月17日 星期一

2024生成式AI年會回放筆記 - 玉山銀行 GENIE: 金融服務建置生成式 AI 的困境與攻略


年初滑 linkedin 時就曾看到布丁提及 2024生成式AI年會 的活動,不過時間太遙遠,很難確保沒有期他活動會撞期(家庭第一)。後來還真的邊渡假邊看共筆筆記,第一眼就吸引我的是來自玉山銀行的徐銘霞的分享,自稱 GENIE 夫人,玉山銀行智能金融處主任工程師。從她的投影片中,已經可以窺探許多珍貴的研發經驗,包括從五人兼職的團隊做出POC後,跟長官要求資源(算力經費跟人力)成長到百人團隊,實在驚人,瞬間有感碰到貴人跟大公司資源的感慨,不是每個人都有這樣的緣分能被賞識且被投資,當然,不能抹滅的還是團隊的執行力。

由於網路上的討論文不算多,大多都被網紅 志祺七七 跟 薩泰爾娛樂 Sunny 給吸引走 XD 他們的分享文當然是很讚的,只是場域上跟我在意的 GAI 戰場不同,所以還是來寫一篇筆記吧!

我主要持續關注聯發科 DaVinci(達哥) 生成式AI平台,也加入 DaVinci (達哥)生成式AI平台社群 ,而玉山 GENIE 也正是同領域的!把玉山 GENIE 的分享+聯發科 達哥資訊拼湊一下,已經有非常多的乾貨可吸收。甚至財經網紅股癌在六月多集 podcast 也分享起聯發科達哥的一些細節。回過頭來,實在感恩有回放可以看,想到就覺得滿爽的,可以兩倍速以及不斷咀嚼片段,甚至講者沒有分享投影片也能從回放影片看到。

此場演講內容中,提到的玉山一開始切入點就是先做集團內的 ChatGPT 服務,做完再導入特定型應用的研發,接著提到全體公司使用率低,以及未來的規劃等。

一些足跡恰好讓我回想起近兩年公司的變化,先試著用 OpenAI API 包裝一些應用場景,如會議紀錄,可惜會議情境場域變化太多,想要靠同樣的 prompt 吃天下太難了,隨著時間,在 2024 年春天老闆搖旗吶喊,指派我幫公司導入 AI 輔助應用,當時研究幾輪後,先求個七十分,筆記了 企業導入 AI 輔助方案:廣義用法 ChatGPT / 設計行銷 Stable Diffusion 與 AI 主播 / 程式開發 Github Copilot 方案,其過程也研究了不少款對岸研發的 open source ,像是自行搭建 Private ChatGPT Web 的方式,或是 Coding 輔助抽換成各家 GAI API 方案等。

回到 GENIE 夫人 的演講內容,有一張投影片提到了整個研發時程:
  • [外部] 2022.11 ChatGPT 橫空出世
  • [內部] 2022.12 玉山行內 GAI 黑客松、LLM/RAG、PoC
  • [外部] 2023.02 Bing Chat
  • [外部] 2023.03 OpenAI GPT-4, Google Gemini 公布
  • [內部] 2023.03 玉山高階長官 GAI 科普課程、成立全行 GAI 工作小組
  • [內部] 2023.03 ~ 2023.06 玉山內部推廣 GAI WorkShop、GAI工作小組確認法規與需求
  • [內部] 2023.06 ~ 2023.09 建構通用型服務 GENIE 平台
  • [內部] 2023.09 ~ 2023.12 GENIE 試營運、開發特定型應用
  • [內部] 2024.01 GENIE 正式上線、特定型應用(RAG+GAI)上線測試
可以看到 GENIE 前期準備時程約 3個月(2023.03~2023.06),開發時程約 3個月 (2023.06~2023.09),試營運也是 3個月。其中,也看到玉山的 Best Practice 分享 - GENIE x RPA: 業務單位自行開發的負面新聞摘要日報,透過 RPA爬交易對手的相關新聞,每天利用 GENIE 判斷新聞為正面或負面,並提供摘要

我之前已接觸過一些 no code 服務略知一二,有些工程上要花大量心力研發的“模組”已經完全可以靠 LLM 頂替了。例如新聞的正面或負面的判斷上,可能一般人看到一兩句話沒有太多感觸,過去有緣在新創研發環境上,當時有個題目在做美食文章分析模組,粗略可以想成工程團隊:
  • 兩人開發 crawler 
  • 兩人開發分析模組,判斷文章是正面描述美食,還是負面描述美食
  • 兩人進行系統整合,並且建構出人機回饋評分架構,讓 n>5 位受過中文系專業訓練的成員評分模組判斷的正確性
這樣的人力配置,用 5位工程師來說嘴,一年就要燒掉 600~800萬的費用的。而現在,只要套用個 LLM 來判斷!真的很省錢。在另一場運輸領域的,也有用 OCR+LLM+RPA 加速百種紙本單據轉數位化的研發,有興趣都可以追一下。如李宏毅教授的線上課程【生成式AI導論 2024】第0講:課程說明,一開始也就舉這個為例:


回過頭來,真心感謝玉山銀行的徐銘霞的分享,如演講題目的“攻略“,想要把 AI輔助 導入公司使用真的很費心的,心有戚戚焉啊,包括並不是每個人可以從 ChatGPT 中得到成果,如同 Google Search 擺在眼前,高手跟普通人的搜尋效率還是天差地遠的。

這時就得佩服 志祺七七 推出的 simpleinfo.ai ,在業配腳本上規劃 SOP 來讓公司同仁能更快上手,這跟一些管理書籍提到高度相關,很多超強的大企業,其管理目標就是不斷將做事方式切得更細,目的是讓普羅大眾也能做好。

最後,有興趣可考慮看看 2024年會回放影片:videos.gaiconf.com/view/gaiconf1 ,感謝策展人李慕約,看完其他回放,才發現講者的議題都源自於策展人的規劃的,真收穫滿滿。

相關資訊:

2024年5月29日 星期三

2024 about time


前幾年趁 apple tv+ about time 特價台幣 90元收藏了。老實說,不曾再完整看過,夜深人靜時,還是會回想起片段的劇情,特別是人生的選擇,一旦做了選擇,正向的說,產生了新的變化,負面來說,已經無法退回到過去。

翻一下 blog ,原來七年前也曾 murmur 過,哈。

近幾年的變化,可能更加重偏心靈層面?似乎跟七年前不太一樣,唯一不變的是對時間的焦愁,只能不斷提醒自己,有些事該放下的。然後,開始重視人生資源的分配,六個罐子,雖然是被用在理財角度,其實最貴的是時間,包括自己周邊的親友和人事物。

像工作上碰到處理事情效率不佳的情況時,會退回一步想,是啊,大家都是混口飯吃的 XD 儘管資源重組(裁員)已成常態,但別把這當理由強推。許多管理書籍的重點也落在 SOP 這領域,重點是讓事情有進展,並且不依賴超強人才特質,實務上 overqualified 的人才也待不久的,卻也令人期待人才蛻變後,主管們多了這甜蜜的煩惱。

關於親友之間,反而被些大學好友不斷互相砥礪,持續增加自己的視野,但也能認清階級的差距。因資源不同而視野不同,煩惱也不同,絕對不會因此沒煩惱的。想起幾年跟總經理聊上幾句,我跟他分享同輩的在哪些美商陸商發展,他直接分享十多年前的別人挖角他的故事,翻翻手機內的聯絡人清單,某某某已經是該區域的 Top 50 富豪,當年跟著他的也 Top 100,但人生再來一次,是不是會放棄那個選擇?也著實是個有趣的議題。

回到自己的人生,越來越更重要的事需要珍惜,如何讓自己保有餘力去實踐,真的又是個 about time 的議題。每個人打從出生至今,每個階段拿到的手牌資源都不同,唯一不變的,仍是該好好的出牌。