Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug Report]: Patch for CVE-2020-5235 in reused component nanopb #17

Open
ltcdCai opened this issue Jul 19, 2024 · 0 comments
Open

[Bug Report]: Patch for CVE-2020-5235 in reused component nanopb #17

ltcdCai opened this issue Jul 19, 2024 · 0 comments

Comments

@ltcdCai
Copy link

ltcdCai commented Jul 19, 2024

Contact me: [email protected]

Version: master (default) Commit hash: 3d44f46

我通过使用V1SCAN(一个扫描存在于复用代码中1-Day漏洞的工具),发现您的项目中/sdk/合宙/air780e/csdk/luatos-soc-2022/thirdparty/nanopb/pb_decode.c文件中的decode_pointer_field函数可能存在类型为CWE-125 Out-of-bounds Read的漏洞,相关触发逻辑类似GHSA-6f6v-26gj-6crp, 具体参考链接如下:

CVE-2020-5235:
NVD说明链接:
https://nvd.nist.gov/vuln/detail/CVE-2020-5235
commit修复链接:
nanopb/nanopb@aa9d0d1

修复方法:
把/sdk/合宙/air780e/csdk/luatos-soc-2022/thirdparty/nanopb/pb_decode.c文件中的643-647行代码

                (*size)++;
                if (!allocate_field(stream, iter->pData, iter->pos->data_size, *size))
                    return false;
            
                pItem = *(char**)iter->pData + iter->pos->data_size * (*size - 1);

替换为如下代码:

                if (!allocate_field(stream, iter->pData, iter->pos->data_size, (size_t)(*size + 1)))
                    return false;
            
                pItem = *(char**)iter->pData + iter->pos->data_size * (*size);
                (*size)++;

考虑到其可能存在的潜在风险,我愿意配合您以负责任的方式及时核实、解决和报告发现的漏洞。 如果您需要任何进一步的信息或帮助,请随时与我联系。如果需要,我也可以提交PR帮助您修复。 谢谢您,期待尽快收到您的回复!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant