Vai al contenuto principale

#development

This is how I built my first script to detect attacks in Python. How many hours do...

Altro...

This is how I built my first script to detect attacks in Python. How many hours do...
Analyzing logs manually?

#cybersecurity #python #software #coding #community #engineering #development #programming #inclusive #beginners

0

Caricamento...

0
1

Caricamento...

Here is the loop most apps are built in now. You describe what you want. The model writes it. It...

Altro...

Here is the loop most apps are built in now. You describe what you want. The model writes it. It...
Vibe coding security: the step nobody takes after the build

#cybersecurity #ai #software #coding #community #engineering #security #development #llm #inclusive

0

Caricamento...

0
1

Caricamento...

Security questionnaires keep asking about the same handful of controls. These five come up again and...

Altro...

Security questionnaires keep asking about the same handful of controls. These five come up again and...
Five security fixes a small team can make in about an hour each

#cybersecurity #software #coding #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

Lab Goal: Debug L2 vs L3 vs L4
Setup: VyOS on Oracle VM - single terminal

L2 - Data Link
Listener on same terminal:
sudo tcpdump -i eth0 -e arp -n &

Altro...

Lab Goal: Debug L2 vs L3 vs L4
Setup: VyOS on Oracle VM - single terminal

L2 - Data Link
Listener on same terminal:
sudo tcpdump -i eth0 -e arp -n &
Send: sendp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.56.101"))

1. SUMMARY

a.summary()

'Ether / ARP who has 192.168.56.1 says 192.168.56.101'

  1. FULL DECODE - a.show() [ Ethernet ]
    dst = None (Broadcast FF:FF:FF:FF:FF:FF)
    src = 08:00:27:bf:9a:64
    type = ARP

[ ARP ]
hwtype = Ethernet (10Mb)
ptype = IPv4
hwlen = None
plen = None
op = who-has
hwsrc = 08:00:27:bf:9a:64
psrc = 192.168.56.101
hwdst = 00:00:00:00:00:00
pdst = 192.168.56.1

  1. RAW BYTES - hexdump(a) - 42 bytes on wire
    0000 FF FF FF FF FF FF 08 00 27 BF 9A 64 08 06 00 01
    0010 08 00 06 04 00 01 08 00 27 BF 9A 64 C0 A8 38 65
    0020 00 00 00 00 00 00 C0 A8 38 01

  2. SEND + PROOF IT WAS SENT

sendp(a, iface="eth0")

.
Sent 1 packets.

tcpdump listener confirmed: 22:48:40 eth0 Out ... ARP, Request who-has 192.168.56.1 tell 192.168.56.100
L3 - Network

One Terminal:

I only have one VyOS terminal, but Linux has &. This puts tcpdump in background and gives me my prompt back:

sudo tcpdump -i eth0 -n icmp &
[1] 5966
listening on eth0, link-type EN10MB (Ethernet)

In the same terminal, Scapy. You have to tell it what a is first:

sudo python3
from scapy.all import *
a = Ether()/IP(dst="192.168.56.101")/ICMP()

Then interrogate it:

a.show()

version = 4, ihl = None, tos = 0x0, len = None, id = 1, flags =, frag = 0 ttl = 64, proto = icmp, src = 192.168.56.101, dst = 192.168.56.101 [ICMP] type = echo-request, code = 0, chksum = None, id = 0x0, seq = 0x0
a.summary()

Ether / IP / ICMP 192.168.56.101 > 192.168.56.101 echo-request 0
len(a)

42
hexdump(a)

0000 FF FF FF FF FF FF 08 00 27 BF 9A 64 08 00 45 00 0010 00 1C 00 01 00 00 40 01 88 C5 C0 A8 38 65 C0 A8 0020 38 65 08 00 F7 FF 00 00 00 00 = dst MAC broadcast, src MAC 08:00:27:BF:9A:64, type IPv4, ICMP echo-request
Send it:

sendp(a)

WARNING: MAC address to reach destination not found. Using broadcast. Sent 1 packets.
Try to get a reply:

reply = srp1(a, timeout=2)

Begin emission WARNING: MAC address to reach destination not found. Using broadcast. Finished sending 1 packets Received 0 packets, got 0 answers, remaining 1 packets
reply.show()

