Shared posts

24 Apr 16:06

Photo



24 Apr 11:40

Galaxy Fold Doesn’t Fold So Good

by John Gruber

Dieter Bohn’s review unit broke after just two days:

It’s a distressing thing to discover just two days after receiving my review unit. More distressing is that the bulge eventually pressed sharply enough into the screen to break it. You can see the telltale lines of a broken OLED converging on the spot where the bulge is.

Seems like a widespread problem. Steve Kovach’s unit broke after one day, and so did Mark Gurman’s. Gurman says it comes with a screen protector that he peeled off but apparently wasn’t supposed to. Looks like the sort of thing you’re supposed to peel off.

Marques Brownlee peeled his off too and the screen broke. Now I’m starting to wonder if anyone’s review unit has not broken.

The Galaxy Fold didn’t look like a real product when Samsung announced it, and it looks less like a real product now that it’s in reviewers’ hands. This thing is supposed to ship in a week, starting at $1,980. I’ll go out on a limb and predict that’s not going to happen.

24 Apr 11:40

#1869 – Outside

by Chris

#1869 – Outside

24 Apr 11:34

Bed

by Lunarbaboon

24 Apr 11:34

Public Sans, a New Typeface from the US Government

by Jason Kottke

Public Sans

As part of their recent announcement of a new web design system for US government websites, the General Services Administration has also introduced a new typeface called Public Sans.

USWDS 2.0 adds built-in support for custom typefaces, and sometimes you need one that’s simple, neutral, and isn’t Helvetica. Public Sans is an open source, free license typeface (SIL Open Font License 1.1) designed and maintained by USWDS, adapted from Libre Franklin. Just as with our components, we intend Public Sans to be an example of how to design an accessible open source typeface with contributions and feedback from the public — to deliver a useful, neutral, sans serif and continuously improve it.

Always interesting when typefaces are described as “neutral”. I’ve never found that to be the case…

Tags: design   typography
22 Apr 13:57

What customers really want

by CommitStrip

19 Apr 11:44

Internet Fix.

We could try unplugging it and plugging it back in.
19 Apr 11:32

Wanna See the Code?

And because if you just leave it there, it's going to start contaminating things downstream even if no one touches it directly.
17 Apr 14:06

Star Trek Friendship Necklace

Star Trek Friendship Necklace

 

WANT! ♥ This beautiful Star Trek Friendship Necklace is etched with the phrase Spock says to Kirk in Star Trek II: The Wrath of Khan, "I have been and always shall be your friend"...

Star Trek Friendship Necklace

Star Trek Friendship Necklace

Star Trek Friendship Necklace

Star Trek Friendship Necklace available here!

16 Apr 17:00

Numb

by Lunarbaboon
15 Apr 12:44

#1866 – Better off

by Chris

#1866 – Better off

15 Apr 12:35

The Snea-Key Fob Secret Stash Box

by info@dudeiwantthat.com Erin Carstens
11 Apr 12:16

New API version

by CommitStrip

11 Apr 12:16

Childbirth

by Enzo
10 Apr 16:37

Show Reality.

This comic was filmed before a live studio audience.
10 Apr 16:37

3D Fruit & Vegetable Comforters

by info@dudeiwantthat.com Erin Carstens
10 Apr 16:37

BattleStarship Comic

BattleStarship Comic

 

LOL! This "BattleStarship' comic by Ninja & Pirate shows what it's like for a Stormtrooper from the Star Wars universe playing Battleship...

BattleStarship Comic

Artist: Ninja & Pirate

Follow us on:
 

April 08 2019
10 Apr 16:37

Forcing Diversity

Forcing Diversity

 

FightinCowboy makes some really good points about so-called "forced diversity" in gaming and geek culture. But for real, having more women, LGBTQ and minority characters is not only better representation for everyone, but also just a better reflection of reality...

Forcing Diversity

Source: FightinCowboy

(via: BroxanneTheViqueen)

Follow us on:
 

April 08 2019
08 Apr 18:40

Heartwarming Shiny Eevee Comic

Heartwarming Shiny Eevee Comic

 

THE FEELS! pinkadillydoo drew this heartbreaking / heartwarming comic about a baby shiny Eeevee, that shows if shiny Pok?mon were considered bad in the wild since it meant they will get killed easier, which would explain why there are so hard to find?

Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic
Heartwarming Shiny Eevee Comic

