中文

Python与Java API中的盲点导致漏洞代码

软件工程 2021-03-11 v1 密码学与安全

摘要

API中的盲点可能导致软件工程师引入漏洞,但不幸的是这类盲点十分常见。我们通过复现一项涉及109名开发者、24个Java API的受控实验,研究带有盲点的API对两种语言中开发者的影响。我们的复现针对Python,涉及129名新开发者和22个新API。我们发现,使用带有盲点的API在统计上显著降低了开发者在两种语言中正确推理API的能力,但Python中的影响更为明显。有趣的是,对于Java,该影响随依赖API的代码复杂度增加而增强,而对于Python则相反。开发者是否认为API使用更困难、更不清晰或更不熟悉,对其正确推理的能力没有影响。具有更好长期记忆回忆能力的开发者更可能正确推理带有盲点的API,但短期记忆、处理速度、情景记忆和记忆广度均无影响。令人惊讶的是,专业经验和专长并未改善开发者在两种语言中推理带有盲点API的能力,具有多年经验的资深从业者犯错频率与相对新手相当。最后,人格特质对Python开发者推理带有盲点API的能力无显著影响,但外向性较低且开放性较高的开发者更善于推理Java中带有盲点的API。总体而言,我们的研究结果表明API中的盲点是跨语言的严重问题,且经验和教育本身无法克服该问题,这意味着需要工具来帮助开发者在编写使用这些API的代码时识别其中的盲点。

关键词

引用

@article{arxiv.2103.06091,
  title  = {Blindspots in Python and Java APIs Result in Vulnerable Code},
  author = {Yuriy Brun and Tian Lin and Jessie Elise Somerville and Elisha Myers and Natalie C. Ebner},
  journal= {arXiv preprint arXiv:2103.06091},
  year   = {2021}
}