AttributeError: 'NoneType' object has no attribute 'show'
Lesson: Ether() with no dst MAC = broadcast FF:FF:FF:FF:FF:FF. Target ignores it.
My hexdump even showed ARP who-has. sendp is L2 - needs a MAC.
For a real L3 ping, next time: a = IP(dst="192.168.56.101")/ICMP() and sr1(a).
Three checks before you send: summary(), show(), len().

L4 to L7 - Transport + Data

Listener on same terminal:
sudo tcpdump -i eth0 -n tcp port 22 -X &
Send: sendp(Ether()/IP(dst='192.168.56.101')/TCP(dport=22)/Raw(b'SSH-'))

LAB: L4-L7 Packet Crafting with Scapy + VyOS/tcpdump

Objective:
To demonstrate manual control of OSI Layers 2-7 by crafting a custom TCP packet with an SSH banner as payload and verifying it with tcpdump -X on VyOS.

Packet Construction (Final Working Command):

from scapy.all import *
a = Ether()/IP(dst="192.168.56.1")/TCP(dport=22)/Raw(load=b"SSH-2.0-MyLab\r\n")
sendp(a)

Fixes from initial errors: Use TCP not tcp, Raw not RAW, and / between every layer. Correct syntax is Ether()/IP()/TCP()/Raw()

Packet Analysis (from screenshots):

a) a.summary()
Output: Ether / IP / TCP 192.168.56.101:ftp_data > 192.168.56.1:ssh S / Raw
Analysis: Confirms L2 Ether, L3 IP, L4 TCP with SYN flag (S), random source port ftp_data=20 to destination ssh=22, plus L7 Raw layer.

b) a.show() - Layer Breakdown:
[ IP Layer ]
ttl = 64
proto = tcp
src = 192.168.56.101
dst = 192.168.56.1

[ TCP Layer ]
sport = ftp_data (20)
dport = ssh (22)
seq = 0
ack = 0
flags = S (SYN)
window = 8192

[ Raw Layer - L7 Payload ]
load = b'SSH-2.0-MyLab\r\n'

This shows full OSI control: Ether (L2) -> IP (L3) -> TCP (L4) -> Raw SSH banner (L7).

c) len(a)
Output: 69
Analysis: Total packet size on wire is 69 bytes. Breakdown: 14 bytes Ethernet + 20 bytes IP + 20 bytes TCP + 15 bytes payload (SSH-2.0-MyLab\r\n).

d) hexdump(a)
Output:
0000 FF FF FF FF FF FF 08 00 27 BF 9A 64 08 00 45 00
0010 00 37 00 01 00 00 40 06 89 09 C0 A8 38 65 C0 A8
0020 38 01 00 14 00 16 00 00 00 00 00 00 00 00 50 02
0030 20 00 9A 2E 00 00 53 53 48 2D 32 2E 30 2D 4D 79
0040 4C 61 62 0D 0A
Analysis: Hex at offset 0030-0040 decodes to ASCII: 53 53 48 = "SSH", 2D 32 2E 30 = "-2.0". This is exactly what tcpdump -X on VyOS captures, proving L7 payload injection. The FF FF FF FF FF FF is broadcast MAC because Scapy warning "MAC address to reach destination not found. Using broadcast."

VyOS Verification:

On VyOS: sudo tcpdump -i eth0 tcp port 22 -X
This captures the packet and shows the hex/ASCII SSH-2.0-MyLab even though no real SSH handshake occurred.

Conclusion:
The packet is not a real SSH connection - we skipped the TCP 3-way handshake (SYN, SYN-ACK, ACK) and just threw the SSH banner at port 22. Tcpdump sees it because it sniffs the wire before the OS validates it. This proves Scapy gives full control of Raw payload (L7) inside TCP/IP envelopes.
Jigsawing packets: How I sent L2-L7 frames and read them with Scapy

#cybersecurity #python #software #coding #networking #community #engineering #development #inclusive #scapy

0

Caricamento...

0
1

Caricamento...

A Chinese state-backed group rooted BeyondTrust's privileged access management appliance and planted a backdoor that rebuilt itself after every reboot

Altro...

A Chinese state-backed group rooted BeyondTrust's privileged access management appliance and planted a backdoor that rebuilt itself after every reboot.
BeyondTrust's Privileged Access Management Appliance Had a Backdoor That Survived Every Reboot

