<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: RODRIGO SIDNEY COLQUE QUISPE</title>
    <description>The latest articles on Forem by RODRIGO SIDNEY COLQUE QUISPE (@rodrigo_sidneycolquequi).</description>
    <link>https://forem.com/rodrigo_sidneycolquequi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889989%2F01a2c073-b7e4-4d28-9337-b2294ffcec60.png</url>
      <title>Forem: RODRIGO SIDNEY COLQUE QUISPE</title>
      <link>https://forem.com/rodrigo_sidneycolquequi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rodrigo_sidneycolquequi"/>
    <language>en</language>
    <item>
      <title>Under the Hood: How Bandit SAST Analyzes Your Python Code</title>
      <dc:creator>RODRIGO SIDNEY COLQUE QUISPE</dc:creator>
      <pubDate>Tue, 21 Apr 2026 16:10:54 +0000</pubDate>
      <link>https://forem.com/rodrigo_sidneycolquequi/under-the-hood-how-bandit-sast-analyzes-your-python-code-2nj8</link>
      <guid>https://forem.com/rodrigo_sidneycolquequi/under-the-hood-how-bandit-sast-analyzes-your-python-code-2nj8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;br&gt;
While many developers use security scanners, few understand how they actually "read" code. This article explains the inner workings of Bandit, focusing on its use of the Abstract Syntax Tree (AST) to identify security patterns without ever executing a single line of code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Core Engine: AST (Abstract Syntax Tree)&lt;/strong&gt;&lt;br&gt;
Unlike a simple text search (which might give many false positives), Bandit doesn't just look for words like "password". It converts your Python code into an AST.&lt;/p&gt;

&lt;p&gt;What is AST? It is a tree representation of the abstract syntactic structure of your source code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpj1r887lhou8uu14hpw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpj1r887lhou8uu14hpw.png" alt=" " width="800" height="903"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why it matters: By building a tree, Bandit understands the context. It knows if a string is just a comment or if it's actually being assigned to a sensitive variable or passed to a dangerous function like eval().&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. How the "Scanning" Happens&lt;/strong&gt;&lt;br&gt;
Bandit works through a set of plugins. Each plugin is designed to look for a specific type of vulnerability:&lt;br&gt;
Blacklist Plugins: These look for the use of insecure modules (like pickle or telnetlib).&lt;br&gt;
Function Call Plugins: These trigger when they see dangerous calls (like subprocess.shell=True).&lt;br&gt;
Hardcoded Secret Plugins: These use heuristics to identify strings that look like passwords or API keys.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Severity and Confidence levels&lt;/strong&gt;&lt;br&gt;
One of Bandit's best features is its scoring system:&lt;br&gt;
Severity: How bad is the bug? (Low, Medium, High).&lt;br&gt;
Confidence: How sure is Bandit that this is actually a bug and not a mistake?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why use it in the CI/CD?&lt;/strong&gt;&lt;br&gt;
The main advantage is speed. Because it doesn't need to compile or run the code, it can scan thousands of lines in seconds. Integrating it into GitHub Actions (as shown in my previous post) ensures that no "illegal" AST patterns make it into the main branch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Bandit isn't just a linter; it's a security-focused parser. By understanding the structure of Python, it provides a robust first line of defense for any backend developer.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>security</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Implementing SAST in Your Infrastructure: Detecting Vulnerabilities with Checkov and GitHub Actions</title>
      <dc:creator>RODRIGO SIDNEY COLQUE QUISPE</dc:creator>
      <pubDate>Tue, 21 Apr 2026 03:50:44 +0000</pubDate>
      <link>https://forem.com/rodrigo_sidneycolquequi/implementing-sast-in-your-infrastructure-detecting-vulnerabilities-with-checkov-and-github-actions-3b5h</link>
      <guid>https://forem.com/rodrigo_sidneycolquequi/implementing-sast-in-your-infrastructure-detecting-vulnerabilities-with-checkov-and-github-actions-3b5h</guid>
      <description>&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;br&gt;
This article explores the implementation of Static Application Security Testing (SAST) for Infrastructure as Code (IaC) using Checkov. We demonstrate how to identify common security misconfigurations, such as publicly accessible S3 buckets, and seamlessly integrate the scanning process into a CI/CD pipeline using GitHub Actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Checkov?&lt;/strong&gt;&lt;br&gt;
Checkov is an open-source static analysis tool (maintained by Bridgecrew / Prisma Cloud) designed specifically for Infrastructure as Code.&lt;/p&gt;

&lt;p&gt;Unlike tools aimed at application code (like Bandit for Python), Checkov scans configuration files for misconfigurations that could lead to security vulnerabilities or compliance issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why use Checkov?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Built-in policies:&lt;/strong&gt; It comes with hundreds of out-of-the-box policies covering AWS, Azure, and GCP best practices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-framework:&lt;/strong&gt; Supports Terraform, CloudFormation, Kubernetes, Dockerfiles, Serverless, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easy integration:&lt;/strong&gt; Runs from the command line or directly in your CI/CD pipelines.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Scenario: Vulnerable Infrastructure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine you have a Terraform file (main.tf) where you define an S3 bucket. By mistake (or for a quick test), you configure it to have public read access:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# main.tf&lt;br&gt;
resource "aws_s3_bucket" "my_vulnerable_bucket" {&lt;br&gt;
  bucket = "my-dev-test-bucket"&lt;br&gt;
  acl    = "public-read" # ❌ Security risk!&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If we deploy this, anyone on the internet could access our data. Let's make our repository catch this error before it gets merged into the main branch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automating with GitHub Actions&lt;/strong&gt;&lt;br&gt;
The real magic happens when we integrate Checkov into our CI/CD workflow. This way, every time someone pushes code or opens a Pull Request, Checkov will analyze the infrastructure automatically.&lt;/p&gt;

&lt;p&gt;In your repository, create a file at &lt;code&gt;.github/workflows/checkov.yml&lt;/code&gt; and add the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qp1evxaxaduixsu81s4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qp1evxaxaduixsu81s4.png" alt=" " width="540" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What exactly does this workflow do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Checkout:&lt;/strong&gt; Clones your code into the GitHub Actions virtual environment.&lt;br&gt;
&lt;strong&gt;2. Run Checkov:&lt;/strong&gt; Uses the official Bridgecrew action. The directory: . parameter tells it to look for infrastructure files throughout the repository.&lt;br&gt;
&lt;strong&gt;3. soft_fail:&lt;/strong&gt; false: This is the key to DevSecOps. If Checkov finds a failing policy (like our public bucket), the pipeline will fail, preventing vulnerable code from being integrated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Shifting security to the left (Shift-Left Security) by implementing SAST in your Infrastructure as Code is no longer optional. With tools like Checkov and GitHub Actions, it's a fast and highly effective process. With just a few lines of code, you can ensure your team doesn't accidentally deploy insecure configurations.&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>devops</category>
      <category>github</category>
      <category>security</category>
    </item>
  </channel>
</rss>
