
AWS संगठन-व्यापी पहचान टूलकिट CVE-2025-55182 और CVE-2025-66478 (React Server Components / Next.js RCE कमजोरियाँ) के लिए
CVE-2025-55182 और CVE-2025-66478 हेतु AWS संगठन-व्यापी डिटेक्शन टूलकिट
⚠️ महत्वपूर्ण अस्वीकरण - उपयोग से पहले कृपया पढ़ें
यह टूलकिट उत्पादन AWS वातावरण में परीक्षण नहीं किया गया है।
बुनियादी ढांचे की बाधाओं के कारण, इस परियोजना को केवल कोड समीक्षा, स्थैतिक विश्लेषण और दस्तावेज़ सत्यापन के माध्यम से विकसित और मान्य किया गया है। इसे सक्रिय GuardDuty, WAF, EventBridge, या CloudTrail सेवाओं वाले लाइव AWS वातावरण में तैनात या परीक्षण नहीं किया गया है।
इसका आपके लिए क्या अर्थ है:
घटक स्थिति Python स्कैनर लॉजिक ✅ कोड समीक्षित, Snyk मान्य Terraform सिंटैक्स ✅ मान्य, लागू नहीं IAM नीतियाँ ⚠️ आपके वातावरण के लिए समायोजन की आवश्यकता हो सकती है EventBridge नियम ⚠️ AWS दस्तावेज़ीकरण पर आधारित फाइंडिंग पैटर्न WAF नियम ⚠️ लाइव ट्रैफ़िक पर अपरीक्षित रीजेक्स पैटर्न Athena क्वेरीज़ ⚠️ स्कीमा धारणाओं में संशोधन की आवश्यकता हो सकती है अनुशंसाएँ:
- पहले गैर-उत्पादन खाते में तैनात करें - सभी घटकों का सैंडबॉक्स वातावरण में परीक्षण करें
- IAM नीतियों की सावधानीपूर्वक समीक्षा करें - अपने संगठन की आवश्यकताओं से मेल खाने के लिए अनुमतियाँ समायोजित करें
- Terraform योजनाओं को मान्य करें - लागू करने से पहले
terraform planचलाएँ और समीक्षा करें- EventBridge पैटर्न का परीक्षण करें - सत्यापित करें कि फाइंडिंग प्रकार स्ट्रिंग्स आपके GuardDuty आउटपुट से मेल खाती हैं
- CloudWatch लॉग्स की निगरानी करें - तैनाती के बाद त्रुटियों की जाँच करें
दायित्व:
यह सॉफ़्टवेयर बिना किसी वारंटी के "जैसा है" प्रदान किया जाता है। लेखक इस टूलकिट के उपयोग से होने वाली किसी भी क्षति, सुरक्षा घटना, या AWS लागत के लिए कोई ज़िम्मेदारी नहीं लेते हैं। अपने जोखिम पर उपयोग करें।
यदि आप इस टूलकिट को सफलतापूर्वक तैनात और परीक्षण करते हैं, तो कृपया इसे समुदाय के लिए बेहतर बनाने हेतु अपने निष्कर्षों को वापस योगदान करने पर विचार करें।
AWS वातावरणों में React2Shell शोषण प्रयासों का पता लगाने के लिए एक व्यापक सुरक्षा टूलकिट। यह टूलकिट गंभीर React Server Components RCE भेद्यता के लिए वास्तविक समय पहचान, खतरे का शिकार करने की क्षमताएँ और स्वचालित प्रतिक्रिया प्रदान करता है।
__proto__:then हेरफेर process.mainModule.require('child_process').execSync() के माध्यम से मनमाने कोड निष्पादन सक्षम करता है---
## पूर्वापेक्षाएँ
### आवश्यक अनुमतियाँ```
# Minimum IAM permissions for the detection script
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudtrail:LookupEvents",
"logs:StartQuery",
"logs:GetQueryResults",
"guardduty:ListDetectors",
"guardduty:ListFindings",
"guardduty:GetFindings",
"guardduty:CreateThreatIntelSet",
"guardduty:UpdateThreatIntelSet",
"guardduty:ListThreatIntelSets",
"guardduty:GetThreatIntelSet",
"s3:PutObject",
"s3:GetObject",
"sts:GetCallerIdentity",
"sts:AssumeRole"
],
"Resource": "*"
}
]
}
# For Security Hub integration, add:
"securityhub:BatchImportFindings"
# For SNS alerting, add:
"sns:Publish"
# For organization-wide scanning, add:
"organizations:ListAccounts"
cd React2Shell_Hunter
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
### चरण 2: AWS क्रेडेंशियल्स कॉन्फ़िगर करें```bash
# Option A: Use AWS CLI profile
aws configure --profile security-scanner
# Option B: Export environment variables
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_DEFAULT_REGION="us-east-1"
# Option C: Use IAM role (recommended for EC2/Lambda)
# Attach appropriate IAM role to your compute resource
aws sts get-caller-identity
python -c "import boto3, yaml; print('Dependencies OK')"
python -c " import yaml with open('config/iocs.yaml') as f: iocs = yaml.safe_load(f) print(f'Loaded {len(iocs["network_iocs"]["malicious_ips"])} malicious IPs') "
---
## त्वरित आरंभ
### वर्तमान खाता स्कैन करें (पिछले 24 घंटे)```bash
python src/react2shell_detector.py --hours 24
अपेक्षित आउटपुट:``` 2025-12-06 10:00:00 - React2ShellDetector - INFO - ============================================================ 2025-12-06 10:00:00 - React2ShellDetector - INFO - React2Shell IOC Detection Script 2025-12-06 10:00:00 - React2ShellDetector - INFO - CVE-2025-55182 & CVE-2025-66478 2025-12-06 10:00:00 - React2ShellDetector - INFO - ============================================================ 2025-12-06 10:00:00 - React2ShellDetector - INFO - Starting single account scan... 2025-12-06 10:00:00 - React2ShellDetector - INFO - Analyzing CloudTrail logs... 2025-12-06 10:00:05 - React2ShellDetector - INFO - Checking GuardDuty findings...
Total findings: 0 CRITICAL: 0 HIGH: 0 MEDIUM: 0
### पूर्ण प्रोडक्शन स्कैन```bash
python src/react2shell_detector.py \
--organization \
--role-name SecurityAuditRole \
--security-hub \
--guardduty-bucket my-threat-intel-bucket-12345 \
--vpc-log-group /aws/vpc/flowlogs \
--waf-log-group aws-waf-logs-react2shell \
--sns-topic arn:aws:sns:us-east-1:123456789012:security-alerts \
--output json \
--output-file findings-$(date +%Y%m%d).json \
--hours 72
आप GUARDDUTY में कस्टम डिटेक्शन नियम नहीं बना सकते।
GuardDuty findings उत्पन्न करने के लिए ML मॉडल और थ्रेट इंटेलिजेंस का उपयोग करता है। React2Shell का पता लगाने के लिए:
MaliciousIPCaller.Custom findings उत्पन्न करता है### EventBridge नियम पैटर्न
Terraform 7 विशिष्ट EventBridge नियम बनाता है:
| नियम | फ़ाइंडिंग टाइप पैटर्न | गंभीरता |
|------|---------------------|----------|
| `react2shell-malicious-ip-caller` | `MaliciousIPCaller.Custom` | CRITICAL |
| `react2shell-credential-exfiltration` | `InstanceCredentialExfiltration.*` | CRITICAL |
| `react2shell-dns-exfiltration` | `DNSDataExfiltration` | HIGH |
| `react2shell-cryptocurrency-mining` | `CryptoCurrency:*` | HIGH |
| `react2shell-unusual-network-ports` | `NetworkPortUnusual` | MEDIUM |
| `react2shell-malicious-domain` | `MaliciousDomainRequest.*` | HIGH |
| `react2shell-high-severity-catchall` | Severity >= 7 | VARIES |
### WAF सुरक्षा परतें
WAF WebACL प्राथमिकता क्रम में 9 नियम लागू करता है:
| प्राथमिकता | नियम | क्रिया | यह क्या पता लगाता है |
|----------|------|--------|-----------------|
| 1 | Block Malicious IPs | BLOCK | 9 ज्ञात C2 IPs से कनेक्शन |
| 2 | Next-Action Header Values | BLOCK | `next-action` हेडर जिसमें `$ACTION` या `__proto__` पैटर्न हों |
| 3 | RSC-Action-ID Header Values | BLOCK | `rsc-action-id` हेडर जिसमें `$ACTION` या `__proto__` पैटर्न हों |
| 4 | Prototype Pollution | BLOCK | बॉडी में `__proto__` या `constructor.prototype` |
| 5 | RCE Patterns | BLOCK | `process.mainModule.require`, `child_process`, `execSync` |
| 6 | ACTION Parameter | BLOCK | POST बॉडी में `$ACTION_0:0` या `$ACTION_REF` |
| 7 | Suspicious User-Agents | COUNT | `Go-http-client`, `Assetnote`, `python-requests` |
| 8 | AWS Known Bad Inputs | INHERIT | AWS प्रबंधित नियम समूह |
| 9 | AWS Common Rule Set | INHERIT | AWS प्रबंधित नियम समूह |
> **नोट**: नियम 2 और 3 दुर्भावनापूर्ण हेडर मानों (सिर्फ हेडर की उपस्थिति नहीं) का पता लगाने के लिए कई `byte_match_statement` जाँचों के साथ `or_statement` का उपयोग करते हैं। AWS WAF हेडर मिलान में regex का समर्थन नहीं करता, इसलिए प्रत्येक पैटर्न के लिए एक अलग स्टेटमेंट आवश्यक होता है। WAF द्वारा आवश्यक अनुसार हेडर नाम lowercase होते हैं।
---
## कंपोनेंट संदर्भ
### प्रोजेक्ट संरचना```
React2Shell_Hunter/
├── config/
│ └── iocs.yaml # IOC database (IPs, domains, patterns) - 452 lines
├── src/
│ └── react2shell_detector.py # Main detection script - 1141 lines
├── terraform/
│ ├── guardduty.tf # GuardDuty + ThreatIntelSet + S3 - 405 lines
│ ├── eventbridge_rules.tf # 7 EventBridge rules - 533 lines
│ └── waf_rules.tf # WAF WebACL with 9 rules - 681 lines
├── lambda/
│ └── ioc_scanner/
│ └── handler.py # Real-time Lambda scanner - 381 lines
├── athena_queries/
│ └── detection_queries.sql # 18 threat hunting queries - 483 lines
├── tests/
│ ├── __init__.py # Test package init
│ ├── conftest.py # Pytest fixtures (project_root, ioc_config, etc.)
│ ├── test_ioc_matching.py # IOC pattern validation tests
│ ├── test_terraform.py # Terraform configuration validation
│ └── test_waf_patterns.py # WAF regex pattern tests
├── docs/
│ ├── THREAT_INTELLIGENCE_REPORT.md
│ └── GUARDDUTY_EVENTBRIDGE_SETUP_GUIDE.md
├── requirements.txt # Python dependencies (boto3, pyyaml, pytest, python-hcl2)
├── README.md
└── CLAUDE.md
cd terraform
terraform init
terraform plan
-var="threat_intel_bucket=react2shell-threat-intel-$(aws sts get-caller-identity --query Account --output text)"
-var="enable_guardduty=true"
-var="enable_waf=true"
-var="waf_scope=REGIONAL"
terraform apply
-var="threat_intel_bucket=react2shell-threat-intel-$(aws sts get-caller-identity --query Account --output text)"
**Terraform चर:**
| चर | आवश्यक | डिफ़ॉल्ट | विवरण |
|----------|----------|---------|-------------|
| `threat_intel_bucket` | हाँ | - | खतरा इंटेल फ़ाइलों के लिए S3 बकेट नाम |
| `enable_guardduty` | नहीं | true | GuardDuty डिटेक्टर सक्षम करें |
| `enable_waf` | नहीं | true | WAF WebACL बनाएँ |
| `waf_scope` | नहीं | REGIONAL | `REGIONAL` या `CLOUDFRONT` |
| `block_mode` | नहीं | BLOCK | `BLOCK` या `COUNT` |
| `enable_lambda_automation` | नहीं | false | स्वचालित प्रतिक्रिया के लिए Lambda सक्षम करें |
### चरण 2: WAF को संसाधनों के साथ संबद्ध करें
WAF WebACL आपके संसाधनों के साथ संबद्ध होना चाहिए:```bash
# Associate with ALB
aws wafv2 associate-web-acl \
--web-acl-arn $(terraform output -raw web_acl_arn) \
--resource-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/my-alb/1234567890
# Associate with API Gateway
aws wafv2 associate-web-acl \
--web-acl-arn $(terraform output -raw web_acl_arn) \
--resource-arn arn:aws:apigateway:us-east-1::/restapis/abc123/stages/prod
SNS_TOPIC=$(terraform output -raw sns_topic_arn)
aws sns subscribe
--topic-arn $SNS_TOPIC
--protocol email
--notification-endpoint [email protected]
aws sns subscribe
--topic-arn $SNS_TOPIC
--protocol lambda
--notification-endpoint arn:aws:lambda:us-east-1:123456789012:function:slack-notifier
### चरण 4: Athena टेबल बनाएँ```bash
# Open Athena console or use AWS CLI
# Run the CREATE TABLE statements from athena_queries/detection_queries.sql
# CloudTrail table
aws athena start-query-execution \
--query-string "CREATE EXTERNAL TABLE cloudtrail_logs ..." \
--work-group primary \
--query-execution-context Database=default
| पोर्ट | उपयोग |
|---|---|
| 652 | PowerShell स्टेजर |
| 2045 | कस्टम C2 |
| 8000, 8080 | वैकल्पिक HTTP C2 |
| 12000, 45178 | कस्टम C2 |
aws guardduty list-detectors
aws guardduty create-detector --enable
terraform apply -var="enable_guardduty=true"
#### "सदस्य खाते में भूमिका ग्रहण करने में विफल"```bash
# Verify role exists in target account
aws iam get-role --role-name SecurityAuditRole
# Verify trust policy allows your account
aws iam get-role --role-name SecurityAuditRole --query 'Role.AssumeRolePolicyDocument'
# Test role assumption
aws sts assume-role \
--role-arn arn:aws:iam::TARGET_ACCOUNT:role/SecurityAuditRole \
--role-session-name test
DETECTOR_ID=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) aws guardduty list-threat-intel-sets --detector-id $DETECTOR_ID
aws s3api get-bucket-policy --bucket your-threat-intel-bucket
aws s3 cp s3://your-bucket/threat-intel/react2shell-ips.txt -
#### "WAF नियम ब्लॉक नहीं कर रहा"```bash
# Check if WebACL is associated
aws wafv2 list-resources-for-web-acl \
--web-acl-arn $(terraform output -raw web_acl_arn)
# Check sampled requests
aws wafv2 get-sampled-requests \
--web-acl-arn $(terraform output -raw web_acl_arn) \
--rule-metric-name React2Shell-Malicious-IP-Blocked \
--scope REGIONAL \
--time-window StartTime=2025-12-06T00:00:00Z,EndTime=2025-12-06T23:59:59Z \
--max-items 10
DETECTOR_ID=$(aws guardduty list-detectors --query 'DetectorIds[0]' --output text)
aws guardduty create-sample-findings
--detector-id $DETECTOR_ID
--finding-types "UnauthorizedAccess:IAMUser/MaliciousIPCaller.Custom"
aws cloudwatch get-metric-statistics
--namespace AWS/Events
--metric-name Invocations
--dimensions Name=RuleName,Value=react2shell-malicious-ip-caller
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ)
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ)
--period 300
--statistics Sum
---
## FAQ
### Q: क्या यह पैचिंग की जगह लेता है?
**नहीं।** यह एक डिटेक्शन टूलकिट है, रोकथाम समाधान नहीं। आपको पैच करना अनिवार्य है:
- React: 19.0.1, 19.1.2, या 19.2.1
- Next.js: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, या 16.0.7
### Q: क्या यह सभी React2Shell हमलों का पता लगाएगा?
**कोई भी डिटेक्शन 100% नहीं है।** यह टूलकिट पता लगाता है:
- ज्ञात C2 IPs से कनेक्शन (यदि हमलावर नए IPs का उपयोग करता है, तो पता नहीं चलेगा)
- ज्ञात पेलोड पैटर्न (यदि हमलावर obfuscate करता है, तो WAF को बायपास कर सकता है)
- पोस्ट-एक्सप्लॉइटेशन व्यवहार (क्रेडेंशियल चोरी, लेटरल मूवमेंट)
### Q: मुझे स्कैनर कितनी बार चलाना चाहिए?
अनुशंसित शेड्यूल:
- **निरंतर**: GuardDuty + EventBridge (रियल-टाइम)
- **प्रति घंटा**: `--hours 1` के साथ Python स्क्रिप्ट
- **दैनिक**: पूर्ण Athena थ्रेट हंट क्वेरीज़
### Q: मैं नए IOC कैसे जोड़ूँ?
`config/iocs.yaml` संपादित करें और उपयुक्त अनुभागों में जोड़ें:```yaml
network_iocs:
malicious_ips:
- ip: "NEW.IP.ADDRESS.HERE"
port: 8080
context: "Description"
confidence: high
source: "Your source"
फिर ThreatIntelSet अपडेट करें:```bash python src/react2shell_detector.py --guardduty-bucket your-bucket
---
## टेस्ट चलाना```bash
# Install test dependencies
pip install -r requirements.txt
# Run all tests
pytest tests/ -v
# Run specific test categories
pytest tests/test_terraform.py -v # Terraform validation
pytest tests/test_ioc_matching.py -v # IOC pattern tests
pytest tests/test_waf_patterns.py -v # WAF regex tests
# Run with coverage
pytest tests/ --cov=src --cov-report=html
अस्वीकरण: यह टूलकिट केवल रक्षात्मक सुरक्षा उद्देश्यों के लिए है। सिस्टम को स्कैन करने से पहले सुनिश्चित करें कि आपके पास उचित प्राधिकरण है।
| सॉफ़्टवेयर | संस्करण | उद्देश्य |
|---|
| Python | 3.9+ | डिटेक्शन स्क्रिप्ट रनटाइम |
| Terraform | 1.0+ | इंफ्रास्ट्रक्चर तैनाती |
| AWS CLI | 2.x | AWS प्रमाणीकरण |
| boto3 | 1.34+ | Python के लिए AWS SDK |
| क्लास | उद्देश्य | मुख्य विधियाँ |
|---|
IOCLoader | YAML से IOC लोड करें | get_malicious_ips(), get_suspicious_ports(), get_malicious_domains() |
CloudTrailAnalyzer | API-आधारित IOC का पता लगाएं | analyze_recent_events(hours) |
VPCFlowLogAnalyzer | नेटवर्क IOC का पता लगाएं | analyze_flow_logs(log_group, hours) |
GuardDutyManager | थ्रेट इंटेल प्रबंधित करें | create_threat_intel_set(bucket), get_relevant_findings(hours) |
WAFLogAnalyzer | HTTP IOC का पता लगाएं | analyze_waf_logs(log_group, hours) |
OrganizationScanner | क्रॉस-अकाउंट स्कैनिंग | scan_organization(hours, role_name) |
SecurityHubReporter | फाइंडिंग्स आयात करें | import_findings(findings) |
SNSAlerter | अलर्ट भेजें | send_alert(findings) |
| आर्ग्युमेंट | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
--config | string | config/iocs.yaml | IOC कॉन्फ़िगरेशन फ़ाइल का पथ |
--hours | int | 24 | विश्लेषण के लिए लॉग के घंटे |
--organization | flag | false | संपूर्ण AWS ऑर्गनाइज़ेशन स्कैन करें |
--role-name | string | OrganizationAccountAccessRole | सदस्य खातों में ग्रहण करने के लिए भूमिका |
--sns-topic | string | none | अलर्ट के लिए SNS टॉपिक ARN |
--security-hub | flag | false | Security Hub में फाइंडिंग्स आयात करें |
--guardduty-bucket | string | none | GuardDuty थ्रेट इंटेल के लिए S3 बकेट |
--vpc-log-group | string | none | VPC फ्लो लॉग्स CloudWatch लॉग ग्रुप |
--waf-log-group | string | none | WAF लॉग्स CloudWatch लॉग ग्रुप |
--output | enum | text | आउटपुट प्रारूप: json, text, csv |
--output-file | string | none | आउटपुट फ़ाइल पथ |
--debug | flag | false | डीबग लॉगिंग सक्षम करें |
| IP पता | पोर्ट | विश्वास स्तर | संदर्भ | स्रोत |
|---|
| 93.123.109.247 | 8000 | उच्च | प्राथमिक C2 सर्वर | Datadog |
| 45.77.33.136 | 8080 | उच्च | प्राथमिक C2 सर्वर | Datadog |
| 194.246.84.13 | 2045 | उच्च | प्राथमिक C2 सर्वर | Datadog |
| 141.11.240.103 | 45178 | उच्च | प्राथमिक C2 सर्वर | Datadog |
| 23.235.188.3 | 652 | उच्च | PowerShell स्टेजर | GreyNoise |
| 46.36.37.85 | 12000 | उच्च | पेलोड स्टेजिंग | GreyNoise |
| 144.202.115.234 | 80 | मध्यम | पेलोड होस्टिंग | Datadog |
| 162.215.170.26 | 3000 | मध्यम | द्वितीयक पेलोड | GreyNoise |
| 45.32.158.54 | - | मध्यम | स्कैनर | GreyNoise |
| डोमेन | श्रेणी | विश्वास स्तर |
|---|
| ceye.io | DNS एक्सफ़िल्ट्रेशन | उच्च |
| dnslog.cn | DNS एक्सफ़िल्ट्रेशन | उच्च |
| *.oastify.com | Burp Collaborator | मध्यम |
| sapo.shk0x.net | C2 | उच्च |
| xwpoogfunv.zaza.eu.org | C2 | उच्च |
| *.c3pool.com | क्रिप्टोमाइनिंग | उच्च |
| 3333, 5555, 14433, 14444 | क्रिप्टोमाइनिंग |
| पैटर्न | गंभीरता | विवरण |
|---|
next-action: * | गंभीर | RSC शोषण हेडर (WAF में लोअरकेस) |
rsc-action-id: * | गंभीर | RSC एक्शन पहचानकर्ता (WAF में लोअरकेस) |
$ACTION_0:0 | गंभीर | RSC एक्शन पैरामीटर |
__proto__:then | गंभीर | प्रोटोटाइप प्रदूषण |
process.mainModule.require | गंभीर | Node.js RCE |
child_process | गंभीर | कमांड निष्पादन |
Go-http-client/1.1 | मध्यम | स्कैनर यूज़र एजेंट |