#cybersecurity #software #infosec #coding #devops #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

Imagine building a login system that checks a user's email and password against a database.

Everything works perfectly until someone enters something

Altro...

Imagine building a login system that checks a user's email and password against a database.

Everything works perfectly until someone enters something unexpected into the login form.

Suddenly, your application is executing SQL commands you never intended.

That's the danger of SQL Injection (SQLi), one of the oldest and most dangerous vulnerabilities in web application security.

What Is SQL Injection?
SQL Injection is a security vulnerability that occurs when an application allows untrusted input to change the structure of a SQL query.

Instead of treating user input as data, the database ends up interpreting parts of it as SQL instructions.

Depending on the vulnerability and database permissions, attackers might be able to:

Access sensitive information.

Bypass authentication.

Modify or delete records.

Execute unauthorized database operations.

The underlying problem is simple: the application fails to separate data from executable SQL.

How Does SQL Injection Work?
Consider a C# application that retrieves a user from a database.

var query = $"SELECT * FROM Users WHERE Email = '{email}'";

At first glance, this looks reasonable.

If the user enters:

john@example.com

The resulting query becomes:

SELECT * FROM Users
WHERE Email = 'john@example.com';

Everything works as expected.

But what happens if someone enters:

' OR 1=1 --

Your application constructs:

SELECT * FROM Users
WHERE Email = '' OR 1=1 --';

Here's what happens:

The first ' closes the string.

OR 1=1 introduces a condition that is always true.

-- comments out the remaining SQL.

Instead of retrieving one specific user, the database may return every user.

And if an application's authentication logic incorrectly trusts that result, the consequences can be even worse.

How Do You Prevent SQL Injection? 1. Use Parameterized Queries
The most important defense is to separate SQL commands from user-supplied values.

Instead of concatenating strings:

var query = $"SELECT * FROM Users WHERE Email = '{email}'";

Use parameters:

using var command = new NpgsqlCommand(
"SELECT * FROM Users WHERE Email = @email",
connection
);

command.Parameters.AddWithValue("email", email);

using var reader = await command.ExecuteReaderAsync();

Now, even if someone enters malicious SQL syntax, the database treats it as a value rather than executable SQL.

The query structure stays unchanged.

  1. Use an ORM Like Entity Framework Core
    If you're working with .NET, Entity Framework Core makes it easier to write queries safely.

var user = await context.Users
.FirstOrDefaultAsync(u => u.Email == email);

EF Core translates this LINQ expression into a parameterized SQL query.

However, using an ORM doesn't automatically eliminate every SQL Injection risk.

For example, this is still dangerous:

var users = await context.Users
.FromSqlRaw(
$"SELECT * FROM Users WHERE Email = '{email}'"
)
.ToListAsync();

The safer approach is:

var users = await context.Users
.FromSqlInterpolated(
$"SELECT * FROM Users WHERE Email = {email}"
)
.ToListAsync();

Here, EF Core converts the interpolated value into a database parameter.

Important: FromSqlRaw can also be safe when used correctly with explicit parameters. The vulnerability comes from inserting untrusted values directly into SQL text.

  1. Apply the Principle of Least Privilege
    Your application shouldn't connect to the database using an account with unnecessary administrative permissions.

For example, if a service only needs to read records, its database account shouldn't have permission to delete tables.

This doesn't prevent SQL Injection itself, but it can significantly reduce the damage if a vulnerability is exploited.

  1. Validate Input, but Don't Rely on Validation Alone
    Input validation is important.

You can validate email formats, enforce length limits, and reject unexpected values.

However, validation is not a replacement for parameterized queries.

Attackers can find ways around weak validation rules, but properly parameterized values cannot alter the SQL query structure.

The Key Takeaway
SQL Injection isn't really about attackers knowing clever SQL commands.

It's about an application allowing user-controlled data to become executable instructions.

Whether you're using raw SQL, Dapper, ADO.NET, or Entity Framework Core, the principle remains the same:

Never build SQL queries by concatenating untrusted input.

Use parameterized queries, limit database permissions, and treat every external input as untrusted.

Because sometimes, the difference between a secure application and a database breach is how you construct a single SQL query.
SQL Injection: When User Input Becomes a Database Command