Artist: pinkadillydoo

(via: gjkennedy)

Follow us on:
 

April 07 2019
08 Apr 16:22

Dinosaurs of the Wild West

Dinosaurs of the Wild West

 

Behold! Dinosaurs of the Wild West is a book of illustrations by Shaun Keenan depicting the everyday lives of dinosaurs and people living together in the old west. You'll meet cowboys, outlaws, sheriffs, Native American warriors, settlers, mountain men, and many more. Plus a vast variety of dinosaurs...

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Dinosaurs of the Wild West

Artist: Dinosaurs of the Wild West by Shaun Keenan

Follow us on:
 

April 07 2019
08 Apr 15:04

more

by Lunarbaboon

05 Apr 13:23

Soulmate

by alex

Soulmate

05 Apr 13:23

Super Mario Shower Curtain

by Joao

Super Mario Shower Curtain

Super Mario Shower Curtain – Since they’re brothers, do you think Mario and Luigi had to share a bathroom growing up? That’s never easy. If there’s somebody in your family who takes too dang long during their turn in the bathroom, this shower curtain is your answer. After all, you only have 400 seconds to navigate 2-2. That’s less than 7 minutes, and nobody can use all the hot water in the water heater in 7 minutes, right?

Super Mario Shower Curtain

Enjoy World 2-2 while you’re underwater in the shower or tub with this Nintendo Super Mario Shower Curtain. Complete with Cheep Cheeps and Bloopers, this shower curtain comes preloaded with its own hazards. Just remember that slipping and falling in the bathroom is the real hazard, and no Power Up will protect you from that.

The post Super Mario Shower Curtain appeared first on Shut Up And Take My Money.

05 Apr 13:23

Stevie Wonder Birthday Card

by Joao

Funny Stevie Wonder Birthday Card

Funny Stevie Wonder Birthday Card – If you laugh at this you’re probably going to hell. But at least you’ll garner a few laughs on the way. The perfect birthday card for anyone with a twisted sense of humor!

The post Stevie Wonder Birthday Card appeared first on Shut Up And Take My Money.

04 Apr 12:00

Facebook Demanding Some New Users’ Email Passwords

by John Gruber

Kevin Poulsen, writing for The Daily Beast:

Facebook users are being interrupted by an interstitial demanding they provide the password for the email account they gave to Facebook when signing up. “To continue using Facebook, you’ll need to confirm your email,” the message demands. “Since you signed up with [email address], you can do that automatically …”

A form below the message asked for the users’ “email password.” […]

The additional login step was noticed over the weekend by a cybersecurity watcher on Twitter called “e-sushi.” The Daily Beast tested the claim by establishing a new Facebook account under circumstances the company’s system might flag as suspicious, using a disposable webmail address and connecting through a VPN in Romania. A reporter was taken to the same screen demanding the email password.

They’re just fucking with us now.

27 Mar 13:43

The Impossible Fractal Triangle

by Jason Kottke

Sierpinski Penrose

Nidhal Selmi combined the fractal Sierpinski triangle with the impossible Penrose triangle to create the M.C. Escher-like the Selmi triangle.

Tags: fractals   geometry   mathematics   Nidhal Selmi
27 Mar 13:43

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set

 

WANT! Embark on an exciting adventure with the Hasbro Stranger Things Dungeons & Dragons Roleplaying Game Starter Set! Hunt for the thessalhydra, "created" by the character Mike from Netflix's Stranger Things. Whether players are new to D&D, or looking for a new adventure, this Stranger Things themed roleplaying game has everything a group needs to play including detailed rules, adventure book, dice set, Stranger Things character sheets and 2 Demogorgon figures...

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set

Stranger Things Dungeons & Dragons Starter Set Stranger Things Dungeons & Dragons Starter Set

Hasbro Stranger Things Dungeons & Dragons Roleplaying Game Starter Set available here!

26 Mar 16:03

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

 

This is so wholesome and heartwarming! ♥ Twistwood illustrated this wonderful comic of on a little story written by Matthew 'Mathwiz' Wisner based on the Mr. Rogers holding Thor's hammer Mj?lnir meme...

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Thor Meets Mr. Rogers Comic

Drawn by: Twistwood

Written by: Matthew 'Mathwiz' Wisner

