Chrome Checker Bot
Chrome Checker Bot (CCBot), also known as Chrome/Chromium Vulnerability Checker. This Python script monitors the Google Chrome release page for any announced vulnerabilities in Chrome/Chromium. It utilizes the Google Chrome Releases RSS feed to fetch the latest updates and checks for security-related content. If security issues are detected, it sends a formatted message to a specified Slack channel using a webhook.
This software was written by Joshua Rogers. For more information, see the blog post.
Installation
Via pip
pip install ccbot-py
Via Docker (Docker Hub)
docker run -e SLACK_WEBHOOK_URL='your_slack_webhook_url' megamansec/ccbot
Via Docker (GHCR)
docker run -e SLACK_WEBHOOK_URL='your_slack_webhook_url' ghcr.io/megamansec/ccbot
From source
git clone https://github.com/MegaManSec/CCBot.git
cd CCBot
pip install .
ccbot
Configuration
Before running the script, ensure you set up the following configurations:
SLACK_WEBHOOK_URL: Set your Slack webhook URL as an environment variable.RSS_URL: Google Chrome Releases feed URL. CCBot reads Blogger's own Atom feed withredirect=false, because the FeedBurner copy it otherwise redirects to is served stale.REFRESH_INTERVAL_SECONDS: Time interval for checking updates in seconds.
Functionality
The script performs the following tasks:
- Fetches the latest entries from the Google Chrome Releases RSS feed.
- Filters entries based on specified tags (
Desktop Update,Stable updates). - Extracts security-related content from the entry's description or the linked URL.
- Formats and sends a Slack message if security issues are detected.
Slack Message Format
The Slack message includes the following information for each security issue:
- Timestamp: Time of the release.
- URL: Link to the release details.
- Security Issues: List of security issues, including severity, CVE number, and description.
Notes
- The script runs indefinitely, periodically checking for updates based on the refresh interval.
- If a security-related article is found without specific CVEs, it still notifies Slack for manual verification.
- The script employs regex patterns for extracting security content, adapting to potential variations in the HTML structure.
Manual Usage
You can run the script in your terminal with the following instructions.
-
Set up a Python virtual environment and install the package:
python3 -m venv venv venv/bin/pip install --upgrade pip venv/bin/pip install .
-
Set up the Slack webhook URL as an environment variable:
export SLACK_WEBHOOK_URL='your_slack_webhook_url'
-
Run the script:
venv/bin/ccbot
Systemd Installation
A Debian-based installation script, install.sh, is provided. When run as root, this script:
- Creates (if necessary) a Python virtual environment in
/opt/ccbot. - Installs the package into that virtual environment.
- Installs and enables a systemd service (
/etc/systemd/system/ccbot.service) that runs ccbot in the background. - Configures logging to
/var/log/ccbot.logand/var/log/ccbot_error.log. - Sets up log rotation in
/etc/logrotate.d/ccbot.
You may optionally pass a single argument to install.sh to define the SLACK_WEBHOOK_URL environment variable used by the script:
sudo ./install.sh "https://hooks.slack.com/services/[...]"
ccbot has been installed, the service is started, and log rotation is set up.
If you don't provide a URL, you can manually edit /etc/systemd/system/ccbot.service later to set or change the webhook URL.
When reinstalling without an argument, the installer keeps the existing service's Environment and EnvironmentFile lines, including the webhook, exactly as they are.
To change the webhook, pass the new URL as the argument: sudo resets the environment, so an exported SLACK_WEBHOOK_URL does not reach the installer.
The installer restarts the service to apply updated code and configuration.
Tests
With the package installed, run the regression tests with:
python -m unittest discover -s tests
License
This project is licensed under AGPL-3.0.
Metadata
Release files for ccbot-py 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ccbot_py-1.1.0.tar.gz | 22.7 kB | With provenance | Details for ccbot_py-1.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ccbot_py-1.1.0-py3-none-any.whl | Python 3 | none | any | Details for ccbot_py-1.1.0-py3-none-any.whl |
Total release size: 41.5 kB
Release files / ccbot_py-1.1.0.tar.gz
| Download URL | ccbot_py-1.1.0.tar.gz |
|---|---|
| Size | 22.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
774b642d7aa555a7d8248d34f40a7f39955f0f874247366617f203f86534e350
|
|
BLAKE2b-256 checksum How to use checksums |
15bf54ec26950e4ebcb951a5f391ae10a6fb111078625dd4caef9cc56a1bee3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / ccbot_py-1.1.0-py3-none-any.whl
| Download URL | ccbot_py-1.1.0-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
83271449d337bfe2e1440189ca4891433360d38e5b7dc004e523a592f454659a
|
|
BLAKE2b-256 checksum How to use checksums |
d7db6dc870b1d0a8fe9469f7dd2ceef21e54795cdca2d67f11872e3835e0f55b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logSecurity for ccbot-py 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for ccbot_py-1.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.