#cybersecurity #software #coding #sql #community #engineering #security #development #inclusive #database

0

Caricamento...

0
1

Caricamento...

Which file to export from Nessus, Greenbone / OpenVAS, Qualys, Rapid7 and Nuclei, how to check it, and how to turn it into a prioritized report a clie

Altro...

Which file to export from Nessus, Greenbone / OpenVAS, Qualys, Rapid7 and Nuclei, how to check it, and how to turn it into a prioritized report a client will act on.
How to turn a vulnerability scan export into a client-ready report

#cybersecurity #software #coding #devops #sysadmin #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

How MSPs turn vulnerability scanning into a repeatable managed service: scan cadence, monthly reports clients read, ticket handoff, and showing progre

Altro...

How MSPs turn vulnerability scanning into a repeatable managed service: scan cadence, monthly reports clients read, ticket handoff, and showing progress in quarterly business reviews.
Vulnerability management for MSPs: cadence, reporting and QBRs

#cybersecurity #software #coding #devops #sysadmin #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

FortiBleed wasn't a firewall flaw. It was a pile of reused, never-rotated credentials with a brand name attached. The lesson is older than the headlin

Altro...

FortiBleed wasn't a firewall flaw. It was a pile of reused, never-rotated credentials with a brand name attached. The lesson is older than the headline.
The Firewall Did Its Job: What FortiBleed Was Really About

#cybersecurity #software #coding #networking #sysadmin #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

Recon, disassembly reading and live debugging on a warm-up challenge from the Malware Space Village...

Altro...

Recon, disassembly reading and live debugging on a warm-up challenge from the Malware Space Village...
From file to flag: reversing "kindling" (Malware Space Village) with nothing but GDB

#cybersecurity #software #coding #community #engineering #security #development #inclusive #reverseengineering #ctf

0

Caricamento...

0
1

Caricamento...

There's something comforting about the look of an old VHS tape: smeared colors, a soft wobble, scan...

Altro...

There's something comforting about the look of an old VHS tape: smeared colors, a soft wobble, scan...
A Beginner's Guide to the VHS and Retro Video Aesthetic in Still Photos

#software #coding #tutorial #photography #community #engineering #development #editing #inclusive #beginners

0

Caricamento...

0
1

Caricamento...

Every maths teacher has written the same note in the margin: show your work. A correct answer with no...

Altro...

Every maths teacher has written the same note in the margin: show your work. A correct answer with no...
Show Your Work: Logster and Detection That Explains Its Alerts and Its Silences

#cybersecurity #software #infosec #coding #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

Artificial intelligence has changed how businesses communicate, verify information and make...

Altro...

Artificial intelligence has changed how businesses communicate, verify information and make...
Why Deepfakes Are Becoming a Serious Corporate Security Concern

#cybersecurity #ai #software #coding #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