Follow us on:
 

March 24 2019
26 Mar 16:03

#1861 – Not right

by Chris

#1861 – Not right

25 Mar 12:20

Endlessh: an SSH Tarpit

This article was discussed on Hacker News, on reddit (also), and featured in BSD Now 294.

I’m a big fan of tarpits: a network service that intentionally inserts delays in its protocol, slowing down clients by forcing them to wait. This arrests the speed at which a bad actor can attack or probe the host system, and it ties up some of the attacker’s resources that might otherwise be spent attacking another host. When done well, a tarpit imposes more cost on the attacker than the defender.

The Internet is a very hostile place, and anyone who’s ever stood up an Internet-facing IPv4 host has witnessed the immediate and continuous attacks against their server. I’ve maintained such a server for nearly six years now, and more than 99% of my incoming traffic has ill intent. One part of my defenses has been tarpits in various forms. The latest addition is an SSH tarpit I wrote a couple of months ago:

Endlessh: an SSH tarpit

This program opens a socket and pretends to be an SSH server. However, it actually just ties up SSH clients with false promises indefinitely — or at least until the client eventually gives up. After cloning the repository, here’s how you can try it out for yourself (default port 2222):

$ make
$ ./endlessh &
$ ssh -p2222 localhost

Your SSH client will hang there and wait for at least several days before finally giving up. Like a mammoth in the La Brea Tar Pits, it got itself stuck and can’t get itself out. As I write, my Internet-facing SSH tarpit currently has 27 clients trapped in it. A few of these have been connected for weeks. In one particular spike it had 1,378 clients trapped at once, lasting about 20 hours.

My Internet-facing Endlessh server listens on port 22, which is the standard SSH port. I long ago moved my real SSH server off to another port where it sees a whole lot less SSH traffic — essentially none. This makes the logs a whole lot more manageable. And (hopefully) Endlessh convinces attackers not to look around for an SSH server on another port.

How does it work? Endlessh exploits a little paragraph in RFC 4253, the SSH protocol specification. Immediately after the TCP connection is established, and before negotiating the cryptography, both ends send an identification string:

SSH-protoversion-softwareversion SP comments CR LF

The RFC also notes:

The server MAY send other lines of data before sending the version string.

There is no limit on the number of lines, just that these lines must not begin with “SSH-“ since that would be ambiguous with the identification string, and lines must not be longer than 255 characters including CRLF. So Endlessh sends and endless stream of randomly-generated “other lines of data” without ever intending to send a version string. By default it waits 10 seconds between each line. This slows down the protocol, but prevents it from actually timing out.

This means Endlessh need not know anything about cryptography or the vast majority of the SSH protocol. It’s dead simple.

Implementation strategies

Ideally the tarpit’s resource footprint should be as small as possible. It’s just a security tool, and the server does have an actual purpose that doesn’t include being a tarpit. It should tie up the attacker’s resources, not the server’s, and should generally be unnoticeable. (Take note all those who write the awful “security” products I have to tolerate at my day job.)

Even when many clients have been trapped, Endlessh spends more than 99.999% of its time waiting around, doing nothing. It wouldn’t even be accurate to call it I/O-bound. If anything, it’s timer-bound, waiting around before sending off the next line of data. The most precious resource to conserve is memory.

Processes

The most straightforward way to implement something like Endlessh is a fork server: accept a connection, fork, and the child simply alternates between sleep(3) and write(2):

for (;;) {
    ssize_t r;
    char line[256];

    sleep(DELAY);
    generate_line(line);
    r = write(fd, line, strlen(line));
    if (r == -1 && errno != EINTR) {
        exit(0);
    }
}

A process per connection is a lot of overhead when connections are expected to be up hours or even weeks at a time. An attacker who knows about this could exhaust the server’s resources with little effort by opening up lots of connections.

Threads

A better option is, instead of processes, to create a thread per connection. On Linux this is practically the same thing, but it’s still better. However, you still have to allocate a stack for the thread and the kernel will have to spend some resources managing the thread.

Poll

For Endlessh I went for an even more lightweight version: a single-threaded poll(2) server, analogous to stackless green threads. The overhead per connection is about as low as it gets.

Clients that are being delayed are not registered in poll(2). Their only overhead is the socket object in the kernel, and another 78 bytes to track them in Endlessh. Most of those bytes are used only for accurate logging. Only those clients that are overdue for a new line are registered for poll(2).

