我读过手册,也搜索过他们的 GitHub。除了“下载最新的二进制文件并替换现有文件(它以某种方式确定了文件的位置)”之外,我找不到任何有关此命令功能的信息。
youtube-dl -U
但是它是否也会检查校验和/签名以确保它没有被泄露?我发现从他们的网站手动下载 youtube-dl 然后将其上传到 VirusTotal 然后手动替换二进制文件是一项艰巨的任务。
即使它进行了签名/校验和检查,如果开发人员的机器已被破坏,或者他们使用的任何机制来分发二进制文件,它仍然是不安全的。
答案1
我想说,假设你首先信任他们,那么它看起来相当安全。
它是否还检查校验和/签名以确保它没有被泄露?
是的。如果你看看更新.py在 github 上它会下载一个文件版本.json并检查其签名。
UPDATE_URL = 'https://yt-dl.org/update/'
VERSION_URL = UPDATE_URL + 'LATEST_VERSION'
JSON_URL = UPDATE_URL + 'versions.json'
UPDATES_RSA_KEY = (0x9d60ee4d8f805312fdb15a62f87b95bd66177b91df176765d13514a0f1754bcd2057295c5b6f1d35daa6742c3ffc9a82d3e118861c207995a8031e151d863c9927e304576bc80692bc8e094896fcf11b66f3e29e04e3a71e9a11558558acea1840aec37fc396fb6b65dc81a1c4144e03bd1c011de62e3f1357b327d08426fe93, 65537)
.
.
if 'signature' not in versions_info:
to_screen('ERROR: the versions file is not signed or corrupted. Aborting.')
return
signature = versions_info['signature']
del versions_info['signature']
if not rsa_verify(json.dumps(versions_info, sort_keys=True).encode('utf-8'), signature, UPDATES_RSA_KEY):
to_screen('ERROR: the versions file signature is invalid. Aborting.')
return
该文件包含 .exe(和其他发布类型)的 SHA,它会根据下载的内容进行检查:
newcontent_hash = hashlib.sha256(newcontent).hexdigest()
if newcontent_hash != version['exe'][1]:
to_screen('ERROR: the downloaded file hash does not match. Aborting.')
return
即使它进行了签名/校验,如果开发人员的机器被入侵,它仍然不安全
如果他们也丢了钥匙,那么是的,但所有事情都是如此。
有人必须入侵他们的服务器并复制版本.json即用他们的钥匙签名包含不同的 .exe 哈希值,并且可能包含不同的下载位置。