(Note: This is the untold story behind the KAVLR launch. If you haven't read the main post, check it out here: [Link to main KAVLR post])

Building a

Altro...

(Note: This is the untold story behind the KAVLR launch. If you haven't read the main post, check it out here: [Link to main KAVLR post])

Building a product is not about writing the first line of code. It’s about surviving the 100th bug.

Here is the story of how I accidentally created a "Terminal Immortal" and spent two days fighting a zombie process on my $150 Android phone.

Act I: The Creation and the Betrayal
It started with a simple goal: build a leash for AI agents. I wrote the code, connected it to Supabase, and created the Bash hook.

The first time I typed cat .env and saw the glowing red [BLOCKED], I felt like a god. I had built a security system on a $150 phone.

But I made a fatal design choice: Fail-Closed. If the server goes down, the hook blocks the command to keep the user safe.
I didn't realize that the "user" would eventually be me.

Act II: The Cloud Despair
I wanted the world to use it, so I moved the backend to the cloud. I tried Vercel. 502 Bad Gateway. I tried Railway. FUNCTION_INVOCATION_FAILED.
I was staring at a 5% battery icon, watching my terminal crash over and over. I felt like David fighting Goliath, except Goliath had infinite cloud credits and I had a 4G connection that kept dropping.

Then, I pivoted to Supabase Edge Functions. It worked. The API was alive.

Act III: The Terminal Immortal
That’s when the real monster woke up.

I tried to read my index.js file to fix a bug, and the terminal printed:
🔍 KAVLR analyzing: ""...
❌ KAVLR Backend Offline or Error. Blocking command.

My own security system locked me out of my own code.

I tried to delete the broken script. Blocked.
I tried to edit my .bashrc. Blocked.
I tried to use cat to look at the file. Blocked.

The Terminal Immortal had taken over. It was a zombie process—a ghost script that refused to die. Even when I deleted the files, Bash held onto the memory. Even when I overwrote the NPM package, the corrupted cache fought back.

I spent hours pasting Python scripts, only for Termux to mangle the text into a single line. I watched my index.js file get corrupted because my own hook intercepted the cat > index.js command and wrote error messages into the file instead of the code.

I was fighting a hydra. Every time I cut off a head, two more grew back.

Act IV: The Epiphany
I was exhausted. I opened a clean terminal session and ran a grep command to find where the ghost was hiding.

grep -rn "analyzing:" /data/data/com.termux/files/home/

And there it was. A trail of corrupted files. index.js was poisoned. node_modules was duplicated. Aliases were stacked 13 layers deep.

I realized I couldn't just patch the bug. I had to perform surgery.
I nuked the .bashrc. I deleted the rogue node_modules. I rewrote the CLI using Base64 to bypass Termux's text-mangling. I manually recreated the symlinks. I cleared the Bash hash table (hash -r).

Act V: The Victory
I held my breath and typed:
kavlr hook cat ~/kavlr/index.js

The screen printed my Express code. The file was alive.
I typed:
kavlr hook cat .env

The screen lit up with red: 🛑 [BLOCKED] THREAT DETECTED.

The Terminal Immortal was dead. The ghost was exorcised.

The Reflection
I am 12 years old. I just spent my entire weekend fighting a zombie process in a mobile terminal.

To every developer out there fighting their own "Terminal Immortal": Don't stop. The bug is stubborn, but you are stubborn and smart. And when you finally see that code print correctly, you will feel like you own the world.

We are HYNAWEB. We don't surrender to ghosts.

🐯️🚀
Iam 12 . I Built a Security Tool So Good It Locked Me Out of My Own Terminal for 48 Hours

#cybersecurity #python #software #coding #community #webdev #engineering #development #programming #inclusive

0

Caricamento...

0
1

Caricamento...

Triage the error in 60 seconds, then build a fallback chain that keeps your app and agents running...

Altro...

Triage the error in 60 seconds, then build a fallback chain that keeps your app and agents running...
Your Claude Integration Will Go Down. Here Is How to Fail Over Cleanly

#cybersecurity #ai #software #coding #community #engineering #development #machinelearning #inclusive #agents

0

Caricamento...

0
1

Caricamento...

De 'Bolitas de Colores' a Infraestructura de Análisis Forense: Presentando GraphNexus v0.6.0...

Altro...

De 'Bolitas de Colores' a Infraestructura de Análisis Forense: Presentando GraphNexus v0.6.0...
De 'Bolitas de Colores' a Infraestructura de Análisis Forense: Presentando GraphNexus v0.6.0 🕸️⏳

#cybersecurity #software #coding #community #engineering #development #inclusive #datascience #visualization #networkanalysis

0

Caricamento...

0
1

Caricamento...

Our entry for Graph Hacks by WeMakeDevs × FalkorDB The problem: an alert with no context A security...

Altro...

Our entry for Graph Hacks by WeMakeDevs × FalkorDB The problem: an alert with no context A security...
How We Used FalkorDB to Make a Security Alert Explain Itself

#cybersecurity #software #coding #docker #community #engineering #security #development #inclusive #database

0

Caricamento...

0
1

Caricamento...

Reading the MOVEit Transfer Disclosure Correctly: What the CVE Records Confirm
Security news moves faster than CVE records are read. A summary of the

Altro...

Reading the MOVEit Transfer Disclosure Correctly: What the CVE Records Confirm
Security news moves faster than CVE records are read. A summary of the October 2026 MOVEit Transfer release can describe a vulnerability more confidently than the underlying record supports. For CVE-2026-89070, the difference matters, because the record is deliberately narrow and some published descriptions are not.

What the record states
The CVE.org entry for CVE-2026-89070 gives four facts. The affected product is Progress MOVEit Transfer. The weakness is CWE-294, authentication bypass by capture-replay, in the OIDC module. The base score is 7.5 on CVSS v3. The affected range is before 2025.1.6 and from 2026.0.0 before 2026.0.4.

The record also names the vendor advisory that describes the fix, and it lists 2025.1.6 and 2026.0.4 as the remediated releases.

What the record does not state
The record does not identify which freshness control failed. CWE-294 is a class, not a diagnosis. A missing nonce check, a missing replay cache, an overly generous timestamp tolerance and a token that is simply not tracked all produce this class, and they look different to a detection engineer.

The record does not say whether the attacker must observe traffic or can submit captured material directly. It does not say whether a valid account is a prerequisite. It does not describe the privileges a successfully replayed session receives.

It also does not claim active exploitation or public proof-of-concept code. Any statement to that effect in secondary coverage belongs to that coverage, and initial reporting on this release stated the opposite: no confirmed exploitation and no public proof of concept at the time of publication.

Why secondary summaries drift
The distortion is predictable. A twelve-CVE release invites roundups, and a roundup compresses each entry. Compression turns a weakness class into a narrative. CWE-294 becomes a scene where an attacker intercepts a login, CWE-304 becomes a missing password validation, and CWE-732 becomes a specific writable directory.

None of those are unreasonable guesses about what such a bug might look like. They are guesses. When they appear in an internal briefing without a label, the briefing becomes the origin of a false fact.

Building an internal assessment that holds
Start from the record and the vendor advisory. Take the version range from the record, because it determines whether you are exposed at all. Take the module from the record, because it determines whether the affected code path is enabled in your deployment.

Where the record is silent, describe the uncertainty as uncertainty. A useful internal statement reads: the OIDC authentication path could accept captured authentication material again, the specific freshness control is not disclosed, and the affected range is before 2025.1.6 or 2026.0.0 through 2026.0.3.

That statement supports a decision. It supports upgrading, and it supports reviewing the identity integration. It does not pretend to know which line of code failed.

Related records in the same set
The value of reading the set rather than the headline is that the shared version window collapses the triage. CVE-2026-89067 at 8.8 is an authentication bypass using an alternate path or channel. CVE-2026-89068 at 8.1 omits a critical authentication step in the LDAP module. CVE-2026-89069 at 8.0 is cross-site scripting. CVE-2026-89076 at 7.2 is SQL injection. All of them, and CVE-2026-89070, are remediated by the same two builds.

Exposure context
A ZoomEye query for app="MOVEit" returns 1,676 matching assets at the time of writing. This counts systems presenting the product fingerprint. It says nothing about patch level or about which modules are enabled.

References

CVE-2026-89070 record, CVE.org

Progress MOVEit Transfer Critical Security Bulletin, Progress Community

Progress Software Patches Twelve High-Severity MOVEit Transfer Vulnerabilities, SecurityOnline

Disclaimer
Exposure figures cited here come from a ZoomEye query for the product fingerprint and describe matching assets, not confirmed vulnerable hosts.
Reading the MOVEit Transfer Disclosure Correctly: What the CVE Records Confirm

#cybersecurity #software #infosec #coding #community #engineering #security #development #inclusive

0

Caricamento...

0
1

Caricamento...

In May 2021, Americans were filling plastic bags with gasoline. Panic buying. Lines wrapped around...

Altro...

In May 2021, Americans were filling plastic bags with gasoline. Panic buying. Lines wrapped around...
One Password Shut Down a US Fuel Pipeline

#cybersecurity #software #coding #devops #community #engineering #security #development #programming #inclusive

0

Caricamento...

0
1

Caricamento...

AI Daily Digest October 19, 2026: OpenAI Details Four Agent Boundary Crossings, Yelp and Wall Street Block Agents, Cohere Buys AISLE#ai

Altro...

AI Daily Digest October 19, 2026: OpenAI Details Four Agent Boundary Crossings, Yelp and Wall Street Block Agents, Cohere Buys AISLE#ai
AI Daily Digest October 19, 2026: OpenAI Details Four Agent Boundary Crossings, Yelp and Wall Street Block Agents, Cohere Buys AISLE

#cybersecurity #ai #software #coding #community #engineering #development #safety #inclusive #agents

0

Caricamento...

0
1

Caricamento...