新闻
包接管漏洞通知
2021年2月23日上午9:56 EST,包控制被通知到默认频道包爬虫工作流程中存在一个包接管漏洞。这个问题是由苹果信息安全部门的Sven Blumenstein报告的。
2021年2月23日上午10:28 EST,包控制确认收到了接管漏洞的通知。2021年2月23日上午11:32 EST,对默认频道服务器部署了缓解措施,修复了漏洞。
利用这个漏洞的方法如下
- 默认频道的包的作者需要删除他们的GitHub或BitBucket账户
- 必须创建一个新的用户账户(新作者),其名称与删除的账户相同
- 新作者必须创建一个与包存储库相同的名称的存储库
- 新作者必须创建一个包含更高版本号的包的新发布版
- 新安装和现有安装的包将安装来自新作者的包的版本
漏洞的存在是因为默认频道的爬虫允许托管服务离线并重新上线。不幸的是,这种稳健的行为,在托管服务提供商离线的情况下,无意中允许用户名(或域名)在未经审查的情况下转让所有权。
在修复漏洞后,对包数据库进行了审查。在报告时,有31个GitHub用户账户和1个BitBucket用户账户容易受到接管攻击。14个GitHub账户已转让所有权,但未保留以前的包存储库。没有发现恶意接管,但是默认频道爬虫并不维护每个包每次更改的日志。
从现在起,所有离线的包在可用之前都必须手动审查。
如果您对此事件有任何疑问,请通过[email protected]与我联系或在该网站问题跟踪器上创建一个问题。
Package Control 3.0已发布!
我很高兴宣布Package Control 3.0的发布!这个版本增加了一些修饰,改善了用户和包开发者的Sublime Text体验。
截至2014年7月,我现在为自己工作。这让我有更多的时间贡献开源软件,包括包控制。如果你认可我所做的工作,请考虑进行小额捐赠。如果即使是5%的正常用户捐赠了咖啡或啤酒的价格,那就足以覆盖我的开发时间!有关选项,请参阅关于页面。
以下要点详细说明了新版本的某些较大方面。
向后兼容性中断
- 对于有自定义SSL CA证书的用户,请注意,任何自定义证书现在必须存储在包/Packages/User/Package Control.user-ca-bundle。此机制取代了旧的证书设置。一般来说,这不应该必要,因为包控制现在利用操作系统证书存储来存储CA证书。
- 已删除“创建二进制包文件”命令,但已用package_profiles设置替换,该设置允许不同的包创建配置。更多详细信息,请参阅创建包文件。
依赖关系
- Package Control 现在支持包依赖,以便于运送需要由包使用的非用户界面二进制文件。这些通常包括编译后的 Python 模块和可执行文件。要了解更多信息,请阅读依赖项文档。
- 在运行任何其他非默认包之前运行的包加载器。这会将依赖文件夹添加到sys.path并确保package_controlPython 模块始终可用,而无需等待 Sublime Text 加载所有在字母顺序上位于 Package Control 之前的包。包控制.
升级
- 改善了涉及编辑器定制的包升级的处理。主题、颜色方案和语法升级将不再导致 Sublime Text 出错信息。如果包含这些内容的包正在升级,Package Control 将在启动之前将设置更改为默认值。完成后,将恢复自定义设置。
- 使用的文件升级得到改善。Package Control 在 Windows 上执行额外步骤,以便升级使用各种二进制文件(如 DLL 和可执行文件)的包。
- 添加了一个包事件 API,允许包知道它们是否刚刚安装、即将升级、刚刚升级或即将被删除。有关更多详细信息,请参阅事件文档。
- 由 Sublime Text 关闭或重启所中断的包升级将不会导致包被留在ignored_packages设置中。
命令
已添加到命令面板中的一些额外命令,包括
- 高级安装包通过逗号分隔的列表安装包
- 列出非管理包列出不受 Package Control 控制的包
- 移除频道帮助移除频道
- 移除仓库帮助移除仓库
同步
- Package Control 现在将在启动时删除已被从installed_packages列表中删除的包。这提高了推荐配置,即仅同步 Packages/User/ 文件夹。
- 现在将检测到不正确的包同步,并且将用户通知问题。只有在将专为特定平台或 Sublime Text 版本的包复制到不兼容的机器时,才会提出同步警告。
Python Patch
- 升级了 Windows 上 Sublime Text 2 的 SSL 支持。_ssl.pyd文件安装在 Windows 上的 ST2 上,并且是针对最新版本的 OpenSSL 编译的。这允许通过 SHA-2 签名的安全连接验证现代 SSL 证书。
- Package Control 现在修复了 Windows 上 Sublime Text 2 的 Pythonselect模块。此补丁将使该模块可用于所有包。select
安全
- 现在所有仓库和包都必须使用 SSL 以提高安全性。
- Linux 的 SSL 支持。Package Control 现在提供_ssl.so 文件,这些文件与 OpenSSL 0.9.8 和 1.0.x 兼容 (both libssl-1.0.0 和 libssl-10)。多亏了新包加载器,这些文件在加载任何其他包之前被注入。包开发者不必单独捆绑它们,或使用 curl/wget 的日子已经一去不复返。
- SSL CA证书现在 100% 来自操作系统。以前,Package Control 包含了将 SSL CA证书分发的功能,以允许在 Mac 和 Windows 上验证 SSL证书。随着版本 3.0 的发布,Package Control 现在可以从 Windows 信任存储中导出 SSL CA证书,以便 OpenSSL 使用。这使 PC不再负责以安全的方式分发 SSL CA证书。
- 增加了解析器,允许Package Control使用SubjectAltName字段的证书验证SSL证书,这些证书对多个主机名都有效。此前,此类证书仅支持在Sublime Text 3中。
HTTP
- 针对Windows版本重写了基于Urllib的下载器。在第2.0版中,Package Control从对Windows的urllib下载切换到使用WinINet API。这使得PC可以将代理自动检测和SSL验证的所有工作委托给操作系统。不幸的是,由于本地策略,一些用户无法使用WinINet上网。其他用户在通过WinINet API进行SSL连接时遇到了问题。从第3.0版开始,Package Control将在WinINet无法连接时自动回退到urllib下载器。
- 现在使用基于bzip2的HTTP压缩来减少频道文件带宽的使用。现在每个Sublime Text安装都将提供bz2模块,以便其他包使用。
存储库和频道
- 发布了一个新的频道版本和存储库JSON文件的格式,它支持使用前缀标签来允许使用独立代码库的不同版本的Sublime Text进行语义版本控制。有关详细信息,请参阅example-repository.json。
- 发布了一个新的包,ChannelRepositoryTools,它为包开发者提供命令,以将旧版本的存储库JSON文件升级到最新标准。有关更多信息,请阅读频道和存储库。
文档
网站已添加或改进了各种文档,包括
3.0测试版
经过几个月的bug修复和功能开发,我很高兴地宣布第一个Package Control 3.0测试版!在接下来的几天里,我希望让更多的用户试用,以解决任何最后的问题。希望3.0的发布不会像2.0那样激动人心。
将通过Package Control消息显示一组完整的发布说明,但以下是亮点
- 依赖支持
- Linux版本的SSL模块
- 无错误的主题、配色方案和语法升级
- Windows上的改进HTTP支持
- 通过《用户/》文件夹同步包删除功能
- 打开 并将install_prereleases设置设置为真是
- 运行“添加存储库”命令并输入https://sublime.wbond.net/prerelease/packages.json.
- 运行“升级包”命令,并选择“Package Control”
如果您愿意帮忙,请按照以下说明升级到3.0.0测试版。一旦升级,请关注Sublime Text控制台中的Python异常。如果遇到任何问题,请打开问题。
谢谢您的帮助!
同步文档
网络上有很多指南可以帮助您设置机器,以便您的Sublime Text包和设置可以从一台电脑复制到另一台电脑。不幸的是,大多数这些指南都没有考虑到某些包在不同操作系统中有不同版本的事实。
今天早上,我在文档部分添加了一个新页面,标题为同步,链接为同步。它解释了同步软件包可能存在的问题,并提供了一些使用 Git 和 Dropbox 的指南。如果您对此有任何改进建议,或对其他文档有任何建议,请填写GitHub issue。
启发性慷慨,Gittip 风格
在新站点的发布和扩展的软件包详细信息页面中,我想开始一个实验,让支持软件包开发者变得更加容易。当然,我在这个过程中的作用相对较小,因为我只是为每个作者提供链接。真正使得这一切成为可能的是由 Gittip,由 Chad Whitacre 创立。
几周前,我非常兴奋地看到当 John Resig 宣布 Khan Academy 开始每周给他们的开发者支付 5 美元以感谢使他们的工作成为可能的开源开发者时,Gittip 收到了很多关注。
我希望通过揭示维护 Sublime Text 各个软件包的 1,000 多位开发者的工作,我们可以互相鼓励说“谢谢!”
如果你从未尝试过,Gittip 提供每周捐赠金额小至 0.25 美元。这看起来可能微不足道,但如果只有 100 个用户每周捐赠 0.25 美元,开发者就能收到 25 美元。考虑到一些流行软件包的用户数量以万计,这些小额捐赠应该可以产生重大影响,并鼓励未来的开源工作。
最后,我想强调一下一些包控制贡献者过去几个月所做的工作。这些开发者花费时间审核并向其他包开发者提供反馈,以便将拉取请求合并到默认渠道。
新的包控制网站
我的网站上托管的老社区软件包列表确实是一个非常实用的快速的Hack,用于让用户更容易尝试并找到软件包。我一直都知道有很多可用性问题,还有很多改进的空间。
当宣布了 Sublime Text 3 的第一个 alpha 版本时,我知道我面前有很多工作要适应支持多个版本的 Sublime Text 的架构。我也把这看作是将 Python(用于 Package Control)和 PHP(用于旧的社区软件包列表)的代码库合并到单个可重用库的机会。
在追求这个目标的过程中,我大大扩展了通道系统可以提供的信息。这些信息极大地增强了新的包控制网站,包括每个软件包的深入了解。
我相信你们很多人都已经尝试过了,但以下是新站点的一些亮点
-
每个软件包的详细信息页面,包括常规信息,还有
- 过去一个月的安装图,按平台切换
- 到问题跟踪器和捐赠页面的链接
- 简介内容以了解有关软件包的更多信息
- 初始页面加载时的 HTML 内容,以及后续请求的 JSON 驱动 pushState 架构,以提供更流畅的浏览体验
- 通过在大多数 URL 后附加.json来访问所有数据的 JSON 版本
- 响应式设计,允许在桌面、平板电脑和手机上轻松浏览
- 具有所有矢量图形的视网膜友好型设计
- 开源 - 在接下来的几天内,整个网站的源代码将以许可的方式在 GitHub 上发布,以便合作
Package Control 2.0
经过数月的等待,Package Control 2.0终于发布。这次发布汇聚了数百次提交,并包含了众多新特性。
- 支持Sublime Text 3,包括支持Sublime Text 2或Sublime Text 3的不同版本包。
- Windows上的新WinINet下载器,它挂钩到操作系统子系统以从互联网下载文件。这大大提高了代理支持并消除了分发SSL CA证书的需求。
- 为Mac和Linux更新了下载器,利用操作系统的SSL CA证书包。
- 通过.sublime-package文件在ST3中正确安装包。这允许用户用他们自己的版本覆盖包中的单个文件。必须解压的包只需要在包根目录中有一个名为.no-sublime-package的文件。
- 频道和仓库的新架构,使正确添加包到频道变得很容易,轻松覆盖包详细信息并提供更多信息。
- 支持通过标签轻松发布包。
- 用于对包进行分类的标签系统。
- 迁移到semver.org进行版本语义版本控制,同时提供一个选项来忽略预发布包版本。
- 支持HTTP请求的缓存,允许创建更多基于GitHub的定制仓库而不会达到每小时限制。
- Urllib下载器的Keep-Alive支持,使对同一服务器的多个请求更快且更少出错。
- 许多许多的bug修复和小的用户体验改进。
频道离线
现在到了我不能心安理得继续开放默认频道的BitBucket镜像进行合并请求的时候了。由于收到的合并请求数量庞大,我们目前在GitHub上有三位非常固定的志愿者在审查所有请求。不幸的是,BitBucket上的流量较低,往往会被遗忘。在两个版本控制系统中积极维护一个存储库在尝试自动化维护任务时会出现其他问题。
虽然我一直努力为我的各种开源项目提供尽可能多的兼容性,但我认为关闭BitBucket镜像的结果绝对是有益的。多亏了GitHub网站上基于编辑的功能和当前的TravisCI测试设置,对于不熟悉git的包开发人员来说,为他们自己的包添加条目应该没有任何问题。
重置统计信息
一些用户可能注意到了默认频道服务器上短暂的停机。现在我已经关闭了频道以纠正包安装统计中一个长期存在的漏洞。
由于处理Package Control使用提交的脚本中的bug,所有操作包括升级和删除都被计算为安装。对于有大量版本的包来说,这种影响更为严重。每次包的新版本发布并且用户更新时,安装和唯一安装都会错误地增加。
从项目初期开始,我就决定维护每个使用提交的完整历史记录,以防需要重构信息。用户经历的短暂停机是完全清除所有安装统计并将其重新生成的主使用表中。
这个功能的不利之处在于,许多包的开发者将会看到他们的安装量下降。随着Package Control 2.0版即将发布以及新网站上线,记录和显示所有这些信息的源代码将会开源。希望这将为其他开发者提供机会,既能帮助他们改进,也能帮助审查代码库,从而更早地发现此类错误。