When clients are waiting, but no clients are overdue, poll(2) is essentially used in place of sleep(3). Though since it still needs to manage the accept server socket, it (almost) never actually waits on nothing.

There’s an option to limit the total number of client connections so that it doesn’t get out of hand. In this case it will stop polling the accept socket until a client disconnects. I probably shouldn’t have bothered with this option and instead relied on ulimit, a feature already provided by the operating system.

I could have used epoll (Linux) or kqueue (BSD), which would be much more efficient than poll(2). The problem with poll(2) is that it’s constantly registering and unregistering Endlessh on each of the overdue sockets each time around the main loop. This is by far the most CPU-intensive part of Endlessh, and it’s all inflicted on the kernel. Most of the time, even with thousands of clients trapped in the tarpit, only a small number of them at polled at once, so I opted for better portability instead.

One consequence of not polling connections that are waiting is that disconnections aren’t noticed in a timely fashion. This makes the logs less accurate than I like, but otherwise it’s pretty harmless. Unforunately even if I wanted to fix this, the poll(2) interface isn’t quite equipped for it anyway.

Raw sockets

With a poll(2) server, the biggest overhead remaining is in the kernel, where it allocates send and receive buffers for each client and manages the proper TCP state. The next step to reducing this overhead is Endlessh opening a raw socket and speaking TCP itself, bypassing most of the operating system’s TCP/IP stack.

Much of the TCP connection state doesn’t matter to Endlessh and doesn’t need to be tracked. For example, it doesn’t care about any data sent by the client, so no receive buffer is needed, and any data that arrives could be dropped on the floor.

Even more, raw sockets would allow for some even nastier tarpit tricks. Despite the long delays between data lines, the kernel itself responds very quickly on the TCP layer and below. ACKs are sent back quickly and so on. An astute attacker could detect that the delay is artificial, imposed above the TCP layer by an application.

If Endlessh worked at the TCP layer, it could tarpit the TCP protocol itself. It could introduce artificial “noise” to the connection that requires packet retransmissions, delay ACKs, etc. It would look a lot more like network problems than a tarpit.

I haven’t taken Endlessh this far, nor do I plan to do so. At the moment attackers either have a hard timeout, so this wouldn’t matter, or they’re pretty dumb and Endlessh already works well enough.

asyncio and other tarpits

Since writing Endless I’ve learned about Python’s asycio, and it’s actually a near perfect fit for this problem. I should have just used it in the first place. The hard part is already implemented within asyncio, and the problem isn’t CPU-bound, so being written in Python doesn’t matter.

Here’s a simplified (no logging, no configuration, etc.) version of Endlessh implemented in about 20 lines of Python 3.7:

import asyncio
import random

async def handler(_reader, writer):
    try:
        while True:
            await asyncio.sleep(10)
            writer.write(b'%x\r\n' % random.randint(0, 2**32))
            await writer.drain()
    except ConnectionResetError:
        pass

async def main():
    server = await asyncio.start_server(handler, '0.0.0.0', 2222)
    async with server:
        await server.serve_forever()

asyncio.run(main())

Since Python coroutines are stackless, the per-connection memory overhead is comparable to the C version. So it seems asycio is perfectly suited for writing tarpits! Here’s an HTTP tarpit to trip up attackers trying to exploit HTTP servers. It slowly sends a random, endless HTTP header:

import asyncio
import random

async def handler(_reader, writer):
    writer.write(b'HTTP/1.1 200 OK\r\n')
    try:
        while True:
            await asyncio.sleep(5)
            header = random.randint(0, 2**32)
            value = random.randint(0, 2**32)
            writer.write(b'X-%x: %x\r\n' % (header, value))
            await writer.drain()
    except ConnectionResetError:
        pass

async def main():
    server = await asyncio.start_server(handler, '0.0.0.0', 8080)
    async with server:
        await server.serve_forever()

asyncio.run(main())

Try it out for yourself. Firefox and Chrome will spin on that server for hours before giving up. I have yet to see curl actually timeout on its own in the default settings (--max-time/-m does work correctly, though).

Parting exercise for the reader: Using the examples above as a starting point, implement an SMTP tarpit using asyncio. Bonus points for using TLS connections and testing it against real spammers.