Add crossguard-py to LLM Security and Red Teaming - #61
Open
RustyCoder31 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Important
Read the contribution guidelines before submitting.
Awesome MLSecOps is a curated technical resource, not a product directory.
Submission
MLSecOps relevance
Security problem. Prompt-injection defenses generally guard the text channel and treat an attached image as inert data. For a multimodal model it is not inert. Instructions can be embedded in an image so that the model reads them and a human reviewer sees nothing, using least-significant-bit steganography, DCT-coefficient embedding that survives JPEG recompression, or EXIF metadata. CSA and IEEE both published systematic studies of image-based prompt injection in 2026 measuring steganographic attack success at 24.3% across GPT-4V, Claude, and LLaVA, and up to 64% in stealth-constrained configurations. That literature is almost entirely attack-side.
Protected component. Application and pipeline. Specifically the image-ingest path of any LLM application accepting user-supplied images.
Threat coverage. Steganographic prompt injection via LSB (spatial domain), DCT coefficients (frequency domain), and EXIF metadata. The approach destroys the carrier channel rather than detecting the payload, so it does not depend on recognising the encoding the attacker chose. Adversarial pixel perturbations are explicitly out of scope and documented as such in the README, the benchmark, and SECURITY.md rather than left implied.
Evaluation method. 108,015 samples. Per-sample results ship in the repository under
benchmarks/2026-07-06_layer1_108k/, so the headline figure is recountable rather than asserted, and the reproduction command is in the benchmark README. Ground truth is verifiable rather than claimed: the real stego covers have a zeroed LSB plane, so the 1-bits are the payload, and destruction is measured as residual payload correlation P(after=1|before=1) minus P(after=1|before=0) below 0.10, which is independent of base rate. Sources are the Kaggle Stego-Images dataset plus BOSSBase and ALASKA#2 covers. Measured costs are stated up front rather than buried: mean output SSIM 0.925 so it is not visually lossless, single-image latency roughly 110 to 145ms at 512px, and roughly 1.0% of samples unscored and excluded from the denominator rather than counted as successes.Affiliation
If affiliated, describe the relationship: I am the author and maintainer. No commercial relationship, no funding, no paid tier.
Checklist
Maturity note
Flagging this against the 90-day rule rather than hoping it goes unnoticed. First commit was 2026-07-05, so this is 21 days old and I recognise it may be deferred. Offering the early-stage evidence the guidelines list: an MIT-licensed tagged release (v0.1.0), reproducible results across 108,015 samples with per-sample artifacts and a published reproduction command, 123 passing tests, a security-reporting process in SECURITY.md that names sanitizer bypass as the highest severity class, a documented pre-release audit that found and fixed two critical defects, and a published negative result where an attempted improvement failed and is reported as a failure rather than omitted. There are no independent users yet. If deferral is the correct call I have no objection and will resubmit once there is adoption evidence.
Technical review: Reviewed 2026-07-26. Evidence checked: https://github.com/crossguard-ai/crossguard-py (README, MIT LICENSE, SECURITY.md), https://github.com/crossguard-ai/crossguard-py/releases/tag/v0.1.0, and benchmarks/2026-07-06_layer1_108k/README.md.