eclipse-paho / paho.mqtt.embedded-c

Paho MQTT C client library for embedded systems. Paho is an Eclipse IoT project (https://iot.eclipse.org/)
https://eclipse.org/paho
Other
1.37k stars 757 forks source link

Add CodeQL Workflow for Code Security Analysis #253

Closed b4yuan closed 1 year ago

b4yuan commented 1 year ago
    # Summary

    This pull request introduces a CodeQL workflow to enhance the security analysis of this repository.

    # What is CodeQL

    CodeQL is a static analysis tool that helps identify and mitigate security vulnerabilities. It is primarily intra-function but does provide some support for inter-function analysis. By integrating CodeQL into a GitHub Actions workflow, it can proactively identify and address potential issues before they become security threats.

    For more information on CodeQL and how to interpret its results, refer to the GitHub documentation and the CodeQL documentation (https://codeql.github.com/ and https://codeql.github.com/docs/).

    # What this PR does

    We added a new CodeQL workflow file (.github/workflows/codeql.yml) that
    - Runs on every pull request (functionality to run on every push to main branches is included as a comment for convenience).
    - Runs daily.
    - Excludes queries with a high false positive rate or low-severity findings.
    - Does not display results for git submodules, focusing only on our own codebase.

    ## Validation

    To validate the functionality of this workflow, we have run several test scans on the codebase and reviewed the results. The workflow successfully compiles the project, identifies issues, and provides actionable insights while reducing noise by excluding certain queries and third-party code.

    ## Using the workflow results

    If this pull request is merged, the CodeQL workflow will be automatically run on every push to the main branch and on every pull request to the main branch. To view the results of these code scans, follow these steps:
    1. Under the repository name, click on the Security tab.
    2. In the left sidebar, click Code scanning alerts.

    # Is this a good idea?

    We are researchers at Purdue University in the USA. We are studying the potential benefits and costs of using CodeQL on open-source repositories of embedded software.

    We wrote up a report of our findings so far. The TL;DR is “CodeQL outperforms the other freely-available static analysis tools, with fairly low false positive rates and lots of real defects”. You can read about the report here: https://arxiv.org/abs/2310.00205

    # Review of engineering hazards

    License: CodeQL operates under the MIT License which grants anyone the right to use, copy, modify, merge, publish, distribute, sublicense, and/or sell (commercially or non-commercially) the software as-is.

    False positives: We find that around 20% of errors are false positives, but that these FPs are polarized and only a few rules contribute to most FPs. We find that the top rules contributing to FPs are: cpp/uninitialized-local, cpp/missing-check-scanf, cpp/suspicious-pointer-scaling, cpp/unbounded-write, cpp/constant-comparison, and cpp/inconsistent-null-check. Adding a filter to filter out certain rules that contribute to a high FP rate can be done simply in the workflow file.
b4yuan commented 1 year ago

closing to reformat