2 个版本
0.1.1 | 2022年7月24日 |
---|---|
0.1.0 | 2022年7月23日 |
#6 in #trying
用于 rust-warrior
6KB
52 行
ncurses-lite
这是一个对 ncurses
的轻量级(微观)重构。
想法源于尝试在 rust-warrior
中使用 ncurses-rs
,并在 GitHub dependabot 接收到警报后产生的。
安全问题
格式字符串处理不当
在 Rust 的 ncurses 包中发现了一个问题。在
printw
函数中存在格式字符串问题,因为 C 格式参数被错误处理。
缓冲区溢出和格式漏洞
在 Rust 的 ncurses 包中发现了一个问题。在
instr
和mvwinstr
函数中存在缓冲区溢出,因为这些函数与 C 函数的交互处理不当。
instr
函数的注释如下
pub fn instr(s: &mut String) -> i32
{
/* XXX: This is probably broken. */
unsafe
{
放心吗?
mvwinstr
函数也有相同的注释
pub fn mvwinstr(w: WINDOW, y: i32, x: i32, s: &mut String) -> i32
{
/* XXX: This is probably broken. */
unsafe
{
这些漏洞已在此问题中报告,其中链接到
- CVE-2019-15548(详细说明见CWE-119)
- CVE-2019-15547(详细说明见CWE-134)
网上有一些 curses 文档,例如这个页面记录了 innstr
函数系列。
如果...
鉴于有漏洞的函数的复杂性质,以及验证它们是否目前“损坏”或更改是否也会“损坏”的困难...
并且这些函数都没有在 rust-warrior
中使用...
另一个选择是创建一个库,该库在不包含这些漏洞的情况下暴露 ncurses 的必要部分给 Rust,只需简单地省略那些函数即可。
API
以下函数已实现
initscr
endwin
curs_set
newwin
waddch
waddstr
wclear
wrefresh
依赖项
~43KB