Amazon Web Services (AWS) is a comprehensive and broadly adopted cloud provider, offering over 200 fully featured services, including compute, database, storage, networking and content delivery, machine learning, Internet of Things and many others. AWS SDKs provide access to AWS services through API endpoints. However, incorrect use of these APIs can lead to code defects, crashes, performance issues, and other problems. This paper presents automated static analysis rules, developed in the context of a commercial service for detection of code defects and security vulnerabilities, to identify deviations from AWS best practices in Python applications that use the AWS SDK. Such applications use the AWS SDK for Python, called "Boto3", to access AWS cloud services. However, precise static analysis of Python applications that use cloud SDKs requires robust type inference for inferring the types of cloud service clients. The dynamic style of Boto3 APIs poses unique challenges for type resolution, as does the interprocedural style in which service clients are used in practice. In support of our best-practices goal, we present a layered strategy for type inference that combines multiple type-resolution and tracking strategies in a staged manner. From our experiments across >3,000 popular Python GitHub repos that make use of the AWS SDK, our layered type inference system achieves 85% precision and 100% recall in inferring Boto3 clients in Python client code. Additionally, we present a representative sample of eight AWS best-practice rules that detect a wide range of issues including pagination, polling, and batch operations. We have assessed the efficacy of these rules based on real-world developer feedback. Developers have accepted more than 85% of the recommendations made by five out of eight Python rules, and almost 83% of all recommendations.
翻译:亚马逊网络服务(AWS)是一个全面且广泛接受的云端提供者,提供200多个完整功能化服务,包括计算、数据库、存储、网络和内容提供、机器学习、Things的互联网等。AWS SDKs通过API端点提供AWS服务。然而,不正确使用这些API可能会导致代码缺陷、崩溃、性能问题和其他问题。本文介绍了自动静态分析规则,这是在发现代码缺陷和安全弱点的商业服务背景下开发的,目的是查明使用 AWSSSSDK 的Python应用中AWSWS最佳做法的偏差。这种应用使用Python(AWSDK)的AWSSSSSSS SDK, 称为“BOT3”,用于访问AWSWS的 A-SDSDSD3, 准确性地分析 Python应用的PSDRion 规则的精确性类型。我们从多种操作方法中,我们从85的SDSDSDSeral 战略中,我们从85的SDSDReral 的排序中,我们用到85的顺序,我们现在的SDRervial 的顺序,我们用到八种战略的顺序,我们用到现在的SDFDR。