Evaluating the Language-Based Security for Plugin Development
Naisheng Liang, Alex Potanin
TL;DR
The paper investigates security vulnerabilities in plugin development with a focus on language-based security and its limitations in preventing access-control breaches. It implements test plugins in IntelliJ (Java) and VS Code (JavaScript) to evaluate language-based controls and contrasts them with capability-based approaches such as Wyvern. Findings show that malicious plugin functionalities can be published and operate without triggering safeguards, indicating gaps in current security measures and the need for fine-grained access control strategies. The work contributes practical insights for IDE ecosystems and developers, highlighting trade-offs between language-based and capability-based security and outlining directions for enhanced plugin security and tooling.
Abstract
With the increasing popularity of plugin-based software systems, ensuring the security of plugins has become a critical concern. When users install plugins or browse websites with plugins from an untrusted source, how can we be sure that they do have any undesirable functions implicitly? In this research, we present a comprehensive study on language-based security mechanisms for plugin development. We aim to enhance the understanding of access control vulnerabilities in plugins and explore effective security measures by introducing a capability-based system. We also developed and evaluated test plugins to assess the security mechanisms in popular development environments such as IntelliJ IDEA and Visual Studio Code by utilising Java, JavaScript, and associated APIs and frameworks. We also explore the concept of capability-based module systems as an alternative approach to plugin security. A comparative analysis is conducted to evaluate the effectiveness of capability-based systems in addressing access control vulnerabilities identified in earlier sections. Finally, recommendations for improving plugin security practices and tools will be presented, emphasizing the importance of robust security measures in the ever-evolving landscape of software plugins.
